diff --git a/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue b/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue index dd80dc62a47ad..3fb5567e91899 100644 --- a/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue +++ b/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue @@ -7,11 +7,10 @@ import type { ISidebarTab } from '@nextcloud/files' import { NcIconSvgWrapper, NcLoadingIcon } from '@nextcloud/vue' -import { ref, toRef, watch } from 'vue' +import { computed, ref, toRef, watch } from 'vue' import NcAppSidebarTab from '@nextcloud/vue/components/NcAppSidebarTab' import NcEmptyContent from '@nextcloud/vue/components/NcEmptyContent' import logger from '../../logger.ts' -import { useActiveStore } from '../../store/active.ts' import { useSidebarStore } from '../../store/sidebar.ts' const props = defineProps<{ @@ -27,7 +26,17 @@ const props = defineProps<{ }>() const sidebar = useSidebarStore() -const activeStore = useActiveStore() + +const context = computed(() => { + if (!sidebar.currentContext) { + return undefined + } + return { + folder: sidebar.currentContext.folder.clone(), + node: sidebar.currentContext.node.clone(), + view: sidebar.currentContext.view, + } +}) const loading = ref(true) watch(toRef(props, 'active'), async (active) => { @@ -65,7 +74,7 @@ const initializedTabs = new Set() - + @@ -75,8 +84,8 @@ const initializedTabs = new Set() :is="tab.tagName" v-else :active.prop="active" - :node.prop="sidebar.currentNode" - :folder.prop="activeStore.activeFolder" - :view.prop="activeStore.activeView" /> + :node.prop="context.node" + :folder.prop="context.folder" + :view.prop="context.view" /> diff --git a/apps/files/src/store/files.ts b/apps/files/src/store/files.ts index 8e924931cd2ff..a7200454f7b4a 100644 --- a/apps/files/src/store/files.ts +++ b/apps/files/src/store/files.ts @@ -11,6 +11,7 @@ import { defineStore } from 'pinia' import Vue, { ref } from 'vue' import logger from '../logger.ts' import { fetchNode } from '../services/WebdavClient.ts' +import { useActiveStore } from './active.ts' import { usePathsStore } from './paths.ts' /** @@ -124,6 +125,12 @@ export const useFilesStore = defineStore('files', () => { }, {} as FilesStore) files.value = { ...files.value, ...newNodes } + + // handle updating the active node + const activeStore = useActiveStore() + if (activeStore.activeNode && activeStore.activeNode.source in newNodes) { + activeStore.activeNode = files.value[activeStore.activeNode.source] + } } /** @@ -232,7 +239,8 @@ export const useFilesStore = defineStore('files', () => { } // Otherwise, it means we receive an event for a node that is not in the store - fetchNode(node.path).then((n) => updateNodes([n])) + const newNode = await fetchNode(node.path) + updateNodes([newNode]) } /** diff --git a/apps/files_versions/src/views/FilesVersionsSidebarTab.vue b/apps/files_versions/src/views/FilesVersionsSidebarTab.vue index 1337dbc1b9396..b35fe6118773b 100644 --- a/apps/files_versions/src/views/FilesVersionsSidebarTab.vue +++ b/apps/files_versions/src/views/FilesVersionsSidebarTab.vue @@ -48,7 +48,8 @@ import { showError, showSuccess } from '@nextcloud/dialogs' import { emit } from '@nextcloud/event-bus' import { t } from '@nextcloud/l10n' import { useIsMobile } from '@nextcloud/vue/composables/useIsMobile' -import { computed, ref, toRef, watch } from 'vue' +import { watchDebounced } from '@vueuse/core' +import { computed, ref, watch } from 'vue' import NcLoadingIcon from '@nextcloud/vue/components/NcLoadingIcon' import VersionEntry from '../components/VersionEntry.vue' import VersionLabelDialog from '../components/VersionLabelDialog.vue' @@ -72,19 +73,6 @@ const loading = ref(false) const showVersionLabelForm = ref(false) const editedVersion = ref(null) -watch(toRef(() => props.node), async () => { - if (!props.node) { - return - } - - try { - loading.value = true - versions.value = await fetchVersions(props.node) - } finally { - loading.value = false - } -}, { immediate: true }) - const currentVersionMtime = computed(() => props.node?.mtime?.getTime() ?? 0) /** @@ -139,6 +127,24 @@ const canCompare = computed(() => { && window.OCA.Viewer?.mimetypesCompare?.includes(props.node?.mime) }) +// When either the current node to show or its mtime changes we need to refetch the versions +// When the id changed we immediately show changes +watch(() => props.node.id, loadVersions, { immediate: true }) +// On mtime changes we debounce to prevent too many requests. +watchDebounced(currentVersionMtime, loadVersions, { debounce: 600 }) + +/** + * Load versions for the current node + */ +async function loadVersions() { + try { + loading.value = true + versions.value = await fetchVersions(props.node) + } finally { + loading.value = false + } +} + /** * Handle restored event from Version.vue * diff --git a/dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs b/dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs similarity index 95% rename from dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs rename to dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs index df8af45b3ede4..8e3c349414e87 100644 --- a/dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs +++ b/dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs @@ -1,2 +1,2 @@ -import{b as g,q as y,s as v,c as p,u as o,o as n,H as h,w as _,g as V,t as b,v as x,r as M,j as d,e as f,F as q,C as w,_ as K,$ as U}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as j}from"./index-CPwHjAPR.chunk.mjs";import{a as C}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as N}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as A}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{N as E}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as L}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{_ as z}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{C as c,a as k}from"./types-BxBcKZMN.chunk.mjs";import{l as B}from"./logger-DaDjQfyb.chunk.mjs";const P=g({__name:"ConfigurationEntry",props:y({configKey:{},configOption:{}},{modelValue:{type:[String,Boolean],default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=v(e,"modelValue");return(t,i)=>e.configOption.type!==o(c).Boolean?(n(),p(h(e.configOption.type===o(c).Password?o(L):o(z)),{key:0,modelValue:a.value,"onUpdate:modelValue":i[0]||(i[0]=l=>a.value=l),name:e.configKey,required:!(e.configOption.flags&o(k).Optional),label:e.configOption.value,title:e.configOption.tooltip},null,8,["modelValue","name","required","label","title"])):(n(),p(o(E),{key:1,modelValue:a.value,"onUpdate:modelValue":i[1]||(i[1]=l=>a.value=l),type:"switch",title:e.configOption.tooltip},{default:_(()=>[V(b(e.configOption.value),1)]),_:1},8,["modelValue","title"]))}}),R=g({__name:"AuthMechanismRsa",props:y({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=v(e,"modelValue"),t=M();x(t,()=>{t.value&&(a.value.private_key="",a.value.public_key="")});async function i(){try{const{data:l}=await j.post(N("/apps/files_external/ajax/public_key.php"),{keyLength:t.value});a.value.private_key=l.data.private_key,a.value.public_key=l.data.public_key}catch(l){B.error("Error generating RSA key pair",{error:l}),C(s("files_external","Error generating key pair"))}}return(l,m)=>(n(),d("div",null,[(n(!0),d(q,null,w(e.authMechanism.configuration,(r,u)=>K((n(),p(P,{key:r.value,modelValue:a.value[u],"onUpdate:modelValue":O=>a.value[u]=O,configKey:u,configOption:r},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[U,!(r.flags&o(k).Hidden)]])),128)),f(o(A),{modelValue:t.value,"onUpdate:modelValue":m[0]||(m[0]=r=>t.value=r),clearable:!1,inputLabel:o(s)("files_external","Key size"),options:[1024,2048,4096],required:""},null,8,["modelValue","inputLabel"]),f(o(S),{disabled:!t.value,wide:"",onClick:i},{default:_(()=>[V(b(o(s)("files_external","Generate keys")),1)]),_:1},8,["disabled"])]))}}),Z=Object.freeze(Object.defineProperty({__proto__:null,default:R},Symbol.toStringTag,{value:"Module"}));export{Z as A,P as _}; -//# sourceMappingURL=AuthMechanismRsa-3Nt-tl8J.chunk.mjs.map +import{b as g,q as y,s as v,c as p,u as o,o as n,H as h,w as _,g as V,t as b,v as x,r as M,j as d,e as f,F as q,C as w,_ as K,$ as U}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as j}from"./index-CPwHjAPR.chunk.mjs";import{a as C}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as N}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as A}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{N as E}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as L}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{_ as z}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{C as c,a as k}from"./types-BxBcKZMN.chunk.mjs";import{l as B}from"./logger-DaDjQfyb.chunk.mjs";const P=g({__name:"ConfigurationEntry",props:y({configKey:{},configOption:{}},{modelValue:{type:[String,Boolean],default:""},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=v(e,"modelValue");return(t,i)=>e.configOption.type!==o(c).Boolean?(n(),p(h(e.configOption.type===o(c).Password?o(L):o(z)),{key:0,modelValue:a.value,"onUpdate:modelValue":i[0]||(i[0]=l=>a.value=l),name:e.configKey,required:!(e.configOption.flags&o(k).Optional),label:e.configOption.value,title:e.configOption.tooltip},null,8,["modelValue","name","required","label","title"])):(n(),p(o(E),{key:1,modelValue:a.value,"onUpdate:modelValue":i[1]||(i[1]=l=>a.value=l),type:"switch",title:e.configOption.tooltip},{default:_(()=>[V(b(e.configOption.value),1)]),_:1},8,["modelValue","title"]))}}),R=g({__name:"AuthMechanismRsa",props:y({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const a=v(e,"modelValue"),t=M();x(t,()=>{t.value&&(a.value.private_key="",a.value.public_key="")});async function i(){try{const{data:l}=await j.post(N("/apps/files_external/ajax/public_key.php"),{keyLength:t.value});a.value.private_key=l.data.private_key,a.value.public_key=l.data.public_key}catch(l){B.error("Error generating RSA key pair",{error:l}),C(s("files_external","Error generating key pair"))}}return(l,m)=>(n(),d("div",null,[(n(!0),d(q,null,w(e.authMechanism.configuration,(r,u)=>K((n(),p(P,{key:r.value,modelValue:a.value[u],"onUpdate:modelValue":O=>a.value[u]=O,configKey:u,configOption:r},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[U,!(r.flags&o(k).Hidden)]])),128)),f(o(A),{modelValue:t.value,"onUpdate:modelValue":m[0]||(m[0]=r=>t.value=r),clearable:!1,inputLabel:o(s)("files_external","Key size"),options:[1024,2048,4096],required:""},null,8,["modelValue","inputLabel"]),f(o(S),{disabled:!t.value,wide:"",onClick:i},{default:_(()=>[V(b(o(s)("files_external","Generate keys")),1)]),_:1},8,["disabled"])]))}}),Z=Object.freeze(Object.defineProperty({__proto__:null,default:R},Symbol.toStringTag,{value:"Module"}));export{Z as A,P as _}; +//# sourceMappingURL=AuthMechanismRsa-Bb04w0qi.chunk.mjs.map diff --git a/dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs.license b/dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs.license similarity index 100% rename from dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs.license rename to dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs.license diff --git a/dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs.map b/dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs.map similarity index 98% rename from dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs.map rename to dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs.map index a62d2051ac345..ef3bea6b9a985 100644 --- a/dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs.map +++ b/dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"AuthMechanismRsa-3Nt-tl8J.chunk.mjs","sources":["../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/ConfigurationEntry.vue","../build/frontend/apps/files_external/src/views/AuthMechanismRsa.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n"],"names":["value","_useModel","__props","_unref","ConfigurationType","_createBlock","_resolveDynamicComponent","NcPasswordField","NcTextField","$event","ConfigurationFlag","NcCheckboxRadioSwitch","_createTextVNode","_toDisplayString","modelValue","keySize","ref","watch","generateKeys","data","axios","generateUrl","error","logger","showError","t","_createElementBlock","_openBlock","_Fragment","configOption","configKey","ConfigurationEntry","_vShow","_createVNode","NcSelect","NcButton"],"mappings":"0hCAaA,MAAMA,EAAQC,EAA6BC,EAAC,YAA6B,eAWjEA,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,aAF/CC,EAOiCC,EAN3BJ,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,SAAWD,EAAAI,CAAA,EAAkBJ,EAAAK,CAAA,CAAW,EAAA,kBAE5ER,EAAA,2CAAAA,EAAK,MAAAS,GACb,KAAMP,EAAA,UACN,WAAYA,EAAA,aAAa,MAAQC,EAAAO,CAAA,EAAkB,UACnD,MAAOR,EAAA,aAAa,MACpB,MAAOA,EAAA,aAAa,OAAA,iEACtBG,EAMwBF,EAAAQ,CAAA,EAAA,kBAJdX,EAAA,2CAAAA,EAAK,MAAAS,GACd,KAAK,SACJ,MAAOP,EAAA,aAAa,OAAA,aACrB,IAAwB,CAArBU,EAAAC,EAAAX,EAAA,aAAa,KAAK,EAAA,CAAA,CAAA,mLChBvB,MAAMY,EAAab,EAA6CC,EAAA,YAAmB,EAM7Ea,EAAUC,EAAA,EAChBC,EAAMF,EAAS,IAAM,CAChBA,EAAQ,QACXD,EAAW,MAAM,YAAc,GAC/BA,EAAW,MAAM,WAAa,GAEhC,CAAC,EAKD,eAAeI,GAAe,CAC7B,GAAI,CAEH,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,KAAKC,EAAY,0CAA0C,EAAG,CAC1F,UAAWN,EAAQ,KAAA,CACnB,EAEDD,EAAW,MAAM,YAAcK,EAAK,KAAK,YACzCL,EAAW,MAAM,WAAaK,EAAK,KAAK,UACzC,OAASG,EAAO,CACfC,EAAO,MAAM,gCAAiC,CAAE,MAAAD,CAAA,CAAO,EACvDE,EAAUC,EAAE,iBAAkB,2BAA2B,CAAC,CAC3D,CACD,mBAICC,EAsBM,MAAA,KAAA,EArBLC,EAAA,EAAA,EAAAD,EAMgCE,SALG1B,EAAA,cAAc,cAAa,CAAtD2B,EAAcC,WADtBzB,EAMgC0B,EAAA,CAH9B,IAAKF,EAAa,MACV,WAAAf,EAAA,MAAWgB,CAAS,EAApB,sBAAArB,GAAAK,EAAA,MAAWgB,CAAS,EAAArB,EAC5B,UAAAqB,EACA,aAAAD,CAAA,4EAJS,CAAAG,EAAA,EAAAH,EAAa,MAAQ1B,EAAAO,CAAA,EAAkB,OAAM,CAAA,UAMxDuB,EAKY9B,EAAA+B,CAAA,EAAA,YAJFnB,EAAA,2CAAAA,EAAO,MAAAN,GACf,UAAW,GACX,WAAYN,EAAAsB,CAAA,EAAC,iBAAA,UAAA,EACb,QAAS,CAAA,KAAA,KAAA,IAAA,EACV,SAAA,EAAA,sCAEDQ,EAKW9B,EAAAgC,CAAA,EAAA,CAJT,UAAWpB,EAAA,MACZ,KAAA,GACC,QAAOG,CAAA,aACR,IAA0C,KAAvCf,EAAAsB,CAAA,EAAC,iBAAA,eAAA,CAAA,EAAA,CAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"AuthMechanismRsa-Bb04w0qi.chunk.mjs","sources":["../build/frontend/apps/files_external/src/components/AddExternalStorageDialog/ConfigurationEntry.vue","../build/frontend/apps/files_external/src/views/AuthMechanismRsa.vue"],"sourcesContent":["\n\n\n\n\n","\n\n\n\n\n"],"names":["value","_useModel","__props","_unref","ConfigurationType","_createBlock","_resolveDynamicComponent","NcPasswordField","NcTextField","$event","ConfigurationFlag","NcCheckboxRadioSwitch","_createTextVNode","_toDisplayString","modelValue","keySize","ref","watch","generateKeys","data","axios","generateUrl","error","logger","showError","t","_createElementBlock","_openBlock","_Fragment","configOption","configKey","ConfigurationEntry","_vShow","_createVNode","NcSelect","NcButton"],"mappings":"0hCAaA,MAAMA,EAAQC,EAA6BC,EAAC,YAA6B,eAWjEA,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,aAF/CC,EAOiCC,EAN3BJ,EAAA,aAAa,OAASC,EAAAC,CAAA,EAAkB,SAAWD,EAAAI,CAAA,EAAkBJ,EAAAK,CAAA,CAAW,EAAA,kBAE5ER,EAAA,2CAAAA,EAAK,MAAAS,GACb,KAAMP,EAAA,UACN,WAAYA,EAAA,aAAa,MAAQC,EAAAO,CAAA,EAAkB,UACnD,MAAOR,EAAA,aAAa,MACpB,MAAOA,EAAA,aAAa,OAAA,iEACtBG,EAMwBF,EAAAQ,CAAA,EAAA,kBAJdX,EAAA,2CAAAA,EAAK,MAAAS,GACd,KAAK,SACJ,MAAOP,EAAA,aAAa,OAAA,aACrB,IAAwB,CAArBU,EAAAC,EAAAX,EAAA,aAAa,KAAK,EAAA,CAAA,CAAA,mLChBvB,MAAMY,EAAab,EAA6CC,EAAA,YAAmB,EAM7Ea,EAAUC,EAAA,EAChBC,EAAMF,EAAS,IAAM,CAChBA,EAAQ,QACXD,EAAW,MAAM,YAAc,GAC/BA,EAAW,MAAM,WAAa,GAEhC,CAAC,EAKD,eAAeI,GAAe,CAC7B,GAAI,CAEH,KAAM,CAAE,KAAAC,GAAS,MAAMC,EAAM,KAAKC,EAAY,0CAA0C,EAAG,CAC1F,UAAWN,EAAQ,KAAA,CACnB,EAEDD,EAAW,MAAM,YAAcK,EAAK,KAAK,YACzCL,EAAW,MAAM,WAAaK,EAAK,KAAK,UACzC,OAASG,EAAO,CACfC,EAAO,MAAM,gCAAiC,CAAE,MAAAD,CAAA,CAAO,EACvDE,EAAUC,EAAE,iBAAkB,2BAA2B,CAAC,CAC3D,CACD,mBAICC,EAsBM,MAAA,KAAA,EArBLC,EAAA,EAAA,EAAAD,EAMgCE,SALG1B,EAAA,cAAc,cAAa,CAAtD2B,EAAcC,WADtBzB,EAMgC0B,EAAA,CAH9B,IAAKF,EAAa,MACV,WAAAf,EAAA,MAAWgB,CAAS,EAApB,sBAAArB,GAAAK,EAAA,MAAWgB,CAAS,EAAArB,EAC5B,UAAAqB,EACA,aAAAD,CAAA,4EAJS,CAAAG,EAAA,EAAAH,EAAa,MAAQ1B,EAAAO,CAAA,EAAkB,OAAM,CAAA,UAMxDuB,EAKY9B,EAAA+B,CAAA,EAAA,YAJFnB,EAAA,2CAAAA,EAAO,MAAAN,GACf,UAAW,GACX,WAAYN,EAAAsB,CAAA,EAAC,iBAAA,UAAA,EACb,QAAS,CAAA,KAAA,KAAA,IAAA,EACV,SAAA,EAAA,sCAEDQ,EAKW9B,EAAAgC,CAAA,EAAA,CAJT,UAAWpB,EAAA,MACZ,KAAA,GACC,QAAOG,CAAA,aACR,IAA0C,KAAvCf,EAAAsB,CAAA,EAAC,iBAAA,eAAA,CAAA,EAAA,CAAA,CAAA"} \ No newline at end of file diff --git a/dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs.map.license b/dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs.map.license similarity index 100% rename from dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs.map.license rename to dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs.map.license diff --git a/dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs b/dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs similarity index 99% rename from dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs rename to dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs index b83e7a6fad4d2..b24d3d62ae20f 100644 --- a/dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs +++ b/dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs @@ -1,2 +1,2 @@ -import{f as re,j as c,o as s,c as C,l as L,e as _,y as Pe,w,m as ne,k as f,n as W,g as Z,t as $,z as I,E as Q,F as M,a7 as be,a5 as H,a4 as Ee,r as z,a1 as q,b as U,v as Fe,a8 as de,A as G,p as y,u as d,q as ue,s as pe,x as We,C as X,J as Te,B as Ze,Z as qe,D as Oe,V as Se}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{u as je,d as Je,s as Ge,e as Ke,a as Qe}from"./index-DqIuD5e7.chunk.mjs";import{a as me,k as Xe,N as Ye}from"./index-Bos-XXa5.chunk.mjs";import{N as we}from"./Plus-BsxGg9Cm.chunk.mjs";import{v as et,I as tt,d as se,f as it,s as at}from"./index-Dpj4ddZx.chunk.mjs";import{N as O}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as xe}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{l as Ve,i as Ne,j as Y,c as lt}from"./index-BgmsSgl5.chunk.mjs";import{_ as rt,a as nt}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{r as st,s as ot,t as ct,u as dt,v as ut,w as pt,x as ke,o as ft,c as mt}from"./mdi-e8YUrhPH.chunk.mjs";import{S as _e}from"./ShareType-suoNfd7y.chunk.mjs";import{_ as te,c as ht,g as he,N as De}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{F as j,P as Ce}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{P as vt,a as gt}from"./NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs";import{t as h,l as J,a as ve}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{c as Ie}from"./index-CPwHjAPR.chunk.mjs";import{N as ze}from"./PencilOutline-TGZB0t_n.chunk.mjs";import{N as $e,a as Le}from"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{N as yt}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{g as bt,h as wt,i as ge,j as kt,r as ye,k as Me}from"./dav-C3Vmpmsl.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";const _t={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ct=["aria-hidden","aria-label"],zt=["fill","width","height"],$t={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},Lt={key:0};function Bt(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",$t,[e.title?(s(),c("title",Lt,$(e.title),1)):L("",!0)])],8,zt))],16,Ct)}const Pt=te(_t,[["render",Bt]]),Ft={name:"NcBreadcrumb",components:{NcActions:me,ChevronRight:Pt,NcButton:O},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const t=ht();return{actionsContainer:`.vue-crumb[data-crumb-id="${t}"]`,crumbId:t}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(t){this.$emit("update:open",t)},dropped(t){return this.disableDrop||(this.$emit("dropped",t,this.to||this.href),this.$parent.$emit("dropped",t,this.to||this.href),this.hovering=!1),!1},dragEnter(t){this.$emit("dragenter",t),!this.disableDrop&&(this.hovering=!0)},dragLeave(t){this.$emit("dragleave",t),!this.disableDrop&&(t.target.contains(t.relatedTarget)||this.$refs.crumb.contains(t.relatedTarget)||(this.hovering=!1))}}},St=["data-crumb-id"];function xt(t,i,e,a,l,r){const n=re("NcButton"),u=re("NcActions"),p=re("ChevronRight");return s(),c("li",{ref:"crumb",class:W(["vue-crumb",[{"vue-crumb--hovered":l.hovering},t.$props.class]]),"data-crumb-id":a.crumbId,draggable:"false",onDragstart:Q(()=>{},["prevent"]),onDrop:i[0]||(i[0]=Q((...o)=>r.dropped&&r.dropped(...o),["prevent"])),onDragover:Q(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...o)=>r.dragEnter&&r.dragEnter(...o)),onDragleave:i[2]||(i[2]=(...o)=>r.dragLeave&&r.dragLeave(...o))},[(e.name||e.icon||t.$slots.icon)&&!t.$slots.default?(s(),C(n,I({key:0,"aria-label":e.icon?e.name:void 0,variant:"tertiary"},r.linkAttributes),Pe({_:2},[t.$slots.icon||e.icon?{name:"icon",fn:w(()=>[ne(t.$slots,"icon",{},()=>[f("span",{class:W([e.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(t.$slots.icon||e.icon)||e.forceIconText?{name:"default",fn:w(()=>[Z($(e.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):L("",!0),t.$slots.default?(s(),C(u,{key:1,ref:"actions",container:a.actionsContainer,forceMenu:e.forceMenu,forceName:"",menuName:e.name,open:e.open,title:e.title,variant:"tertiary","onUpdate:open":r.onOpenChange},{icon:w(()=>[ne(t.$slots,"menu-icon",{},void 0,!0)]),default:w(()=>[ne(t.$slots,"default",{},void 0,!0)]),_:3},8,["container","forceMenu","menuName","open","title","onUpdate:open"])):L("",!0),_(p,{class:"vue-crumb__separator",size:20})],42,St)}const ee=te(Ft,[["render",xt],["__scopeId","data-v-46306025"]]),Vt={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Nt=["aria-hidden","aria-label"],Dt=["fill","width","height"],It={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Mt={key:0};function Rt(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",It,[e.title?(s(),c("title",Mt,$(e.title),1)):L("",!0)])],8,Dt))],16,Nt)}const Be=te(Vt,[["render",Rt]]),x="vue-crumb",At={name:"NcBreadcrumbs",components:{NcActions:me,NcActionButton:ze,NcActionRouter:Le,NcActionLink:$e,NcBreadcrumb:ee,IconFolder:Be},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",Je(()=>{this.handleWindowResize()},100)),Ge("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),je("navigation-toggled",this.delayedResize)},methods:{closeActions(t){this.$refs.actionsBreadcrumb.$el.contains(t.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const t=this.breadcrumbsRefs.length,i=[],e=this.$refs.container.offsetWidth;let a=this.getTotalWidth();this.$refs.breadcrumb__actions&&(a+=this.$refs.breadcrumb__actions.offsetWidth);let l=a-e;l+=l>0?64:0;let r=0;const n=Math.floor(t/2);for(;l>0&&ru-p))||(this.hiddenIndices=i)},arraysEqual(t,i){if(t.length!==i.length)return!1;if(t===i)return!0;if(t===null||i===null)return!1;for(let e=0;et+this.getWidth(i.$el,e===this.breadcrumbsRefs.length-1),0)},getWidth(t,i){if(!t?.classList)return 0;const e=t.classList.contains(`${x}--hidden`);t.style.minWidth="auto",i&&(t.style.maxWidth="210px"),t.classList.remove(`${x}--hidden`);const a=t.offsetWidth;return e&&t.classList.add(`${x}--hidden`),t.style.minWidth="",t.style.maxWidth="",a},preventDefault(t){return t.preventDefault&&t.preventDefault(),!1},dragStart(t){return this.preventDefault(t)},dropped(t,i,e){e||this.$emit("dropped",t,i),this.menuBreadcrumbProps.open=!1;const a=document.querySelectorAll(`.${x}`);for(const l of a)l.classList.remove(`${x}--hovered`);return this.preventDefault(t)},dragOver(t){return this.preventDefault(t)},dragEnter(t,i){if(!i&&t.target.closest){const e=t.target.closest(`.${x}`);if(e.classList&&e.classList.contains(x)){const a=document.querySelectorAll(`.${x}`);for(const l of a)l.classList.remove(`${x}--hovered`);e.classList.add(`${x}--hovered`)}}},dragLeave(t,i){if(!i&&!t.target.contains(t.relatedTarget)&&t.target.closest){const e=t.target.closest(`.${x}`);if(e.contains(t.relatedTarget))return;e.classList&&e.classList.contains(x)&&e.classList.remove(`${x}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((t,i)=>{t?.$el?.classList&&(this.hiddenIndices.includes(i)?t.$el.classList.add(`${x}--hidden`):t.$el.classList.remove(`${x}--hidden`))})},isBreadcrumb(t){return t?.type?.name==="NcBreadcrumb"}},render(){let t=[];if(this.$slots.default?.().forEach(l=>{if(this.isBreadcrumb(l)){t.push(l);return}l?.type===M&&l?.children?.forEach?.(r=>{this.isBreadcrumb(r)&&t.push(r)})}),t.length===0)return;t[0]=be(t[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];t=t.map((l,r)=>be(l,{ref:n=>{i[r]=n}}));const e=[...t];this.hiddenIndices.length&&e.splice(Math.round(t.length/2),0,H(ee,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":l=>{this.menuBreadcrumbProps.open=l}},{default:()=>this.hiddenIndices.filter(l=>l<=t.length-1).map(l=>{const r=t[l],{to:n,href:u,disableDrop:p,name:o,...b}=r.props;delete b.ref;let g=ze,v="";u&&(g=$e,v=u),n&&(g=Le,v=n);const S=H(Be,{size:20});return H(g,{...b,class:x,href:u||null,to:n||null,draggable:!1,onDragstart:this.dragStart,onDrop:N=>this.dropped(N,v,p),onDragover:this.dragOver,onDragenter:N=>this.dragEnter(N,p),onDragleave:N=>this.dragLeave(N,p)},{default:()=>o,icon:()=>S})})}));const a=[H("nav",{"aria-label":this.ariaLabel},[H("ul",{class:"breadcrumb__crumbs"},[e])])];return Xe(this.$slots.actions?.())&&a.push(H("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,H("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===t.length-2}],ref:"container"},a)}},Ht=te(At,[["__scopeId","data-v-0015282c"]]),Ut=new vt({concurrency:5});function Et(t){const{resolve:i,promise:e}=Promise.withResolvers();return Ut.add(()=>{const a=new Image;return a.onerror=()=>i(!1),a.onload=()=>i(!0),a.src=t,e}),e}function Wt(t,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const e=t.attributes?.previewUrl||he("/core/preview?fileId={fileid}",{fileid:t.fileid});let a;try{a=new URL(e)}catch{a=new URL(e,window.location.origin)}return a.searchParams.set("x",`${i.size}`),a.searchParams.set("y",`${i.size}`),a.searchParams.set("mimeFallback",`${i.mimeFallback}`),a.searchParams.set("a",i.cropPreview===!0?"0":"1"),a.searchParams.set("c",`${t.attributes.etag}`),a}catch{return null}}function Tt(t,i){const e=z(null),a=z(!1);return Ee(()=>{a.value=!1,e.value=Wt(q(t),q(i||{})),e.value&&q(t).type===j.File&&Et(e.value.href).then(l=>{a.value=l})}),{previewURL:e,previewLoaded:a}}const V=(t,i)=>{const e=t.__vccOpts||t;for(const[a,l]of i)e[a]=l;return e},Zt={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},qt=["aria-hidden","aria-label"],Ot=["fill","width","height"],jt={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},Jt={key:0};function Gt(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",jt,[e.title?(s(),c("title",Jt,$(e.title),1)):L("",!0)])],8,Ot))],16,qt)}const fe=V(Zt,[["render",Gt]]),Kt={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Qt=["aria-hidden","aria-label"],Xt=["fill","width","height"],Yt={d:"M7,10L12,15L17,10H7Z"},ei={key:0};function ti(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Yt,[e.title?(s(),c("title",ei,$(e.title),1)):L("",!0)])],8,Xt))],16,Qt)}const oe=V(Kt,[["render",ti]]),ii={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ai=["aria-hidden","aria-label"],li=["fill","width","height"],ri={d:"M7,15L12,10L17,15H7Z"},ni={key:0};function si(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ri,[e.title?(s(),c("title",ni,$(e.title),1)):L("",!0)])],8,li))],16,ai)}const ce=V(ii,[["render",si]]),oi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ci=["aria-hidden","aria-label"],di=["fill","width","height"],ui={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},pi={key:0};function fi(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ui,[e.title?(s(),c("title",pi,$(e.title),1)):L("",!0)])],8,di))],16,ci)}const Re=V(oi,[["render",fi]]),Ae={"file-picker__file-icon":"_file-picker__file-icon_3v9zx_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_3v9zx_21","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_3v9zx_25"},mi=U({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(t){const i=t,e=z(Ae),{previewURL:a,previewLoaded:l}=Tt(Se(i,"node"),y(()=>({cropPreview:i.cropImagePreviews}))),r=y(()=>i.node.type===j.File),n=y(()=>{if(i.node.type!==j.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return dt;if(i.node.attributes?.["is-tag"])return ut;const u=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(u.some(p=>p===_e.Link||p===_e.Email))return pt;if(u.length>0)return ke;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return mt;case"group":return ft;case"shared":return ke}return null});return(u,p)=>(s(),c("div",{style:Oe(d(l)?{backgroundImage:`url(${d(a)})`}:void 0),class:W(e.value["file-picker__file-icon"])},[d(l)?L("",!0):(s(),c(M,{key:0},[r.value?(s(),C(fe,{key:0,size:32})):(s(),c(M,{key:1},[n.value?(s(),C(d(De),{key:0,class:W(e.value["file-picker__file-icon-overlay"]),inline:"",path:n.value,size:16},null,8,["class","path"])):L("",!0),_(Re,{class:W(e.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),hi=["tabindex","aria-selected","data-filename"],vi={class:"row-name"},gi={class:"file-picker__name-container","data-testid":"row-name"},yi=["title","textContent"],bi=["textContent"],wi={class:"row-size"},ki={class:"row-modified"},_i=U({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(t,{emit:i}){const e=t,a=i,l=y(()=>e.node.mtime??0),r=y(()=>lt(e.node.displayname)),n=y(()=>e.node.displayname.slice(0,r.value?-r.value.length:void 0)),u=y(()=>e.node.type===j.Folder),p=y(()=>e.canPick&&(e.allowPickDirectory||!u.value)),o=y(()=>(e.node.permissions&Ce.READ)===Ce.READ);function b(){p.value&&a("update:selected",!e.selected)}function g(){u.value?o.value&&a("enterDirectory",e.node):b()}function v(S){S.key==="Enter"&&g()}return(S,N)=>(s(),c("tr",I({tabindex:t.showCheckbox&&!u.value?void 0:0,"aria-selected":p.value?t.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":t.selected&&!t.showCheckbox,"file-picker__row--not-navigatable":u.value&&!o.value,"file-picker__row--not-pickable":!p.value}]],"data-filename":t.node.basename,"data-testid":"file-list-row"},qe({click:g,...!t.showCheckbox||u.value?{keydown:v}:{}},!0)),[t.showCheckbox?(s(),c("td",{key:0,class:"row-checkbox",onClick:Q(()=>{},["stop"])},[_(d(xe),{"aria-label":d(h)("Select the row for {nodename}",{nodename:n.value}),disabled:!p.value,"data-testid":"row-checkbox",modelValue:t.selected,"onUpdate:modelValue":b},null,8,["aria-label","disabled","modelValue"])])):L("",!0),f("td",vi,[f("div",gi,[_(mi,{node:t.node,cropImagePreviews:t.cropImagePreviews},null,8,["node","cropImagePreviews"]),f("div",{class:"file-picker__file-name",title:n.value,textContent:$(n.value)},null,8,yi),f("div",{class:"file-picker__file-extension",textContent:$(r.value)},null,8,bi)])]),f("td",wi,$(d(it)(t.node.size||0)),1),f("td",ki,[_(d(nt),{timestamp:l.value,ignoreSeconds:""},null,8,["timestamp"])])],16,hi))}}),Ci=V(_i,[["__scopeId","data-v-7857e8bd"]]),zi={"aria-hidden":"true",class:"file-picker__row loading-row"},$i={key:0,class:"row-checkbox"},Li={class:"row-name"},Bi={class:"row-wrapper"},Pi=U({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(t){return(i,e)=>(s(),c("tr",zi,[t.showCheckbox?(s(),c("td",$i,[...e[0]||(e[0]=[f("span",null,null,-1)])])):L("",!0),f("td",Li,[f("div",Bi,[f("span",{class:W(d(Ae)["file-picker__file-icon"])},null,2),e[1]||(e[1]=f("span",null,null,-1))])]),e[2]||(e[2]=f("td",{class:"row-size"},[f("span")],-1)),e[3]||(e[3]=f("td",{class:"row-modified"},[f("span")],-1))]))}}),Fi=V(Pi,[["__scopeId","data-v-1f96131b"]]);function He(){const t=Ve("files","config",null),i=z(t?.show_hidden??!0),e=z(t?.sort_favorites_first??!0),a=z(t?.crop_image_previews??!0);return G(async()=>{if(Ne())J.debug("Skip loading files settings - currently on public share");else try{const{data:l}=await Ie.get(he("/apps/files/api/v1/configs"));i.value=l?.data?.show_hidden??!1,e.value=l?.data?.sort_favorites_first??!0,a.value=l?.data?.crop_image_previews??!0}catch(l){J.error("Could not load files settings",{error:l}),ve(h("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:e,cropImagePreviews:a}}function Si(t){const i=o=>o==="asc"?"ascending":o==="desc"?"descending":"none",e=Ve("files","viewConfigs",null),a=z({sortBy:e?.files?.sorting_mode??"basename",order:i(e?.files?.sorting_direction??"asc")}),l=z({sortBy:e?.recent?.sorting_mode??"basename",order:i(e?.recent?.sorting_direction??"asc")}),r=z({sortBy:e?.favorites?.sorting_mode??"basename",order:i(e?.favorites?.sorting_direction??"asc")});G(async()=>{if(Ne())J.debug("Skip loading files views - currently on public share");else try{const{data:o}=await Ie.get(he("/apps/files/api/v1/views"));a.value={sortBy:o?.data?.files?.sorting_mode??"basename",order:i(o?.data?.files?.sorting_direction)},r.value={sortBy:o?.data?.favorites?.sorting_mode??"basename",order:i(o?.data?.favorites?.sorting_direction)},l.value={sortBy:o?.data?.recent?.sorting_mode??"basename",order:i(o?.data?.recent?.sorting_direction)}}catch(o){J.error("Could not load files views",{error:o}),ve(h("Could not load files views"))}});const n=y(()=>q(t||"files")==="files"?a.value:q(t)==="recent"?l.value:r.value),u=y(()=>n.value.sortBy),p=y(()=>n.value.order);return{filesViewConfig:a,favoritesViewConfig:r,recentViewConfig:l,currentConfig:n,sortBy:u,order:p}}const xi={key:0,class:"row-checkbox"},Vi={class:"hidden-visually"},Ni=["aria-sort"],Di={class:"header-wrapper"},Ii={key:2,style:{width:"44px"}},Mi=["aria-sort"],Ri={key:2,style:{width:"44px"}},Ai=["aria-sort"],Hi={key:2,style:{width:"44px"}},Ui=U({__name:"FileList",props:ue({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(t){const i=pe(t,"path"),e=pe(t,"selectedFiles"),a=t,l=z(),{currentConfig:r}=Si(a.currentView),n=y(()=>l.value??r.value),u=y(()=>n.value.sortBy==="basename"?n.value.order==="none"?void 0:n.value.order:void 0),p=y(()=>n.value.sortBy==="size"?n.value.order==="none"?void 0:n.value.order:void 0),o=y(()=>n.value.sortBy==="mtime"?n.value.order==="none"?void 0:n.value.order:void 0);function b(B){n.value.sortBy===B?n.value.order==="ascending"?l.value={sortBy:n.value.sortBy,order:"descending"}:l.value={sortBy:n.value.sortBy,order:"ascending"}:l.value={sortBy:B,order:"ascending"}}const{sortFavoritesFirst:g,cropImagePreviews:v}=He(),S=y(()=>at(a.files,{sortFoldersFirst:!0,sortFavoritesFirst:g.value,sortingOrder:n.value.order==="descending"?"desc":"asc",sortingMode:n.value.sortBy})),N=y(()=>a.files.filter(B=>a.allowPickDirectory||B.type!==j.Folder)),T=y(()=>!a.loading&&e.value.length>0&&e.value.length>=N.value.length);function ie(){e.value.lengthP.path!==B.path):a.multiselect?e.value=[...e.value,B]:e.value=[B]}function K(B){i.value=B.path}const R=z(4),E=z();{const B=()=>Te(()=>{const P=E.value?.parentElement?.children||[];let F=E.value?.parentElement?.clientHeight||450;for(let A=0;A{window.addEventListener("resize",B),B()}),Ze(()=>{window.removeEventListener("resize",B)})}return(B,P)=>(s(),c("div",{ref_key:"fileContainer",ref:E,class:"file-picker__files"},[f("table",null,[f("thead",null,[f("tr",null,[t.multiselect?(s(),c("th",xi,[f("span",Vi,$(d(h)("Select entry")),1),t.multiselect?(s(),C(d(xe),{key:0,"aria-label":d(h)("Select all entries"),"data-testid":"select-all-checkbox",modelValue:T.value,"onUpdate:modelValue":ie},null,8,["aria-label","modelValue"])):L("",!0)])):L("",!0),f("th",{"aria-sort":u.value,class:"row-name"},[f("div",Di,[P[3]||(P[3]=f("span",{class:"file-picker__header-preview"},null,-1)),_(d(O),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:P[0]||(P[0]=F=>b("basename"))},{icon:w(()=>[u.value==="ascending"?(s(),C(ce,{key:0,size:20})):u.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Ii))]),default:w(()=>[Z(" "+$(d(h)("Name")),1)]),_:1})])],8,Ni),f("th",{"aria-sort":p.value,class:"row-size"},[_(d(O),{variant:"tertiary",wide:"",onClick:P[1]||(P[1]=F=>b("size"))},{icon:w(()=>[p.value==="ascending"?(s(),C(ce,{key:0,size:20})):p.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Ri))]),default:w(()=>[Z(" "+$(d(h)("Size")),1)]),_:1})],8,Mi),f("th",{"aria-sort":o.value,class:"row-modified"},[_(d(O),{variant:"tertiary",wide:"",onClick:P[2]||(P[2]=F=>b("mtime"))},{icon:w(()=>[o.value==="ascending"?(s(),C(ce,{key:0,size:20})):o.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Hi))]),default:w(()=>[Z(" "+$(d(h)("Modified")),1)]),_:1})],8,Ai)])]),f("tbody",null,[t.loading?(s(!0),c(M,{key:0},X(R.value,F=>(s(),C(Fi,{key:F,showCheckbox:t.multiselect},null,8,["showCheckbox"]))),128)):(s(!0),c(M,{key:1},X(S.value,F=>(s(),C(Ci,{key:F.fileid||F.path,allowPickDirectory:t.allowPickDirectory,showCheckbox:t.multiselect,canPick:(t.multiselect||e.value.length===0||e.value.includes(F))&&(t.canPick===void 0||t.canPick(F)),selected:e.value.includes(F),node:F,cropImagePreviews:d(v),"onUpdate:selected":A=>ae(F),onEnterDirectory:K},null,8,["allowPickDirectory","showCheckbox","canPick","selected","node","cropImagePreviews","onUpdate:selected"]))),128))])])],512))}}),Ei=V(Ui,[["__scopeId","data-v-412efd5c"]]),Wi={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ti=["aria-hidden","aria-label"],Zi=["fill","width","height"],qi={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},Oi={key:0};function ji(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",qi,[e.title?(s(),c("title",Oi,$(e.title),1)):L("",!0)])],8,Zi))],16,Ti)}const Ji=V(Wi,[["render",ji]]),Gi={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ki=["aria-hidden","aria-label"],Qi=["fill","width","height"],Xi={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},Yi={key:0};function ea(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Xi,[e.title?(s(),c("title",Yi,$(e.title),1)):L("",!0)])],8,Qi))],16,Ki)}const ta=V(Gi,[["render",ea]]),ia=U({__name:"FilePickerBreadcrumbs",props:ue({showMenu:{type:Boolean}},{path:{required:!0},pathModifiers:{}}),emits:ue(["createNode"],["update:path"]),setup(t,{emit:i}){const e=pe(t,"path"),a=i,l=z(!1),r=z(""),n=We("nameInput");function u(){const b=r.value.trim(),g=n.value?.$el?.querySelector("input");let v="";try{et(b)}catch(S){if(!(S instanceof tt))throw S;switch(S.reason){case se.Character:v=h('"{char}" is not allowed inside a folder name.',{char:S.segment});break;case se.ReservedName:v=h('"{segment}" is a reserved name and not allowed for folder names.',{segment:S.segment});break;case se.Extension:v=h('Folder names must not end with "{extension}".',{extension:S.segment});break;default:v=h("Invalid folder name.")}}return g&&g.setCustomValidity(v),v===""}function p(){const b=r.value.trim();u()&&(l.value=!1,a("createNode",b),r.value="")}const o=y(()=>e.value.split("/").filter(b=>b!=="").map((b,g,v)=>({name:b,path:"/"+v.slice(0,g+1).join("/")})));return(b,g)=>(s(),C(d(Ht),{class:"file-picker__breadcrumbs"},Pe({default:w(()=>[_(d(ee),{name:d(h)("All files"),title:d(h)("Home"),onClick:g[0]||(g[0]=v=>e.value="/")},{icon:w(()=>[_(Ji,{size:20})]),_:1},8,["name","title"]),(s(!0),c(M,null,X(o.value,v=>(s(),C(d(ee),{key:v.path,name:v.name,title:v.path,onClick:S=>e.value=v.path},null,8,["name","title","onClick"]))),128))]),_:2},[t.showMenu?{name:"actions",fn:w(()=>[_(d(me),{open:l.value,"onUpdate:open":g[2]||(g[2]=v=>l.value=v),"aria-label":d(h)("Create directory"),forceMenu:!0,forceName:!0,menuName:d(h)("New"),variant:"secondary",onClose:g[3]||(g[3]=v=>r.value="")},{icon:w(()=>[_(ta,{size:20})]),default:w(()=>[_(d(gt),{ref_key:"nameInput",ref:n,modelValue:r.value,"onUpdate:modelValue":[g[1]||(g[1]=v=>r.value=v),u],label:d(h)("New folder"),placeholder:d(h)("New folder name"),onSubmit:p},{icon:w(()=>[_(Re,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menuName"])]),key:"0"}:void 0]),1024))}}),aa=V(ia,[["__scopeId","data-v-b448b141"]]),la={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ra=["aria-hidden","aria-label"],na=["fill","width","height"],sa={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},oa={key:0};function ca(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",sa,[e.title?(s(),c("title",oa,$(e.title),1)):L("",!0)])],8,na))],16,ra)}const da=V(la,[["render",ca]]),ua={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pa=["aria-hidden","aria-label"],fa=["fill","width","height"],ma={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},ha={key:0};function va(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ma,[e.title?(s(),c("title",ha,$(e.title),1)):L("",!0)])],8,fa))],16,pa)}const ga=V(ua,[["render",va]]);function ya(t){const i=[{id:"files",label:h("All files"),icon:st},{id:"recent",label:h("Recent"),icon:ot},{id:"favorites",label:h("Favorites"),icon:ct}],e=t.value?i.filter(({id:a})=>a==="files"):i;return{allViews:i,availableViews:e}}const ba={key:0,class:"file-picker__side"},wa=U({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(t,{emit:i}){const e=t,a=i,{availableViews:l}=ya(z(Qe()===null)),r=y(()=>l.filter(u=>u.id===e.currentView)[0]??l[0]),n=u=>a("update:filterString",u.toString());return(u,p)=>(s(),c(M,null,[_(d(rt),{class:"file-picker__filter-input",label:d(h)("Filter file list"),showTrailingButton:!!t.filterString,modelValue:t.filterString,"onUpdate:modelValue":n,onTrailingButtonClick:p[0]||(p[0]=o=>n(""))},{"trailing-button-icon":w(()=>[_(da,{size:16})]),default:w(()=>[_(ga,{size:16})]),_:1},8,["label","showTrailingButton","modelValue"]),d(l).length>1&&!t.disabledNavigation?(s(),c(M,{key:0},[t.isCollapsed?(s(),C(d(yt),{key:1,"aria-label":d(h)("Current view selector"),clearable:!1,searchable:!1,options:d(l),modelValue:r.value,"onUpdate:modelValue":p[1]||(p[1]=o=>a("update:currentView",o.id))},null,8,["aria-label","options","modelValue"])):(s(),c("ul",ba,[(s(!0),c(M,null,X(d(l),o=>(s(),c("li",{key:o.id},[_(d(O),{variant:t.currentView===o.id?"primary":"tertiary",wide:!0,onClick:b=>u.$emit("update:currentView",o.id)},{icon:w(()=>[_(d(De),{path:o.icon,size:20},null,8,["path"])]),default:w(()=>[Z(" "+$(o.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):L("",!0)],64))}}),ka=V(wa,[["__scopeId","data-v-e1c54e23"]]);async function _a({client:t,signal:i}){const e=Math.round(Date.now()/1e3)-1209600,{data:a}=await t.search("/",{signal:i,details:!0,data:kt(e)});return a.results.map(l=>ye(l))}async function Ca({client:t,path:i,signal:e}){const a=(await t.getDirectoryContents(Y(ge,i),{signal:e,details:!0,includeSelf:!0,data:Me()})).data.map(l=>ye(l));return{contents:a.filter(({path:l})=>l!==i),folder:a.find(({path:l})=>i===l)}}async function za(t,i){const{data:e}=await t.stat(Y(ge,i),{details:!0,data:Me()});return ye(e)}function $a(t,i){const e=bt(),a=de([]),l=de(null),r=z(!0);let n;async function u(o){const b=Y(i.value,o);await e.createDirectory(Y(ge,b));const g=await za(e,b);return a.value=[...a.value,g],g}async function p(){n&&(n.abort(),n=void 0),n=new AbortController,r.value=!0;try{if(t.value==="favorites")a.value=await wt({client:e,path:i.value,signal:n.signal}),l.value=null;else if(t.value==="recent")a.value=await _a({client:e,signal:n.signal}),l.value=null;else{const o=await Ca({client:e,path:i.value,signal:n.signal});l.value=o.folder,a.value=o.contents}}catch(o){if(o instanceof Error&&o.name==="AbortError")return;throw o}finally{n=void 0,r.value=!1}}return Fe([t,i],()=>p()),G(()=>p()),{isLoading:r,files:a,folder:l,loadFiles:p,createDirectory:u}}function La(t){const i=y(()=>t.value.map(e=>e.split("/")));return{isSupportedMimeType:e=>{const a=e.split("/");return i.value.some(([l,r])=>(a[0]===l||l==="*")&&(a[1]===r||r==="*"))}}}const Ba={class:"file-picker__main"},Pa={key:1,class:"file-picker__view"},Fa=U({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(t,{emit:i}){const e=t,a=i,l=z(!0),r=z("files"),n=z(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),u=z(""),p=y({get:()=>r.value==="files"?u.value||e.path||n.value:"/",set:k=>{u.value=k}}),o=de([]),{files:b,folder:g,isLoading:v,loadFiles:S,createDirectory:N}=$a(r,p);Fe([u],()=>{e.path===void 0&&u.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",u.value),o.value=[]});let T=!1;const ie=y(()=>{const k=o.value.length===0&&e.allowPickDirectory&&g.value?[g.value]:o.value;return(typeof e.buttons=="function"?e.buttons(k,p.value,r.value):e.buttons).map(m=>({...m,disabled:m.disabled||v.value,callback:()=>{T=!0,ae(m.callback,k)}}))});async function ae(k,m){await k(m),a("close",m),T=!1}const K=y(()=>r.value==="favorites"?h("Favorites"):r.value==="recent"?h("Recent"):""),R=z(""),{isSupportedMimeType:E}=La(Se(e,"mimetypeFilter"));G(()=>S());const{showHiddenFiles:B}=He(),P=y(()=>{let k=b.value;return B.value||(k=k.filter(m=>!m.basename.startsWith("."))),e.mimetypeFilter.length>0&&(k=k.filter(m=>m.type==="folder"||m.mime&&E(m.mime))),R.value&&(k=k.filter(m=>m.basename.toLowerCase().includes(R.value.toLowerCase()))),e.filterFn&&(k=k.filter(m=>e.filterFn(m))),k}),F=y(()=>r.value==="files"?h("Upload some content or sync with your devices!"):r.value==="recent"?h("Files and folders you recently modified will show up here."):h("Files and folders you mark as favorite will show up here."));async function A(k){try{const m=await N(k);u.value=m.path,Ke("files:node:created",b.value.filter(D=>D.basename===k)[0])}catch(m){J.warn("Could not create new folder",{name:k,error:m}),ve(h("Could not create the new folder"))}}function Ue(k){!k&&!T&&a("close")}return(k,m)=>(s(),C(d(Ye),{open:l.value,"onUpdate:open":[m[6]||(m[6]=D=>l.value=D),Ue],buttons:ie.value,name:t.name,size:"large",contentClasses:"file-picker__content",dialogClasses:"file-picker",navigationClasses:"file-picker__navigation"},{navigation:w(({isCollapsed:D})=>[_(ka,{currentView:r.value,"onUpdate:currentView":m[0]||(m[0]=le=>r.value=le),filterString:R.value,"onUpdate:filterString":m[1]||(m[1]=le=>R.value=le),isCollapsed:D,disabledNavigation:t.disabledNavigation},null,8,["currentView","filterString","isCollapsed","disabledNavigation"])]),default:w(()=>[f("div",Ba,[r.value==="files"?(s(),C(aa,{key:0,path:p.value,"onUpdate:path":m[2]||(m[2]=D=>p.value=D),showMenu:!t.noMenu,onCreateNode:A},null,8,["path","showMenu"])):(s(),c("div",Pa,[f("h3",null,$(K.value),1)])),d(v)||P.value.length>0?(s(),C(Ei,{key:2,path:p.value,"onUpdate:path":[m[3]||(m[3]=D=>p.value=D),m[5]||(m[5]=D=>r.value="files")],selectedFiles:o.value,"onUpdate:selectedFiles":m[4]||(m[4]=D=>o.value=D),allowPickDirectory:t.allowPickDirectory,currentView:r.value,files:P.value,multiselect:t.multiselect,loading:d(v),name:K.value,canPick:t.canPickFn},null,8,["path","selectedFiles","allowPickDirectory","currentView","files","multiselect","loading","name","canPick"])):R.value?(s(),C(d(we),{key:3,name:d(h)("No matching files"),description:d(h)("No files matching your filter were found.")},{icon:w(()=>[_(fe)]),_:1},8,["name","description"])):(s(),C(d(we),{key:4,name:d(h)("No files in here"),description:F.value},{icon:w(()=>[_(fe)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),il=V(Fa,[["__scopeId","data-v-9b6534b1"]]);export{il as default}; -//# sourceMappingURL=FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs.map +import{f as re,j as c,o as s,c as C,l as L,e as _,y as Pe,w,m as ne,k as f,n as W,g as Z,t as $,z as I,E as Q,F as M,a7 as be,a5 as H,a4 as Ee,r as z,a1 as q,b as U,v as Fe,a8 as de,A as G,p as y,u as d,q as ue,s as pe,x as We,C as X,J as Te,B as Ze,Z as qe,D as Oe,V as Se}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{u as je,d as Je,s as Ge,e as Ke,a as Qe}from"./index-DqIuD5e7.chunk.mjs";import{a as me,k as Xe,N as Ye}from"./index-Bos-XXa5.chunk.mjs";import{N as we}from"./Plus-BsxGg9Cm.chunk.mjs";import{v as et,I as tt,d as se,f as it,s as at}from"./index-Dpj4ddZx.chunk.mjs";import{N as O}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as xe}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{l as Ve,i as Ne,j as Y,c as lt}from"./index-BgmsSgl5.chunk.mjs";import{_ as rt,a as nt}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{r as st,s as ot,t as ct,u as dt,v as ut,w as pt,x as ke,o as ft,c as mt}from"./mdi-e8YUrhPH.chunk.mjs";import{S as _e}from"./ShareType-suoNfd7y.chunk.mjs";import{_ as te,c as ht,g as he,N as De}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{F as j,P as Ce}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{P as vt,a as gt}from"./NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs";import{t as h,l as J,a as ve}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{c as Ie}from"./index-CPwHjAPR.chunk.mjs";import{N as ze}from"./PencilOutline-TGZB0t_n.chunk.mjs";import{N as $e,a as Le}from"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{N as yt}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{g as bt,h as wt,i as ge,j as kt,r as ye,k as Me}from"./dav-C3Vmpmsl.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";const _t={name:"ChevronRightIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ct=["aria-hidden","aria-label"],zt=["fill","width","height"],$t={d:"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z"},Lt={key:0};function Bt(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon chevron-right-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",$t,[e.title?(s(),c("title",Lt,$(e.title),1)):L("",!0)])],8,zt))],16,Ct)}const Pt=te(_t,[["render",Bt]]),Ft={name:"NcBreadcrumb",components:{NcActions:me,ChevronRight:Pt,NcButton:O},inheritAttrs:!1,props:{name:{type:String,required:!0},title:{type:String,default:null},to:{type:[String,Object],default:void 0},href:{type:String,default:void 0},icon:{type:String,default:""},forceIconText:{type:Boolean,default:!1},disableDrop:{type:Boolean,default:!1},forceMenu:{type:Boolean,default:!1},open:{type:Boolean,default:!1},class:{type:[String,Array,Object],default:""}},emits:["dragenter","dragleave","dropped","update:open"],setup(){const t=ht();return{actionsContainer:`.vue-crumb[data-crumb-id="${t}"]`,crumbId:t}},data(){return{hovering:!1}},computed:{linkAttributes(){return this.to?{to:this.to,...this.$attrs}:this.href?{href:this.href,...this.$attrs}:this.$attrs}},methods:{onOpenChange(t){this.$emit("update:open",t)},dropped(t){return this.disableDrop||(this.$emit("dropped",t,this.to||this.href),this.$parent.$emit("dropped",t,this.to||this.href),this.hovering=!1),!1},dragEnter(t){this.$emit("dragenter",t),!this.disableDrop&&(this.hovering=!0)},dragLeave(t){this.$emit("dragleave",t),!this.disableDrop&&(t.target.contains(t.relatedTarget)||this.$refs.crumb.contains(t.relatedTarget)||(this.hovering=!1))}}},St=["data-crumb-id"];function xt(t,i,e,a,l,r){const n=re("NcButton"),u=re("NcActions"),p=re("ChevronRight");return s(),c("li",{ref:"crumb",class:W(["vue-crumb",[{"vue-crumb--hovered":l.hovering},t.$props.class]]),"data-crumb-id":a.crumbId,draggable:"false",onDragstart:Q(()=>{},["prevent"]),onDrop:i[0]||(i[0]=Q((...o)=>r.dropped&&r.dropped(...o),["prevent"])),onDragover:Q(()=>{},["prevent"]),onDragenter:i[1]||(i[1]=(...o)=>r.dragEnter&&r.dragEnter(...o)),onDragleave:i[2]||(i[2]=(...o)=>r.dragLeave&&r.dragLeave(...o))},[(e.name||e.icon||t.$slots.icon)&&!t.$slots.default?(s(),C(n,I({key:0,"aria-label":e.icon?e.name:void 0,variant:"tertiary"},r.linkAttributes),Pe({_:2},[t.$slots.icon||e.icon?{name:"icon",fn:w(()=>[ne(t.$slots,"icon",{},()=>[f("span",{class:W([e.icon,"icon"])},null,2)],!0)]),key:"0"}:void 0,!(t.$slots.icon||e.icon)||e.forceIconText?{name:"default",fn:w(()=>[Z($(e.name),1)]),key:"1"}:void 0]),1040,["aria-label"])):L("",!0),t.$slots.default?(s(),C(u,{key:1,ref:"actions",container:a.actionsContainer,forceMenu:e.forceMenu,forceName:"",menuName:e.name,open:e.open,title:e.title,variant:"tertiary","onUpdate:open":r.onOpenChange},{icon:w(()=>[ne(t.$slots,"menu-icon",{},void 0,!0)]),default:w(()=>[ne(t.$slots,"default",{},void 0,!0)]),_:3},8,["container","forceMenu","menuName","open","title","onUpdate:open"])):L("",!0),_(p,{class:"vue-crumb__separator",size:20})],42,St)}const ee=te(Ft,[["render",xt],["__scopeId","data-v-46306025"]]),Vt={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Nt=["aria-hidden","aria-label"],Dt=["fill","width","height"],It={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},Mt={key:0};function Rt(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",It,[e.title?(s(),c("title",Mt,$(e.title),1)):L("",!0)])],8,Dt))],16,Nt)}const Be=te(Vt,[["render",Rt]]),x="vue-crumb",At={name:"NcBreadcrumbs",components:{NcActions:me,NcActionButton:ze,NcActionRouter:Le,NcActionLink:$e,NcBreadcrumb:ee,IconFolder:Be},props:{rootIcon:{type:String,default:"icon-home"},ariaLabel:{type:String,default:null}},emits:["dropped"],data(){return{hiddenIndices:[],menuBreadcrumbProps:{name:"",forceMenu:!0,disableDrop:!0,open:!1},breadcrumbsRefs:[]}},created(){window.addEventListener("resize",Je(()=>{this.handleWindowResize()},100)),Ge("navigation-toggled",this.delayedResize)},mounted(){this.handleWindowResize()},updated(){this.delayedResize(),this.$nextTick(()=>{this.hideCrumbs()})},beforeUnmount(){window.removeEventListener("resize",this.handleWindowResize),je("navigation-toggled",this.delayedResize)},methods:{closeActions(t){this.$refs.actionsBreadcrumb.$el.contains(t.relatedTarget)||(this.menuBreadcrumbProps.open=!1)},async delayedResize(){await this.$nextTick(),this.handleWindowResize()},handleWindowResize(){if(!this.$refs.container)return;const t=this.breadcrumbsRefs.length,i=[],e=this.$refs.container.offsetWidth;let a=this.getTotalWidth();this.$refs.breadcrumb__actions&&(a+=this.$refs.breadcrumb__actions.offsetWidth);let l=a-e;l+=l>0?64:0;let r=0;const n=Math.floor(t/2);for(;l>0&&ru-p))||(this.hiddenIndices=i)},arraysEqual(t,i){if(t.length!==i.length)return!1;if(t===i)return!0;if(t===null||i===null)return!1;for(let e=0;et+this.getWidth(i.$el,e===this.breadcrumbsRefs.length-1),0)},getWidth(t,i){if(!t?.classList)return 0;const e=t.classList.contains(`${x}--hidden`);t.style.minWidth="auto",i&&(t.style.maxWidth="210px"),t.classList.remove(`${x}--hidden`);const a=t.offsetWidth;return e&&t.classList.add(`${x}--hidden`),t.style.minWidth="",t.style.maxWidth="",a},preventDefault(t){return t.preventDefault&&t.preventDefault(),!1},dragStart(t){return this.preventDefault(t)},dropped(t,i,e){e||this.$emit("dropped",t,i),this.menuBreadcrumbProps.open=!1;const a=document.querySelectorAll(`.${x}`);for(const l of a)l.classList.remove(`${x}--hovered`);return this.preventDefault(t)},dragOver(t){return this.preventDefault(t)},dragEnter(t,i){if(!i&&t.target.closest){const e=t.target.closest(`.${x}`);if(e.classList&&e.classList.contains(x)){const a=document.querySelectorAll(`.${x}`);for(const l of a)l.classList.remove(`${x}--hovered`);e.classList.add(`${x}--hovered`)}}},dragLeave(t,i){if(!i&&!t.target.contains(t.relatedTarget)&&t.target.closest){const e=t.target.closest(`.${x}`);if(e.contains(t.relatedTarget))return;e.classList&&e.classList.contains(x)&&e.classList.remove(`${x}--hovered`)}},hideCrumbs(){this.breadcrumbsRefs.forEach((t,i)=>{t?.$el?.classList&&(this.hiddenIndices.includes(i)?t.$el.classList.add(`${x}--hidden`):t.$el.classList.remove(`${x}--hidden`))})},isBreadcrumb(t){return t?.type?.name==="NcBreadcrumb"}},render(){let t=[];if(this.$slots.default?.().forEach(l=>{if(this.isBreadcrumb(l)){t.push(l);return}l?.type===M&&l?.children?.forEach?.(r=>{this.isBreadcrumb(r)&&t.push(r)})}),t.length===0)return;t[0]=be(t[0],{icon:this.rootIcon,ref:"breadcrumbs"});const i=[];t=t.map((l,r)=>be(l,{ref:n=>{i[r]=n}}));const e=[...t];this.hiddenIndices.length&&e.splice(Math.round(t.length/2),0,H(ee,{class:"dropdown",...this.menuBreadcrumbProps,"aria-hidden":!0,ref:"actionsBreadcrumb",key:"actions-breadcrumb-1",onDragenter:()=>{this.menuBreadcrumbProps.open=!0},onDragleave:this.closeActions,"onUpdate:open":l=>{this.menuBreadcrumbProps.open=l}},{default:()=>this.hiddenIndices.filter(l=>l<=t.length-1).map(l=>{const r=t[l],{to:n,href:u,disableDrop:p,name:o,...b}=r.props;delete b.ref;let g=ze,v="";u&&(g=$e,v=u),n&&(g=Le,v=n);const S=H(Be,{size:20});return H(g,{...b,class:x,href:u||null,to:n||null,draggable:!1,onDragstart:this.dragStart,onDrop:N=>this.dropped(N,v,p),onDragover:this.dragOver,onDragenter:N=>this.dragEnter(N,p),onDragleave:N=>this.dragLeave(N,p)},{default:()=>o,icon:()=>S})})}));const a=[H("nav",{"aria-label":this.ariaLabel},[H("ul",{class:"breadcrumb__crumbs"},[e])])];return Xe(this.$slots.actions?.())&&a.push(H("div",{class:"breadcrumb__actions",ref:"breadcrumb__actions"},this.$slots.actions?.())),this.breadcrumbsRefs=i,H("div",{class:["breadcrumb",{"breadcrumb--collapsed":this.hiddenIndices.length===t.length-2}],ref:"container"},a)}},Ht=te(At,[["__scopeId","data-v-0015282c"]]),Ut=new vt({concurrency:5});function Et(t){const{resolve:i,promise:e}=Promise.withResolvers();return Ut.add(()=>{const a=new Image;return a.onerror=()=>i(!1),a.onload=()=>i(!0),a.src=t,e}),e}function Wt(t,i={}){i={size:32,cropPreview:!1,mimeFallback:!0,...i};try{const e=t.attributes?.previewUrl||he("/core/preview?fileId={fileid}",{fileid:t.fileid});let a;try{a=new URL(e)}catch{a=new URL(e,window.location.origin)}return a.searchParams.set("x",`${i.size}`),a.searchParams.set("y",`${i.size}`),a.searchParams.set("mimeFallback",`${i.mimeFallback}`),a.searchParams.set("a",i.cropPreview===!0?"0":"1"),a.searchParams.set("c",`${t.attributes.etag}`),a}catch{return null}}function Tt(t,i){const e=z(null),a=z(!1);return Ee(()=>{a.value=!1,e.value=Wt(q(t),q(i||{})),e.value&&q(t).type===j.File&&Et(e.value.href).then(l=>{a.value=l})}),{previewURL:e,previewLoaded:a}}const V=(t,i)=>{const e=t.__vccOpts||t;for(const[a,l]of i)e[a]=l;return e},Zt={name:"FileIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},qt=["aria-hidden","aria-label"],Ot=["fill","width","height"],jt={d:"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z"},Jt={key:0};function Gt(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon file-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",jt,[e.title?(s(),c("title",Jt,$(e.title),1)):L("",!0)])],8,Ot))],16,qt)}const fe=V(Zt,[["render",Gt]]),Kt={name:"MenuDownIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Qt=["aria-hidden","aria-label"],Xt=["fill","width","height"],Yt={d:"M7,10L12,15L17,10H7Z"},ei={key:0};function ti(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-down-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Yt,[e.title?(s(),c("title",ei,$(e.title),1)):L("",!0)])],8,Xt))],16,Qt)}const oe=V(Kt,[["render",ti]]),ii={name:"MenuUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ai=["aria-hidden","aria-label"],li=["fill","width","height"],ri={d:"M7,15L12,10L17,15H7Z"},ni={key:0};function si(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon menu-up-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ri,[e.title?(s(),c("title",ni,$(e.title),1)):L("",!0)])],8,li))],16,ai)}const ce=V(ii,[["render",si]]),oi={name:"FolderIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ci=["aria-hidden","aria-label"],di=["fill","width","height"],ui={d:"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z"},pi={key:0};function fi(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon folder-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ui,[e.title?(s(),c("title",pi,$(e.title),1)):L("",!0)])],8,di))],16,ci)}const Re=V(oi,[["render",fi]]),Ae={"file-picker__file-icon":"_file-picker__file-icon_3v9zx_9","file-picker__file-icon--primary":"_file-picker__file-icon--primary_3v9zx_21","file-picker__file-icon-overlay":"_file-picker__file-icon-overlay_3v9zx_25"},mi=U({__name:"FilePreview",props:{node:{},cropImagePreviews:{type:Boolean}},setup(t){const i=t,e=z(Ae),{previewURL:a,previewLoaded:l}=Tt(Se(i,"node"),y(()=>({cropPreview:i.cropImagePreviews}))),r=y(()=>i.node.type===j.File),n=y(()=>{if(i.node.type!==j.Folder)return null;if(i.node.attributes?.["is-encrypted"]===1)return dt;if(i.node.attributes?.["is-tag"])return ut;const u=Object.values(i.node.attributes?.["share-types"]||{}).flat();if(u.some(p=>p===_e.Link||p===_e.Email))return pt;if(u.length>0)return ke;switch(i.node.attributes?.["mount-type"]){case"external":case"external-session":return mt;case"group":return ft;case"shared":return ke}return null});return(u,p)=>(s(),c("div",{style:Oe(d(l)?{backgroundImage:`url(${d(a)})`}:void 0),class:W(e.value["file-picker__file-icon"])},[d(l)?L("",!0):(s(),c(M,{key:0},[r.value?(s(),C(fe,{key:0,size:32})):(s(),c(M,{key:1},[n.value?(s(),C(d(De),{key:0,class:W(e.value["file-picker__file-icon-overlay"]),inline:"",path:n.value,size:16},null,8,["class","path"])):L("",!0),_(Re,{class:W(e.value["file-picker__file-icon--primary"]),size:32},null,8,["class"])],64))],64))],6))}}),hi=["tabindex","aria-selected","data-filename"],vi={class:"row-name"},gi={class:"file-picker__name-container","data-testid":"row-name"},yi=["title","textContent"],bi=["textContent"],wi={class:"row-size"},ki={class:"row-modified"},_i=U({__name:"FileListRow",props:{allowPickDirectory:{type:Boolean},selected:{type:Boolean},showCheckbox:{type:Boolean},canPick:{type:Boolean},node:{},cropImagePreviews:{type:Boolean}},emits:["update:selected","enterDirectory"],setup(t,{emit:i}){const e=t,a=i,l=y(()=>e.node.mtime??0),r=y(()=>lt(e.node.displayname)),n=y(()=>e.node.displayname.slice(0,r.value?-r.value.length:void 0)),u=y(()=>e.node.type===j.Folder),p=y(()=>e.canPick&&(e.allowPickDirectory||!u.value)),o=y(()=>(e.node.permissions&Ce.READ)===Ce.READ);function b(){p.value&&a("update:selected",!e.selected)}function g(){u.value?o.value&&a("enterDirectory",e.node):b()}function v(S){S.key==="Enter"&&g()}return(S,N)=>(s(),c("tr",I({tabindex:t.showCheckbox&&!u.value?void 0:0,"aria-selected":p.value?t.selected:void 0,class:["file-picker__row",[{"file-picker__row--selected":t.selected&&!t.showCheckbox,"file-picker__row--not-navigatable":u.value&&!o.value,"file-picker__row--not-pickable":!p.value}]],"data-filename":t.node.basename,"data-testid":"file-list-row"},qe({click:g,...!t.showCheckbox||u.value?{keydown:v}:{}},!0)),[t.showCheckbox?(s(),c("td",{key:0,class:"row-checkbox",onClick:Q(()=>{},["stop"])},[_(d(xe),{"aria-label":d(h)("Select the row for {nodename}",{nodename:n.value}),disabled:!p.value,"data-testid":"row-checkbox",modelValue:t.selected,"onUpdate:modelValue":b},null,8,["aria-label","disabled","modelValue"])])):L("",!0),f("td",vi,[f("div",gi,[_(mi,{node:t.node,cropImagePreviews:t.cropImagePreviews},null,8,["node","cropImagePreviews"]),f("div",{class:"file-picker__file-name",title:n.value,textContent:$(n.value)},null,8,yi),f("div",{class:"file-picker__file-extension",textContent:$(r.value)},null,8,bi)])]),f("td",wi,$(d(it)(t.node.size||0)),1),f("td",ki,[_(d(nt),{timestamp:l.value,ignoreSeconds:""},null,8,["timestamp"])])],16,hi))}}),Ci=V(_i,[["__scopeId","data-v-7857e8bd"]]),zi={"aria-hidden":"true",class:"file-picker__row loading-row"},$i={key:0,class:"row-checkbox"},Li={class:"row-name"},Bi={class:"row-wrapper"},Pi=U({__name:"LoadingTableRow",props:{showCheckbox:{type:Boolean}},setup(t){return(i,e)=>(s(),c("tr",zi,[t.showCheckbox?(s(),c("td",$i,[...e[0]||(e[0]=[f("span",null,null,-1)])])):L("",!0),f("td",Li,[f("div",Bi,[f("span",{class:W(d(Ae)["file-picker__file-icon"])},null,2),e[1]||(e[1]=f("span",null,null,-1))])]),e[2]||(e[2]=f("td",{class:"row-size"},[f("span")],-1)),e[3]||(e[3]=f("td",{class:"row-modified"},[f("span")],-1))]))}}),Fi=V(Pi,[["__scopeId","data-v-1f96131b"]]);function He(){const t=Ve("files","config",null),i=z(t?.show_hidden??!0),e=z(t?.sort_favorites_first??!0),a=z(t?.crop_image_previews??!0);return G(async()=>{if(Ne())J.debug("Skip loading files settings - currently on public share");else try{const{data:l}=await Ie.get(he("/apps/files/api/v1/configs"));i.value=l?.data?.show_hidden??!1,e.value=l?.data?.sort_favorites_first??!0,a.value=l?.data?.crop_image_previews??!0}catch(l){J.error("Could not load files settings",{error:l}),ve(h("Could not load files settings"))}}),{showHiddenFiles:i,sortFavoritesFirst:e,cropImagePreviews:a}}function Si(t){const i=o=>o==="asc"?"ascending":o==="desc"?"descending":"none",e=Ve("files","viewConfigs",null),a=z({sortBy:e?.files?.sorting_mode??"basename",order:i(e?.files?.sorting_direction??"asc")}),l=z({sortBy:e?.recent?.sorting_mode??"basename",order:i(e?.recent?.sorting_direction??"asc")}),r=z({sortBy:e?.favorites?.sorting_mode??"basename",order:i(e?.favorites?.sorting_direction??"asc")});G(async()=>{if(Ne())J.debug("Skip loading files views - currently on public share");else try{const{data:o}=await Ie.get(he("/apps/files/api/v1/views"));a.value={sortBy:o?.data?.files?.sorting_mode??"basename",order:i(o?.data?.files?.sorting_direction)},r.value={sortBy:o?.data?.favorites?.sorting_mode??"basename",order:i(o?.data?.favorites?.sorting_direction)},l.value={sortBy:o?.data?.recent?.sorting_mode??"basename",order:i(o?.data?.recent?.sorting_direction)}}catch(o){J.error("Could not load files views",{error:o}),ve(h("Could not load files views"))}});const n=y(()=>q(t||"files")==="files"?a.value:q(t)==="recent"?l.value:r.value),u=y(()=>n.value.sortBy),p=y(()=>n.value.order);return{filesViewConfig:a,favoritesViewConfig:r,recentViewConfig:l,currentConfig:n,sortBy:u,order:p}}const xi={key:0,class:"row-checkbox"},Vi={class:"hidden-visually"},Ni=["aria-sort"],Di={class:"header-wrapper"},Ii={key:2,style:{width:"44px"}},Mi=["aria-sort"],Ri={key:2,style:{width:"44px"}},Ai=["aria-sort"],Hi={key:2,style:{width:"44px"}},Ui=U({__name:"FileList",props:ue({currentView:{},multiselect:{type:Boolean},allowPickDirectory:{type:Boolean},loading:{type:Boolean},files:{},canPick:{type:Function}},{path:{required:!0},pathModifiers:{},selectedFiles:{required:!0},selectedFilesModifiers:{}}),emits:["update:path","update:selectedFiles"],setup(t){const i=pe(t,"path"),e=pe(t,"selectedFiles"),a=t,l=z(),{currentConfig:r}=Si(a.currentView),n=y(()=>l.value??r.value),u=y(()=>n.value.sortBy==="basename"?n.value.order==="none"?void 0:n.value.order:void 0),p=y(()=>n.value.sortBy==="size"?n.value.order==="none"?void 0:n.value.order:void 0),o=y(()=>n.value.sortBy==="mtime"?n.value.order==="none"?void 0:n.value.order:void 0);function b(B){n.value.sortBy===B?n.value.order==="ascending"?l.value={sortBy:n.value.sortBy,order:"descending"}:l.value={sortBy:n.value.sortBy,order:"ascending"}:l.value={sortBy:B,order:"ascending"}}const{sortFavoritesFirst:g,cropImagePreviews:v}=He(),S=y(()=>at(a.files,{sortFoldersFirst:!0,sortFavoritesFirst:g.value,sortingOrder:n.value.order==="descending"?"desc":"asc",sortingMode:n.value.sortBy})),N=y(()=>a.files.filter(B=>a.allowPickDirectory||B.type!==j.Folder)),T=y(()=>!a.loading&&e.value.length>0&&e.value.length>=N.value.length);function ie(){e.value.lengthP.path!==B.path):a.multiselect?e.value=[...e.value,B]:e.value=[B]}function K(B){i.value=B.path}const R=z(4),E=z();{const B=()=>Te(()=>{const P=E.value?.parentElement?.children||[];let F=E.value?.parentElement?.clientHeight||450;for(let A=0;A{window.addEventListener("resize",B),B()}),Ze(()=>{window.removeEventListener("resize",B)})}return(B,P)=>(s(),c("div",{ref_key:"fileContainer",ref:E,class:"file-picker__files"},[f("table",null,[f("thead",null,[f("tr",null,[t.multiselect?(s(),c("th",xi,[f("span",Vi,$(d(h)("Select entry")),1),t.multiselect?(s(),C(d(xe),{key:0,"aria-label":d(h)("Select all entries"),"data-testid":"select-all-checkbox",modelValue:T.value,"onUpdate:modelValue":ie},null,8,["aria-label","modelValue"])):L("",!0)])):L("",!0),f("th",{"aria-sort":u.value,class:"row-name"},[f("div",Di,[P[3]||(P[3]=f("span",{class:"file-picker__header-preview"},null,-1)),_(d(O),{"data-test":"file-picker_sort-name",variant:"tertiary",wide:"",onClick:P[0]||(P[0]=F=>b("basename"))},{icon:w(()=>[u.value==="ascending"?(s(),C(ce,{key:0,size:20})):u.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Ii))]),default:w(()=>[Z(" "+$(d(h)("Name")),1)]),_:1})])],8,Ni),f("th",{"aria-sort":p.value,class:"row-size"},[_(d(O),{variant:"tertiary",wide:"",onClick:P[1]||(P[1]=F=>b("size"))},{icon:w(()=>[p.value==="ascending"?(s(),C(ce,{key:0,size:20})):p.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Ri))]),default:w(()=>[Z(" "+$(d(h)("Size")),1)]),_:1})],8,Mi),f("th",{"aria-sort":o.value,class:"row-modified"},[_(d(O),{variant:"tertiary",wide:"",onClick:P[2]||(P[2]=F=>b("mtime"))},{icon:w(()=>[o.value==="ascending"?(s(),C(ce,{key:0,size:20})):o.value==="descending"?(s(),C(oe,{key:1,size:20})):(s(),c("span",Hi))]),default:w(()=>[Z(" "+$(d(h)("Modified")),1)]),_:1})],8,Ai)])]),f("tbody",null,[t.loading?(s(!0),c(M,{key:0},X(R.value,F=>(s(),C(Fi,{key:F,showCheckbox:t.multiselect},null,8,["showCheckbox"]))),128)):(s(!0),c(M,{key:1},X(S.value,F=>(s(),C(Ci,{key:F.fileid||F.path,allowPickDirectory:t.allowPickDirectory,showCheckbox:t.multiselect,canPick:(t.multiselect||e.value.length===0||e.value.includes(F))&&(t.canPick===void 0||t.canPick(F)),selected:e.value.includes(F),node:F,cropImagePreviews:d(v),"onUpdate:selected":A=>ae(F),onEnterDirectory:K},null,8,["allowPickDirectory","showCheckbox","canPick","selected","node","cropImagePreviews","onUpdate:selected"]))),128))])])],512))}}),Ei=V(Ui,[["__scopeId","data-v-412efd5c"]]),Wi={name:"HomeIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ti=["aria-hidden","aria-label"],Zi=["fill","width","height"],qi={d:"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z"},Oi={key:0};function ji(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon home-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",qi,[e.title?(s(),c("title",Oi,$(e.title),1)):L("",!0)])],8,Zi))],16,Ti)}const Ji=V(Wi,[["render",ji]]),Gi={name:"PlusIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ki=["aria-hidden","aria-label"],Qi=["fill","width","height"],Xi={d:"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z"},Yi={key:0};function ea(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon plus-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",Xi,[e.title?(s(),c("title",Yi,$(e.title),1)):L("",!0)])],8,Qi))],16,Ki)}const ta=V(Gi,[["render",ea]]),ia=U({__name:"FilePickerBreadcrumbs",props:ue({showMenu:{type:Boolean}},{path:{required:!0},pathModifiers:{}}),emits:ue(["createNode"],["update:path"]),setup(t,{emit:i}){const e=pe(t,"path"),a=i,l=z(!1),r=z(""),n=We("nameInput");function u(){const b=r.value.trim(),g=n.value?.$el?.querySelector("input");let v="";try{et(b)}catch(S){if(!(S instanceof tt))throw S;switch(S.reason){case se.Character:v=h('"{char}" is not allowed inside a folder name.',{char:S.segment});break;case se.ReservedName:v=h('"{segment}" is a reserved name and not allowed for folder names.',{segment:S.segment});break;case se.Extension:v=h('Folder names must not end with "{extension}".',{extension:S.segment});break;default:v=h("Invalid folder name.")}}return g&&g.setCustomValidity(v),v===""}function p(){const b=r.value.trim();u()&&(l.value=!1,a("createNode",b),r.value="")}const o=y(()=>e.value.split("/").filter(b=>b!=="").map((b,g,v)=>({name:b,path:"/"+v.slice(0,g+1).join("/")})));return(b,g)=>(s(),C(d(Ht),{class:"file-picker__breadcrumbs"},Pe({default:w(()=>[_(d(ee),{name:d(h)("All files"),title:d(h)("Home"),onClick:g[0]||(g[0]=v=>e.value="/")},{icon:w(()=>[_(Ji,{size:20})]),_:1},8,["name","title"]),(s(!0),c(M,null,X(o.value,v=>(s(),C(d(ee),{key:v.path,name:v.name,title:v.path,onClick:S=>e.value=v.path},null,8,["name","title","onClick"]))),128))]),_:2},[t.showMenu?{name:"actions",fn:w(()=>[_(d(me),{open:l.value,"onUpdate:open":g[2]||(g[2]=v=>l.value=v),"aria-label":d(h)("Create directory"),forceMenu:!0,forceName:!0,menuName:d(h)("New"),variant:"secondary",onClose:g[3]||(g[3]=v=>r.value="")},{icon:w(()=>[_(ta,{size:20})]),default:w(()=>[_(d(gt),{ref_key:"nameInput",ref:n,modelValue:r.value,"onUpdate:modelValue":[g[1]||(g[1]=v=>r.value=v),u],label:d(h)("New folder"),placeholder:d(h)("New folder name"),onSubmit:p},{icon:w(()=>[_(Re,{size:20})]),_:1},8,["modelValue","label","placeholder"])]),_:1},8,["open","aria-label","menuName"])]),key:"0"}:void 0]),1024))}}),aa=V(ia,[["__scopeId","data-v-b448b141"]]),la={name:"CloseIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ra=["aria-hidden","aria-label"],na=["fill","width","height"],sa={d:"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z"},oa={key:0};function ca(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon close-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",sa,[e.title?(s(),c("title",oa,$(e.title),1)):L("",!0)])],8,na))],16,ra)}const da=V(la,[["render",ca]]),ua={name:"MagnifyIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},pa=["aria-hidden","aria-label"],fa=["fill","width","height"],ma={d:"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z"},ha={key:0};function va(t,i,e,a,l,r){return s(),c("span",I(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon magnify-icon",role:"img",onClick:i[0]||(i[0]=n=>t.$emit("click",n))}),[(s(),c("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[f("path",ma,[e.title?(s(),c("title",ha,$(e.title),1)):L("",!0)])],8,fa))],16,pa)}const ga=V(ua,[["render",va]]);function ya(t){const i=[{id:"files",label:h("All files"),icon:st},{id:"recent",label:h("Recent"),icon:ot},{id:"favorites",label:h("Favorites"),icon:ct}],e=t.value?i.filter(({id:a})=>a==="files"):i;return{allViews:i,availableViews:e}}const ba={key:0,class:"file-picker__side"},wa=U({__name:"FilePickerNavigation",props:{currentView:{},filterString:{},isCollapsed:{type:Boolean},disabledNavigation:{type:Boolean}},emits:["update:currentView","update:filterString"],setup(t,{emit:i}){const e=t,a=i,{availableViews:l}=ya(z(Qe()===null)),r=y(()=>l.filter(u=>u.id===e.currentView)[0]??l[0]),n=u=>a("update:filterString",u.toString());return(u,p)=>(s(),c(M,null,[_(d(rt),{class:"file-picker__filter-input",label:d(h)("Filter file list"),showTrailingButton:!!t.filterString,modelValue:t.filterString,"onUpdate:modelValue":n,onTrailingButtonClick:p[0]||(p[0]=o=>n(""))},{"trailing-button-icon":w(()=>[_(da,{size:16})]),default:w(()=>[_(ga,{size:16})]),_:1},8,["label","showTrailingButton","modelValue"]),d(l).length>1&&!t.disabledNavigation?(s(),c(M,{key:0},[t.isCollapsed?(s(),C(d(yt),{key:1,"aria-label":d(h)("Current view selector"),clearable:!1,searchable:!1,options:d(l),modelValue:r.value,"onUpdate:modelValue":p[1]||(p[1]=o=>a("update:currentView",o.id))},null,8,["aria-label","options","modelValue"])):(s(),c("ul",ba,[(s(!0),c(M,null,X(d(l),o=>(s(),c("li",{key:o.id},[_(d(O),{variant:t.currentView===o.id?"primary":"tertiary",wide:!0,onClick:b=>u.$emit("update:currentView",o.id)},{icon:w(()=>[_(d(De),{path:o.icon,size:20},null,8,["path"])]),default:w(()=>[Z(" "+$(o.label),1)]),_:2},1032,["variant","onClick"])]))),128))]))],64)):L("",!0)],64))}}),ka=V(wa,[["__scopeId","data-v-e1c54e23"]]);async function _a({client:t,signal:i}){const e=Math.round(Date.now()/1e3)-1209600,{data:a}=await t.search("/",{signal:i,details:!0,data:kt(e)});return a.results.map(l=>ye(l))}async function Ca({client:t,path:i,signal:e}){const a=(await t.getDirectoryContents(Y(ge,i),{signal:e,details:!0,includeSelf:!0,data:Me()})).data.map(l=>ye(l));return{contents:a.filter(({path:l})=>l!==i),folder:a.find(({path:l})=>i===l)}}async function za(t,i){const{data:e}=await t.stat(Y(ge,i),{details:!0,data:Me()});return ye(e)}function $a(t,i){const e=bt(),a=de([]),l=de(null),r=z(!0);let n;async function u(o){const b=Y(i.value,o);await e.createDirectory(Y(ge,b));const g=await za(e,b);return a.value=[...a.value,g],g}async function p(){n&&(n.abort(),n=void 0),n=new AbortController,r.value=!0;try{if(t.value==="favorites")a.value=await wt({client:e,path:i.value,signal:n.signal}),l.value=null;else if(t.value==="recent")a.value=await _a({client:e,signal:n.signal}),l.value=null;else{const o=await Ca({client:e,path:i.value,signal:n.signal});l.value=o.folder,a.value=o.contents}}catch(o){if(o instanceof Error&&o.name==="AbortError")return;throw o}finally{n=void 0,r.value=!1}}return Fe([t,i],()=>p()),G(()=>p()),{isLoading:r,files:a,folder:l,loadFiles:p,createDirectory:u}}function La(t){const i=y(()=>t.value.map(e=>e.split("/")));return{isSupportedMimeType:e=>{const a=e.split("/");return i.value.some(([l,r])=>(a[0]===l||l==="*")&&(a[1]===r||r==="*"))}}}const Ba={class:"file-picker__main"},Pa={key:1,class:"file-picker__view"},Fa=U({__name:"FilePicker",props:{buttons:{},name:{},allowPickDirectory:{type:Boolean,default:!1},noMenu:{type:Boolean,default:!1},disabledNavigation:{type:Boolean,default:!1},filterFn:{type:Function,default:void 0},canPickFn:{type:Function,default:void 0},mimetypeFilter:{default:()=>[]},multiselect:{type:Boolean,default:!1},path:{default:void 0}},emits:["close"],setup(t,{emit:i}){const e=t,a=i,l=z(!0),r=z("files"),n=z(window?.sessionStorage.getItem("NC.FilePicker.LastPath")||"/"),u=z(""),p=y({get:()=>r.value==="files"?u.value||e.path||n.value:"/",set:k=>{u.value=k}}),o=de([]),{files:b,folder:g,isLoading:v,loadFiles:S,createDirectory:N}=$a(r,p);Fe([u],()=>{e.path===void 0&&u.value&&window.sessionStorage.setItem("NC.FilePicker.LastPath",u.value),o.value=[]});let T=!1;const ie=y(()=>{const k=o.value.length===0&&e.allowPickDirectory&&g.value?[g.value]:o.value;return(typeof e.buttons=="function"?e.buttons(k,p.value,r.value):e.buttons).map(m=>({...m,disabled:m.disabled||v.value,callback:()=>{T=!0,ae(m.callback,k)}}))});async function ae(k,m){await k(m),a("close",m),T=!1}const K=y(()=>r.value==="favorites"?h("Favorites"):r.value==="recent"?h("Recent"):""),R=z(""),{isSupportedMimeType:E}=La(Se(e,"mimetypeFilter"));G(()=>S());const{showHiddenFiles:B}=He(),P=y(()=>{let k=b.value;return B.value||(k=k.filter(m=>!m.basename.startsWith("."))),e.mimetypeFilter.length>0&&(k=k.filter(m=>m.type==="folder"||m.mime&&E(m.mime))),R.value&&(k=k.filter(m=>m.basename.toLowerCase().includes(R.value.toLowerCase()))),e.filterFn&&(k=k.filter(m=>e.filterFn(m))),k}),F=y(()=>r.value==="files"?h("Upload some content or sync with your devices!"):r.value==="recent"?h("Files and folders you recently modified will show up here."):h("Files and folders you mark as favorite will show up here."));async function A(k){try{const m=await N(k);u.value=m.path,Ke("files:node:created",b.value.filter(D=>D.basename===k)[0])}catch(m){J.warn("Could not create new folder",{name:k,error:m}),ve(h("Could not create the new folder"))}}function Ue(k){!k&&!T&&a("close")}return(k,m)=>(s(),C(d(Ye),{open:l.value,"onUpdate:open":[m[6]||(m[6]=D=>l.value=D),Ue],buttons:ie.value,name:t.name,size:"large",contentClasses:"file-picker__content",dialogClasses:"file-picker",navigationClasses:"file-picker__navigation"},{navigation:w(({isCollapsed:D})=>[_(ka,{currentView:r.value,"onUpdate:currentView":m[0]||(m[0]=le=>r.value=le),filterString:R.value,"onUpdate:filterString":m[1]||(m[1]=le=>R.value=le),isCollapsed:D,disabledNavigation:t.disabledNavigation},null,8,["currentView","filterString","isCollapsed","disabledNavigation"])]),default:w(()=>[f("div",Ba,[r.value==="files"?(s(),C(aa,{key:0,path:p.value,"onUpdate:path":m[2]||(m[2]=D=>p.value=D),showMenu:!t.noMenu,onCreateNode:A},null,8,["path","showMenu"])):(s(),c("div",Pa,[f("h3",null,$(K.value),1)])),d(v)||P.value.length>0?(s(),C(Ei,{key:2,path:p.value,"onUpdate:path":[m[3]||(m[3]=D=>p.value=D),m[5]||(m[5]=D=>r.value="files")],selectedFiles:o.value,"onUpdate:selectedFiles":m[4]||(m[4]=D=>o.value=D),allowPickDirectory:t.allowPickDirectory,currentView:r.value,files:P.value,multiselect:t.multiselect,loading:d(v),name:K.value,canPick:t.canPickFn},null,8,["path","selectedFiles","allowPickDirectory","currentView","files","multiselect","loading","name","canPick"])):R.value?(s(),C(d(we),{key:3,name:d(h)("No matching files"),description:d(h)("No files matching your filter were found.")},{icon:w(()=>[_(fe)]),_:1},8,["name","description"])):(s(),C(d(we),{key:4,name:d(h)("No files in here"),description:F.value},{icon:w(()=>[_(fe)]),_:1},8,["name","description"]))])]),_:1},8,["open","buttons","name"]))}}),il=V(Fa,[["__scopeId","data-v-9b6534b1"]]);export{il as default}; +//# sourceMappingURL=FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs.map diff --git a/dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs.license b/dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs.license similarity index 100% rename from dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs.license rename to dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs.license diff --git a/dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs.map b/dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs.map similarity index 99% rename from dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs.map rename to dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs.map index 40a508b671e9f..572ebbf3fa6e1 100644 --- a/dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs.map +++ b/dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumb-D2NtMTnk.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumbs-DDutZRtm.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/preview-BIbJGxXF.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/_plugin-vue_export-helper-1tPrXgE0.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/FilePicker-C1yRZfLt.mjs"],"sourcesContent":["import '../assets/NcBreadcrumb-D9N_qB_o.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, withModifiers, normalizeClass, createBlock, createSlots, withCtx, renderSlot, createTextVNode, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nconst _sfc_main$1 = {\n name: \"ChevronRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst ChevronRight = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = {\n name: \"NcBreadcrumb\",\n components: {\n NcActions,\n ChevronRight,\n NcButton\n },\n inheritAttrs: false,\n props: {\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * Route Location the link should navigate to when clicked on.\n *\n * @see https://v3.router.vuejs.org/api/#to\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Set this prop if your app doesn't use vue-router, breadcrumbs will show as normal links.\n */\n href: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class to show an icon along name text (if forceIconText is provided, otherwise just icon).\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Enables text to accompany the icon, if the icon was provided. The text that will be displayed is the name prop.\n */\n forceIconText: {\n type: Boolean,\n default: false\n },\n /**\n * Disable dropping on this breadcrumb.\n */\n disableDrop: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Open state of the Actions menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"dragenter\",\n \"dragleave\",\n \"dropped\",\n \"update:open\"\n ],\n setup() {\n const crumbId = createElementId();\n return {\n actionsContainer: `.vue-crumb[data-crumb-id=\"${crumbId}\"]`,\n crumbId\n };\n },\n data() {\n return {\n /**\n * Variable to track if we hover over the breadcrumb\n */\n hovering: false\n };\n },\n computed: {\n /**\n * The attributes to pass to `router-link` or `a`\n */\n linkAttributes() {\n if (this.to) {\n return { to: this.to, ...this.$attrs };\n } else if (this.href) {\n return { href: this.href, ...this.$attrs };\n }\n return this.$attrs;\n }\n },\n methods: {\n /**\n * Function to handle changing the open state of the Actions menu\n * $emit the open state.\n *\n * @param {boolean} open The open state of the Actions menu\n */\n onOpenChange(open) {\n this.$emit(\"update:open\", open);\n },\n /**\n * Function to handle a drop on the breadcrumb.\n * $emit the event and the path, remove the hovering state.\n *\n * @param {object} e The drop event\n * @return {boolean}\n */\n dropped(e) {\n if (this.disableDrop) {\n return false;\n }\n this.$emit(\"dropped\", e, this.to || this.href);\n this.$parent.$emit(\"dropped\", e, this.to || this.href);\n this.hovering = false;\n return false;\n },\n /**\n * Add the hovering state on drag enter\n *\n * @param {DragEvent} e The drag-enter event\n */\n dragEnter(e) {\n this.$emit(\"dragenter\", e);\n if (this.disableDrop) {\n return;\n }\n this.hovering = true;\n },\n /**\n * Remove the hovering state on drag leave\n *\n * @param {DragEvent} e The drag leave event\n */\n dragLeave(e) {\n this.$emit(\"dragleave\", e);\n if (this.disableDrop) {\n return;\n }\n if (e.target.contains(e.relatedTarget) || this.$refs.crumb.contains(e.relatedTarget)) {\n return;\n }\n this.hovering = false;\n }\n }\n};\nconst _hoisted_1 = [\"data-crumb-id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_ChevronRight = resolveComponent(\"ChevronRight\");\n return openBlock(), createElementBlock(\"li\", {\n ref: \"crumb\",\n class: normalizeClass([\"vue-crumb\", [{ \"vue-crumb--hovered\": $data.hovering }, _ctx.$props.class]]),\n \"data-crumb-id\": $setup.crumbId,\n draggable: \"false\",\n onDragstart: withModifiers(() => {\n }, [\"prevent\"]),\n onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => $options.dropped && $options.dropped(...args), [\"prevent\"])),\n onDragover: withModifiers(() => {\n }, [\"prevent\"]),\n onDragenter: _cache[1] || (_cache[1] = (...args) => $options.dragEnter && $options.dragEnter(...args)),\n onDragleave: _cache[2] || (_cache[2] = (...args) => $options.dragLeave && $options.dragLeave(...args))\n }, [\n ($props.name || $props.icon || _ctx.$slots.icon) && !_ctx.$slots.default ? (openBlock(), createBlock(_component_NcButton, mergeProps({\n key: 0,\n \"aria-label\": $props.icon ? $props.name : void 0,\n variant: \"tertiary\"\n }, $options.linkAttributes), createSlots({ _: 2 }, [\n _ctx.$slots.icon || $props.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass([$props.icon, \"icon\"])\n }, null, 2)\n ], true)\n ]),\n key: \"0\"\n } : void 0,\n !(_ctx.$slots.icon || $props.icon) || $props.forceIconText ? {\n name: \"default\",\n fn: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"aria-label\"])) : createCommentVNode(\"\", true),\n _ctx.$slots.default ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n container: $setup.actionsContainer,\n forceMenu: $props.forceMenu,\n forceName: \"\",\n menuName: $props.name,\n open: $props.open,\n title: $props.title,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onOpenChange\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"container\", \"forceMenu\", \"menuName\", \"open\", \"title\", \"onUpdate:open\"])) : createCommentVNode(\"\", true),\n createVNode(_component_ChevronRight, {\n class: \"vue-crumb__separator\",\n size: 20\n })\n ], 42, _hoisted_1);\n}\nconst NcBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-46306025\"]]);\nexport {\n NcBreadcrumb as N\n};\n//# sourceMappingURL=NcBreadcrumb-D2NtMTnk.mjs.map\n","import '../assets/NcBreadcrumbs-5gl8Syfa.css';\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport debounce from \"debounce\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, Fragment, cloneVNode, h } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActions, i as isSlotPopulated } from \"./NcActions-B_QR93qv.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BuRnYpJX.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-CCszAEdZ.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-CvDVCQiQ.mjs\";\nimport { N as NcBreadcrumb } from \"./NcBreadcrumb-D2NtMTnk.mjs\";\nconst _sfc_main$1 = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst crumbClass = \"vue-crumb\";\nconst _sfc_main = {\n name: \"NcBreadcrumbs\",\n components: {\n NcActions,\n NcActionButton,\n NcActionRouter,\n NcActionLink,\n NcBreadcrumb,\n IconFolder\n },\n props: {\n /**\n * Set a css icon-class for the icon of the root breadcrumb to be used.\n */\n rootIcon: {\n type: String,\n default: \"icon-home\"\n },\n /**\n * Set the aria-label of the nav element.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n emits: [\"dropped\"],\n data() {\n return {\n /**\n * Array to track the hidden breadcrumbs by their index.\n * Comparing two crumbs somehow does not work, so we use the indices.\n */\n hiddenIndices: [],\n /**\n * This is the props of the middle Action menu\n * that show the ellipsised breadcrumbs\n */\n menuBreadcrumbProps: {\n // Don't show a name for this breadcrumb, only the Actions menu\n name: \"\",\n forceMenu: true,\n // Don't allow dropping directly on the actions breadcrumb\n disableDrop: true,\n // Is the menu open or not\n open: false\n },\n breadcrumbsRefs: []\n };\n },\n created() {\n window.addEventListener(\"resize\", debounce(() => {\n this.handleWindowResize();\n }, 100));\n subscribe(\"navigation-toggled\", this.delayedResize);\n },\n mounted() {\n this.handleWindowResize();\n },\n updated() {\n this.delayedResize();\n this.$nextTick(() => {\n this.hideCrumbs();\n });\n },\n beforeUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n unsubscribe(\"navigation-toggled\", this.delayedResize);\n },\n methods: {\n /**\n * Close the actions menu\n *\n * @param {object} e The event\n */\n closeActions(e) {\n if (this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)) {\n return;\n }\n this.menuBreadcrumbProps.open = false;\n },\n /**\n * Call the resize function after a delay\n */\n async delayedResize() {\n await this.$nextTick();\n this.handleWindowResize();\n },\n /**\n * Check the width of the breadcrumb and hide breadcrumbs\n * if we overflow otherwise.\n */\n handleWindowResize() {\n if (!this.$refs.container) {\n return;\n }\n const nrCrumbs = this.breadcrumbsRefs.length;\n const hiddenIndices = [];\n const availableWidth = this.$refs.container.offsetWidth;\n let totalWidth = this.getTotalWidth();\n if (this.$refs.breadcrumb__actions) {\n totalWidth += this.$refs.breadcrumb__actions.offsetWidth;\n }\n let overflow = totalWidth - availableWidth;\n overflow += overflow > 0 ? 64 : 0;\n let i = 0;\n const startIndex = Math.floor(nrCrumbs / 2);\n while (overflow > 0 && i < nrCrumbs - 2) {\n const currentIndex = startIndex + (i % 2 ? i + 1 : i) / 2 * Math.pow(-1, i + nrCrumbs % 2);\n overflow -= this.getWidth(this.breadcrumbsRefs[currentIndex]?.$el, currentIndex === this.breadcrumbsRefs.length - 1);\n hiddenIndices.push(currentIndex);\n i++;\n }\n if (!this.arraysEqual(this.hiddenIndices, hiddenIndices.sort((a, b) => a - b))) {\n this.hiddenIndices = hiddenIndices;\n }\n },\n /**\n * Checks if two arrays are equal.\n * Only works for primitive arrays, but that's enough here.\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @return {boolean} Wether the arrays are equal\n */\n arraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n } else if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n },\n /**\n * Calculates the total width of all breadcrumbs\n *\n * @return {number} The total width\n */\n getTotalWidth() {\n return this.breadcrumbsRefs.reduce((width, crumb, index) => width + this.getWidth(crumb.$el, index === this.breadcrumbsRefs.length - 1), 0);\n },\n /**\n * Calculates the width of the provided element\n *\n * @param {object} el The element\n * @param {boolean} isLast Is this the last crumb\n * @return {number} The width\n */\n getWidth(el, isLast) {\n if (!el?.classList) {\n return 0;\n }\n const hide = el.classList.contains(`${crumbClass}--hidden`);\n el.style.minWidth = \"auto\";\n if (isLast) {\n el.style.maxWidth = \"210px\";\n }\n el.classList.remove(`${crumbClass}--hidden`);\n const w = el.offsetWidth;\n if (hide) {\n el.classList.add(`${crumbClass}--hidden`);\n }\n el.style.minWidth = \"\";\n el.style.maxWidth = \"\";\n return w;\n },\n /**\n * Prevents the default of a provided event\n *\n * @param {object} e The event\n * @return {boolean}\n */\n preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n return false;\n },\n /**\n * Handles the drag start.\n * Prevents a breadcrumb from being draggable.\n *\n * @param {object} e The event\n * @return {boolean}\n */\n dragStart(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles when something is dropped on the breadcrumb.\n *\n * @param {object} e The drop event\n * @param {string} path The path of the breadcrumb\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n * @return {boolean}\n */\n dropped(e, path, disabled) {\n if (!disabled) {\n this.$emit(\"dropped\", e, path);\n }\n this.menuBreadcrumbProps.open = false;\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n return this.preventDefault(e);\n },\n /**\n * Handles the drag over event\n *\n * @param {object} e The drag over event\n * @return {boolean}\n */\n dragOver(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles the drag enter event\n *\n * @param {object} e The drag over event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragEnter(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.classList && target.classList.contains(crumbClass)) {\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n target.classList.add(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Handles the drag leave event\n *\n * @param {object} e The drag leave event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragLeave(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.contains(e.relatedTarget)) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.contains(e.relatedTarget)) {\n return;\n }\n if (target.classList && target.classList.contains(crumbClass)) {\n target.classList.remove(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Check for each crumb if we have to hide it and\n * add it to the array of all crumbs.\n */\n hideCrumbs() {\n this.breadcrumbsRefs.forEach((crumb, i) => {\n if (crumb?.$el?.classList) {\n if (this.hiddenIndices.includes(i)) {\n crumb.$el.classList.add(`${crumbClass}--hidden`);\n } else {\n crumb.$el.classList.remove(`${crumbClass}--hidden`);\n }\n }\n });\n },\n isBreadcrumb(vnode) {\n return vnode?.type?.name === \"NcBreadcrumb\";\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n let breadcrumbs = [];\n this.$slots.default?.().forEach((vnode) => {\n if (this.isBreadcrumb(vnode)) {\n breadcrumbs.push(vnode);\n return;\n }\n if (vnode?.type === Fragment) {\n vnode?.children?.forEach?.((child) => {\n if (this.isBreadcrumb(child)) {\n breadcrumbs.push(child);\n }\n });\n }\n });\n if (breadcrumbs.length === 0) {\n return;\n }\n breadcrumbs[0] = cloneVNode(breadcrumbs[0], {\n icon: this.rootIcon,\n ref: \"breadcrumbs\"\n });\n const breadcrumbsRefs = [];\n breadcrumbs = breadcrumbs.map((crumb, index) => cloneVNode(crumb, {\n ref: (crumb2) => {\n breadcrumbsRefs[index] = crumb2;\n }\n }));\n const crumbs = [...breadcrumbs];\n if (this.hiddenIndices.length) {\n crumbs.splice(\n Math.round(breadcrumbs.length / 2),\n 0,\n // The Actions menu\n // Use a breadcrumb component for the hidden breadcrumbs\n // eslint-disable-line @stylistic/function-call-argument-newline\n h(NcBreadcrumb, {\n class: \"dropdown\",\n ...this.menuBreadcrumbProps,\n // Hide the dropdown menu from screen-readers,\n // since the crumbs in the menu are still in the list.\n \"aria-hidden\": true,\n // Add a ref to the Actions menu\n ref: \"actionsBreadcrumb\",\n key: \"actions-breadcrumb-1\",\n // Add handlers so the Actions menu opens on hover\n onDragenter: () => {\n this.menuBreadcrumbProps.open = true;\n },\n onDragleave: this.closeActions,\n // Make sure we keep the same open state\n // as the Actions component\n \"onUpdate:open\": (open) => {\n this.menuBreadcrumbProps.open = open;\n }\n // Add all hidden breadcrumbs as ActionRouter or ActionLink\n }, {\n default: () => this.hiddenIndices.filter((index) => index <= breadcrumbs.length - 1).map((index) => {\n const crumb = breadcrumbs[index];\n const {\n // Get the parameters from the breadcrumb component props\n to,\n href,\n disableDrop,\n name,\n // Props to forward\n ...propsToForward\n } = crumb.props;\n delete propsToForward.ref;\n let element = NcActionButton;\n let path = \"\";\n if (href) {\n element = NcActionLink;\n path = href;\n }\n if (to) {\n element = NcActionRouter;\n path = to;\n }\n const folderIcon = h(IconFolder, {\n size: 20\n });\n return h(element, {\n ...propsToForward,\n class: crumbClass,\n href: href || null,\n to: to || null,\n // Prevent the breadcrumbs from being draggable\n draggable: false,\n // Add the drag and drop handlers\n onDragstart: this.dragStart,\n onDrop: ($event) => this.dropped($event, path, disableDrop),\n onDragover: this.dragOver,\n onDragenter: ($event) => this.dragEnter($event, disableDrop),\n onDragleave: ($event) => this.dragLeave($event, disableDrop)\n }, {\n default: () => name,\n icon: () => folderIcon\n });\n })\n })\n );\n }\n const wrapper = [h(\"nav\", { \"aria-label\": this.ariaLabel }, [h(\"ul\", { class: \"breadcrumb__crumbs\" }, [crumbs])])];\n if (isSlotPopulated(this.$slots.actions?.())) {\n wrapper.push(h(\"div\", { class: \"breadcrumb__actions\", ref: \"breadcrumb__actions\" }, this.$slots.actions?.()));\n }\n this.breadcrumbsRefs = breadcrumbsRefs;\n return h(\"div\", { class: [\"breadcrumb\", { \"breadcrumb--collapsed\": this.hiddenIndices.length === breadcrumbs.length - 2 }], ref: \"container\" }, wrapper);\n }\n};\nconst NcBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-0015282c\"]]);\nexport {\n NcBreadcrumbs as N\n};\n//# sourceMappingURL=NcBreadcrumbs-DDutZRtm.mjs.map\n","import { FileType } from \"@nextcloud/files\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { ref, watchEffect, toValue } from \"vue\";\nimport PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nfunction getPreviewURL(node, options = {}) {\n options = { size: 32, cropPreview: false, mimeFallback: true, ...options };\n try {\n const previewUrl = node.attributes?.previewUrl || generateUrl(\"/core/preview?fileId={fileid}\", {\n fileid: node.fileid\n });\n let url;\n try {\n url = new URL(previewUrl);\n } catch {\n url = new URL(previewUrl, window.location.origin);\n }\n url.searchParams.set(\"x\", `${options.size}`);\n url.searchParams.set(\"y\", `${options.size}`);\n url.searchParams.set(\"mimeFallback\", `${options.mimeFallback}`);\n url.searchParams.set(\"a\", options.cropPreview === true ? \"0\" : \"1\");\n url.searchParams.set(\"c\", `${node.attributes.etag}`);\n return url;\n } catch {\n return null;\n }\n}\nfunction usePreviewURL(node, options) {\n const previewURL = ref(null);\n const previewLoaded = ref(false);\n watchEffect(() => {\n previewLoaded.value = false;\n previewURL.value = getPreviewURL(toValue(node), toValue(options || {}));\n if (previewURL.value && toValue(node).type === FileType.File) {\n preloadImage(previewURL.value.href).then((success) => {\n previewLoaded.value = success;\n });\n }\n });\n return {\n previewURL,\n previewLoaded\n };\n}\nexport {\n getPreviewURL as g,\n usePreviewURL as u\n};\n//# sourceMappingURL=preview-BIbJGxXF.mjs.map\n","const _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nexport {\n _export_sfc as _\n};\n//# sourceMappingURL=_plugin-vue_export-helper-1tPrXgE0.mjs.map\n","import { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, defineComponent, ref, computed, toRef, normalizeClass, normalizeStyle, unref, Fragment, createBlock, createVNode, toHandlers, withModifiers, onMounted, toValue, mergeModels, useModel, nextTick, onUnmounted, withCtx, createTextVNode, renderList, useTemplateRef, createSlots, shallowRef, watch } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcEmptyContent from \"@nextcloud/vue/components/NcEmptyContent\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { FileType, Permission, formatFileSize, sortNodes, validateFilename, InvalidFilenameError, InvalidFilenameErrorReason } from \"@nextcloud/files\";\nimport NcButton from \"@nextcloud/vue/components/NcButton\";\nimport NcCheckboxRadioSwitch from \"@nextcloud/vue/components/NcCheckboxRadioSwitch\";\nimport { extname, join } from \"@nextcloud/paths\";\nimport NcDateTime from \"@nextcloud/vue/components/NcDateTime\";\nimport { mdiKey, mdiTagOutline, mdiLink, mdiAccountPlus, mdiAccountGroupOutline, mdiNetworkOutline, mdiFolder, mdiClock, mdiStar } from \"@mdi/js\";\nimport { ShareType } from \"@nextcloud/sharing\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/components/NcIconSvgWrapper\";\nimport { u as usePreviewURL } from \"./preview-BIbJGxXF.mjs\";\nimport { t, l as logger, s as showError } from \"./index-C1xmmKTZ.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { isPublicShare } from \"@nextcloud/sharing/public\";\nimport NcActionInput from \"@nextcloud/vue/components/NcActionInput\";\nimport NcActions from \"@nextcloud/vue/components/NcActions\";\nimport NcBreadcrumb from \"@nextcloud/vue/components/NcBreadcrumb\";\nimport NcBreadcrumbs from \"@nextcloud/vue/components/NcBreadcrumbs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport NcSelect from \"@nextcloud/vue/components/NcSelect\";\nimport NcTextField from \"@nextcloud/vue/components/NcTextField\";\nimport { getRecentSearch, resultToNode, defaultRootPath, getDefaultPropfind, getClient, getFavoriteNodes } from \"@nextcloud/files/dav\";\nconst _sfc_main$e = {\n name: \"FileIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$c = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$b = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$a = { d: \"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\" };\nconst _hoisted_4$a = { key: 0 };\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon file-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$a, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$a, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$b))\n ], 16, _hoisted_1$c);\n}\nconst IconFile = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$d = {\n name: \"MenuDownIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$b = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$a = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$9 = { d: \"M7,10L12,15L17,10H7Z\" };\nconst _hoisted_4$9 = { key: 0 };\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-down-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$9, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$9, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$a))\n ], 16, _hoisted_1$b);\n}\nconst IconSortDescending = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$c = {\n name: \"MenuUpIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$a = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$9 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$8 = { d: \"M7,15L12,10L17,15H7Z\" };\nconst _hoisted_4$8 = { key: 0 };\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-up-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$8, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$8, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$9))\n ], 16, _hoisted_1$a);\n}\nconst IconSortAscending = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$b = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$9 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$8 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$7 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4$7 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$7, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$7, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$8))\n ], 16, _hoisted_1$9);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$4]]);\nconst fileListIconStyles = {\n \"file-picker__file-icon\": \"_file-picker__file-icon_3v9zx_9\",\n \"file-picker__file-icon--primary\": \"_file-picker__file-icon--primary_3v9zx_21\",\n \"file-picker__file-icon-overlay\": \"_file-picker__file-icon-overlay_3v9zx_25\"\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n __name: \"FilePreview\",\n props: {\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const fileListIconStyles$1 = ref(fileListIconStyles);\n const {\n previewURL,\n previewLoaded\n } = usePreviewURL(toRef(props, \"node\"), computed(() => ({ cropPreview: props.cropImagePreviews })));\n const isFile = computed(() => props.node.type === FileType.File);\n const folderDecorationIcon = computed(() => {\n if (props.node.type !== FileType.Folder) {\n return null;\n }\n if (props.node.attributes?.[\"is-encrypted\"] === 1) {\n return mdiKey;\n }\n if (props.node.attributes?.[\"is-tag\"]) {\n return mdiTagOutline;\n }\n const shareTypes = Object.values(props.node.attributes?.[\"share-types\"] || {}).flat();\n if (shareTypes.some((type) => type === ShareType.Link || type === ShareType.Email)) {\n return mdiLink;\n }\n if (shareTypes.length > 0) {\n return mdiAccountPlus;\n }\n switch (props.node.attributes?.[\"mount-type\"]) {\n case \"external\":\n case \"external-session\":\n return mdiNetworkOutline;\n case \"group\":\n return mdiAccountGroupOutline;\n case \"shared\":\n return mdiAccountPlus;\n }\n return null;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n style: normalizeStyle(unref(previewLoaded) ? { backgroundImage: `url(${unref(previewURL)})` } : void 0),\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon\"])\n }, [\n !unref(previewLoaded) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n isFile.value ? (openBlock(), createBlock(IconFile, {\n key: 0,\n size: 32\n })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n folderDecorationIcon.value ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon-overlay\"]),\n inline: \"\",\n path: folderDecorationIcon.value,\n size: 16\n }, null, 8, [\"class\", \"path\"])) : createCommentVNode(\"\", true),\n createVNode(IconFolder, {\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon--primary\"]),\n size: 32\n }, null, 8, [\"class\"])\n ], 64))\n ], 64)) : createCommentVNode(\"\", true)\n ], 6);\n };\n }\n});\nconst _hoisted_1$8 = [\"tabindex\", \"aria-selected\", \"data-filename\"];\nconst _hoisted_2$7 = { class: \"row-name\" };\nconst _hoisted_3$6 = {\n class: \"file-picker__name-container\",\n \"data-testid\": \"row-name\"\n};\nconst _hoisted_4$6 = [\"title\", \"textContent\"];\nconst _hoisted_5$1 = [\"textContent\"];\nconst _hoisted_6$1 = { class: \"row-size\" };\nconst _hoisted_7$1 = { class: \"row-modified\" };\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n __name: \"FileListRow\",\n props: {\n allowPickDirectory: { type: Boolean },\n selected: { type: Boolean },\n showCheckbox: { type: Boolean },\n canPick: { type: Boolean },\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n emits: [\"update:selected\", \"enterDirectory\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const timestamp = computed(() => props.node.mtime ?? 0);\n const fileExtension = computed(() => extname(props.node.displayname));\n const displayName = computed(() => props.node.displayname.slice(0, fileExtension.value ? -fileExtension.value.length : void 0));\n const isDirectory = computed(() => props.node.type === FileType.Folder);\n const isPickable = computed(() => props.canPick && (props.allowPickDirectory || !isDirectory.value));\n const isNavigatable = computed(() => (props.node.permissions & Permission.READ) === Permission.READ);\n function toggleSelected() {\n if (!isPickable.value) {\n return;\n }\n emit2(\"update:selected\", !props.selected);\n }\n function handleClick() {\n if (isDirectory.value) {\n if (isNavigatable.value) {\n emit2(\"enterDirectory\", props.node);\n }\n } else {\n toggleSelected();\n }\n }\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n handleClick();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", mergeProps({\n tabindex: __props.showCheckbox && !isDirectory.value ? void 0 : 0,\n \"aria-selected\": !isPickable.value ? void 0 : __props.selected,\n class: [\"file-picker__row\", [\n {\n \"file-picker__row--selected\": __props.selected && !__props.showCheckbox,\n \"file-picker__row--not-navigatable\": isDirectory.value && !isNavigatable.value,\n \"file-picker__row--not-pickable\": !isPickable.value\n }\n ]],\n \"data-filename\": __props.node.basename,\n \"data-testid\": \"file-list-row\"\n }, toHandlers({\n click: handleClick,\n /* same as tabindex -> if we hide the checkbox or this is a directory we need keyboard access to enter the directory or select the node */\n ...!__props.showCheckbox || isDirectory.value ? { keydown: handleKeyDown } : {}\n }, true)), [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", {\n key: 0,\n class: \"row-checkbox\",\n onClick: withModifiers(() => {\n }, [\"stop\"])\n }, [\n createVNode(unref(NcCheckboxRadioSwitch), {\n \"aria-label\": unref(t)(\"Select the row for {nodename}\", { nodename: displayName.value }),\n disabled: !isPickable.value,\n \"data-testid\": \"row-checkbox\",\n modelValue: __props.selected,\n \"onUpdate:modelValue\": toggleSelected\n }, null, 8, [\"aria-label\", \"disabled\", \"modelValue\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_2$7, [\n createElementVNode(\"div\", _hoisted_3$6, [\n createVNode(_sfc_main$a, {\n node: __props.node,\n cropImagePreviews: __props.cropImagePreviews\n }, null, 8, [\"node\", \"cropImagePreviews\"]),\n createElementVNode(\"div\", {\n class: \"file-picker__file-name\",\n title: displayName.value,\n textContent: toDisplayString(displayName.value)\n }, null, 8, _hoisted_4$6),\n createElementVNode(\"div\", {\n class: \"file-picker__file-extension\",\n textContent: toDisplayString(fileExtension.value)\n }, null, 8, _hoisted_5$1)\n ])\n ]),\n createElementVNode(\"td\", _hoisted_6$1, toDisplayString(unref(formatFileSize)(__props.node.size || 0)), 1),\n createElementVNode(\"td\", _hoisted_7$1, [\n createVNode(unref(NcDateTime), {\n timestamp: timestamp.value,\n ignoreSeconds: \"\"\n }, null, 8, [\"timestamp\"])\n ])\n ], 16, _hoisted_1$8);\n };\n }\n});\nconst FileListRow = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"__scopeId\", \"data-v-7857e8bd\"]]);\nconst _hoisted_1$7 = {\n \"aria-hidden\": \"true\",\n class: \"file-picker__row loading-row\"\n};\nconst _hoisted_2$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_3$5 = { class: \"row-name\" };\nconst _hoisted_4$5 = { class: \"row-wrapper\" };\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n __name: \"LoadingTableRow\",\n props: {\n showCheckbox: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", _hoisted_1$7, [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", _hoisted_2$6, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"span\", null, null, -1)\n ])])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_3$5, [\n createElementVNode(\"div\", _hoisted_4$5, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(fileListIconStyles)[\"file-picker__file-icon\"])\n }, null, 2),\n _cache[1] || (_cache[1] = createElementVNode(\"span\", null, null, -1))\n ])\n ]),\n _cache[2] || (_cache[2] = createElementVNode(\"td\", { class: \"row-size\" }, [\n createElementVNode(\"span\")\n ], -1)),\n _cache[3] || (_cache[3] = createElementVNode(\"td\", { class: \"row-modified\" }, [\n createElementVNode(\"span\")\n ], -1))\n ]);\n };\n }\n});\nconst LoadingTableRow = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"__scopeId\", \"data-v-1f96131b\"]]);\nfunction useFilesSettings() {\n const filesUserState = loadState(\"files\", \"config\", null);\n const showHiddenFiles = ref(filesUserState?.show_hidden ?? true);\n const sortFavoritesFirst = ref(filesUserState?.sort_favorites_first ?? true);\n const cropImagePreviews = ref(filesUserState?.crop_image_previews ?? true);\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/configs\"));\n showHiddenFiles.value = data?.data?.show_hidden ?? false;\n sortFavoritesFirst.value = data?.data?.sort_favorites_first ?? true;\n cropImagePreviews.value = data?.data?.crop_image_previews ?? true;\n } catch (error) {\n logger.error(\"Could not load files settings\", { error });\n showError(t(\"Could not load files settings\"));\n }\n } else {\n logger.debug(\"Skip loading files settings - currently on public share\");\n }\n });\n return {\n showHiddenFiles,\n sortFavoritesFirst,\n cropImagePreviews\n };\n}\nfunction useFilesViews(currentView) {\n const convertOrder = (order2) => order2 === \"asc\" ? \"ascending\" : order2 === \"desc\" ? \"descending\" : \"none\";\n const filesViewsState = loadState(\"files\", \"viewConfigs\", null);\n const filesViewConfig = ref({\n sortBy: filesViewsState?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.files?.sorting_direction ?? \"asc\")\n });\n const recentViewConfig = ref({\n sortBy: filesViewsState?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.recent?.sorting_direction ?? \"asc\")\n });\n const favoritesViewConfig = ref({\n sortBy: filesViewsState?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.favorites?.sorting_direction ?? \"asc\")\n });\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/views\"));\n filesViewConfig.value = {\n sortBy: data?.data?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.files?.sorting_direction)\n };\n favoritesViewConfig.value = {\n sortBy: data?.data?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.favorites?.sorting_direction)\n };\n recentViewConfig.value = {\n sortBy: data?.data?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.recent?.sorting_direction)\n };\n } catch (error) {\n logger.error(\"Could not load files views\", { error });\n showError(t(\"Could not load files views\"));\n }\n } else {\n logger.debug(\"Skip loading files views - currently on public share\");\n }\n });\n const currentConfig = computed(() => toValue(currentView || \"files\") === \"files\" ? filesViewConfig.value : toValue(currentView) === \"recent\" ? recentViewConfig.value : favoritesViewConfig.value);\n const sortBy = computed(() => currentConfig.value.sortBy);\n const order = computed(() => currentConfig.value.order);\n return {\n filesViewConfig,\n favoritesViewConfig,\n recentViewConfig,\n currentConfig,\n sortBy,\n order\n };\n}\nconst _hoisted_1$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_2$5 = { class: \"hidden-visually\" };\nconst _hoisted_3$4 = [\"aria-sort\"];\nconst _hoisted_4$4 = { class: \"header-wrapper\" };\nconst _hoisted_5 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_6 = [\"aria-sort\"];\nconst _hoisted_7 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_8 = [\"aria-sort\"];\nconst _hoisted_9 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n __name: \"FileList\",\n props: /* @__PURE__ */ mergeModels({\n currentView: {},\n multiselect: { type: Boolean },\n allowPickDirectory: { type: Boolean },\n loading: { type: Boolean },\n files: {},\n canPick: { type: Function }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {},\n \"selectedFiles\": { required: true },\n \"selectedFilesModifiers\": {}\n }),\n emits: [\"update:path\", \"update:selectedFiles\"],\n setup(__props) {\n const path = useModel(__props, \"path\");\n const selectedFiles = useModel(__props, \"selectedFiles\");\n const props = __props;\n const customSortingConfig = ref();\n const { currentConfig: filesAppSorting } = useFilesViews(props.currentView);\n const sortingConfig = computed(() => customSortingConfig.value ?? filesAppSorting.value);\n const sortByName = computed(() => sortingConfig.value.sortBy === \"basename\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortBySize = computed(() => sortingConfig.value.sortBy === \"size\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortByModified = computed(() => sortingConfig.value.sortBy === \"mtime\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n function toggleSorting(sortBy) {\n if (sortingConfig.value.sortBy === sortBy) {\n if (sortingConfig.value.order === \"ascending\") {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"descending\" };\n } else {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"ascending\" };\n }\n } else {\n customSortingConfig.value = { sortBy, order: \"ascending\" };\n }\n }\n const { sortFavoritesFirst, cropImagePreviews } = useFilesSettings();\n const sortedFiles = computed(() => {\n return sortNodes(props.files, {\n sortFoldersFirst: true,\n sortFavoritesFirst: sortFavoritesFirst.value,\n sortingOrder: sortingConfig.value.order === \"descending\" ? \"desc\" : \"asc\",\n sortingMode: sortingConfig.value.sortBy\n });\n });\n const selectableFiles = computed(() => props.files.filter((file) => props.allowPickDirectory || file.type !== FileType.Folder));\n const allSelected = computed(() => !props.loading && selectedFiles.value.length > 0 && selectedFiles.value.length >= selectableFiles.value.length);\n function onSelectAll() {\n if (selectedFiles.value.length < selectableFiles.value.length) {\n selectedFiles.value = [...selectableFiles.value];\n } else {\n selectedFiles.value = [];\n }\n }\n function onNodeSelected(file) {\n if (selectedFiles.value.includes(file)) {\n selectedFiles.value = selectedFiles.value.filter((f) => f.path !== file.path);\n } else {\n if (props.multiselect) {\n selectedFiles.value = [...selectedFiles.value, file];\n } else {\n selectedFiles.value = [file];\n }\n }\n }\n function onChangeDirectory(dir) {\n path.value = dir.path;\n }\n const skeletonNumber = ref(4);\n const fileContainer = ref();\n {\n const resize = () => nextTick(() => {\n const nodes = fileContainer.value?.parentElement?.children || [];\n let height = fileContainer.value?.parentElement?.clientHeight || 450;\n for (let index = 0; index < nodes.length; index++) {\n if (!fileContainer.value?.isSameNode(nodes[index])) {\n height -= nodes[index].clientHeight;\n }\n }\n skeletonNumber.value = Math.max(1, Math.floor((height - 50) / 50));\n });\n onMounted(() => {\n window.addEventListener(\"resize\", resize);\n resize();\n });\n onUnmounted(() => {\n window.removeEventListener(\"resize\", resize);\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"fileContainer\",\n ref: fileContainer,\n class: \"file-picker__files\"\n }, [\n createElementVNode(\"table\", null, [\n createElementVNode(\"thead\", null, [\n createElementVNode(\"tr\", null, [\n __props.multiselect ? (openBlock(), createElementBlock(\"th\", _hoisted_1$6, [\n createElementVNode(\"span\", _hoisted_2$5, toDisplayString(unref(t)(\"Select entry\")), 1),\n __props.multiselect ? (openBlock(), createBlock(unref(NcCheckboxRadioSwitch), {\n key: 0,\n \"aria-label\": unref(t)(\"Select all entries\"),\n \"data-testid\": \"select-all-checkbox\",\n modelValue: allSelected.value,\n \"onUpdate:modelValue\": onSelectAll\n }, null, 8, [\"aria-label\", \"modelValue\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByName.value,\n class: \"row-name\"\n }, [\n createElementVNode(\"div\", _hoisted_4$4, [\n _cache[3] || (_cache[3] = createElementVNode(\"span\", { class: \"file-picker__header-preview\" }, null, -1)),\n createVNode(unref(NcButton), {\n \"data-test\": \"file-picker_sort-name\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => toggleSorting(\"basename\"))\n }, {\n icon: withCtx(() => [\n sortByName.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByName.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_5))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Name\")), 1)\n ]),\n _: 1\n })\n ])\n ], 8, _hoisted_3$4),\n createElementVNode(\"th\", {\n \"aria-sort\": sortBySize.value,\n class: \"row-size\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => toggleSorting(\"size\"))\n }, {\n icon: withCtx(() => [\n sortBySize.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortBySize.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_7))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Size\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_6),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByModified.value,\n class: \"row-modified\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[2] || (_cache[2] = ($event) => toggleSorting(\"mtime\"))\n }, {\n icon: withCtx(() => [\n sortByModified.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByModified.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_9))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Modified\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_8)\n ])\n ]),\n createElementVNode(\"tbody\", null, [\n __props.loading ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(skeletonNumber.value, (index) => {\n return openBlock(), createBlock(LoadingTableRow, {\n key: index,\n showCheckbox: __props.multiselect\n }, null, 8, [\"showCheckbox\"]);\n }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(sortedFiles.value, (file) => {\n return openBlock(), createBlock(FileListRow, {\n key: file.fileid || file.path,\n allowPickDirectory: __props.allowPickDirectory,\n showCheckbox: __props.multiselect,\n canPick: (__props.multiselect || selectedFiles.value.length === 0 || selectedFiles.value.includes(file)) && (__props.canPick === void 0 || __props.canPick(file)),\n selected: selectedFiles.value.includes(file),\n node: file,\n cropImagePreviews: unref(cropImagePreviews),\n \"onUpdate:selected\": ($event) => onNodeSelected(file),\n onEnterDirectory: onChangeDirectory\n }, null, 8, [\"allowPickDirectory\", \"showCheckbox\", \"canPick\", \"selected\", \"node\", \"cropImagePreviews\", \"onUpdate:selected\"]);\n }), 128))\n ])\n ])\n ], 512);\n };\n }\n});\nconst FileList = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"__scopeId\", \"data-v-412efd5c\"]]);\nconst _sfc_main$6 = {\n name: \"HomeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$4 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon home-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$4))\n ], 16, _hoisted_1$5);\n}\nconst IconHome = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$5 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$4);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerBreadcrumbs\",\n props: /* @__PURE__ */ mergeModels({\n showMenu: { type: Boolean }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"createNode\"], [\"update:path\"]),\n setup(__props, { emit: __emit }) {\n const path = useModel(__props, \"path\");\n const emit2 = __emit;\n const actionsOpen = ref(false);\n const newNodeName = ref(\"\");\n const nameInput = useTemplateRef(\"nameInput\");\n function validateInput() {\n const name = newNodeName.value.trim();\n const input = nameInput.value?.$el?.querySelector(\"input\");\n let validity = \"\";\n try {\n validateFilename(name);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n validity = t('\"{char}\" is not allowed inside a folder name.', { char: error.segment });\n break;\n case InvalidFilenameErrorReason.ReservedName:\n validity = t('\"{segment}\" is a reserved name and not allowed for folder names.', { segment: error.segment });\n break;\n case InvalidFilenameErrorReason.Extension:\n validity = t('Folder names must not end with \"{extension}\".', { extension: error.segment });\n break;\n default:\n validity = t(\"Invalid folder name.\");\n }\n }\n if (input) {\n input.setCustomValidity(validity);\n }\n return validity === \"\";\n }\n function onSubmit() {\n const name = newNodeName.value.trim();\n if (validateInput()) {\n actionsOpen.value = false;\n emit2(\"createNode\", name);\n newNodeName.value = \"\";\n }\n }\n const pathElements = computed(() => path.value.split(\"/\").filter((v) => v !== \"\").map((v, i, elements) => ({\n name: v,\n path: \"/\" + elements.slice(0, i + 1).join(\"/\")\n })));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcBreadcrumbs), { class: \"file-picker__breadcrumbs\" }, createSlots({\n default: withCtx(() => [\n createVNode(unref(NcBreadcrumb), {\n name: unref(t)(\"All files\"),\n title: unref(t)(\"Home\"),\n onClick: _cache[0] || (_cache[0] = ($event) => path.value = \"/\")\n }, {\n icon: withCtx(() => [\n createVNode(IconHome, { size: 20 })\n ]),\n _: 1\n }, 8, [\"name\", \"title\"]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(pathElements.value, (dir) => {\n return openBlock(), createBlock(unref(NcBreadcrumb), {\n key: dir.path,\n name: dir.name,\n title: dir.path,\n onClick: ($event) => path.value = dir.path\n }, null, 8, [\"name\", \"title\", \"onClick\"]);\n }), 128))\n ]),\n _: 2\n }, [\n __props.showMenu ? {\n name: \"actions\",\n fn: withCtx(() => [\n createVNode(unref(NcActions), {\n open: actionsOpen.value,\n \"onUpdate:open\": _cache[2] || (_cache[2] = ($event) => actionsOpen.value = $event),\n \"aria-label\": unref(t)(\"Create directory\"),\n forceMenu: true,\n forceName: true,\n menuName: unref(t)(\"New\"),\n variant: \"secondary\",\n onClose: _cache[3] || (_cache[3] = ($event) => newNodeName.value = \"\")\n }, {\n icon: withCtx(() => [\n createVNode(IconPlus, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionInput), {\n ref_key: \"nameInput\",\n ref: nameInput,\n modelValue: newNodeName.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event) => newNodeName.value = $event),\n validateInput\n ],\n label: unref(t)(\"New folder\"),\n placeholder: unref(t)(\"New folder name\"),\n onSubmit\n }, {\n icon: withCtx(() => [\n createVNode(IconFolder, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"label\", \"placeholder\"])\n ]),\n _: 1\n }, 8, [\"open\", \"aria-label\", \"menuName\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1024);\n };\n }\n});\nconst FilePickerBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"__scopeId\", \"data-v-b448b141\"]]);\nconst _sfc_main$3 = {\n name: \"CloseIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon close-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconClose = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$2 = {\n name: \"MagnifyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render]]);\nfunction useViews(isAnonymous) {\n const allViews = [\n {\n id: \"files\",\n label: t(\"All files\"),\n icon: mdiFolder\n },\n {\n id: \"recent\",\n label: t(\"Recent\"),\n icon: mdiClock\n },\n {\n id: \"favorites\",\n label: t(\"Favorites\"),\n icon: mdiStar\n }\n ];\n const availableViews = isAnonymous.value ? allViews.filter(({ id }) => id === \"files\") : allViews;\n return {\n allViews,\n availableViews\n };\n}\nconst _hoisted_1$1 = {\n key: 0,\n class: \"file-picker__side\"\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerNavigation\",\n props: {\n currentView: {},\n filterString: {},\n isCollapsed: { type: Boolean },\n disabledNavigation: { type: Boolean }\n },\n emits: [\"update:currentView\", \"update:filterString\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const { availableViews } = useViews(ref(getCurrentUser() === null));\n const currentViewObject = computed(() => availableViews.filter((v) => v.id === props.currentView)[0] ?? availableViews[0]);\n const updateFilterValue = (value) => emit2(\"update:filterString\", value.toString());\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(unref(NcTextField), {\n class: \"file-picker__filter-input\",\n label: unref(t)(\"Filter file list\"),\n showTrailingButton: !!__props.filterString,\n modelValue: __props.filterString,\n \"onUpdate:modelValue\": updateFilterValue,\n onTrailingButtonClick: _cache[0] || (_cache[0] = ($event) => updateFilterValue(\"\"))\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 16 })\n ]),\n default: withCtx(() => [\n createVNode(IconMagnify, { size: 16 })\n ]),\n _: 1\n }, 8, [\"label\", \"showTrailingButton\", \"modelValue\"]),\n unref(availableViews).length > 1 && !__props.disabledNavigation ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !__props.isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(availableViews), (view) => {\n return openBlock(), createElementBlock(\"li\", {\n key: view.id\n }, [\n createVNode(unref(NcButton), {\n variant: __props.currentView === view.id ? \"primary\" : \"tertiary\",\n wide: true,\n onClick: ($event) => _ctx.$emit(\"update:currentView\", view.id)\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n path: view.icon,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(view.label), 1)\n ]),\n _: 2\n }, 1032, [\"variant\", \"onClick\"])\n ]);\n }), 128))\n ])) : (openBlock(), createBlock(unref(NcSelect), {\n key: 1,\n \"aria-label\": unref(t)(\"Current view selector\"),\n clearable: false,\n searchable: false,\n options: unref(availableViews),\n modelValue: currentViewObject.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => emit2(\"update:currentView\", $event.id))\n }, null, 8, [\"aria-label\", \"options\", \"modelValue\"]))\n ], 64)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nconst FilePickerNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-e1c54e23\"]]);\nasync function getRecentNodes({ client, signal }) {\n const lastTwoWeek = Math.round(Date.now() / 1e3) - 60 * 60 * 24 * 14;\n const { data } = await client.search(\"/\", {\n signal,\n details: true,\n data: getRecentSearch(lastTwoWeek)\n });\n return data.results.map((result) => resultToNode(result));\n}\nasync function getNodes({ client, path, signal }) {\n const results = await client.getDirectoryContents(join(defaultRootPath, path), {\n signal,\n details: true,\n includeSelf: true,\n data: getDefaultPropfind()\n });\n const nodes = results.data.map((result) => resultToNode(result));\n return {\n contents: nodes.filter(({ path: nodePath }) => nodePath !== path),\n folder: nodes.find(({ path: nodePath }) => path === nodePath)\n };\n}\nasync function getFile(client, path) {\n const { data } = await client.stat(join(defaultRootPath, path), {\n details: true,\n data: getDefaultPropfind()\n });\n return resultToNode(data);\n}\nfunction useDAVFiles(currentView, currentPath) {\n const client = getClient();\n const files = shallowRef([]);\n const folder = shallowRef(null);\n const isLoading = ref(true);\n let abortController;\n async function createDirectory(name) {\n const path = join(currentPath.value, name);\n await client.createDirectory(join(defaultRootPath, path));\n const directory = await getFile(client, path);\n files.value = [...files.value, directory];\n return directory;\n }\n async function loadDAVFiles() {\n if (abortController) {\n abortController.abort();\n abortController = void 0;\n }\n abortController = new AbortController();\n isLoading.value = true;\n try {\n if (currentView.value === \"favorites\") {\n files.value = await getFavoriteNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = null;\n } else if (currentView.value === \"recent\") {\n files.value = await getRecentNodes({ client, signal: abortController.signal });\n folder.value = null;\n } else {\n const content = await getNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = content.folder;\n files.value = content.contents;\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n throw error;\n } finally {\n abortController = void 0;\n isLoading.value = false;\n }\n }\n watch([currentView, currentPath], () => loadDAVFiles());\n onMounted(() => loadDAVFiles());\n return {\n isLoading,\n files,\n folder,\n loadFiles: loadDAVFiles,\n createDirectory\n };\n}\nfunction useMimeFilter(allowedMIMETypes) {\n const splittedTypes = computed(() => allowedMIMETypes.value.map((filter) => filter.split(\"/\")));\n const isSupportedMimeType = (mime) => {\n const mimeTypeArray = mime.split(\"/\");\n return splittedTypes.value.some(([type, subtype]) => (\n // check mime type matches or is wildcard\n (mimeTypeArray[0] === type || type === \"*\") && (mimeTypeArray[1] === subtype || subtype === \"*\")\n ));\n };\n return {\n isSupportedMimeType\n };\n}\nconst _hoisted_1 = { class: \"file-picker__main\" };\nconst _hoisted_2 = {\n key: 1,\n class: \"file-picker__view\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"FilePicker\",\n props: {\n buttons: {},\n name: {},\n allowPickDirectory: { type: Boolean, default: false },\n noMenu: { type: Boolean, default: false },\n disabledNavigation: { type: Boolean, default: false },\n filterFn: { type: Function, default: void 0 },\n canPickFn: { type: Function, default: void 0 },\n mimetypeFilter: { default: () => [] },\n multiselect: { type: Boolean, default: false },\n path: { default: void 0 }\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit$1 = __emit;\n const isOpen = ref(true);\n const currentView = ref(\"files\");\n const savedPath = ref(window?.sessionStorage.getItem(\"NC.FilePicker.LastPath\") || \"/\");\n const navigatedPath = ref(\"\");\n const currentPath = computed({\n get: () => {\n return currentView.value === \"files\" ? navigatedPath.value || props.path || savedPath.value : \"/\";\n },\n set: (path) => {\n navigatedPath.value = path;\n }\n });\n const selectedFiles = shallowRef([]);\n const {\n files,\n folder: currentFolder,\n isLoading,\n loadFiles,\n createDirectory\n } = useDAVFiles(currentView, currentPath);\n watch([navigatedPath], () => {\n if (props.path === void 0 && navigatedPath.value) {\n window.sessionStorage.setItem(\"NC.FilePicker.LastPath\", navigatedPath.value);\n }\n selectedFiles.value = [];\n });\n let isHandlingCallback = false;\n const dialogButtons = computed(() => {\n const nodes = selectedFiles.value.length === 0 && props.allowPickDirectory && currentFolder.value ? [currentFolder.value] : selectedFiles.value;\n const buttons = typeof props.buttons === \"function\" ? props.buttons(nodes, currentPath.value, currentView.value) : props.buttons;\n return buttons.map((button) => ({\n ...button,\n disabled: button.disabled || isLoading.value,\n callback: () => {\n isHandlingCallback = true;\n handleButtonClick(button.callback, nodes);\n }\n }));\n });\n async function handleButtonClick(callback, nodes) {\n await callback(nodes);\n emit$1(\"close\", nodes);\n isHandlingCallback = false;\n }\n const viewHeadline = computed(() => currentView.value === \"favorites\" ? t(\"Favorites\") : currentView.value === \"recent\" ? t(\"Recent\") : \"\");\n const filterString = ref(\"\");\n const { isSupportedMimeType } = useMimeFilter(toRef(props, \"mimetypeFilter\"));\n onMounted(() => loadFiles());\n const { showHiddenFiles } = useFilesSettings();\n const filteredFiles = computed(() => {\n let filtered = files.value;\n if (!showHiddenFiles.value) {\n filtered = filtered.filter((file) => !file.basename.startsWith(\".\"));\n }\n if (props.mimetypeFilter.length > 0) {\n filtered = filtered.filter((file) => file.type === \"folder\" || file.mime && isSupportedMimeType(file.mime));\n }\n if (filterString.value) {\n filtered = filtered.filter((file) => file.basename.toLowerCase().includes(filterString.value.toLowerCase()));\n }\n if (props.filterFn) {\n filtered = filtered.filter((f) => props.filterFn(f));\n }\n return filtered;\n });\n const noFilesDescription = computed(() => {\n if (currentView.value === \"files\") {\n return t(\"Upload some content or sync with your devices!\");\n } else if (currentView.value === \"recent\") {\n return t(\"Files and folders you recently modified will show up here.\");\n } else {\n return t(\"Files and folders you mark as favorite will show up here.\");\n }\n });\n async function onCreateFolder(name) {\n try {\n const folder = await createDirectory(name);\n navigatedPath.value = folder.path;\n emit(\"files:node:created\", files.value.filter((file) => file.basename === name)[0]);\n } catch (error) {\n logger.warn(\"Could not create new folder\", { name, error });\n showError(t(\"Could not create the new folder\"));\n }\n }\n function handleClose(open) {\n if (!open && !isHandlingCallback) {\n emit$1(\"close\");\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n open: isOpen.value,\n \"onUpdate:open\": [\n _cache[6] || (_cache[6] = ($event) => isOpen.value = $event),\n handleClose\n ],\n buttons: dialogButtons.value,\n name: __props.name,\n size: \"large\",\n contentClasses: \"file-picker__content\",\n dialogClasses: \"file-picker\",\n navigationClasses: \"file-picker__navigation\"\n }, {\n navigation: withCtx(({ isCollapsed }) => [\n createVNode(FilePickerNavigation, {\n currentView: currentView.value,\n \"onUpdate:currentView\": _cache[0] || (_cache[0] = ($event) => currentView.value = $event),\n filterString: filterString.value,\n \"onUpdate:filterString\": _cache[1] || (_cache[1] = ($event) => filterString.value = $event),\n isCollapsed,\n disabledNavigation: __props.disabledNavigation\n }, null, 8, [\"currentView\", \"filterString\", \"isCollapsed\", \"disabledNavigation\"])\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n currentView.value === \"files\" ? (openBlock(), createBlock(FilePickerBreadcrumbs, {\n key: 0,\n path: currentPath.value,\n \"onUpdate:path\": _cache[2] || (_cache[2] = ($event) => currentPath.value = $event),\n showMenu: !__props.noMenu,\n onCreateNode: onCreateFolder\n }, null, 8, [\"path\", \"showMenu\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n createElementVNode(\"h3\", null, toDisplayString(viewHeadline.value), 1)\n ])),\n unref(isLoading) || filteredFiles.value.length > 0 ? (openBlock(), createBlock(FileList, {\n key: 2,\n path: currentPath.value,\n \"onUpdate:path\": [\n _cache[3] || (_cache[3] = ($event) => currentPath.value = $event),\n _cache[5] || (_cache[5] = ($event) => currentView.value = \"files\")\n ],\n selectedFiles: selectedFiles.value,\n \"onUpdate:selectedFiles\": _cache[4] || (_cache[4] = ($event) => selectedFiles.value = $event),\n allowPickDirectory: __props.allowPickDirectory,\n currentView: currentView.value,\n files: filteredFiles.value,\n multiselect: __props.multiselect,\n loading: unref(isLoading),\n name: viewHeadline.value,\n canPick: __props.canPickFn\n }, null, 8, [\"path\", \"selectedFiles\", \"allowPickDirectory\", \"currentView\", \"files\", \"multiselect\", \"loading\", \"name\", \"canPick\"])) : filterString.value ? (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 3,\n name: unref(t)(\"No matching files\"),\n description: unref(t)(\"No files matching your filter were found.\")\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"])) : (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 4,\n name: unref(t)(\"No files in here\"),\n description: noFilesDescription.value\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"]))\n ])\n ]),\n _: 1\n }, 8, [\"open\", \"buttons\", \"name\"]);\n };\n }\n});\nconst FilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9b6534b1\"]]);\nexport {\n FilePicker as default\n};\n//# sourceMappingURL=FilePicker-C1yRZfLt.mjs.map\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_render$1","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","ChevronRight","_export_sfc","_sfc_main","NcActions","NcButton","crumbId","createElementId","open","e","_hoisted_1","_sfc_render","_component_NcButton","resolveComponent","_component_NcActions","_component_ChevronRight","normalizeClass","withModifiers","args","createBlock","createSlots","withCtx","renderSlot","createTextVNode","createVNode","NcBreadcrumb","IconFolder","crumbClass","NcActionButton","NcActionRouter","NcActionLink","debounce","subscribe","unsubscribe","nrCrumbs","hiddenIndices","availableWidth","totalWidth","overflow","i","startIndex","currentIndex","a","b","width","crumb","index","el","isLast","hide","w","path","disabled","crumbs","target","vnode","breadcrumbs","Fragment","child","cloneVNode","breadcrumbsRefs","crumb2","h","to","href","disableDrop","name","propsToForward","element","folderIcon","wrapper","isSlotPopulated","NcBreadcrumbs","queue","PQueue","preloadImage","url","resolve","promise","image","getPreviewURL","node","options","previewUrl","generateUrl","usePreviewURL","previewURL","ref","previewLoaded","watchEffect","toValue","FileType","success","sfc","props","key","val","_sfc_main$e","_hoisted_1$c","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$7","IconFile","_sfc_main$d","_hoisted_1$b","_hoisted_2$a","_hoisted_3$9","_hoisted_4$9","_sfc_render$6","IconSortDescending","_sfc_main$c","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_hoisted_4$8","_sfc_render$5","IconSortAscending","_sfc_main$b","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_hoisted_4$7","_sfc_render$4","fileListIconStyles","_sfc_main$a","defineComponent","__props","fileListIconStyles$1","toRef","computed","isFile","folderDecorationIcon","mdiKey","mdiTagOutline","shareTypes","type","ShareType","mdiLink","mdiAccountPlus","mdiNetworkOutline","mdiAccountGroupOutline","normalizeStyle","unref","NcIconSvgWrapper","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_hoisted_4$6","_hoisted_5$1","_hoisted_6$1","_hoisted_7$1","_sfc_main$9","__emit","emit2","timestamp","fileExtension","extname","displayName","isDirectory","isPickable","isNavigatable","Permission","toggleSelected","handleClick","handleKeyDown","event","toHandlers","NcCheckboxRadioSwitch","t","formatFileSize","NcDateTime","FileListRow","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_hoisted_4$5","_sfc_main$8","LoadingTableRow","useFilesSettings","filesUserState","loadState","showHiddenFiles","sortFavoritesFirst","cropImagePreviews","onMounted","isPublicShare","logger","data","axios","error","showError","useFilesViews","currentView","convertOrder","order2","filesViewsState","filesViewConfig","recentViewConfig","favoritesViewConfig","currentConfig","sortBy","order","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_sfc_main$7","mergeModels","useModel","selectedFiles","customSortingConfig","filesAppSorting","sortingConfig","sortByName","sortBySize","sortByModified","toggleSorting","sortedFiles","sortNodes","selectableFiles","file","allSelected","onSelectAll","onNodeSelected","f","onChangeDirectory","dir","skeletonNumber","fileContainer","resize","nextTick","nodes","height","onUnmounted","renderList","FileList","_sfc_main$6","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$3","_sfc_render$3","IconHome","_sfc_main$5","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$2","_sfc_render$2","IconPlus","_sfc_main$4","actionsOpen","newNodeName","nameInput","useTemplateRef","validateInput","input","validity","validateFilename","InvalidFilenameError","InvalidFilenameErrorReason","onSubmit","pathElements","v","elements","NcActionInput","FilePickerBreadcrumbs","_sfc_main$3","_hoisted_1$3","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","IconClose","_sfc_main$2","_hoisted_1$2","_hoisted_2$1","IconMagnify","useViews","isAnonymous","allViews","mdiFolder","mdiClock","mdiStar","availableViews","id","getCurrentUser","currentViewObject","updateFilterValue","value","NcTextField","NcSelect","view","FilePickerNavigation","getRecentNodes","client","signal","lastTwoWeek","getRecentSearch","result","resultToNode","getNodes","join","defaultRootPath","getDefaultPropfind","nodePath","getFile","useDAVFiles","currentPath","getClient","files","shallowRef","folder","isLoading","abortController","createDirectory","directory","loadDAVFiles","getFavoriteNodes","content","watch","useMimeFilter","allowedMIMETypes","splittedTypes","filter","mime","mimeTypeArray","subtype","emit$1","isOpen","savedPath","navigatedPath","currentFolder","loadFiles","isHandlingCallback","dialogButtons","button","handleButtonClick","callback","viewHeadline","filterString","isSupportedMimeType","filteredFiles","filtered","noFilesDescription","onCreateFolder","emit","handleClose","NcDialog","isCollapsed","NcEmptyContent","FilePicker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file +{"version":3,"file":"FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumb-D2NtMTnk.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcBreadcrumbs-DDutZRtm.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/preview-BIbJGxXF.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/_plugin-vue_export-helper-1tPrXgE0.mjs","../node_modules/@nextcloud/dialogs/dist/chunks/FilePicker-C1yRZfLt.mjs"],"sourcesContent":["import '../assets/NcBreadcrumb-D9N_qB_o.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, withModifiers, normalizeClass, createBlock, createSlots, withCtx, renderSlot, createTextVNode, createVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nconst _sfc_main$1 = {\n name: \"ChevronRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M8.59,16.58L13.17,12L8.59,7.41L10,6L16,12L10,18L8.59,16.58Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon chevron-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst ChevronRight = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nconst _sfc_main = {\n name: \"NcBreadcrumb\",\n components: {\n NcActions,\n ChevronRight,\n NcButton\n },\n inheritAttrs: false,\n props: {\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * Route Location the link should navigate to when clicked on.\n *\n * @see https://v3.router.vuejs.org/api/#to\n */\n to: {\n type: [String, Object],\n default: void 0\n },\n /**\n * Set this prop if your app doesn't use vue-router, breadcrumbs will show as normal links.\n */\n href: {\n type: String,\n default: void 0\n },\n /**\n * Set a css icon-class to show an icon along name text (if forceIconText is provided, otherwise just icon).\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Enables text to accompany the icon, if the icon was provided. The text that will be displayed is the name prop.\n */\n forceIconText: {\n type: Boolean,\n default: false\n },\n /**\n * Disable dropping on this breadcrumb.\n */\n disableDrop: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Open state of the Actions menu\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"dragenter\",\n \"dragleave\",\n \"dropped\",\n \"update:open\"\n ],\n setup() {\n const crumbId = createElementId();\n return {\n actionsContainer: `.vue-crumb[data-crumb-id=\"${crumbId}\"]`,\n crumbId\n };\n },\n data() {\n return {\n /**\n * Variable to track if we hover over the breadcrumb\n */\n hovering: false\n };\n },\n computed: {\n /**\n * The attributes to pass to `router-link` or `a`\n */\n linkAttributes() {\n if (this.to) {\n return { to: this.to, ...this.$attrs };\n } else if (this.href) {\n return { href: this.href, ...this.$attrs };\n }\n return this.$attrs;\n }\n },\n methods: {\n /**\n * Function to handle changing the open state of the Actions menu\n * $emit the open state.\n *\n * @param {boolean} open The open state of the Actions menu\n */\n onOpenChange(open) {\n this.$emit(\"update:open\", open);\n },\n /**\n * Function to handle a drop on the breadcrumb.\n * $emit the event and the path, remove the hovering state.\n *\n * @param {object} e The drop event\n * @return {boolean}\n */\n dropped(e) {\n if (this.disableDrop) {\n return false;\n }\n this.$emit(\"dropped\", e, this.to || this.href);\n this.$parent.$emit(\"dropped\", e, this.to || this.href);\n this.hovering = false;\n return false;\n },\n /**\n * Add the hovering state on drag enter\n *\n * @param {DragEvent} e The drag-enter event\n */\n dragEnter(e) {\n this.$emit(\"dragenter\", e);\n if (this.disableDrop) {\n return;\n }\n this.hovering = true;\n },\n /**\n * Remove the hovering state on drag leave\n *\n * @param {DragEvent} e The drag leave event\n */\n dragLeave(e) {\n this.$emit(\"dragleave\", e);\n if (this.disableDrop) {\n return;\n }\n if (e.target.contains(e.relatedTarget) || this.$refs.crumb.contains(e.relatedTarget)) {\n return;\n }\n this.hovering = false;\n }\n }\n};\nconst _hoisted_1 = [\"data-crumb-id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_ChevronRight = resolveComponent(\"ChevronRight\");\n return openBlock(), createElementBlock(\"li\", {\n ref: \"crumb\",\n class: normalizeClass([\"vue-crumb\", [{ \"vue-crumb--hovered\": $data.hovering }, _ctx.$props.class]]),\n \"data-crumb-id\": $setup.crumbId,\n draggable: \"false\",\n onDragstart: withModifiers(() => {\n }, [\"prevent\"]),\n onDrop: _cache[0] || (_cache[0] = withModifiers((...args) => $options.dropped && $options.dropped(...args), [\"prevent\"])),\n onDragover: withModifiers(() => {\n }, [\"prevent\"]),\n onDragenter: _cache[1] || (_cache[1] = (...args) => $options.dragEnter && $options.dragEnter(...args)),\n onDragleave: _cache[2] || (_cache[2] = (...args) => $options.dragLeave && $options.dragLeave(...args))\n }, [\n ($props.name || $props.icon || _ctx.$slots.icon) && !_ctx.$slots.default ? (openBlock(), createBlock(_component_NcButton, mergeProps({\n key: 0,\n \"aria-label\": $props.icon ? $props.name : void 0,\n variant: \"tertiary\"\n }, $options.linkAttributes), createSlots({ _: 2 }, [\n _ctx.$slots.icon || $props.icon ? {\n name: \"icon\",\n fn: withCtx(() => [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n class: normalizeClass([$props.icon, \"icon\"])\n }, null, 2)\n ], true)\n ]),\n key: \"0\"\n } : void 0,\n !(_ctx.$slots.icon || $props.icon) || $props.forceIconText ? {\n name: \"default\",\n fn: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n key: \"1\"\n } : void 0\n ]), 1040, [\"aria-label\"])) : createCommentVNode(\"\", true),\n _ctx.$slots.default ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n container: $setup.actionsContainer,\n forceMenu: $props.forceMenu,\n forceName: \"\",\n menuName: $props.name,\n open: $props.open,\n title: $props.title,\n variant: \"tertiary\",\n \"onUpdate:open\": $options.onOpenChange\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"container\", \"forceMenu\", \"menuName\", \"open\", \"title\", \"onUpdate:open\"])) : createCommentVNode(\"\", true),\n createVNode(_component_ChevronRight, {\n class: \"vue-crumb__separator\",\n size: 20\n })\n ], 42, _hoisted_1);\n}\nconst NcBreadcrumb = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-46306025\"]]);\nexport {\n NcBreadcrumb as N\n};\n//# sourceMappingURL=NcBreadcrumb-D2NtMTnk.mjs.map\n","import '../assets/NcBreadcrumbs-5gl8Syfa.css';\nimport { unsubscribe, subscribe } from \"@nextcloud/event-bus\";\nimport debounce from \"debounce\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, Fragment, cloneVNode, h } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActions, i as isSlotPopulated } from \"./NcActions-B_QR93qv.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BuRnYpJX.mjs\";\nimport { N as NcActionLink } from \"./NcActionLink-CCszAEdZ.mjs\";\nimport { N as NcActionRouter } from \"./NcActionRouter-CvDVCQiQ.mjs\";\nimport { N as NcBreadcrumb } from \"./NcBreadcrumb-D2NtMTnk.mjs\";\nconst _sfc_main$1 = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\nconst crumbClass = \"vue-crumb\";\nconst _sfc_main = {\n name: \"NcBreadcrumbs\",\n components: {\n NcActions,\n NcActionButton,\n NcActionRouter,\n NcActionLink,\n NcBreadcrumb,\n IconFolder\n },\n props: {\n /**\n * Set a css icon-class for the icon of the root breadcrumb to be used.\n */\n rootIcon: {\n type: String,\n default: \"icon-home\"\n },\n /**\n * Set the aria-label of the nav element.\n */\n ariaLabel: {\n type: String,\n default: null\n }\n },\n emits: [\"dropped\"],\n data() {\n return {\n /**\n * Array to track the hidden breadcrumbs by their index.\n * Comparing two crumbs somehow does not work, so we use the indices.\n */\n hiddenIndices: [],\n /**\n * This is the props of the middle Action menu\n * that show the ellipsised breadcrumbs\n */\n menuBreadcrumbProps: {\n // Don't show a name for this breadcrumb, only the Actions menu\n name: \"\",\n forceMenu: true,\n // Don't allow dropping directly on the actions breadcrumb\n disableDrop: true,\n // Is the menu open or not\n open: false\n },\n breadcrumbsRefs: []\n };\n },\n created() {\n window.addEventListener(\"resize\", debounce(() => {\n this.handleWindowResize();\n }, 100));\n subscribe(\"navigation-toggled\", this.delayedResize);\n },\n mounted() {\n this.handleWindowResize();\n },\n updated() {\n this.delayedResize();\n this.$nextTick(() => {\n this.hideCrumbs();\n });\n },\n beforeUnmount() {\n window.removeEventListener(\"resize\", this.handleWindowResize);\n unsubscribe(\"navigation-toggled\", this.delayedResize);\n },\n methods: {\n /**\n * Close the actions menu\n *\n * @param {object} e The event\n */\n closeActions(e) {\n if (this.$refs.actionsBreadcrumb.$el.contains(e.relatedTarget)) {\n return;\n }\n this.menuBreadcrumbProps.open = false;\n },\n /**\n * Call the resize function after a delay\n */\n async delayedResize() {\n await this.$nextTick();\n this.handleWindowResize();\n },\n /**\n * Check the width of the breadcrumb and hide breadcrumbs\n * if we overflow otherwise.\n */\n handleWindowResize() {\n if (!this.$refs.container) {\n return;\n }\n const nrCrumbs = this.breadcrumbsRefs.length;\n const hiddenIndices = [];\n const availableWidth = this.$refs.container.offsetWidth;\n let totalWidth = this.getTotalWidth();\n if (this.$refs.breadcrumb__actions) {\n totalWidth += this.$refs.breadcrumb__actions.offsetWidth;\n }\n let overflow = totalWidth - availableWidth;\n overflow += overflow > 0 ? 64 : 0;\n let i = 0;\n const startIndex = Math.floor(nrCrumbs / 2);\n while (overflow > 0 && i < nrCrumbs - 2) {\n const currentIndex = startIndex + (i % 2 ? i + 1 : i) / 2 * Math.pow(-1, i + nrCrumbs % 2);\n overflow -= this.getWidth(this.breadcrumbsRefs[currentIndex]?.$el, currentIndex === this.breadcrumbsRefs.length - 1);\n hiddenIndices.push(currentIndex);\n i++;\n }\n if (!this.arraysEqual(this.hiddenIndices, hiddenIndices.sort((a, b) => a - b))) {\n this.hiddenIndices = hiddenIndices;\n }\n },\n /**\n * Checks if two arrays are equal.\n * Only works for primitive arrays, but that's enough here.\n *\n * @param {Array} a The first array\n * @param {Array} b The second array\n * @return {boolean} Wether the arrays are equal\n */\n arraysEqual(a, b) {\n if (a.length !== b.length) {\n return false;\n } else if (a === b) {\n return true;\n } else if (a === null || b === null) {\n return false;\n }\n for (let i = 0; i < a.length; ++i) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n },\n /**\n * Calculates the total width of all breadcrumbs\n *\n * @return {number} The total width\n */\n getTotalWidth() {\n return this.breadcrumbsRefs.reduce((width, crumb, index) => width + this.getWidth(crumb.$el, index === this.breadcrumbsRefs.length - 1), 0);\n },\n /**\n * Calculates the width of the provided element\n *\n * @param {object} el The element\n * @param {boolean} isLast Is this the last crumb\n * @return {number} The width\n */\n getWidth(el, isLast) {\n if (!el?.classList) {\n return 0;\n }\n const hide = el.classList.contains(`${crumbClass}--hidden`);\n el.style.minWidth = \"auto\";\n if (isLast) {\n el.style.maxWidth = \"210px\";\n }\n el.classList.remove(`${crumbClass}--hidden`);\n const w = el.offsetWidth;\n if (hide) {\n el.classList.add(`${crumbClass}--hidden`);\n }\n el.style.minWidth = \"\";\n el.style.maxWidth = \"\";\n return w;\n },\n /**\n * Prevents the default of a provided event\n *\n * @param {object} e The event\n * @return {boolean}\n */\n preventDefault(e) {\n if (e.preventDefault) {\n e.preventDefault();\n }\n return false;\n },\n /**\n * Handles the drag start.\n * Prevents a breadcrumb from being draggable.\n *\n * @param {object} e The event\n * @return {boolean}\n */\n dragStart(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles when something is dropped on the breadcrumb.\n *\n * @param {object} e The drop event\n * @param {string} path The path of the breadcrumb\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n * @return {boolean}\n */\n dropped(e, path, disabled) {\n if (!disabled) {\n this.$emit(\"dropped\", e, path);\n }\n this.menuBreadcrumbProps.open = false;\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n return this.preventDefault(e);\n },\n /**\n * Handles the drag over event\n *\n * @param {object} e The drag over event\n * @return {boolean}\n */\n dragOver(e) {\n return this.preventDefault(e);\n },\n /**\n * Handles the drag enter event\n *\n * @param {object} e The drag over event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragEnter(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.classList && target.classList.contains(crumbClass)) {\n const crumbs = document.querySelectorAll(`.${crumbClass}`);\n for (const crumb of crumbs) {\n crumb.classList.remove(`${crumbClass}--hovered`);\n }\n target.classList.add(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Handles the drag leave event\n *\n * @param {object} e The drag leave event\n * @param {boolean} disabled Whether dropping is disabled for this breadcrumb\n */\n dragLeave(e, disabled) {\n if (disabled) {\n return;\n }\n if (e.target.contains(e.relatedTarget)) {\n return;\n }\n if (e.target.closest) {\n const target = e.target.closest(`.${crumbClass}`);\n if (target.contains(e.relatedTarget)) {\n return;\n }\n if (target.classList && target.classList.contains(crumbClass)) {\n target.classList.remove(`${crumbClass}--hovered`);\n }\n }\n },\n /**\n * Check for each crumb if we have to hide it and\n * add it to the array of all crumbs.\n */\n hideCrumbs() {\n this.breadcrumbsRefs.forEach((crumb, i) => {\n if (crumb?.$el?.classList) {\n if (this.hiddenIndices.includes(i)) {\n crumb.$el.classList.add(`${crumbClass}--hidden`);\n } else {\n crumb.$el.classList.remove(`${crumbClass}--hidden`);\n }\n }\n });\n },\n isBreadcrumb(vnode) {\n return vnode?.type?.name === \"NcBreadcrumb\";\n }\n },\n /**\n * The render function to display the component\n *\n * @return {object|undefined} The created VNode\n */\n render() {\n let breadcrumbs = [];\n this.$slots.default?.().forEach((vnode) => {\n if (this.isBreadcrumb(vnode)) {\n breadcrumbs.push(vnode);\n return;\n }\n if (vnode?.type === Fragment) {\n vnode?.children?.forEach?.((child) => {\n if (this.isBreadcrumb(child)) {\n breadcrumbs.push(child);\n }\n });\n }\n });\n if (breadcrumbs.length === 0) {\n return;\n }\n breadcrumbs[0] = cloneVNode(breadcrumbs[0], {\n icon: this.rootIcon,\n ref: \"breadcrumbs\"\n });\n const breadcrumbsRefs = [];\n breadcrumbs = breadcrumbs.map((crumb, index) => cloneVNode(crumb, {\n ref: (crumb2) => {\n breadcrumbsRefs[index] = crumb2;\n }\n }));\n const crumbs = [...breadcrumbs];\n if (this.hiddenIndices.length) {\n crumbs.splice(\n Math.round(breadcrumbs.length / 2),\n 0,\n // The Actions menu\n // Use a breadcrumb component for the hidden breadcrumbs\n // eslint-disable-line @stylistic/function-call-argument-newline\n h(NcBreadcrumb, {\n class: \"dropdown\",\n ...this.menuBreadcrumbProps,\n // Hide the dropdown menu from screen-readers,\n // since the crumbs in the menu are still in the list.\n \"aria-hidden\": true,\n // Add a ref to the Actions menu\n ref: \"actionsBreadcrumb\",\n key: \"actions-breadcrumb-1\",\n // Add handlers so the Actions menu opens on hover\n onDragenter: () => {\n this.menuBreadcrumbProps.open = true;\n },\n onDragleave: this.closeActions,\n // Make sure we keep the same open state\n // as the Actions component\n \"onUpdate:open\": (open) => {\n this.menuBreadcrumbProps.open = open;\n }\n // Add all hidden breadcrumbs as ActionRouter or ActionLink\n }, {\n default: () => this.hiddenIndices.filter((index) => index <= breadcrumbs.length - 1).map((index) => {\n const crumb = breadcrumbs[index];\n const {\n // Get the parameters from the breadcrumb component props\n to,\n href,\n disableDrop,\n name,\n // Props to forward\n ...propsToForward\n } = crumb.props;\n delete propsToForward.ref;\n let element = NcActionButton;\n let path = \"\";\n if (href) {\n element = NcActionLink;\n path = href;\n }\n if (to) {\n element = NcActionRouter;\n path = to;\n }\n const folderIcon = h(IconFolder, {\n size: 20\n });\n return h(element, {\n ...propsToForward,\n class: crumbClass,\n href: href || null,\n to: to || null,\n // Prevent the breadcrumbs from being draggable\n draggable: false,\n // Add the drag and drop handlers\n onDragstart: this.dragStart,\n onDrop: ($event) => this.dropped($event, path, disableDrop),\n onDragover: this.dragOver,\n onDragenter: ($event) => this.dragEnter($event, disableDrop),\n onDragleave: ($event) => this.dragLeave($event, disableDrop)\n }, {\n default: () => name,\n icon: () => folderIcon\n });\n })\n })\n );\n }\n const wrapper = [h(\"nav\", { \"aria-label\": this.ariaLabel }, [h(\"ul\", { class: \"breadcrumb__crumbs\" }, [crumbs])])];\n if (isSlotPopulated(this.$slots.actions?.())) {\n wrapper.push(h(\"div\", { class: \"breadcrumb__actions\", ref: \"breadcrumb__actions\" }, this.$slots.actions?.()));\n }\n this.breadcrumbsRefs = breadcrumbsRefs;\n return h(\"div\", { class: [\"breadcrumb\", { \"breadcrumb--collapsed\": this.hiddenIndices.length === breadcrumbs.length - 2 }], ref: \"container\" }, wrapper);\n }\n};\nconst NcBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-0015282c\"]]);\nexport {\n NcBreadcrumbs as N\n};\n//# sourceMappingURL=NcBreadcrumbs-DDutZRtm.mjs.map\n","import { FileType } from \"@nextcloud/files\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { ref, watchEffect, toValue } from \"vue\";\nimport PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nfunction getPreviewURL(node, options = {}) {\n options = { size: 32, cropPreview: false, mimeFallback: true, ...options };\n try {\n const previewUrl = node.attributes?.previewUrl || generateUrl(\"/core/preview?fileId={fileid}\", {\n fileid: node.fileid\n });\n let url;\n try {\n url = new URL(previewUrl);\n } catch {\n url = new URL(previewUrl, window.location.origin);\n }\n url.searchParams.set(\"x\", `${options.size}`);\n url.searchParams.set(\"y\", `${options.size}`);\n url.searchParams.set(\"mimeFallback\", `${options.mimeFallback}`);\n url.searchParams.set(\"a\", options.cropPreview === true ? \"0\" : \"1\");\n url.searchParams.set(\"c\", `${node.attributes.etag}`);\n return url;\n } catch {\n return null;\n }\n}\nfunction usePreviewURL(node, options) {\n const previewURL = ref(null);\n const previewLoaded = ref(false);\n watchEffect(() => {\n previewLoaded.value = false;\n previewURL.value = getPreviewURL(toValue(node), toValue(options || {}));\n if (previewURL.value && toValue(node).type === FileType.File) {\n preloadImage(previewURL.value.href).then((success) => {\n previewLoaded.value = success;\n });\n }\n });\n return {\n previewURL,\n previewLoaded\n };\n}\nexport {\n getPreviewURL as g,\n usePreviewURL as u\n};\n//# sourceMappingURL=preview-BIbJGxXF.mjs.map\n","const _export_sfc = (sfc, props) => {\n const target = sfc.__vccOpts || sfc;\n for (const [key, val] of props) {\n target[key] = val;\n }\n return target;\n};\nexport {\n _export_sfc as _\n};\n//# sourceMappingURL=_plugin-vue_export-helper-1tPrXgE0.mjs.map\n","import { createElementBlock, openBlock, mergeProps, createElementVNode, createCommentVNode, toDisplayString, defineComponent, ref, computed, toRef, normalizeClass, normalizeStyle, unref, Fragment, createBlock, createVNode, toHandlers, withModifiers, onMounted, toValue, mergeModels, useModel, nextTick, onUnmounted, withCtx, createTextVNode, renderList, useTemplateRef, createSlots, shallowRef, watch } from \"vue\";\nimport { emit } from \"@nextcloud/event-bus\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcEmptyContent from \"@nextcloud/vue/components/NcEmptyContent\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { FileType, Permission, formatFileSize, sortNodes, validateFilename, InvalidFilenameError, InvalidFilenameErrorReason } from \"@nextcloud/files\";\nimport NcButton from \"@nextcloud/vue/components/NcButton\";\nimport NcCheckboxRadioSwitch from \"@nextcloud/vue/components/NcCheckboxRadioSwitch\";\nimport { extname, join } from \"@nextcloud/paths\";\nimport NcDateTime from \"@nextcloud/vue/components/NcDateTime\";\nimport { mdiKey, mdiTagOutline, mdiLink, mdiAccountPlus, mdiAccountGroupOutline, mdiNetworkOutline, mdiFolder, mdiClock, mdiStar } from \"@mdi/js\";\nimport { ShareType } from \"@nextcloud/sharing\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/components/NcIconSvgWrapper\";\nimport { u as usePreviewURL } from \"./preview-BIbJGxXF.mjs\";\nimport { t, l as logger, s as showError } from \"./index-C1xmmKTZ.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { loadState } from \"@nextcloud/initial-state\";\nimport { generateUrl } from \"@nextcloud/router\";\nimport { isPublicShare } from \"@nextcloud/sharing/public\";\nimport NcActionInput from \"@nextcloud/vue/components/NcActionInput\";\nimport NcActions from \"@nextcloud/vue/components/NcActions\";\nimport NcBreadcrumb from \"@nextcloud/vue/components/NcBreadcrumb\";\nimport NcBreadcrumbs from \"@nextcloud/vue/components/NcBreadcrumbs\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport NcSelect from \"@nextcloud/vue/components/NcSelect\";\nimport NcTextField from \"@nextcloud/vue/components/NcTextField\";\nimport { getRecentSearch, resultToNode, defaultRootPath, getDefaultPropfind, getClient, getFavoriteNodes } from \"@nextcloud/files/dav\";\nconst _sfc_main$e = {\n name: \"FileIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$c = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$b = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$a = { d: \"M13,9V3.5L18.5,9M6,2C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H18A2,2 0 0,0 20,20V8L14,2H6Z\" };\nconst _hoisted_4$a = { key: 0 };\nfunction _sfc_render$7(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon file-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$a, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$a, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$b))\n ], 16, _hoisted_1$c);\n}\nconst IconFile = /* @__PURE__ */ _export_sfc(_sfc_main$e, [[\"render\", _sfc_render$7]]);\nconst _sfc_main$d = {\n name: \"MenuDownIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$b = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$a = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$9 = { d: \"M7,10L12,15L17,10H7Z\" };\nconst _hoisted_4$9 = { key: 0 };\nfunction _sfc_render$6(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-down-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$9, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$9, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$a))\n ], 16, _hoisted_1$b);\n}\nconst IconSortDescending = /* @__PURE__ */ _export_sfc(_sfc_main$d, [[\"render\", _sfc_render$6]]);\nconst _sfc_main$c = {\n name: \"MenuUpIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$a = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$9 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$8 = { d: \"M7,15L12,10L17,15H7Z\" };\nconst _hoisted_4$8 = { key: 0 };\nfunction _sfc_render$5(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon menu-up-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$8, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$8, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$9))\n ], 16, _hoisted_1$a);\n}\nconst IconSortAscending = /* @__PURE__ */ _export_sfc(_sfc_main$c, [[\"render\", _sfc_render$5]]);\nconst _sfc_main$b = {\n name: \"FolderIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$9 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$8 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$7 = { d: \"M10,4H4C2.89,4 2,4.89 2,6V18A2,2 0 0,0 4,20H20A2,2 0 0,0 22,18V8C22,6.89 21.1,6 20,6H12L10,4Z\" };\nconst _hoisted_4$7 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$7, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$7, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$8))\n ], 16, _hoisted_1$9);\n}\nconst IconFolder = /* @__PURE__ */ _export_sfc(_sfc_main$b, [[\"render\", _sfc_render$4]]);\nconst fileListIconStyles = {\n \"file-picker__file-icon\": \"_file-picker__file-icon_3v9zx_9\",\n \"file-picker__file-icon--primary\": \"_file-picker__file-icon--primary_3v9zx_21\",\n \"file-picker__file-icon-overlay\": \"_file-picker__file-icon-overlay_3v9zx_25\"\n};\nconst _sfc_main$a = /* @__PURE__ */ defineComponent({\n __name: \"FilePreview\",\n props: {\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n setup(__props) {\n const props = __props;\n const fileListIconStyles$1 = ref(fileListIconStyles);\n const {\n previewURL,\n previewLoaded\n } = usePreviewURL(toRef(props, \"node\"), computed(() => ({ cropPreview: props.cropImagePreviews })));\n const isFile = computed(() => props.node.type === FileType.File);\n const folderDecorationIcon = computed(() => {\n if (props.node.type !== FileType.Folder) {\n return null;\n }\n if (props.node.attributes?.[\"is-encrypted\"] === 1) {\n return mdiKey;\n }\n if (props.node.attributes?.[\"is-tag\"]) {\n return mdiTagOutline;\n }\n const shareTypes = Object.values(props.node.attributes?.[\"share-types\"] || {}).flat();\n if (shareTypes.some((type) => type === ShareType.Link || type === ShareType.Email)) {\n return mdiLink;\n }\n if (shareTypes.length > 0) {\n return mdiAccountPlus;\n }\n switch (props.node.attributes?.[\"mount-type\"]) {\n case \"external\":\n case \"external-session\":\n return mdiNetworkOutline;\n case \"group\":\n return mdiAccountGroupOutline;\n case \"shared\":\n return mdiAccountPlus;\n }\n return null;\n });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n style: normalizeStyle(unref(previewLoaded) ? { backgroundImage: `url(${unref(previewURL)})` } : void 0),\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon\"])\n }, [\n !unref(previewLoaded) ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n isFile.value ? (openBlock(), createBlock(IconFile, {\n key: 0,\n size: 32\n })) : (openBlock(), createElementBlock(Fragment, { key: 1 }, [\n folderDecorationIcon.value ? (openBlock(), createBlock(unref(NcIconSvgWrapper), {\n key: 0,\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon-overlay\"]),\n inline: \"\",\n path: folderDecorationIcon.value,\n size: 16\n }, null, 8, [\"class\", \"path\"])) : createCommentVNode(\"\", true),\n createVNode(IconFolder, {\n class: normalizeClass(fileListIconStyles$1.value[\"file-picker__file-icon--primary\"]),\n size: 32\n }, null, 8, [\"class\"])\n ], 64))\n ], 64)) : createCommentVNode(\"\", true)\n ], 6);\n };\n }\n});\nconst _hoisted_1$8 = [\"tabindex\", \"aria-selected\", \"data-filename\"];\nconst _hoisted_2$7 = { class: \"row-name\" };\nconst _hoisted_3$6 = {\n class: \"file-picker__name-container\",\n \"data-testid\": \"row-name\"\n};\nconst _hoisted_4$6 = [\"title\", \"textContent\"];\nconst _hoisted_5$1 = [\"textContent\"];\nconst _hoisted_6$1 = { class: \"row-size\" };\nconst _hoisted_7$1 = { class: \"row-modified\" };\nconst _sfc_main$9 = /* @__PURE__ */ defineComponent({\n __name: \"FileListRow\",\n props: {\n allowPickDirectory: { type: Boolean },\n selected: { type: Boolean },\n showCheckbox: { type: Boolean },\n canPick: { type: Boolean },\n node: {},\n cropImagePreviews: { type: Boolean }\n },\n emits: [\"update:selected\", \"enterDirectory\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const timestamp = computed(() => props.node.mtime ?? 0);\n const fileExtension = computed(() => extname(props.node.displayname));\n const displayName = computed(() => props.node.displayname.slice(0, fileExtension.value ? -fileExtension.value.length : void 0));\n const isDirectory = computed(() => props.node.type === FileType.Folder);\n const isPickable = computed(() => props.canPick && (props.allowPickDirectory || !isDirectory.value));\n const isNavigatable = computed(() => (props.node.permissions & Permission.READ) === Permission.READ);\n function toggleSelected() {\n if (!isPickable.value) {\n return;\n }\n emit2(\"update:selected\", !props.selected);\n }\n function handleClick() {\n if (isDirectory.value) {\n if (isNavigatable.value) {\n emit2(\"enterDirectory\", props.node);\n }\n } else {\n toggleSelected();\n }\n }\n function handleKeyDown(event) {\n if (event.key === \"Enter\") {\n handleClick();\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", mergeProps({\n tabindex: __props.showCheckbox && !isDirectory.value ? void 0 : 0,\n \"aria-selected\": !isPickable.value ? void 0 : __props.selected,\n class: [\"file-picker__row\", [\n {\n \"file-picker__row--selected\": __props.selected && !__props.showCheckbox,\n \"file-picker__row--not-navigatable\": isDirectory.value && !isNavigatable.value,\n \"file-picker__row--not-pickable\": !isPickable.value\n }\n ]],\n \"data-filename\": __props.node.basename,\n \"data-testid\": \"file-list-row\"\n }, toHandlers({\n click: handleClick,\n /* same as tabindex -> if we hide the checkbox or this is a directory we need keyboard access to enter the directory or select the node */\n ...!__props.showCheckbox || isDirectory.value ? { keydown: handleKeyDown } : {}\n }, true)), [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", {\n key: 0,\n class: \"row-checkbox\",\n onClick: withModifiers(() => {\n }, [\"stop\"])\n }, [\n createVNode(unref(NcCheckboxRadioSwitch), {\n \"aria-label\": unref(t)(\"Select the row for {nodename}\", { nodename: displayName.value }),\n disabled: !isPickable.value,\n \"data-testid\": \"row-checkbox\",\n modelValue: __props.selected,\n \"onUpdate:modelValue\": toggleSelected\n }, null, 8, [\"aria-label\", \"disabled\", \"modelValue\"])\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_2$7, [\n createElementVNode(\"div\", _hoisted_3$6, [\n createVNode(_sfc_main$a, {\n node: __props.node,\n cropImagePreviews: __props.cropImagePreviews\n }, null, 8, [\"node\", \"cropImagePreviews\"]),\n createElementVNode(\"div\", {\n class: \"file-picker__file-name\",\n title: displayName.value,\n textContent: toDisplayString(displayName.value)\n }, null, 8, _hoisted_4$6),\n createElementVNode(\"div\", {\n class: \"file-picker__file-extension\",\n textContent: toDisplayString(fileExtension.value)\n }, null, 8, _hoisted_5$1)\n ])\n ]),\n createElementVNode(\"td\", _hoisted_6$1, toDisplayString(unref(formatFileSize)(__props.node.size || 0)), 1),\n createElementVNode(\"td\", _hoisted_7$1, [\n createVNode(unref(NcDateTime), {\n timestamp: timestamp.value,\n ignoreSeconds: \"\"\n }, null, 8, [\"timestamp\"])\n ])\n ], 16, _hoisted_1$8);\n };\n }\n});\nconst FileListRow = /* @__PURE__ */ _export_sfc(_sfc_main$9, [[\"__scopeId\", \"data-v-7857e8bd\"]]);\nconst _hoisted_1$7 = {\n \"aria-hidden\": \"true\",\n class: \"file-picker__row loading-row\"\n};\nconst _hoisted_2$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_3$5 = { class: \"row-name\" };\nconst _hoisted_4$5 = { class: \"row-wrapper\" };\nconst _sfc_main$8 = /* @__PURE__ */ defineComponent({\n __name: \"LoadingTableRow\",\n props: {\n showCheckbox: { type: Boolean }\n },\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"tr\", _hoisted_1$7, [\n __props.showCheckbox ? (openBlock(), createElementBlock(\"td\", _hoisted_2$6, [..._cache[0] || (_cache[0] = [\n createElementVNode(\"span\", null, null, -1)\n ])])) : createCommentVNode(\"\", true),\n createElementVNode(\"td\", _hoisted_3$5, [\n createElementVNode(\"div\", _hoisted_4$5, [\n createElementVNode(\"span\", {\n class: normalizeClass(unref(fileListIconStyles)[\"file-picker__file-icon\"])\n }, null, 2),\n _cache[1] || (_cache[1] = createElementVNode(\"span\", null, null, -1))\n ])\n ]),\n _cache[2] || (_cache[2] = createElementVNode(\"td\", { class: \"row-size\" }, [\n createElementVNode(\"span\")\n ], -1)),\n _cache[3] || (_cache[3] = createElementVNode(\"td\", { class: \"row-modified\" }, [\n createElementVNode(\"span\")\n ], -1))\n ]);\n };\n }\n});\nconst LoadingTableRow = /* @__PURE__ */ _export_sfc(_sfc_main$8, [[\"__scopeId\", \"data-v-1f96131b\"]]);\nfunction useFilesSettings() {\n const filesUserState = loadState(\"files\", \"config\", null);\n const showHiddenFiles = ref(filesUserState?.show_hidden ?? true);\n const sortFavoritesFirst = ref(filesUserState?.sort_favorites_first ?? true);\n const cropImagePreviews = ref(filesUserState?.crop_image_previews ?? true);\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/configs\"));\n showHiddenFiles.value = data?.data?.show_hidden ?? false;\n sortFavoritesFirst.value = data?.data?.sort_favorites_first ?? true;\n cropImagePreviews.value = data?.data?.crop_image_previews ?? true;\n } catch (error) {\n logger.error(\"Could not load files settings\", { error });\n showError(t(\"Could not load files settings\"));\n }\n } else {\n logger.debug(\"Skip loading files settings - currently on public share\");\n }\n });\n return {\n showHiddenFiles,\n sortFavoritesFirst,\n cropImagePreviews\n };\n}\nfunction useFilesViews(currentView) {\n const convertOrder = (order2) => order2 === \"asc\" ? \"ascending\" : order2 === \"desc\" ? \"descending\" : \"none\";\n const filesViewsState = loadState(\"files\", \"viewConfigs\", null);\n const filesViewConfig = ref({\n sortBy: filesViewsState?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.files?.sorting_direction ?? \"asc\")\n });\n const recentViewConfig = ref({\n sortBy: filesViewsState?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.recent?.sorting_direction ?? \"asc\")\n });\n const favoritesViewConfig = ref({\n sortBy: filesViewsState?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(filesViewsState?.favorites?.sorting_direction ?? \"asc\")\n });\n onMounted(async () => {\n if (!isPublicShare()) {\n try {\n const { data } = await axios.get(generateUrl(\"/apps/files/api/v1/views\"));\n filesViewConfig.value = {\n sortBy: data?.data?.files?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.files?.sorting_direction)\n };\n favoritesViewConfig.value = {\n sortBy: data?.data?.favorites?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.favorites?.sorting_direction)\n };\n recentViewConfig.value = {\n sortBy: data?.data?.recent?.sorting_mode ?? \"basename\",\n order: convertOrder(data?.data?.recent?.sorting_direction)\n };\n } catch (error) {\n logger.error(\"Could not load files views\", { error });\n showError(t(\"Could not load files views\"));\n }\n } else {\n logger.debug(\"Skip loading files views - currently on public share\");\n }\n });\n const currentConfig = computed(() => toValue(currentView || \"files\") === \"files\" ? filesViewConfig.value : toValue(currentView) === \"recent\" ? recentViewConfig.value : favoritesViewConfig.value);\n const sortBy = computed(() => currentConfig.value.sortBy);\n const order = computed(() => currentConfig.value.order);\n return {\n filesViewConfig,\n favoritesViewConfig,\n recentViewConfig,\n currentConfig,\n sortBy,\n order\n };\n}\nconst _hoisted_1$6 = {\n key: 0,\n class: \"row-checkbox\"\n};\nconst _hoisted_2$5 = { class: \"hidden-visually\" };\nconst _hoisted_3$4 = [\"aria-sort\"];\nconst _hoisted_4$4 = { class: \"header-wrapper\" };\nconst _hoisted_5 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_6 = [\"aria-sort\"];\nconst _hoisted_7 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _hoisted_8 = [\"aria-sort\"];\nconst _hoisted_9 = {\n key: 2,\n style: { \"width\": \"44px\" }\n};\nconst _sfc_main$7 = /* @__PURE__ */ defineComponent({\n __name: \"FileList\",\n props: /* @__PURE__ */ mergeModels({\n currentView: {},\n multiselect: { type: Boolean },\n allowPickDirectory: { type: Boolean },\n loading: { type: Boolean },\n files: {},\n canPick: { type: Function }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {},\n \"selectedFiles\": { required: true },\n \"selectedFilesModifiers\": {}\n }),\n emits: [\"update:path\", \"update:selectedFiles\"],\n setup(__props) {\n const path = useModel(__props, \"path\");\n const selectedFiles = useModel(__props, \"selectedFiles\");\n const props = __props;\n const customSortingConfig = ref();\n const { currentConfig: filesAppSorting } = useFilesViews(props.currentView);\n const sortingConfig = computed(() => customSortingConfig.value ?? filesAppSorting.value);\n const sortByName = computed(() => sortingConfig.value.sortBy === \"basename\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortBySize = computed(() => sortingConfig.value.sortBy === \"size\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n const sortByModified = computed(() => sortingConfig.value.sortBy === \"mtime\" ? sortingConfig.value.order === \"none\" ? void 0 : sortingConfig.value.order : void 0);\n function toggleSorting(sortBy) {\n if (sortingConfig.value.sortBy === sortBy) {\n if (sortingConfig.value.order === \"ascending\") {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"descending\" };\n } else {\n customSortingConfig.value = { sortBy: sortingConfig.value.sortBy, order: \"ascending\" };\n }\n } else {\n customSortingConfig.value = { sortBy, order: \"ascending\" };\n }\n }\n const { sortFavoritesFirst, cropImagePreviews } = useFilesSettings();\n const sortedFiles = computed(() => {\n return sortNodes(props.files, {\n sortFoldersFirst: true,\n sortFavoritesFirst: sortFavoritesFirst.value,\n sortingOrder: sortingConfig.value.order === \"descending\" ? \"desc\" : \"asc\",\n sortingMode: sortingConfig.value.sortBy\n });\n });\n const selectableFiles = computed(() => props.files.filter((file) => props.allowPickDirectory || file.type !== FileType.Folder));\n const allSelected = computed(() => !props.loading && selectedFiles.value.length > 0 && selectedFiles.value.length >= selectableFiles.value.length);\n function onSelectAll() {\n if (selectedFiles.value.length < selectableFiles.value.length) {\n selectedFiles.value = [...selectableFiles.value];\n } else {\n selectedFiles.value = [];\n }\n }\n function onNodeSelected(file) {\n if (selectedFiles.value.includes(file)) {\n selectedFiles.value = selectedFiles.value.filter((f) => f.path !== file.path);\n } else {\n if (props.multiselect) {\n selectedFiles.value = [...selectedFiles.value, file];\n } else {\n selectedFiles.value = [file];\n }\n }\n }\n function onChangeDirectory(dir) {\n path.value = dir.path;\n }\n const skeletonNumber = ref(4);\n const fileContainer = ref();\n {\n const resize = () => nextTick(() => {\n const nodes = fileContainer.value?.parentElement?.children || [];\n let height = fileContainer.value?.parentElement?.clientHeight || 450;\n for (let index = 0; index < nodes.length; index++) {\n if (!fileContainer.value?.isSameNode(nodes[index])) {\n height -= nodes[index].clientHeight;\n }\n }\n skeletonNumber.value = Math.max(1, Math.floor((height - 50) / 50));\n });\n onMounted(() => {\n window.addEventListener(\"resize\", resize);\n resize();\n });\n onUnmounted(() => {\n window.removeEventListener(\"resize\", resize);\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref_key: \"fileContainer\",\n ref: fileContainer,\n class: \"file-picker__files\"\n }, [\n createElementVNode(\"table\", null, [\n createElementVNode(\"thead\", null, [\n createElementVNode(\"tr\", null, [\n __props.multiselect ? (openBlock(), createElementBlock(\"th\", _hoisted_1$6, [\n createElementVNode(\"span\", _hoisted_2$5, toDisplayString(unref(t)(\"Select entry\")), 1),\n __props.multiselect ? (openBlock(), createBlock(unref(NcCheckboxRadioSwitch), {\n key: 0,\n \"aria-label\": unref(t)(\"Select all entries\"),\n \"data-testid\": \"select-all-checkbox\",\n modelValue: allSelected.value,\n \"onUpdate:modelValue\": onSelectAll\n }, null, 8, [\"aria-label\", \"modelValue\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByName.value,\n class: \"row-name\"\n }, [\n createElementVNode(\"div\", _hoisted_4$4, [\n _cache[3] || (_cache[3] = createElementVNode(\"span\", { class: \"file-picker__header-preview\" }, null, -1)),\n createVNode(unref(NcButton), {\n \"data-test\": \"file-picker_sort-name\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => toggleSorting(\"basename\"))\n }, {\n icon: withCtx(() => [\n sortByName.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByName.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_5))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Name\")), 1)\n ]),\n _: 1\n })\n ])\n ], 8, _hoisted_3$4),\n createElementVNode(\"th\", {\n \"aria-sort\": sortBySize.value,\n class: \"row-size\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => toggleSorting(\"size\"))\n }, {\n icon: withCtx(() => [\n sortBySize.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortBySize.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_7))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Size\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_6),\n createElementVNode(\"th\", {\n \"aria-sort\": sortByModified.value,\n class: \"row-modified\"\n }, [\n createVNode(unref(NcButton), {\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[2] || (_cache[2] = ($event) => toggleSorting(\"mtime\"))\n }, {\n icon: withCtx(() => [\n sortByModified.value === \"ascending\" ? (openBlock(), createBlock(IconSortAscending, {\n key: 0,\n size: 20\n })) : sortByModified.value === \"descending\" ? (openBlock(), createBlock(IconSortDescending, {\n key: 1,\n size: 20\n })) : (openBlock(), createElementBlock(\"span\", _hoisted_9))\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(unref(t)(\"Modified\")), 1)\n ]),\n _: 1\n })\n ], 8, _hoisted_8)\n ])\n ]),\n createElementVNode(\"tbody\", null, [\n __props.loading ? (openBlock(true), createElementBlock(Fragment, { key: 0 }, renderList(skeletonNumber.value, (index) => {\n return openBlock(), createBlock(LoadingTableRow, {\n key: index,\n showCheckbox: __props.multiselect\n }, null, 8, [\"showCheckbox\"]);\n }), 128)) : (openBlock(true), createElementBlock(Fragment, { key: 1 }, renderList(sortedFiles.value, (file) => {\n return openBlock(), createBlock(FileListRow, {\n key: file.fileid || file.path,\n allowPickDirectory: __props.allowPickDirectory,\n showCheckbox: __props.multiselect,\n canPick: (__props.multiselect || selectedFiles.value.length === 0 || selectedFiles.value.includes(file)) && (__props.canPick === void 0 || __props.canPick(file)),\n selected: selectedFiles.value.includes(file),\n node: file,\n cropImagePreviews: unref(cropImagePreviews),\n \"onUpdate:selected\": ($event) => onNodeSelected(file),\n onEnterDirectory: onChangeDirectory\n }, null, 8, [\"allowPickDirectory\", \"showCheckbox\", \"canPick\", \"selected\", \"node\", \"cropImagePreviews\", \"onUpdate:selected\"]);\n }), 128))\n ])\n ])\n ], 512);\n };\n }\n});\nconst FileList = /* @__PURE__ */ _export_sfc(_sfc_main$7, [[\"__scopeId\", \"data-v-412efd5c\"]]);\nconst _sfc_main$6 = {\n name: \"HomeIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$4 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M10,20V14H14V20H19V12H22L12,3L2,12H5V20H10Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon home-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$4))\n ], 16, _hoisted_1$5);\n}\nconst IconHome = /* @__PURE__ */ _export_sfc(_sfc_main$6, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$5 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$4);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$4 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerBreadcrumbs\",\n props: /* @__PURE__ */ mergeModels({\n showMenu: { type: Boolean }\n }, {\n \"path\": { required: true },\n \"pathModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"createNode\"], [\"update:path\"]),\n setup(__props, { emit: __emit }) {\n const path = useModel(__props, \"path\");\n const emit2 = __emit;\n const actionsOpen = ref(false);\n const newNodeName = ref(\"\");\n const nameInput = useTemplateRef(\"nameInput\");\n function validateInput() {\n const name = newNodeName.value.trim();\n const input = nameInput.value?.$el?.querySelector(\"input\");\n let validity = \"\";\n try {\n validateFilename(name);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n validity = t('\"{char}\" is not allowed inside a folder name.', { char: error.segment });\n break;\n case InvalidFilenameErrorReason.ReservedName:\n validity = t('\"{segment}\" is a reserved name and not allowed for folder names.', { segment: error.segment });\n break;\n case InvalidFilenameErrorReason.Extension:\n validity = t('Folder names must not end with \"{extension}\".', { extension: error.segment });\n break;\n default:\n validity = t(\"Invalid folder name.\");\n }\n }\n if (input) {\n input.setCustomValidity(validity);\n }\n return validity === \"\";\n }\n function onSubmit() {\n const name = newNodeName.value.trim();\n if (validateInput()) {\n actionsOpen.value = false;\n emit2(\"createNode\", name);\n newNodeName.value = \"\";\n }\n }\n const pathElements = computed(() => path.value.split(\"/\").filter((v) => v !== \"\").map((v, i, elements) => ({\n name: v,\n path: \"/\" + elements.slice(0, i + 1).join(\"/\")\n })));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcBreadcrumbs), { class: \"file-picker__breadcrumbs\" }, createSlots({\n default: withCtx(() => [\n createVNode(unref(NcBreadcrumb), {\n name: unref(t)(\"All files\"),\n title: unref(t)(\"Home\"),\n onClick: _cache[0] || (_cache[0] = ($event) => path.value = \"/\")\n }, {\n icon: withCtx(() => [\n createVNode(IconHome, { size: 20 })\n ]),\n _: 1\n }, 8, [\"name\", \"title\"]),\n (openBlock(true), createElementBlock(Fragment, null, renderList(pathElements.value, (dir) => {\n return openBlock(), createBlock(unref(NcBreadcrumb), {\n key: dir.path,\n name: dir.name,\n title: dir.path,\n onClick: ($event) => path.value = dir.path\n }, null, 8, [\"name\", \"title\", \"onClick\"]);\n }), 128))\n ]),\n _: 2\n }, [\n __props.showMenu ? {\n name: \"actions\",\n fn: withCtx(() => [\n createVNode(unref(NcActions), {\n open: actionsOpen.value,\n \"onUpdate:open\": _cache[2] || (_cache[2] = ($event) => actionsOpen.value = $event),\n \"aria-label\": unref(t)(\"Create directory\"),\n forceMenu: true,\n forceName: true,\n menuName: unref(t)(\"New\"),\n variant: \"secondary\",\n onClose: _cache[3] || (_cache[3] = ($event) => newNodeName.value = \"\")\n }, {\n icon: withCtx(() => [\n createVNode(IconPlus, { size: 20 })\n ]),\n default: withCtx(() => [\n createVNode(unref(NcActionInput), {\n ref_key: \"nameInput\",\n ref: nameInput,\n modelValue: newNodeName.value,\n \"onUpdate:modelValue\": [\n _cache[1] || (_cache[1] = ($event) => newNodeName.value = $event),\n validateInput\n ],\n label: unref(t)(\"New folder\"),\n placeholder: unref(t)(\"New folder name\"),\n onSubmit\n }, {\n icon: withCtx(() => [\n createVNode(IconFolder, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"label\", \"placeholder\"])\n ]),\n _: 1\n }, 8, [\"open\", \"aria-label\", \"menuName\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1024);\n };\n }\n});\nconst FilePickerBreadcrumbs = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"__scopeId\", \"data-v-b448b141\"]]);\nconst _sfc_main$3 = {\n name: \"CloseIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,6.41L17.59,5L12,10.59L6.41,5L5,6.41L10.59,12L5,17.59L6.41,19L12,13.41L17.59,19L19,17.59L13.41,12L19,6.41Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon close-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconClose = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$2 = {\n name: \"MagnifyIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9.5,3A6.5,6.5 0 0,1 16,9.5C16,11.11 15.41,12.59 14.44,13.73L14.71,14H15.5L20.5,19L19,20.5L14,15.5V14.71L13.73,14.44C12.59,15.41 11.11,16 9.5,16A6.5,6.5 0 0,1 3,9.5A6.5,6.5 0 0,1 9.5,3M9.5,5C7,5 5,7 5,9.5C5,12 7,14 9.5,14C12,14 14,12 14,9.5C14,7 12,5 9.5,5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon magnify-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconMagnify = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render]]);\nfunction useViews(isAnonymous) {\n const allViews = [\n {\n id: \"files\",\n label: t(\"All files\"),\n icon: mdiFolder\n },\n {\n id: \"recent\",\n label: t(\"Recent\"),\n icon: mdiClock\n },\n {\n id: \"favorites\",\n label: t(\"Favorites\"),\n icon: mdiStar\n }\n ];\n const availableViews = isAnonymous.value ? allViews.filter(({ id }) => id === \"files\") : allViews;\n return {\n allViews,\n availableViews\n };\n}\nconst _hoisted_1$1 = {\n key: 0,\n class: \"file-picker__side\"\n};\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"FilePickerNavigation\",\n props: {\n currentView: {},\n filterString: {},\n isCollapsed: { type: Boolean },\n disabledNavigation: { type: Boolean }\n },\n emits: [\"update:currentView\", \"update:filterString\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit2 = __emit;\n const { availableViews } = useViews(ref(getCurrentUser() === null));\n const currentViewObject = computed(() => availableViews.filter((v) => v.id === props.currentView)[0] ?? availableViews[0]);\n const updateFilterValue = (value) => emit2(\"update:filterString\", value.toString());\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(Fragment, null, [\n createVNode(unref(NcTextField), {\n class: \"file-picker__filter-input\",\n label: unref(t)(\"Filter file list\"),\n showTrailingButton: !!__props.filterString,\n modelValue: __props.filterString,\n \"onUpdate:modelValue\": updateFilterValue,\n onTrailingButtonClick: _cache[0] || (_cache[0] = ($event) => updateFilterValue(\"\"))\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 16 })\n ]),\n default: withCtx(() => [\n createVNode(IconMagnify, { size: 16 })\n ]),\n _: 1\n }, 8, [\"label\", \"showTrailingButton\", \"modelValue\"]),\n unref(availableViews).length > 1 && !__props.disabledNavigation ? (openBlock(), createElementBlock(Fragment, { key: 0 }, [\n !__props.isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_1$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(unref(availableViews), (view) => {\n return openBlock(), createElementBlock(\"li\", {\n key: view.id\n }, [\n createVNode(unref(NcButton), {\n variant: __props.currentView === view.id ? \"primary\" : \"tertiary\",\n wide: true,\n onClick: ($event) => _ctx.$emit(\"update:currentView\", view.id)\n }, {\n icon: withCtx(() => [\n createVNode(unref(NcIconSvgWrapper), {\n path: view.icon,\n size: 20\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(view.label), 1)\n ]),\n _: 2\n }, 1032, [\"variant\", \"onClick\"])\n ]);\n }), 128))\n ])) : (openBlock(), createBlock(unref(NcSelect), {\n key: 1,\n \"aria-label\": unref(t)(\"Current view selector\"),\n clearable: false,\n searchable: false,\n options: unref(availableViews),\n modelValue: currentViewObject.value,\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => emit2(\"update:currentView\", $event.id))\n }, null, 8, [\"aria-label\", \"options\", \"modelValue\"]))\n ], 64)) : createCommentVNode(\"\", true)\n ], 64);\n };\n }\n});\nconst FilePickerNavigation = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-e1c54e23\"]]);\nasync function getRecentNodes({ client, signal }) {\n const lastTwoWeek = Math.round(Date.now() / 1e3) - 60 * 60 * 24 * 14;\n const { data } = await client.search(\"/\", {\n signal,\n details: true,\n data: getRecentSearch(lastTwoWeek)\n });\n return data.results.map((result) => resultToNode(result));\n}\nasync function getNodes({ client, path, signal }) {\n const results = await client.getDirectoryContents(join(defaultRootPath, path), {\n signal,\n details: true,\n includeSelf: true,\n data: getDefaultPropfind()\n });\n const nodes = results.data.map((result) => resultToNode(result));\n return {\n contents: nodes.filter(({ path: nodePath }) => nodePath !== path),\n folder: nodes.find(({ path: nodePath }) => path === nodePath)\n };\n}\nasync function getFile(client, path) {\n const { data } = await client.stat(join(defaultRootPath, path), {\n details: true,\n data: getDefaultPropfind()\n });\n return resultToNode(data);\n}\nfunction useDAVFiles(currentView, currentPath) {\n const client = getClient();\n const files = shallowRef([]);\n const folder = shallowRef(null);\n const isLoading = ref(true);\n let abortController;\n async function createDirectory(name) {\n const path = join(currentPath.value, name);\n await client.createDirectory(join(defaultRootPath, path));\n const directory = await getFile(client, path);\n files.value = [...files.value, directory];\n return directory;\n }\n async function loadDAVFiles() {\n if (abortController) {\n abortController.abort();\n abortController = void 0;\n }\n abortController = new AbortController();\n isLoading.value = true;\n try {\n if (currentView.value === \"favorites\") {\n files.value = await getFavoriteNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = null;\n } else if (currentView.value === \"recent\") {\n files.value = await getRecentNodes({ client, signal: abortController.signal });\n folder.value = null;\n } else {\n const content = await getNodes({ client, path: currentPath.value, signal: abortController.signal });\n folder.value = content.folder;\n files.value = content.contents;\n }\n } catch (error) {\n if (error instanceof Error && error.name === \"AbortError\") {\n return;\n }\n throw error;\n } finally {\n abortController = void 0;\n isLoading.value = false;\n }\n }\n watch([currentView, currentPath], () => loadDAVFiles());\n onMounted(() => loadDAVFiles());\n return {\n isLoading,\n files,\n folder,\n loadFiles: loadDAVFiles,\n createDirectory\n };\n}\nfunction useMimeFilter(allowedMIMETypes) {\n const splittedTypes = computed(() => allowedMIMETypes.value.map((filter) => filter.split(\"/\")));\n const isSupportedMimeType = (mime) => {\n const mimeTypeArray = mime.split(\"/\");\n return splittedTypes.value.some(([type, subtype]) => (\n // check mime type matches or is wildcard\n (mimeTypeArray[0] === type || type === \"*\") && (mimeTypeArray[1] === subtype || subtype === \"*\")\n ));\n };\n return {\n isSupportedMimeType\n };\n}\nconst _hoisted_1 = { class: \"file-picker__main\" };\nconst _hoisted_2 = {\n key: 1,\n class: \"file-picker__view\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"FilePicker\",\n props: {\n buttons: {},\n name: {},\n allowPickDirectory: { type: Boolean, default: false },\n noMenu: { type: Boolean, default: false },\n disabledNavigation: { type: Boolean, default: false },\n filterFn: { type: Function, default: void 0 },\n canPickFn: { type: Function, default: void 0 },\n mimetypeFilter: { default: () => [] },\n multiselect: { type: Boolean, default: false },\n path: { default: void 0 }\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit$1 = __emit;\n const isOpen = ref(true);\n const currentView = ref(\"files\");\n const savedPath = ref(window?.sessionStorage.getItem(\"NC.FilePicker.LastPath\") || \"/\");\n const navigatedPath = ref(\"\");\n const currentPath = computed({\n get: () => {\n return currentView.value === \"files\" ? navigatedPath.value || props.path || savedPath.value : \"/\";\n },\n set: (path) => {\n navigatedPath.value = path;\n }\n });\n const selectedFiles = shallowRef([]);\n const {\n files,\n folder: currentFolder,\n isLoading,\n loadFiles,\n createDirectory\n } = useDAVFiles(currentView, currentPath);\n watch([navigatedPath], () => {\n if (props.path === void 0 && navigatedPath.value) {\n window.sessionStorage.setItem(\"NC.FilePicker.LastPath\", navigatedPath.value);\n }\n selectedFiles.value = [];\n });\n let isHandlingCallback = false;\n const dialogButtons = computed(() => {\n const nodes = selectedFiles.value.length === 0 && props.allowPickDirectory && currentFolder.value ? [currentFolder.value] : selectedFiles.value;\n const buttons = typeof props.buttons === \"function\" ? props.buttons(nodes, currentPath.value, currentView.value) : props.buttons;\n return buttons.map((button) => ({\n ...button,\n disabled: button.disabled || isLoading.value,\n callback: () => {\n isHandlingCallback = true;\n handleButtonClick(button.callback, nodes);\n }\n }));\n });\n async function handleButtonClick(callback, nodes) {\n await callback(nodes);\n emit$1(\"close\", nodes);\n isHandlingCallback = false;\n }\n const viewHeadline = computed(() => currentView.value === \"favorites\" ? t(\"Favorites\") : currentView.value === \"recent\" ? t(\"Recent\") : \"\");\n const filterString = ref(\"\");\n const { isSupportedMimeType } = useMimeFilter(toRef(props, \"mimetypeFilter\"));\n onMounted(() => loadFiles());\n const { showHiddenFiles } = useFilesSettings();\n const filteredFiles = computed(() => {\n let filtered = files.value;\n if (!showHiddenFiles.value) {\n filtered = filtered.filter((file) => !file.basename.startsWith(\".\"));\n }\n if (props.mimetypeFilter.length > 0) {\n filtered = filtered.filter((file) => file.type === \"folder\" || file.mime && isSupportedMimeType(file.mime));\n }\n if (filterString.value) {\n filtered = filtered.filter((file) => file.basename.toLowerCase().includes(filterString.value.toLowerCase()));\n }\n if (props.filterFn) {\n filtered = filtered.filter((f) => props.filterFn(f));\n }\n return filtered;\n });\n const noFilesDescription = computed(() => {\n if (currentView.value === \"files\") {\n return t(\"Upload some content or sync with your devices!\");\n } else if (currentView.value === \"recent\") {\n return t(\"Files and folders you recently modified will show up here.\");\n } else {\n return t(\"Files and folders you mark as favorite will show up here.\");\n }\n });\n async function onCreateFolder(name) {\n try {\n const folder = await createDirectory(name);\n navigatedPath.value = folder.path;\n emit(\"files:node:created\", files.value.filter((file) => file.basename === name)[0]);\n } catch (error) {\n logger.warn(\"Could not create new folder\", { name, error });\n showError(t(\"Could not create the new folder\"));\n }\n }\n function handleClose(open) {\n if (!open && !isHandlingCallback) {\n emit$1(\"close\");\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n open: isOpen.value,\n \"onUpdate:open\": [\n _cache[6] || (_cache[6] = ($event) => isOpen.value = $event),\n handleClose\n ],\n buttons: dialogButtons.value,\n name: __props.name,\n size: \"large\",\n contentClasses: \"file-picker__content\",\n dialogClasses: \"file-picker\",\n navigationClasses: \"file-picker__navigation\"\n }, {\n navigation: withCtx(({ isCollapsed }) => [\n createVNode(FilePickerNavigation, {\n currentView: currentView.value,\n \"onUpdate:currentView\": _cache[0] || (_cache[0] = ($event) => currentView.value = $event),\n filterString: filterString.value,\n \"onUpdate:filterString\": _cache[1] || (_cache[1] = ($event) => filterString.value = $event),\n isCollapsed,\n disabledNavigation: __props.disabledNavigation\n }, null, 8, [\"currentView\", \"filterString\", \"isCollapsed\", \"disabledNavigation\"])\n ]),\n default: withCtx(() => [\n createElementVNode(\"div\", _hoisted_1, [\n currentView.value === \"files\" ? (openBlock(), createBlock(FilePickerBreadcrumbs, {\n key: 0,\n path: currentPath.value,\n \"onUpdate:path\": _cache[2] || (_cache[2] = ($event) => currentPath.value = $event),\n showMenu: !__props.noMenu,\n onCreateNode: onCreateFolder\n }, null, 8, [\"path\", \"showMenu\"])) : (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n createElementVNode(\"h3\", null, toDisplayString(viewHeadline.value), 1)\n ])),\n unref(isLoading) || filteredFiles.value.length > 0 ? (openBlock(), createBlock(FileList, {\n key: 2,\n path: currentPath.value,\n \"onUpdate:path\": [\n _cache[3] || (_cache[3] = ($event) => currentPath.value = $event),\n _cache[5] || (_cache[5] = ($event) => currentView.value = \"files\")\n ],\n selectedFiles: selectedFiles.value,\n \"onUpdate:selectedFiles\": _cache[4] || (_cache[4] = ($event) => selectedFiles.value = $event),\n allowPickDirectory: __props.allowPickDirectory,\n currentView: currentView.value,\n files: filteredFiles.value,\n multiselect: __props.multiselect,\n loading: unref(isLoading),\n name: viewHeadline.value,\n canPick: __props.canPickFn\n }, null, 8, [\"path\", \"selectedFiles\", \"allowPickDirectory\", \"currentView\", \"files\", \"multiselect\", \"loading\", \"name\", \"canPick\"])) : filterString.value ? (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 3,\n name: unref(t)(\"No matching files\"),\n description: unref(t)(\"No files matching your filter were found.\")\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"])) : (openBlock(), createBlock(unref(NcEmptyContent), {\n key: 4,\n name: unref(t)(\"No files in here\"),\n description: noFilesDescription.value\n }, {\n icon: withCtx(() => [\n createVNode(IconFile)\n ]),\n _: 1\n }, 8, [\"name\", \"description\"]))\n ])\n ]),\n _: 1\n }, 8, [\"open\", \"buttons\", \"name\"]);\n };\n }\n});\nconst FilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9b6534b1\"]]);\nexport {\n FilePicker as default\n};\n//# sourceMappingURL=FilePicker-C1yRZfLt.mjs.map\n"],"names":["_sfc_main$1","_hoisted_1$1","_hoisted_2","_hoisted_3","_hoisted_4","_sfc_render$1","_ctx","_cache","$props","$setup","$data","$options","openBlock","createElementBlock","mergeProps","$event","createElementVNode","toDisplayString","createCommentVNode","ChevronRight","_export_sfc","_sfc_main","NcActions","NcButton","crumbId","createElementId","open","e","_hoisted_1","_sfc_render","_component_NcButton","resolveComponent","_component_NcActions","_component_ChevronRight","normalizeClass","withModifiers","args","createBlock","createSlots","withCtx","renderSlot","createTextVNode","createVNode","NcBreadcrumb","IconFolder","crumbClass","NcActionButton","NcActionRouter","NcActionLink","debounce","subscribe","unsubscribe","nrCrumbs","hiddenIndices","availableWidth","totalWidth","overflow","i","startIndex","currentIndex","a","b","width","crumb","index","el","isLast","hide","w","path","disabled","crumbs","target","vnode","breadcrumbs","Fragment","child","cloneVNode","breadcrumbsRefs","crumb2","h","to","href","disableDrop","name","propsToForward","element","folderIcon","wrapper","isSlotPopulated","NcBreadcrumbs","queue","PQueue","preloadImage","url","resolve","promise","image","getPreviewURL","node","options","previewUrl","generateUrl","usePreviewURL","previewURL","ref","previewLoaded","watchEffect","toValue","FileType","success","sfc","props","key","val","_sfc_main$e","_hoisted_1$c","_hoisted_2$b","_hoisted_3$a","_hoisted_4$a","_sfc_render$7","IconFile","_sfc_main$d","_hoisted_1$b","_hoisted_2$a","_hoisted_3$9","_hoisted_4$9","_sfc_render$6","IconSortDescending","_sfc_main$c","_hoisted_1$a","_hoisted_2$9","_hoisted_3$8","_hoisted_4$8","_sfc_render$5","IconSortAscending","_sfc_main$b","_hoisted_1$9","_hoisted_2$8","_hoisted_3$7","_hoisted_4$7","_sfc_render$4","fileListIconStyles","_sfc_main$a","defineComponent","__props","fileListIconStyles$1","toRef","computed","isFile","folderDecorationIcon","mdiKey","mdiTagOutline","shareTypes","type","ShareType","mdiLink","mdiAccountPlus","mdiNetworkOutline","mdiAccountGroupOutline","normalizeStyle","unref","NcIconSvgWrapper","_hoisted_1$8","_hoisted_2$7","_hoisted_3$6","_hoisted_4$6","_hoisted_5$1","_hoisted_6$1","_hoisted_7$1","_sfc_main$9","__emit","emit2","timestamp","fileExtension","extname","displayName","isDirectory","isPickable","isNavigatable","Permission","toggleSelected","handleClick","handleKeyDown","event","toHandlers","NcCheckboxRadioSwitch","t","formatFileSize","NcDateTime","FileListRow","_hoisted_1$7","_hoisted_2$6","_hoisted_3$5","_hoisted_4$5","_sfc_main$8","LoadingTableRow","useFilesSettings","filesUserState","loadState","showHiddenFiles","sortFavoritesFirst","cropImagePreviews","onMounted","isPublicShare","logger","data","axios","error","showError","useFilesViews","currentView","convertOrder","order2","filesViewsState","filesViewConfig","recentViewConfig","favoritesViewConfig","currentConfig","sortBy","order","_hoisted_1$6","_hoisted_2$5","_hoisted_3$4","_hoisted_4$4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_hoisted_9","_sfc_main$7","mergeModels","useModel","selectedFiles","customSortingConfig","filesAppSorting","sortingConfig","sortByName","sortBySize","sortByModified","toggleSorting","sortedFiles","sortNodes","selectableFiles","file","allSelected","onSelectAll","onNodeSelected","f","onChangeDirectory","dir","skeletonNumber","fileContainer","resize","nextTick","nodes","height","onUnmounted","renderList","FileList","_sfc_main$6","_hoisted_1$5","_hoisted_2$4","_hoisted_3$3","_hoisted_4$3","_sfc_render$3","IconHome","_sfc_main$5","_hoisted_1$4","_hoisted_2$3","_hoisted_3$2","_hoisted_4$2","_sfc_render$2","IconPlus","_sfc_main$4","actionsOpen","newNodeName","nameInput","useTemplateRef","validateInput","input","validity","validateFilename","InvalidFilenameError","InvalidFilenameErrorReason","onSubmit","pathElements","v","elements","NcActionInput","FilePickerBreadcrumbs","_sfc_main$3","_hoisted_1$3","_hoisted_2$2","_hoisted_3$1","_hoisted_4$1","IconClose","_sfc_main$2","_hoisted_1$2","_hoisted_2$1","IconMagnify","useViews","isAnonymous","allViews","mdiFolder","mdiClock","mdiStar","availableViews","id","getCurrentUser","currentViewObject","updateFilterValue","value","NcTextField","NcSelect","view","FilePickerNavigation","getRecentNodes","client","signal","lastTwoWeek","getRecentSearch","result","resultToNode","getNodes","join","defaultRootPath","getDefaultPropfind","nodePath","getFile","useDAVFiles","currentPath","getClient","files","shallowRef","folder","isLoading","abortController","createDirectory","directory","loadDAVFiles","getFavoriteNodes","content","watch","useMimeFilter","allowedMIMETypes","splittedTypes","filter","mime","mimeTypeArray","subtype","emit$1","isOpen","savedPath","navigatedPath","currentFolder","loadFiles","isHandlingCallback","dialogButtons","button","handleButtonClick","callback","viewHeadline","filterString","isSupportedMimeType","filteredFiles","filtered","noFilesDescription","onCreateFolder","emit","handleClose","NcDialog","isCollapsed","NcEmptyContent","FilePicker"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4]} \ No newline at end of file diff --git a/dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs.map.license b/dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs.map.license similarity index 100% rename from dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs.map.license rename to dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs.map.license diff --git a/dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs b/dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs new file mode 100644 index 0000000000000..e7bbab68d4bc4 --- /dev/null +++ b/dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs @@ -0,0 +1,26 @@ +import{d as j,a as J}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{a as B,g as te,e as T}from"./index-DqIuD5e7.chunk.mjs";import{t as c,a as O}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as oe,w as se,u as ne}from"./index-Bos-XXa5.chunk.mjs";import{N as re}from"./mdi-e8YUrhPH.chunk.mjs";import{f as ae}from"./index-Dpj4ddZx.chunk.mjs";import{a as D,l as le,j as ce,e as de}from"./index-BgmsSgl5.chunk.mjs";import{k as ue,g as Z,i as ve}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as I,P as me}from"./PencilOutline-TGZB0t_n.chunk.mjs";import{N as pe}from"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{N as fe}from"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import{a as he,_ as ge}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{D as be,N as ye,s as we}from"./TrayArrowDown-CmCWOFTF.chunk.mjs";import{j as m,o as a,k as C,l as y,t as _,z as Q,b as P,r as $,c as H,w as h,p as g,u as d,g as E,e as S,J as G,x as _e,a4 as X,m as M,D as ee,v as Ce,F as ke,C as Ve}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{D as Se}from"./TrashCanOutline-COyEKQVc.chunk.mjs";import{P as Y}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import{c as He}from"./index-CPwHjAPR.chunk.mjs";import{g as ze}from"./dav-C3Vmpmsl.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";const Le={name:"BackupRestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ae=["aria-hidden","aria-label"],$e=["fill","width","height"],xe={d:"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"},De={key:0};function Ee(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon backup-restore-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",xe,[i.title?(a(),m("title",De,_(i.title),1)):y("",!0)])],8,$e))],16,Ae)}const Ne=D(Le,[["render",Ee]]),Te={name:"FileCompareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ie=["aria-hidden","aria-label"],Me=["fill","width","height"],Be={d:"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"},Oe={key:0};function Pe(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon file-compare-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Be,[i.title?(a(),m("title",Oe,_(i.title),1)):y("",!0)])],8,Me))],16,Ie)}const Re=D(Te,[["render",Pe]]),Fe={name:"ImageOffOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ue=["aria-hidden","aria-label"],qe=["fill","width","height"],Ke={d:"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"},We={key:0};function je(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon image-off-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Ke,[i.title?(a(),m("title",We,_(i.title),1)):y("",!0)])],8,qe))],16,Ue)}const Je=D(Fe,[["render",je]]),Ye={key:0,class:"version__image"},Ze=["src"],Ge={key:2,class:"version__image"},Qe={class:"version__info"},Xe=["title"],ei={key:1,class:"version__info","data-cy-files-version-author-name":""},ii={key:0},ti=["title"],oi={class:"version__info version__info__subline"},si=P({__name:"VersionEntry",props:{version:{},node:{},isCurrent:{type:Boolean},isFirstVersion:{type:Boolean},loadPreview:{type:Boolean},canView:{type:Boolean},canCompare:{type:Boolean}},emits:["click","compare","restore","delete","labelUpdateRequest"],setup(e,{emit:t}){const i=e,n=t,v=$(!1),r=$(!1),l=$(le("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})),k=g(()=>ae(i.version.size)),f=g(()=>{const p=i.version.label??"";return i.isCurrent?p===""?c("files_versions","Current version"):`${p} (${c("files_versions","Current version")})`:i.isFirstVersion&&p===""?c("files_versions","Initial version"):p}),w=g(()=>!i.version.author||!i.version.authorName?"":i.version.author===B()?.uid?c("files_versions","You"):i.version.authorName??i.version.author),s=g(()=>new Date(i.version.mtime).toLocaleString([O(),O().split("-")[0]],{timeStyle:"long",dateStyle:"long"})),V=g(()=>i.isCurrent?i.node.source:ue()+i.version.url),A=g(()=>l.value.files.version_labeling===!0),z=g(()=>l.value.files.version_deletion===!0),F=g(()=>b(i.node,Y.DELETE)),N=g(()=>b(i.node,Y.UPDATE)),U=g(()=>!((i.node.permissions&Y.READ)===0||i.node.attributes["mount-type"]==="shared"&&i.node.attributes["share-attributes"]&&(JSON.parse(i.node.attributes["share-attributes"]).find(p=>p.scope==="permissions"&&p.key==="download")||{})?.value===!1));function q(){n("labelUpdateRequest")}function K(){n("restore",i.version)}async function W(){await G(),await G(),n("delete",i.version)}function o(p){i.canView&&p.preventDefault(),n("click",i.version)}function u(){if(!i.canView)throw new Error("Cannot compare version of this file");n("compare",i.version)}function b(p,L){return(p.permissions&L)!==0}return(p,L)=>(a(),H(d(ye),{class:"version",forceDisplayActions:!0,"actions-aria-label":d(c)("files_versions","Actions for version from {versionHumanExplicitDate}",{versionHumanExplicitDate:s.value}),"data-files-versions-version":e.version.fileVersion,href:V.value,onClick:o},{icon:h(()=>[e.loadPreview||v.value?e.version.previewUrl&&!r.value?(a(),m("img",{key:1,src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy",class:"version__image",onLoad:L[0]||(L[0]=ie=>v.value=!0),onError:L[1]||(L[1]=ie=>r.value=!0)},null,40,Ze)):(a(),m("div",Ge,[S(Je,{size:20})])):(a(),m("div",Ye))]),name:h(()=>[C("div",Qe,[f.value?(a(),m("div",{key:0,class:"version__info__label","data-cy-files-version-label":"",title:f.value},_(f.value),9,Xe)):y("",!0),w.value?(a(),m("div",ei,[f.value?(a(),m("span",ii,"•")):y("",!0),S(d(fe),{class:"avatar",user:e.version.author??void 0,size:20,disableMenu:"",disableTooltip:"",hideStatus:""},null,8,["user"]),C("div",{class:"version__info__author_name",title:w.value},_(w.value),9,ti)])):y("",!0)])]),subname:h(()=>[C("div",oi,[S(d(he),{class:"version__info__date",relativeTime:"short",timestamp:e.version.mtime},null,8,["timestamp"]),L[2]||(L[2]=C("span",null,"•",-1)),C("span",null,_(k.value),1)])]),actions:h(()=>[A.value&&N.value?(a(),H(d(I),{key:0,"data-cy-files-versions-version-action":"label",closeAfterClick:!0,onClick:q},{icon:h(()=>[S(me,{size:22})]),default:h(()=>[E(" "+_(e.version.label===""?d(c)("files_versions","Name this version"):d(c)("files_versions","Edit version name")),1)]),_:1})):y("",!0),!e.isCurrent&&e.canView&&e.canCompare?(a(),H(d(I),{key:1,"data-cy-files-versions-version-action":"compare",closeAfterClick:!0,onClick:u},{icon:h(()=>[S(Re,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Compare to current version")),1)]),_:1})):y("",!0),!e.isCurrent&&N.value?(a(),H(d(I),{key:2,"data-cy-files-versions-version-action":"restore",closeAfterClick:!0,onClick:K},{icon:h(()=>[S(Ne,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Restore version")),1)]),_:1})):y("",!0),U.value?(a(),H(d(pe),{key:3,"data-cy-files-versions-version-action":"download",href:V.value,closeAfterClick:!0,download:V.value},{icon:h(()=>[S(be,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Download version")),1)]),_:1},8,["href","download"])):y("",!0),!e.isCurrent&&z.value&&F.value?(a(),H(d(I),{key:4,"data-cy-files-versions-version-action":"delete",closeAfterClick:!0,onClick:W},{icon:h(()=>[S(Se,{size:22})]),default:h(()=>[E(" "+_(d(c)("files_versions","Delete version")),1)]),_:1})):y("",!0)]),_:1},8,["actions-aria-label","data-files-versions-version","href"]))}}),ni=D(si,[["__scopeId","data-v-037e7d96"]]),ri={class:"version-label-modal__info"},ai=P({__name:"VersionLabelDialog",props:{open:{type:Boolean,default:!1},label:{type:String,default:""}},emits:["update:open","update:label"],setup(e,{emit:t}){const i=e,n=t,v=_e("labelInput"),r=$(""),l=g(()=>{const f=[];return i.label.trim()===""?f.push({label:c("files_versions","Cancel")}):f.push({label:c("files_versions","Remove version name"),type:"reset",variant:"error",callback:()=>{k("")}}),[...f,{label:c("files_versions","Save version name"),icon:we,type:"submit",variant:"primary"}]});X(()=>{r.value=i.label??""}),X(()=>{i.open&&G(()=>v.value?.focus()),r.value=i.label});function k(f){n("update:label",f)}return(f,w)=>(a(),H(d(oe),{buttons:l.value,contentClasses:"version-label-modal",isForm:"",open:e.open,size:"normal",name:d(c)("files_versions","Name this version"),"onUpdate:open":w[1]||(w[1]=s=>f.$emit("update:open",s)),onSubmit:w[2]||(w[2]=s=>k(r.value))},{default:h(()=>[S(d(ge),{ref_key:"labelInput",ref:v,modelValue:r.value,"onUpdate:modelValue":w[0]||(w[0]=s=>r.value=s),class:"version-label-modal__input",label:d(c)("files_versions","Version name"),placeholder:d(c)("files_versions","Version name")},null,8,["modelValue","label","placeholder"]),C("p",ri,_(d(c)("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.")),1)]),_:1},8,["buttons","open","name"]))}}),li=D(ai,[["__scopeId","data-v-0955585b"]]),x=te().setApp("files_version").detectUser().build(),ci=P({name:"VirtualScrolling",props:{sections:{type:Array,required:!0},containerElement:{type:HTMLElement,default:null},useWindow:{type:Boolean,default:!1},headerHeight:{type:Number,default:75},renderDistance:{type:Number,default:.5},bottomBufferRatio:{type:Number,default:2},scrollToKey:{type:String,default:""}},emits:["needContent"],data(){return{scrollPosition:0,containerHeight:0,rowsContainerHeight:0,resizeObserver:null}},computed:{visibleSections(){x.debug("[VirtualScrolling] Computing visible section",{sections:this.sections});const e=this.containerHeight,t=this.scrollPosition,i=t+e;let n=0,v=0;const r=this.sections.map(s=>(v+=this.headerHeight,{...s,rows:s.rows.reduce((V,A)=>{n=v,v+=A.height;let z=0;return vi&&(z=(n-i)/e),z>this.renderDistance?V:[...V,{...A,distance:z}]},[])})).filter(s=>s.rows.length>0),l=r.flatMap(({rows:s})=>s).flatMap(({items:s})=>s),k=this._rowIdToKeyMap;l.forEach(s=>s.key=k[s.id]);const f=l.map(({key:s})=>s).filter(s=>s!==void 0),w=Object.values(k).filter(s=>!f.includes(s));return l.filter(({key:s})=>s===void 0).forEach(s=>s.key=w.pop()??Math.random().toString(36).substr(2)),this._rowIdToKeyMap=l.reduce((s,{id:V,key:A})=>({...s,[`${V}`]:A}),{}),r},totalHeight(){return this.sections.map(e=>this.headerHeight+e.height).reduce((e,t)=>e+t,0)+0},paddingTop(){if(this.visibleSections.length===0)return 0;let e=0;for(const t of this.sections){if(t.key!==this.visibleSections[0].rows[0].sectionKey){e+=this.headerHeight+t.height;continue}for(const i of t.rows){if(i.key===this.visibleSections[0].rows[0].key)return e;e+=i.height}e+=this.headerHeight}return e},rowsContainerStyle(){return{height:`${this.totalHeight}px`,paddingTop:`${this.paddingTop}px`}},isNearBottom(){const e=this.containerHeight*this.bottomBufferRatio;return this.scrollPosition+this.containerHeight>=this.totalHeight-e},container(){return x.debug("[VirtualScrolling] Computing container"),this.containerElement!==null?this.containerElement:this.useWindow?window:this.$refs.container}},watch:{isNearBottom(e){x.debug("[VirtualScrolling] isNearBottom changed",{value:e}),e&&this.$emit("needContent")},visibleSections(){this.isNearBottom&&this.$emit("needContent")},scrollToKey(e){let t=0;for(const i of this.sections){if(i.key!==e){t+=this.headerHeight+i.height;continue}break}x.debug("[VirtualScrolling] Scrolling to",{currentRowTopDistanceFromTop:t}),this.container.scrollTo({top:t,behavior:"smooth"})}},beforeCreate(){this._rowIdToKeyMap={}},mounted(){this.resizeObserver=new ResizeObserver(e=>{for(const t of e){const i=t.contentRect;t.target===this.container&&(this.containerHeight=i.height),t.target.classList.contains("vs-rows-container")&&(this.rowsContainerHeight=i.height)}}),this.useWindow?(window.addEventListener("resize",this.updateContainerSize,{passive:!0}),this.containerHeight=window.innerHeight):this.resizeObserver.observe(this.container),this.resizeObserver.observe(this.$refs.rowsContainer),this.container.addEventListener("scroll",this.updateScrollPosition,{passive:!0})},beforeUnmount(){this.useWindow&&window.removeEventListener("resize",this.updateContainerSize),this.resizeObserver?.disconnect(),this.container.removeEventListener("scroll",this.updateScrollPosition)},methods:{updateScrollPosition(){this._onScrollHandle??=requestAnimationFrame(()=>{this._onScrollHandle=null,this.useWindow?this.scrollPosition=this.container.scrollY:this.scrollPosition=this.container.scrollTop})},updateContainerSize(){this.containerHeight=window.innerHeight}}}),di={key:0,ref:"container",class:"vs-container"};function ui(e,t,i,n,v,r){return!e.useWindow&&e.containerElement===null?(a(),m("div",di,[C("div",{ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4)],512)):(a(),m("div",{key:1,ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[M(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),M(e.$slots,"loader",{},void 0,!0)],4))}const vi=D(ci,[["render",ui],["__scopeId","data-v-0a27da21"]]),mi=` + + + + + + + + + + +`,R=ze();async function pi(e){const t=`/versions/${B()?.uid}/versions/${e.fileid}`;try{const i=(await R.getDirectoryContents(t,{data:mi,details:!0})).data.filter(({mime:r})=>r!=="").map(r=>hi(r,e)),n=new Set(i.map(r=>String(r.author))),v=await He.post(Z("/displaynames"),{users:[...n]});for(const r of i){const l=v.data.users[r.author??""];l&&(r.authorName=l)}return i}catch(i){throw x.error("Could not fetch version",{exception:i}),i}}async function fi(e){try{x.debug("Restoring version",{url:e.url}),await R.moveFile(`/versions/${B()?.uid}/versions/${e.fileId}/${e.fileVersion}`,`/versions/${B()?.uid}/restore/target`)}catch(t){throw x.error("Could not restore version",{exception:t}),t}}function hi(e,t){const i=Date.parse(e.lastmod);let n;return i===t.mtime?.getTime()?n=Z("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1",{fileId:t.id,fileEtag:t.attributes.etag}):n=Z("/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1",{file:t.path,fileVersion:e.basename}),{fileId:t.id,label:e.props["version-label"]?String(e.props["version-label"]):"",author:e.props["version-author"]?String(e.props["version-author"]):null,authorName:null,filename:e.filename,basename:new Date(i).toLocaleString([O(),O().split("-")[0]],{timeStyle:"long",dateStyle:"medium"}),mime:e.mime,etag:`${e.props.getetag}`,size:e.size,type:e.type,mtime:i,permissions:"R",previewUrl:n,url:ce("/remote.php/dav",e.filename),source:ve("dav")+de(e.filename),fileVersion:e.basename}}async function gi(e,t){return await R.customRequest(e.filename,{method:"PROPPATCH",data:` + + + + ${t} + + + `})}async function bi(e){await R.deleteFile(e.filename)}const yi={key:0,class:"versions-tab__container"},wi=["aria-label"],Ki=P({__name:"FilesVersionsSidebarTab",props:{active:{type:Boolean},node:{},folder:{},view:{}},setup(e){const t=e,i=ne(),n=$([]),v=$(!1),r=$(!1),l=$(null),k=g(()=>t.node?.mtime?.getTime()??0),f=g(()=>[...n.value].sort((o,u)=>t.node?o.mtime===t.node.mtime?.getTime()?-1:u.mtime===t.node.mtime?.getTime()?1:u.mtime-o.mtime:0)),w=g(()=>[{key:"versions",rows:f.value.map(o=>({key:o.mtime.toString(),height:68,sectionKey:"versions",items:[{id:o.mtime.toString(),version:o}]})),height:68*f.value.length}]),s=g(()=>n.value.map(o=>o.mtime).reduce((o,u)=>Math.min(o,u))),V=g(()=>t.node?window.OCA.Viewer?.mimetypes?.includes(t.node?.mime):!1),A=g(()=>!i.value&&window.OCA.Viewer?.mimetypesCompare?.includes(t.node?.mime));Ce(()=>t.node.id,z,{immediate:!0}),se(k,z,{debounce:600});async function z(){try{v.value=!0,n.value=await pi(t.node)}finally{v.value=!1}}async function F(o){if(!t.node)return;const u=t.node.clone();u.attributes.etag=o.etag,u.size=o.size,u.mtime=new Date(o.mtime);const b={preventDefault:!1,node:u,version:o};if(T("files_versions:restore:requested",b),!b.preventDefault)try{await fi(o),o.label?j(c("files_versions",`${o.label} restored`)):o.mtime===s.value?j(c("files_versions","Initial version restored")):j(c("files_versions","Version restored")),T("files:node:updated",u),T("files_versions:restore:restored",{node:u,version:o})}catch{J(c("files_versions","Could not restore version")),T("files_versions:restore:failed",o)}}function N(o){r.value=!0,l.value=o}async function U(o){if(l.value===null)throw new Error("editedVersion should be set at that point");const u=l.value.label;l.value.label=o,r.value=!1;try{await gi(l.value,o),l.value=null}catch(b){l.value.label=u,J(c("files_versions","Could not set version label")),x.error("Could not set version label",{exception:b})}}async function q(o){const u=n.value.indexOf(o);n.value.splice(u,1);try{await bi(o)}catch{n.value.push(o),J(c("files_versions","Could not delete version"))}}function K(o){if(t.node!==null){if(o.mtime===t.node?.mtime?.getTime()){window.OCA.Viewer.open({path:t.node.path});return}window.OCA.Viewer.open({fileInfo:{...o,filename:o.filename,previewUrl:void 0},enableSidebar:!1})}}function W(o){const u=n.value.map(b=>({...b,previewUrl:void 0}));window.OCA.Viewer.compare({path:t.node.path},u.find(b=>b.source===o.source))}return(o,u)=>e.node?(a(),m("div",yi,[S(vi,{sections:w.value,headerHeight:0},{default:h(({visibleSections:b})=>[C("ul",{"aria-label":d(c)("files_versions","File versions"),"data-files-versions-versions-list":""},[b.length===1?(a(!0),m(ke,{key:0},Ve(b[0].rows,p=>(a(),H(ni,{key:p.items[0].version.mtime,canView:V.value,canCompare:A.value,loadPreview:e.active,version:p.items[0].version,node:e.node,isCurrent:p.items[0].version.mtime===k.value,isFirstVersion:p.items[0].version.mtime===s.value,onClick:K,onCompare:W,onRestore:F,onLabelUpdateRequest:L=>N(p.items[0].version),onDelete:q},null,8,["canView","canCompare","loadPreview","version","node","isCurrent","isFirstVersion","onLabelUpdateRequest"]))),128)):y("",!0)],8,wi)]),loader:h(()=>[v.value?(a(),H(d(re),{key:0,class:"files-list-viewer__loader"})):y("",!0)]),_:1},8,["sections"]),l.value?(a(),H(li,{key:0,open:r.value,"onUpdate:open":u[0]||(u[0]=b=>r.value=b),label:l.value.label,"onUpdate:label":U},null,8,["open","label"])):y("",!0)])):y("",!0)}});export{Ki as default}; +//# sourceMappingURL=FilesVersionsSidebarTab-BbNsuiND.chunk.mjs.map diff --git a/dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs.license b/dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs.license similarity index 100% rename from dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs.license rename to dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs.license diff --git a/dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs.map b/dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs.map similarity index 58% rename from dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs.map rename to dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs.map index 4a06064416d56..a6a5de2c3a32e 100644 --- a/dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs.map +++ b/dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"FilesVersionsSidebarTab-xpctu3yN.chunk.mjs","sources":["../node_modules/vue-material-design-icons/BackupRestore.vue","../node_modules/vue-material-design-icons/FileCompare.vue","../node_modules/vue-material-design-icons/ImageOffOutline.vue","../build/frontend/apps/files_versions/src/components/VersionEntry.vue","../build/frontend/apps/files_versions/src/components/VersionLabelDialog.vue","../build/frontend/apps/files_versions/src/utils/logger.ts","../build/frontend/apps/files_versions/src/components/VirtualScrolling.vue","../build/frontend/apps/files_versions/src/utils/davRequest.ts","../build/frontend/apps/files_versions/src/utils/versions.ts","../build/frontend/apps/files_versions/src/views/FilesVersionsSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport { getCanonicalLocale } from '@nextcloud/l10n'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = Date.parse(version.lastmod)\n\n\tlet previewUrl: string\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.id,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.id!,\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: new Date(mtime).toLocaleString(\n\t\t\t[getCanonicalLocale(), getCanonicalLocale().split('-')[0]!],\n\t\t\t{\n\t\t\t\ttimeStyle: 'long',\n\t\t\t\tdateStyle: 'medium',\n\t\t\t},\n\t\t),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","getCanonicalLocale","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","isMobile","useIsMobile","loading","showVersionLabelForm","editedVersion","watch","toRef","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file +{"version":3,"file":"FilesVersionsSidebarTab-BbNsuiND.chunk.mjs","sources":["../node_modules/vue-material-design-icons/BackupRestore.vue","../node_modules/vue-material-design-icons/FileCompare.vue","../node_modules/vue-material-design-icons/ImageOffOutline.vue","../build/frontend/apps/files_versions/src/components/VersionEntry.vue","../build/frontend/apps/files_versions/src/components/VersionLabelDialog.vue","../build/frontend/apps/files_versions/src/utils/logger.ts","../build/frontend/apps/files_versions/src/components/VirtualScrolling.vue","../build/frontend/apps/files_versions/src/utils/davRequest.ts","../build/frontend/apps/files_versions/src/utils/versions.ts","../build/frontend/apps/files_versions/src/views/FilesVersionsSidebarTab.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files_version')\n\t.detectUser()\n\t.build()\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport default `\n\n\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\t\n\t\n`\n","/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport type { INode } from '@nextcloud/files'\nimport type { FileStat, ResponseDataDetailed } from 'webdav'\n\nimport { getCurrentUser } from '@nextcloud/auth'\nimport axios from '@nextcloud/axios'\nimport { getClient } from '@nextcloud/files/dav'\nimport { getCanonicalLocale } from '@nextcloud/l10n'\nimport { encodePath, join } from '@nextcloud/paths'\nimport { generateRemoteUrl, generateUrl } from '@nextcloud/router'\nimport davRequest from '../utils/davRequest.ts'\nimport logger from '../utils/logger.ts'\n\nexport interface Version {\n\tfileId: string // The id of the file associated to the version.\n\tlabel: string // 'Current version' or ''\n\tauthor: string | null // UID for the author of the version\n\tauthorName: string | null // Display name of the author\n\tfilename: string // File name relative to the version DAV endpoint\n\tbasename: string // A base name generated from the mtime\n\tmime: string // Empty for the current version, else the actual mime type of the version\n\tetag: string // Empty for the current version, else the actual mime type of the version\n\tsize: number // File size in bytes\n\ttype: string // 'file'\n\tmtime: number // Version creation date as a timestamp\n\tpermissions: string // Only readable: 'R'\n\tpreviewUrl: string // Preview URL of the version\n\turl: string // Download URL of the version\n\tsource: string // The WebDAV endpoint of the resource\n\tfileVersion: string | null // The version id, null for the current version\n}\n\nconst client = getClient()\n\n/**\n * Get file versions for a given node\n *\n * @param node - The node to fetch versions for\n */\nexport async function fetchVersions(node: INode): Promise {\n\tconst path = `/versions/${getCurrentUser()?.uid}/versions/${node.fileid}`\n\n\ttry {\n\t\tconst response = await client.getDirectoryContents(path, {\n\t\t\tdata: davRequest,\n\t\t\tdetails: true,\n\t\t}) as ResponseDataDetailed\n\n\t\tconst versions = response.data\n\t\t\t// Filter out root\n\t\t\t.filter(({ mime }) => mime !== '')\n\t\t\t.map((version) => formatVersion(version as Required, node))\n\n\t\tconst authorIds = new Set(versions.map((version) => String(version.author)))\n\t\tconst authors = await axios.post(generateUrl('/displaynames'), { users: [...authorIds] })\n\n\t\tfor (const version of versions) {\n\t\t\tconst author = authors.data.users[version.author ?? '']\n\t\t\tif (author) {\n\t\t\t\tversion.authorName = author\n\t\t\t}\n\t\t}\n\n\t\treturn versions\n\t} catch (exception) {\n\t\tlogger.error('Could not fetch version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Restore the given version\n *\n * @param version - The version to restore\n */\nexport async function restoreVersion(version: Version) {\n\ttry {\n\t\tlogger.debug('Restoring version', { url: version.url })\n\t\tawait client.moveFile(\n\t\t\t`/versions/${getCurrentUser()?.uid}/versions/${version.fileId}/${version.fileVersion}`,\n\t\t\t`/versions/${getCurrentUser()?.uid}/restore/target`,\n\t\t)\n\t} catch (exception) {\n\t\tlogger.error('Could not restore version', { exception })\n\t\tthrow exception\n\t}\n}\n\n/**\n * Format version\n *\n * @param version - The version data from WebDAV\n * @param node - The original node\n */\nfunction formatVersion(version: Required, node: INode): Version {\n\tconst mtime = Date.parse(version.lastmod)\n\n\tlet previewUrl: string\n\tif (mtime === node.mtime?.getTime()) { // Version is the current one\n\t\tpreviewUrl = generateUrl('/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1', {\n\t\t\tfileId: node.id,\n\t\t\tfileEtag: node.attributes.etag,\n\t\t})\n\t} else {\n\t\tpreviewUrl = generateUrl('/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1', {\n\t\t\tfile: node.path,\n\t\t\tfileVersion: version.basename,\n\t\t})\n\t}\n\n\treturn {\n\t\tfileId: node.id!,\n\t\t// If version-label is defined make sure it is a string (prevent issue if the label is a number an PHP returns a number then)\n\t\tlabel: version.props['version-label'] ? String(version.props['version-label']) : '',\n\t\tauthor: version.props['version-author'] ? String(version.props['version-author']) : null,\n\t\tauthorName: null,\n\t\tfilename: version.filename,\n\t\tbasename: new Date(mtime).toLocaleString(\n\t\t\t[getCanonicalLocale(), getCanonicalLocale().split('-')[0]!],\n\t\t\t{\n\t\t\t\ttimeStyle: 'long',\n\t\t\t\tdateStyle: 'medium',\n\t\t\t},\n\t\t),\n\t\tmime: version.mime,\n\t\tetag: `${version.props.getetag}`,\n\t\tsize: version.size,\n\t\ttype: version.type,\n\t\tmtime,\n\t\tpermissions: 'R',\n\t\tpreviewUrl,\n\t\turl: join('/remote.php/dav', version.filename),\n\t\tsource: generateRemoteUrl('dav') + encodePath(version.filename),\n\t\tfileVersion: version.basename,\n\t}\n}\n\n/**\n * Set version label\n *\n * @param version - The version to set the label for\n * @param newLabel - The new label\n */\nexport async function setVersionLabel(version: Version, newLabel: string) {\n\treturn await client.customRequest(\n\t\tversion.filename,\n\t\t{\n\t\t\tmethod: 'PROPPATCH',\n\t\t\tdata: `\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t${newLabel}\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t`,\n\t\t},\n\t)\n}\n\n/**\n * Delete version\n *\n * @param version - The version to delete\n */\nexport async function deleteVersion(version: Version) {\n\tawait client.deleteFile(version.filename)\n}\n","\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","props","__props","emit","__emit","previewLoaded","ref","previewErrored","capabilities","loadState","humanReadableSize","computed","formatFileSize","versionLabel","label","t","versionAuthor","getCurrentUser","versionHumanExplicitDate","getCanonicalLocale","downloadURL","getRootUrl","enableLabeling","enableDeletion","hasDeletePermissions","hasPermission","Permission","hasUpdatePermissions","isDownloadable","attribute","labelUpdate","restoreVersion","deleteVersion","nextTick","click","event","compareVersion","node","permission","_createBlock","_unref","NcListItem","_createVNode","ImageOffOutline","_hoisted_1","_hoisted_4","_hoisted_5","_hoisted_6","NcAvatar","_hoisted_8","_hoisted_9","NcDateTime","NcActionButton","Pencil","_createTextVNode","FileCompare","BackupRestore","NcActionLink","Download","Delete","labelInput","useTemplateRef","internalLabel","dialogButtons","buttons","setVersionLabel","svgCheck","watchEffect","NcDialog","$emit","NcTextField","_toDisplayString","logger","getLoggerBuilder","_sfc_main$1","defineComponent","containerHeight","containerTop","containerBottom","currentRowTop","currentRowBottom","visibleSections","section","visibleRows","row","distance","visibleItems","rows","items","rowIdToKeyMap","item","usedTokens","key","unusedTokens","finalMapping","id","totalHeight","sectionHeight","paddingTop","buffer","value","currentRowTopDistanceFromTop","entries","entry","cr","_normalizeStyle","_renderSlot","davRequest","client","getClient","fetchVersions","path","versions","mime","version","formatVersion","authorIds","authors","axios","generateUrl","author","exception","mtime","previewUrl","join","generateRemoteUrl","encodePath","newLabel","isMobile","useIsMobile","loading","showVersionLabelForm","editedVersion","currentVersionMtime","orderedVersions","a","b","sections","initialVersionMtime","canView","canCompare","watch","loadVersions","watchDebounced","handleRestore","restoredNode","restoreStartedEventState","showSuccess","showError","handleLabelUpdateRequest","handleLabelUpdate","oldLabel","handleDelete","index","openVersion","_versions","v","VirtualScrolling","_withCtx","_Fragment","_renderList","VersionEntry","NcLoadingIcon","VersionLabelDialog"],"mappings":"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","x_google_ignoreList":[0,1,2]} \ No newline at end of file diff --git a/dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs.map.license b/dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs.map.license similarity index 100% rename from dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs.map.license rename to dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs.map.license diff --git a/dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs b/dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs deleted file mode 100644 index 8c0b9991f0791..0000000000000 --- a/dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs +++ /dev/null @@ -1,26 +0,0 @@ -import{d as j,a as J}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{a as O,g as te,e as I}from"./index-DqIuD5e7.chunk.mjs";import{t as c,a as P}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as oe,u as se}from"./index-Bos-XXa5.chunk.mjs";import{N as ne}from"./mdi-e8YUrhPH.chunk.mjs";import{f as re}from"./index-Dpj4ddZx.chunk.mjs";import{a as E,l as ae,j as le,e as ce}from"./index-BgmsSgl5.chunk.mjs";import{k as de,g as Z,i as ue}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as M,P as ve}from"./PencilOutline-TGZB0t_n.chunk.mjs";import{N as me}from"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{N as pe}from"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import{a as fe,_ as he}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{D as ge,N as be,s as ye}from"./TrayArrowDown-CmCWOFTF.chunk.mjs";import{j as m,o as a,k as C,l as b,t as _,z as Q,b as R,r as A,c as V,w as f,p as h,u as d,g as N,e as S,J as G,x as we,a4 as X,m as B,D as ee,v as _e,V as Ce,F as ke,C as Se}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{D as Ve}from"./TrashCanOutline-COyEKQVc.chunk.mjs";import{P as Y}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import{c as He}from"./index-CPwHjAPR.chunk.mjs";import{g as ze}from"./dav-C3Vmpmsl.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";const Le={name:"BackupRestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},$e=["aria-hidden","aria-label"],xe=["fill","width","height"],Ae={d:"M12,3A9,9 0 0,0 3,12H0L4,16L8,12H5A7,7 0 0,1 12,5A7,7 0 0,1 19,12A7,7 0 0,1 12,19C10.5,19 9.09,18.5 7.94,17.7L6.5,19.14C8.04,20.3 9.94,21 12,21A9,9 0 0,0 21,12A9,9 0 0,0 12,3M14,12A2,2 0 0,0 12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12Z"},De={key:0};function Ee(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon backup-restore-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Ae,[i.title?(a(),m("title",De,_(i.title),1)):b("",!0)])],8,xe))],16,$e)}const Ne=E(Le,[["render",Ee]]),Te={name:"FileCompareIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ie=["aria-hidden","aria-label"],Me=["fill","width","height"],Be={d:"M10,18H6V16H10V18M10,14H6V12H10V14M10,1V2H6C4.89,2 4,2.89 4,4V20A2,2 0 0,0 6,22H10V23H12V1H10M20,8V20C20,21.11 19.11,22 18,22H14V20H18V11H14V9H18.5L14,4.5V2L20,8M16,14H14V12H16V14M16,18H14V16H16V18Z"},Oe={key:0};function Pe(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon file-compare-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Be,[i.title?(a(),m("title",Oe,_(i.title),1)):b("",!0)])],8,Me))],16,Ie)}const Re=E(Te,[["render",Pe]]),Ue={name:"ImageOffOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Fe=["aria-hidden","aria-label"],qe=["fill","width","height"],Ke={d:"M22 20.7L3.3 2L2 3.3L3 4.3V19C3 20.1 3.9 21 5 21H19.7L20.7 22L22 20.7M5 19V6.3L12.6 13.9L11.1 15.8L9 13.1L6 17H15.7L17.7 19H5M8.8 5L6.8 3H19C20.1 3 21 3.9 21 5V17.2L19 15.2V5H8.8"},We={key:0};function je(e,t,i,n,v,r){return a(),m("span",Q(e.$attrs,{"aria-hidden":i.title?null:"true","aria-label":i.title,class:"material-design-icon image-off-outline-icon",role:"img",onClick:t[0]||(t[0]=l=>e.$emit("click",l))}),[(a(),m("svg",{fill:i.fillColor,class:"material-design-icon__svg",width:i.size,height:i.size,viewBox:"0 0 24 24"},[C("path",Ke,[i.title?(a(),m("title",We,_(i.title),1)):b("",!0)])],8,qe))],16,Fe)}const Je=E(Ue,[["render",je]]),Ye={key:0,class:"version__image"},Ze=["src"],Ge={key:2,class:"version__image"},Qe={class:"version__info"},Xe=["title"],ei={key:1,class:"version__info","data-cy-files-version-author-name":""},ii={key:0},ti=["title"],oi={class:"version__info version__info__subline"},si=R({__name:"VersionEntry",props:{version:{},node:{},isCurrent:{type:Boolean},isFirstVersion:{type:Boolean},loadPreview:{type:Boolean},canView:{type:Boolean},canCompare:{type:Boolean}},emits:["click","compare","restore","delete","labelUpdateRequest"],setup(e,{emit:t}){const i=e,n=t,v=A(!1),r=A(!1),l=A(ae("core","capabilities",{files:{version_labeling:!1,version_deletion:!1}})),H=h(()=>re(i.version.size)),p=h(()=>{const w=i.version.label??"";return i.isCurrent?w===""?c("files_versions","Current version"):`${w} (${c("files_versions","Current version")})`:i.isFirstVersion&&w===""?c("files_versions","Initial version"):w}),y=h(()=>!i.version.author||!i.version.authorName?"":i.version.author===O()?.uid?c("files_versions","You"):i.version.authorName??i.version.author),s=h(()=>new Date(i.version.mtime).toLocaleString([P(),P().split("-")[0]],{timeStyle:"long",dateStyle:"long"})),k=h(()=>i.isCurrent?i.node.source:de()+i.version.url),z=h(()=>l.value.files.version_labeling===!0),L=h(()=>l.value.files.version_deletion===!0),F=h(()=>$(i.node,Y.DELETE)),T=h(()=>$(i.node,Y.UPDATE)),q=h(()=>!((i.node.permissions&Y.READ)===0||i.node.attributes["mount-type"]==="shared"&&i.node.attributes["share-attributes"]&&(JSON.parse(i.node.attributes["share-attributes"]).find(w=>w.scope==="permissions"&&w.key==="download")||{})?.value===!1));function K(){n("labelUpdateRequest")}function W(){n("restore",i.version)}async function o(){await G(),await G(),n("delete",i.version)}function u(w){i.canView&&w.preventDefault(),n("click",i.version)}function g(){if(!i.canView)throw new Error("Cannot compare version of this file");n("compare",i.version)}function $(w,x){return(w.permissions&x)!==0}return(w,x)=>(a(),V(d(be),{class:"version",forceDisplayActions:!0,"actions-aria-label":d(c)("files_versions","Actions for version from {versionHumanExplicitDate}",{versionHumanExplicitDate:s.value}),"data-files-versions-version":e.version.fileVersion,href:k.value,onClick:u},{icon:f(()=>[e.loadPreview||v.value?e.version.previewUrl&&!r.value?(a(),m("img",{key:1,src:e.version.previewUrl,alt:"",decoding:"async",fetchpriority:"low",loading:"lazy",class:"version__image",onLoad:x[0]||(x[0]=ie=>v.value=!0),onError:x[1]||(x[1]=ie=>r.value=!0)},null,40,Ze)):(a(),m("div",Ge,[S(Je,{size:20})])):(a(),m("div",Ye))]),name:f(()=>[C("div",Qe,[p.value?(a(),m("div",{key:0,class:"version__info__label","data-cy-files-version-label":"",title:p.value},_(p.value),9,Xe)):b("",!0),y.value?(a(),m("div",ei,[p.value?(a(),m("span",ii,"•")):b("",!0),S(d(pe),{class:"avatar",user:e.version.author??void 0,size:20,disableMenu:"",disableTooltip:"",hideStatus:""},null,8,["user"]),C("div",{class:"version__info__author_name",title:y.value},_(y.value),9,ti)])):b("",!0)])]),subname:f(()=>[C("div",oi,[S(d(fe),{class:"version__info__date",relativeTime:"short",timestamp:e.version.mtime},null,8,["timestamp"]),x[2]||(x[2]=C("span",null,"•",-1)),C("span",null,_(H.value),1)])]),actions:f(()=>[z.value&&T.value?(a(),V(d(M),{key:0,"data-cy-files-versions-version-action":"label",closeAfterClick:!0,onClick:K},{icon:f(()=>[S(ve,{size:22})]),default:f(()=>[N(" "+_(e.version.label===""?d(c)("files_versions","Name this version"):d(c)("files_versions","Edit version name")),1)]),_:1})):b("",!0),!e.isCurrent&&e.canView&&e.canCompare?(a(),V(d(M),{key:1,"data-cy-files-versions-version-action":"compare",closeAfterClick:!0,onClick:g},{icon:f(()=>[S(Re,{size:22})]),default:f(()=>[N(" "+_(d(c)("files_versions","Compare to current version")),1)]),_:1})):b("",!0),!e.isCurrent&&T.value?(a(),V(d(M),{key:2,"data-cy-files-versions-version-action":"restore",closeAfterClick:!0,onClick:W},{icon:f(()=>[S(Ne,{size:22})]),default:f(()=>[N(" "+_(d(c)("files_versions","Restore version")),1)]),_:1})):b("",!0),q.value?(a(),V(d(me),{key:3,"data-cy-files-versions-version-action":"download",href:k.value,closeAfterClick:!0,download:k.value},{icon:f(()=>[S(ge,{size:22})]),default:f(()=>[N(" "+_(d(c)("files_versions","Download version")),1)]),_:1},8,["href","download"])):b("",!0),!e.isCurrent&&L.value&&F.value?(a(),V(d(M),{key:4,"data-cy-files-versions-version-action":"delete",closeAfterClick:!0,onClick:o},{icon:f(()=>[S(Ve,{size:22})]),default:f(()=>[N(" "+_(d(c)("files_versions","Delete version")),1)]),_:1})):b("",!0)]),_:1},8,["actions-aria-label","data-files-versions-version","href"]))}}),ni=E(si,[["__scopeId","data-v-037e7d96"]]),ri={class:"version-label-modal__info"},ai=R({__name:"VersionLabelDialog",props:{open:{type:Boolean,default:!1},label:{type:String,default:""}},emits:["update:open","update:label"],setup(e,{emit:t}){const i=e,n=t,v=we("labelInput"),r=A(""),l=h(()=>{const p=[];return i.label.trim()===""?p.push({label:c("files_versions","Cancel")}):p.push({label:c("files_versions","Remove version name"),type:"reset",variant:"error",callback:()=>{H("")}}),[...p,{label:c("files_versions","Save version name"),icon:ye,type:"submit",variant:"primary"}]});X(()=>{r.value=i.label??""}),X(()=>{i.open&&G(()=>v.value?.focus()),r.value=i.label});function H(p){n("update:label",p)}return(p,y)=>(a(),V(d(oe),{buttons:l.value,contentClasses:"version-label-modal",isForm:"",open:e.open,size:"normal",name:d(c)("files_versions","Name this version"),"onUpdate:open":y[1]||(y[1]=s=>p.$emit("update:open",s)),onSubmit:y[2]||(y[2]=s=>H(r.value))},{default:f(()=>[S(d(he),{ref_key:"labelInput",ref:v,modelValue:r.value,"onUpdate:modelValue":y[0]||(y[0]=s=>r.value=s),class:"version-label-modal__input",label:d(c)("files_versions","Version name"),placeholder:d(c)("files_versions","Version name")},null,8,["modelValue","label","placeholder"]),C("p",ri,_(d(c)("files_versions","Named versions are persisted, and excluded from automatic cleanups when your storage quota is full.")),1)]),_:1},8,["buttons","open","name"]))}}),li=E(ai,[["__scopeId","data-v-0955585b"]]),D=te().setApp("files_version").detectUser().build(),ci=R({name:"VirtualScrolling",props:{sections:{type:Array,required:!0},containerElement:{type:HTMLElement,default:null},useWindow:{type:Boolean,default:!1},headerHeight:{type:Number,default:75},renderDistance:{type:Number,default:.5},bottomBufferRatio:{type:Number,default:2},scrollToKey:{type:String,default:""}},emits:["needContent"],data(){return{scrollPosition:0,containerHeight:0,rowsContainerHeight:0,resizeObserver:null}},computed:{visibleSections(){D.debug("[VirtualScrolling] Computing visible section",{sections:this.sections});const e=this.containerHeight,t=this.scrollPosition,i=t+e;let n=0,v=0;const r=this.sections.map(s=>(v+=this.headerHeight,{...s,rows:s.rows.reduce((k,z)=>{n=v,v+=z.height;let L=0;return vi&&(L=(n-i)/e),L>this.renderDistance?k:[...k,{...z,distance:L}]},[])})).filter(s=>s.rows.length>0),l=r.flatMap(({rows:s})=>s).flatMap(({items:s})=>s),H=this._rowIdToKeyMap;l.forEach(s=>s.key=H[s.id]);const p=l.map(({key:s})=>s).filter(s=>s!==void 0),y=Object.values(H).filter(s=>!p.includes(s));return l.filter(({key:s})=>s===void 0).forEach(s=>s.key=y.pop()??Math.random().toString(36).substr(2)),this._rowIdToKeyMap=l.reduce((s,{id:k,key:z})=>({...s,[`${k}`]:z}),{}),r},totalHeight(){return this.sections.map(e=>this.headerHeight+e.height).reduce((e,t)=>e+t,0)+0},paddingTop(){if(this.visibleSections.length===0)return 0;let e=0;for(const t of this.sections){if(t.key!==this.visibleSections[0].rows[0].sectionKey){e+=this.headerHeight+t.height;continue}for(const i of t.rows){if(i.key===this.visibleSections[0].rows[0].key)return e;e+=i.height}e+=this.headerHeight}return e},rowsContainerStyle(){return{height:`${this.totalHeight}px`,paddingTop:`${this.paddingTop}px`}},isNearBottom(){const e=this.containerHeight*this.bottomBufferRatio;return this.scrollPosition+this.containerHeight>=this.totalHeight-e},container(){return D.debug("[VirtualScrolling] Computing container"),this.containerElement!==null?this.containerElement:this.useWindow?window:this.$refs.container}},watch:{isNearBottom(e){D.debug("[VirtualScrolling] isNearBottom changed",{value:e}),e&&this.$emit("needContent")},visibleSections(){this.isNearBottom&&this.$emit("needContent")},scrollToKey(e){let t=0;for(const i of this.sections){if(i.key!==e){t+=this.headerHeight+i.height;continue}break}D.debug("[VirtualScrolling] Scrolling to",{currentRowTopDistanceFromTop:t}),this.container.scrollTo({top:t,behavior:"smooth"})}},beforeCreate(){this._rowIdToKeyMap={}},mounted(){this.resizeObserver=new ResizeObserver(e=>{for(const t of e){const i=t.contentRect;t.target===this.container&&(this.containerHeight=i.height),t.target.classList.contains("vs-rows-container")&&(this.rowsContainerHeight=i.height)}}),this.useWindow?(window.addEventListener("resize",this.updateContainerSize,{passive:!0}),this.containerHeight=window.innerHeight):this.resizeObserver.observe(this.container),this.resizeObserver.observe(this.$refs.rowsContainer),this.container.addEventListener("scroll",this.updateScrollPosition,{passive:!0})},beforeUnmount(){this.useWindow&&window.removeEventListener("resize",this.updateContainerSize),this.resizeObserver?.disconnect(),this.container.removeEventListener("scroll",this.updateScrollPosition)},methods:{updateScrollPosition(){this._onScrollHandle??=requestAnimationFrame(()=>{this._onScrollHandle=null,this.useWindow?this.scrollPosition=this.container.scrollY:this.scrollPosition=this.container.scrollTop})},updateContainerSize(){this.containerHeight=window.innerHeight}}}),di={key:0,ref:"container",class:"vs-container"};function ui(e,t,i,n,v,r){return!e.useWindow&&e.containerElement===null?(a(),m("div",di,[C("div",{ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[B(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),B(e.$slots,"loader",{},void 0,!0)],4)],512)):(a(),m("div",{key:1,ref:"rowsContainer",class:"vs-rows-container",style:ee(e.rowsContainerStyle)},[B(e.$slots,"default",{visibleSections:e.visibleSections},void 0,!0),B(e.$slots,"loader",{},void 0,!0)],4))}const vi=E(ci,[["render",ui],["__scopeId","data-v-0a27da21"]]),mi=` - - - - - - - - - - -`,U=ze();async function pi(e){const t=`/versions/${O()?.uid}/versions/${e.fileid}`;try{const i=(await U.getDirectoryContents(t,{data:mi,details:!0})).data.filter(({mime:r})=>r!=="").map(r=>hi(r,e)),n=new Set(i.map(r=>String(r.author))),v=await He.post(Z("/displaynames"),{users:[...n]});for(const r of i){const l=v.data.users[r.author??""];l&&(r.authorName=l)}return i}catch(i){throw D.error("Could not fetch version",{exception:i}),i}}async function fi(e){try{D.debug("Restoring version",{url:e.url}),await U.moveFile(`/versions/${O()?.uid}/versions/${e.fileId}/${e.fileVersion}`,`/versions/${O()?.uid}/restore/target`)}catch(t){throw D.error("Could not restore version",{exception:t}),t}}function hi(e,t){const i=Date.parse(e.lastmod);let n;return i===t.mtime?.getTime()?n=Z("/core/preview?fileId={fileId}&c={fileEtag}&x=250&y=250&forceIcon=0&a=0&forceIcon=1&mimeFallback=1",{fileId:t.id,fileEtag:t.attributes.etag}):n=Z("/apps/files_versions/preview?file={file}&version={fileVersion}&mimeFallback=1",{file:t.path,fileVersion:e.basename}),{fileId:t.id,label:e.props["version-label"]?String(e.props["version-label"]):"",author:e.props["version-author"]?String(e.props["version-author"]):null,authorName:null,filename:e.filename,basename:new Date(i).toLocaleString([P(),P().split("-")[0]],{timeStyle:"long",dateStyle:"medium"}),mime:e.mime,etag:`${e.props.getetag}`,size:e.size,type:e.type,mtime:i,permissions:"R",previewUrl:n,url:le("/remote.php/dav",e.filename),source:ue("dav")+ce(e.filename),fileVersion:e.basename}}async function gi(e,t){return await U.customRequest(e.filename,{method:"PROPPATCH",data:` - - - - ${t} - - - `})}async function bi(e){await U.deleteFile(e.filename)}const yi={key:0,class:"versions-tab__container"},wi=["aria-label"],Ki=R({__name:"FilesVersionsSidebarTab",props:{active:{type:Boolean},node:{},folder:{},view:{}},setup(e){const t=e,i=se(),n=A([]),v=A(!1),r=A(!1),l=A(null);_e(Ce(()=>t.node),async()=>{if(t.node)try{v.value=!0,n.value=await pi(t.node)}finally{v.value=!1}},{immediate:!0});const H=h(()=>t.node?.mtime?.getTime()??0),p=h(()=>[...n.value].sort((o,u)=>t.node?o.mtime===t.node.mtime?.getTime()?-1:u.mtime===t.node.mtime?.getTime()?1:u.mtime-o.mtime:0)),y=h(()=>[{key:"versions",rows:p.value.map(o=>({key:o.mtime.toString(),height:68,sectionKey:"versions",items:[{id:o.mtime.toString(),version:o}]})),height:68*p.value.length}]),s=h(()=>n.value.map(o=>o.mtime).reduce((o,u)=>Math.min(o,u))),k=h(()=>t.node?window.OCA.Viewer?.mimetypes?.includes(t.node?.mime):!1),z=h(()=>!i.value&&window.OCA.Viewer?.mimetypesCompare?.includes(t.node?.mime));async function L(o){if(!t.node)return;const u=t.node.clone();u.attributes.etag=o.etag,u.size=o.size,u.mtime=new Date(o.mtime);const g={preventDefault:!1,node:u,version:o};if(I("files_versions:restore:requested",g),!g.preventDefault)try{await fi(o),o.label?j(c("files_versions",`${o.label} restored`)):o.mtime===s.value?j(c("files_versions","Initial version restored")):j(c("files_versions","Version restored")),I("files:node:updated",u),I("files_versions:restore:restored",{node:u,version:o})}catch{J(c("files_versions","Could not restore version")),I("files_versions:restore:failed",o)}}function F(o){r.value=!0,l.value=o}async function T(o){if(l.value===null)throw new Error("editedVersion should be set at that point");const u=l.value.label;l.value.label=o,r.value=!1;try{await gi(l.value,o),l.value=null}catch(g){l.value.label=u,J(c("files_versions","Could not set version label")),D.error("Could not set version label",{exception:g})}}async function q(o){const u=n.value.indexOf(o);n.value.splice(u,1);try{await bi(o)}catch{n.value.push(o),J(c("files_versions","Could not delete version"))}}function K(o){if(t.node!==null){if(o.mtime===t.node?.mtime?.getTime()){window.OCA.Viewer.open({path:t.node.path});return}window.OCA.Viewer.open({fileInfo:{...o,filename:o.filename,previewUrl:void 0},enableSidebar:!1})}}function W(o){const u=n.value.map(g=>({...g,previewUrl:void 0}));window.OCA.Viewer.compare({path:t.node.path},u.find(g=>g.source===o.source))}return(o,u)=>e.node?(a(),m("div",yi,[S(vi,{sections:y.value,headerHeight:0},{default:f(({visibleSections:g})=>[C("ul",{"aria-label":d(c)("files_versions","File versions"),"data-files-versions-versions-list":""},[g.length===1?(a(!0),m(ke,{key:0},Se(g[0].rows,$=>(a(),V(ni,{key:$.items[0].version.mtime,canView:k.value,canCompare:z.value,loadPreview:e.active,version:$.items[0].version,node:e.node,isCurrent:$.items[0].version.mtime===H.value,isFirstVersion:$.items[0].version.mtime===s.value,onClick:K,onCompare:W,onRestore:L,onLabelUpdateRequest:w=>F($.items[0].version),onDelete:q},null,8,["canView","canCompare","loadPreview","version","node","isCurrent","isFirstVersion","onLabelUpdateRequest"]))),128)):b("",!0)],8,wi)]),loader:f(()=>[v.value?(a(),V(d(ne),{key:0,class:"files-list-viewer__loader"})):b("",!0)]),_:1},8,["sections"]),l.value?(a(),V(li,{key:0,open:r.value,"onUpdate:open":u[0]||(u[0]=g=>r.value=g),label:l.value.label,"onUpdate:label":T},null,8,["open","label"])):b("",!0)])):b("",!0)}});export{Ki as default}; -//# sourceMappingURL=FilesVersionsSidebarTab-xpctu3yN.chunk.mjs.map diff --git a/dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs b/dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs similarity index 98% rename from dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs rename to dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs index a1f4a1f260b92..504223d1916e6 100644 --- a/dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs +++ b/dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/index-BpgPbDC6.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-TGZB0t_n.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DdQinVMt.chunk.css'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-B9mkBKAR.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/NcRichText-D_ssz6sB-DplYO192.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQwJiKOs.chunk.css'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/Plus-BsxGg9Cm.chunk.mjs'),window.OC.filePath('', '', 'dist/Plus-DoZPzs7J.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-BfjxNgsx-DQQhcX1Z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-DS-ziNw6.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-ruClKRzS-D_G6wUEW.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/NcRichText-D_ssz6sB-CfXisSUS.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/index-DxCeSeyt.chunk.css'),window.OC.filePath('', '', 'dist/index-Blsbluag.chunk.mjs')])))=>i.map(i=>d[i]); -import{_ as V}from"./index-BgmsSgl5.chunk.mjs";import{b as A,q as R,s as j,j as I,o as v,k as g,t as S,n as w,z as T,p as P,a as N,f as k,m as Y,D as L,E as Z,l as D,c as x,e as H,w as W}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{r as z,q as G,_ as B,a as F,c as C,s as J}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{a as K}from"./PencilOutline-TGZB0t_n.chunk.mjs";import{N as Q}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{_ as X}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{f as tt}from"./index-DqIuD5e7.chunk.mjs";z(G);const et=["for"],it=["id","type","value","min","max"],st=A({inheritAttrs:!1,__name:"NcDateTimePickerNative",props:R({class:{default:void 0},id:{default:()=>C()},inputClass:{default:""},type:{default:"date"},label:{default:()=>F("Please choose a date")},min:{default:null},max:{default:null},hideLabel:{type:Boolean}},{modelValue:{default:null},modelModifiers:{}}),emits:["update:modelValue"],setup(r){const e=j(r,"modelValue"),t=r,o=P(()=>e.value?u(e.value):""),d=P(()=>t.max?u(t.max):void 0),a=P(()=>t.min?u(t.min):void 0);function m(i){const s=i.getFullYear().toString().padStart(4,"0"),c=(i.getMonth()+1).toString().padStart(2,"0"),h=i.getDate().toString().padStart(2,"0"),p=i.getHours().toString().padStart(2,"0"),f=i.getMinutes().toString().padStart(2,"0");return{yyyy:s,MM:c,dd:h,hh:p,mm:f}}function u(i){const{yyyy:s,MM:c,dd:h,hh:p,mm:f}=m(i);if(t.type==="datetime-local")return`${s}-${c}-${h}T${p}:${f}`;if(t.type==="date")return`${s}-${c}-${h}`;if(t.type==="month")return`${s}-${c}`;if(t.type==="time")return`${p}:${f}`;if(t.type==="week"){const l=new Date(Number.parseInt(s),0,1),b=Math.floor((i.getTime()-l.getTime())/(1440*60*1e3)),_=Math.ceil(b/7);return`${s}-W${_}`}return""}function n(i){const s=i.target;if(!s||isNaN(s.valueAsNumber))e.value=null;else if(t.type==="time"){const c=s.value,{yyyy:h,MM:p,dd:f}=m(e.value||new Date);e.value=new Date(`${h}-${p}-${f}T${c}`)}else if(t.type==="month"){const c=(new Date(s.value).getMonth()+1).toString().padStart(2,"0"),{yyyy:h,dd:p,hh:f,mm:l}=m(e.value||new Date);e.value=new Date(`${h}-${c}-${p}T${f}:${l}`)}else{const c=new Date(s.valueAsNumber).getTimezoneOffset()*1e3*60,h=s.valueAsNumber+c;e.value=new Date(h)}}return(i,s)=>(v(),I("div",{class:w(["native-datetime-picker",i.$props.class])},[g("label",{class:w(["native-datetime-picker__label",{"hidden-visually":i.hideLabel}]),for:i.id},S(i.label),11,et),g("input",T({id:i.id,class:["native-datetime-picker__input",i.inputClass],type:i.type,value:o.value,min:a.value,max:d.value},i.$attrs,{onInput:n}),null,16,it)],2))}}),nt=B(st,[["__scopeId","data-v-b97e1f7a"]]);z(J);const rt={name:"NcActionInput",components:{NcDateTimePickerNative:nt,NcPasswordField:Q,NcTextField:X,NcColorPicker:N(()=>V(()=>import("./index-BpgPbDC6.chunk.mjs").then(r=>r.i),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]),import.meta.url)),NcDateTimePicker:N(()=>V(()=>import("./index-BpgPbDC6.chunk.mjs").then(r=>r.b),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]),import.meta.url)),NcSelect:N(()=>V(()=>import("./index-Blsbluag.chunk.mjs").then(r=>r.i),__vite__mapDeps([42,1,2,3,4,5,6,7,15,8,9,10,11,16,24,25]),import.meta.url))},mixins:[K],inheritAttrs:!1,props:{id:{type:String,default:()=>"action-"+C(),validator:r=>r.trim()!==""},inputId:{type:String,default:()=>"action-input-"+C(),validator:r=>r.trim()!==""},icon:{type:String,default:""},type:{type:String,default:"text",validator(r){return["date","datetime-local","month","multiselect","number","password","search","tel","text","time","url","week","color","email"].includes(r)}},idNativeDateTimePicker:{type:String,default:"date-time-picker_id"},isNativePicker:{type:Boolean,default:!1},label:{type:String,default:null},labelOutside:{type:Boolean,default:!0},modelValue:{type:[String,Date,Number,Array],default:""},disabled:{type:Boolean,default:!1},ariaLabel:{type:String,default:""},showTrailingButton:{type:Boolean,default:!0},trailingButtonLabel:{type:String,default:F("Submit")},class:{type:[String,Array,Object],default:""}},emits:["submit","update:modelValue"],computed:{isIconUrl(){try{return new URL(this.icon)}catch{return!1}},isMultiselectType(){return this.type==="multiselect"},nativeDatePickerType(){switch(this.type){case"date":case"month":case"time":case"week":case"datetime-local":return this.type}return!1},datePickerType(){if(!this.isNativePicker)switch(this.type){case"date":case"month":case"time":return this.type;case"datetime-local":return"datetime"}return!1},isFocusable(){return!this.disabled}},methods:{onLeave(){this.$refs.datetimepicker&&this.$refs.datetimepicker.$refs.datepicker&&this.$refs.datetimepicker.$refs.datepicker.closePopup()},onSubmit(r){if(r.preventDefault(),r.stopPropagation(),!this.disabled)this.$emit("submit",r);else return!1},onUpdateModelValue(r){this.$emit("update:modelValue",r)}}},at={class:"action-input__icon-wrapper"},ot=["disabled"],lt={class:"action-input__container"},ut=["for"],ct={class:"action-input__input-container"},ht={key:4,class:"action-input__container"},dt=["for"],pt={class:"action-input__input-container"};function mt(r,e,t,o,d,a){const m=k("NcDateTimePicker"),u=k("NcDateTimePickerNative"),n=k("NcSelect"),i=k("NcPasswordField"),s=k("NcColorPicker"),c=k("NcTextField");return v(),I("li",{class:w(["action",[{"action--disabled":t.disabled},r.$props.class]])},[g("span",{class:w(["action-input",{"action-input-picker--disabled":t.disabled,"action-input--visible-label":t.labelOutside&&t.label}]),onMouseleave:e[3]||(e[3]=(...h)=>a.onLeave&&a.onLeave(...h))},[g("span",at,[Y(r.$slots,"icon",{},()=>[g("span",{"aria-hidden":"true",class:w(["action-input__icon",[a.isIconUrl?"action-input__icon--url":t.icon]]),style:L({backgroundImage:a.isIconUrl?`url(${t.icon})`:null})},null,6)],!0)]),g("form",{ref:"form",class:"action-input__form",disabled:t.disabled,onSubmit:e[2]||(e[2]=Z((...h)=>a.onSubmit&&a.onSubmit(...h),["prevent"]))},[g("div",lt,[t.label&&t.labelOutside&&!t.isNativePicker?(v(),I("label",{key:0,class:w(["action-input__text-label",{"action-input__text-label--hidden":!t.labelOutside}]),for:t.inputId},S(t.label),11,ut)):D("",!0),g("div",ct,[a.datePickerType?(v(),x(m,T({key:0,ref:"datetimepicker",modelValue:t.modelValue,style:{"z-index":"99999999999"},placeholder:r.text,disabled:t.disabled,type:a.datePickerType,inputClass:["mx-input",{focusable:a.isFocusable}],class:"action-input__datetimepicker",appendToBody:""},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["modelValue","placeholder","disabled","type","inputClass","onUpdate:modelValue"])):t.isNativePicker?(v(),x(u,T({key:1,id:t.idNativeDateTimePicker,modelValue:t.modelValue,label:t.label,type:a.nativeDatePickerType,inputClass:{focusable:a.isFocusable},class:"action-input__datetimepicker"},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["id","modelValue","label","type","inputClass","onUpdate:modelValue"])):a.isMultiselectType?(v(),x(n,T({key:2,modelValue:t.modelValue,placeholder:r.text,disabled:t.disabled,appendToBody:!1,inputClass:{focusable:a.isFocusable},class:"action-input__multi"},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["modelValue","placeholder","disabled","inputClass","onUpdate:modelValue"])):t.type==="password"?(v(),x(i,T({key:3,id:t.inputId,modelValue:t.modelValue,label:t.label,labelOutside:!t.label||t.labelOutside,placeholder:r.text,disabled:t.disabled,inputClass:{focusable:a.isFocusable},showTrailingButton:t.showTrailingButton&&!t.disabled},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["id","modelValue","label","labelOutside","placeholder","disabled","inputClass","showTrailingButton","onUpdate:modelValue"])):t.type==="color"?(v(),I("div",ht,[t.label&&t.type==="color"?(v(),I("label",{key:0,class:w(["action-input__text-label",{"action-input__text-label--hidden":!t.labelOutside}]),for:t.inputId},S(t.label),11,dt)):D("",!0),g("div",pt,[H(s,T({id:"inputId",modelValue:t.modelValue,class:"colorpicker__trigger"},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue,onSubmit:e[0]||(e[0]=h=>r.$refs.form.requestSubmit())}),{default:W(()=>[g("button",{class:w(["colorpicker__preview",{focusable:a.isFocusable}]),style:L({"background-color":t.modelValue})},null,6)]),_:1},16,["modelValue","onUpdate:modelValue"])])])):(v(),x(c,T({key:5,id:t.inputId,modelValue:t.modelValue,label:t.label,labelOutside:!t.label||t.labelOutside,placeholder:r.text,disabled:t.disabled,inputClass:{focusable:a.isFocusable},type:t.type,trailingButtonIcon:"arrowRight",trailingButtonLabel:t.trailingButtonLabel,showTrailingButton:t.showTrailingButton&&!t.disabled},r.$attrs,{onTrailingButtonClick:e[1]||(e[1]=h=>r.$refs.form.requestSubmit()),"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["id","modelValue","label","labelOutside","placeholder","disabled","inputClass","type","trailingButtonLabel","showTrailingButton","onUpdate:modelValue"]))])])],40,ot)],34)],2)}const Pt=B(rt,[["render",mt],["__scopeId","data-v-3a83acfa"]]);var O={exports:{}},M;function ft(){return M||(M=1,(function(r){var e=Object.prototype.hasOwnProperty,t="~";function o(){}Object.create&&(o.prototype=Object.create(null),new o().__proto__||(t=!1));function d(n,i,s){this.fn=n,this.context=i,this.once=s||!1}function a(n,i,s,c,h){if(typeof s!="function")throw new TypeError("The listener must be a function");var p=new d(s,c||n,h),f=t?t+i:i;return n._events[f]?n._events[f].fn?n._events[f]=[n._events[f],p]:n._events[f].push(p):(n._events[f]=p,n._eventsCount++),n}function m(n,i){--n._eventsCount===0?n._events=new o:delete n._events[i]}function u(){this._events=new o,this._eventsCount=0}u.prototype.eventNames=function(){var n=[],i,s;if(this._eventsCount===0)return n;for(s in i=this._events)e.call(i,s)&&n.push(t?s.slice(1):s);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(i)):n},u.prototype.listeners=function(n){var i=t?t+n:n,s=this._events[i];if(!s)return[];if(s.fn)return[s.fn];for(var c=0,h=s.length,p=new Array(h);cr.reason??new DOMException("This operation was aborted.","AbortError");function vt(r,e){const{milliseconds:t,fallback:o,message:d,customTimers:a={setTimeout,clearTimeout},signal:m}=e;let u,n;const i=new Promise((s,c)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(m?.aborted){c(U(m));return}if(m&&(n=()=>{c(U(m))},m.addEventListener("abort",n,{once:!0})),r.then(s,c),t===Number.POSITIVE_INFINITY)return;const h=new E;u=a.setTimeout.call(void 0,()=>{if(o){try{s(o())}catch(p){c(p)}return}typeof r.cancel=="function"&&r.cancel(),d===!1?s():d instanceof Error?c(d):(h.message=d??`Promise timed out after ${t} milliseconds`,c(h))},t)}).finally(()=>{i.clear(),n&&m&&m.removeEventListener("abort",n)});return i.clear=()=>{a.clearTimeout.call(void 0,u),u=void 0},i}function gt(r,e,t){let o=0,d=r.length;for(;d>0;){const a=Math.trunc(d/2);let m=o+a;t(r[m],e)<=0?(o=++m,d-=a+1):d=a}return o}class _t{#i=[];enqueue(e,t){const{priority:o=0,id:d}=t??{},a={priority:o,id:d,run:e};if(this.size===0||this.#i[this.size-1].priority>=o){this.#i.push(a);return}const m=gt(this.#i,a,(u,n)=>n.priority-u.priority);this.#i.splice(m,0,a)}setPriority(e,t){const o=this.#i.findIndex(a=>a.id===e);if(o===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);const[d]=this.#i.splice(o,1);this.enqueue(d.run,{priority:t,id:e})}dequeue(){return this.#i.shift()?.run}filter(e){return this.#i.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#i.length}}class Nt extends bt{#i;#a;#o=0;#p;#f=!1;#v=!1;#l;#I=0;#g=0;#u;#c;#r;#n=[];#s=0;#t;#V;#e=0;#y;#h;#E=1n;#b=new Map;timeout;constructor(e){if(super(),e={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:_t,strict:!1,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(e.strict&&e.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(e.strict&&e.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#i=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#a=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#p=e.intervalCap,this.#l=e.interval,this.#r=e.strict,this.#t=new e.queueClass,this.#V=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#h=e.autoStart===!1,this.#F()}#_(e){for(;this.#s=this.#l)this.#s++;else break}(this.#s>100&&this.#s>this.#n.length/2||this.#s===this.#n.length)&&(this.#n=this.#n.slice(this.#s),this.#s=0)}#L(e){this.#r?this.#n.push(e):this.#o++}#D(){this.#r?this.#n.length>this.#s&&this.#n.pop():this.#o>0&&this.#o--}#w(){return this.#n.length-this.#s}get#O(){return this.#a?!0:this.#r?this.#w()=this.#p){const t=this.#n[this.#s],o=this.#l-(e-t);return this.#T(o),!0}return!1}if(this.#u===void 0){const t=this.#I-e;if(t<0){if(this.#g>0){const o=e-this.#g;if(o{this.#z()},e))}#k(){this.#u&&(clearInterval(this.#u),this.#u=void 0)}#P(){this.#c&&(clearTimeout(this.#c),this.#c=void 0)}#$(){if(this.#t.size===0){if(this.#k(),this.emit("empty"),this.#e===0){if(this.#P(),this.#r&&this.#s>0){const t=Date.now();this.#_(t)}this.emit("idle")}return!1}let e=!1;if(!this.#h){const t=Date.now(),o=!this.#B(t);if(this.#O&&this.#M){const d=this.#t.dequeue();this.#a||(this.#L(t),this.#m()),this.emit("active"),d(),o&&this.#N(),e=!0}}return e}#N(){this.#a||this.#u!==void 0||this.#r||(this.#u=setInterval(()=>{this.#S()},this.#l),this.#I=Date.now()+this.#l)}#S(){this.#r||(this.#o===0&&this.#e===0&&this.#u&&this.#k(),this.#o=this.#i?this.#e:0),this.#x(),this.#m()}#x(){for(;this.#$(););}get concurrency(){return this.#y}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#y=e,this.#x()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#t.setPriority(e,t)}async add(e,t={}){return t={timeout:this.timeout,...t,id:t.id??(this.#E++).toString()},new Promise((o,d)=>{const a=Symbol(`task-${t.id}`);this.#t.enqueue(async()=>{this.#e++,this.#b.set(a,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let m;try{try{t.signal?.throwIfAborted()}catch(i){throw this.#q(),this.#b.delete(a),i}this.#g=Date.now();let u=e({signal:t.signal});if(t.timeout&&(u=vt(Promise.resolve(u),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#e} running, ${this.#t.size} waiting)`})),t.signal){const{signal:i}=t;u=Promise.race([u,new Promise((s,c)=>{m=()=>{c(i.reason)},i.addEventListener("abort",m,{once:!0})})])}const n=await u;o(n),this.emit("completed",n)}catch(u){d(u),this.emit("error",u)}finally{m&&t.signal?.removeEventListener("abort",m),this.#b.delete(a),queueMicrotask(()=>{this.#U()})}},t),this.emit("add"),this.#$()})}async addAll(e,t){return Promise.all(e.map(async o=>this.add(o,t)))}start(){return this.#h?(this.#h=!1,this.#x(),this):this}pause(){this.#h=!0}clear(){this.#t=new this.#V,this.#k(),this.#C(),this.emit("empty"),this.#e===0&&(this.#P(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#t.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#t.sizethis.#t.size{const o=d=>{this.off("error",o),t(d)};this.on("error",o)})}async#d(e,t){return new Promise(o=>{const d=()=>{t&&!t()||(this.off(e,d),o())};this.on(e,d)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#e}get isPaused(){return this.#h}#F(){this.#a||(this.on("add",()=>{this.#t.size>0&&this.#m()}),this.on("next",()=>{this.#m()}))}#m(){this.#a||this.#v||(this.#v=!0,queueMicrotask(()=>{this.#v=!1,this.#C()}))}#q(){this.#a||(this.#D(),this.#m())}#C(){const e=this.#f;if(this.#a||this.#t.size===0){e&&(this.#f=!1,this.emit("rateLimitCleared"));return}let t;if(this.#r){const d=Date.now();this.#_(d),t=this.#w()}else t=this.#o;const o=t>=this.#p;o!==e&&(this.#f=o,this.emit(o?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#f}get isSaturated(){return this.#e===this.#y&&this.#t.size>0||this.isRateLimited&&this.#t.size>0}get runningTasks(){return[...this.#b.values()].map(e=>({...e}))}}export{nt as N,Nt as P,Pt as a}; -//# sourceMappingURL=NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs.map +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/index-Bk4hMpWo.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/PencilOutline-TGZB0t_n.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DdQinVMt.chunk.css'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-B9mkBKAR.chunk.css'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/NcRichText-D_ssz6sB-DplYO192.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQwJiKOs.chunk.css'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/Plus-BsxGg9Cm.chunk.mjs'),window.OC.filePath('', '', 'dist/Plus-DoZPzs7J.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-BfjxNgsx-DQQhcX1Z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-DS-ziNw6.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-ruClKRzS-D_G6wUEW.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/NcRichText-D_ssz6sB-CfXisSUS.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/index-CEtX00Aw.chunk.css'),window.OC.filePath('', '', 'dist/index-Blsbluag.chunk.mjs')])))=>i.map(i=>d[i]); +import{_ as V}from"./index-BgmsSgl5.chunk.mjs";import{b as A,q as R,s as j,j as I,o as v,k as g,t as S,n as w,z as T,p as P,a as N,f as k,m as Y,D as L,E as Z,l as D,c as x,e as H,w as W}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{r as z,q as G,_ as B,a as F,c as C,s as J}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{a as K}from"./PencilOutline-TGZB0t_n.chunk.mjs";import{N as Q}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{_ as X}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{f as tt}from"./index-DqIuD5e7.chunk.mjs";z(G);const et=["for"],it=["id","type","value","min","max"],st=A({inheritAttrs:!1,__name:"NcDateTimePickerNative",props:R({class:{default:void 0},id:{default:()=>C()},inputClass:{default:""},type:{default:"date"},label:{default:()=>F("Please choose a date")},min:{default:null},max:{default:null},hideLabel:{type:Boolean}},{modelValue:{default:null},modelModifiers:{}}),emits:["update:modelValue"],setup(r){const e=j(r,"modelValue"),t=r,o=P(()=>e.value?u(e.value):""),d=P(()=>t.max?u(t.max):void 0),a=P(()=>t.min?u(t.min):void 0);function m(i){const s=i.getFullYear().toString().padStart(4,"0"),c=(i.getMonth()+1).toString().padStart(2,"0"),h=i.getDate().toString().padStart(2,"0"),p=i.getHours().toString().padStart(2,"0"),f=i.getMinutes().toString().padStart(2,"0");return{yyyy:s,MM:c,dd:h,hh:p,mm:f}}function u(i){const{yyyy:s,MM:c,dd:h,hh:p,mm:f}=m(i);if(t.type==="datetime-local")return`${s}-${c}-${h}T${p}:${f}`;if(t.type==="date")return`${s}-${c}-${h}`;if(t.type==="month")return`${s}-${c}`;if(t.type==="time")return`${p}:${f}`;if(t.type==="week"){const l=new Date(Number.parseInt(s),0,1),b=Math.floor((i.getTime()-l.getTime())/(1440*60*1e3)),_=Math.ceil(b/7);return`${s}-W${_}`}return""}function n(i){const s=i.target;if(!s||isNaN(s.valueAsNumber))e.value=null;else if(t.type==="time"){const c=s.value,{yyyy:h,MM:p,dd:f}=m(e.value||new Date);e.value=new Date(`${h}-${p}-${f}T${c}`)}else if(t.type==="month"){const c=(new Date(s.value).getMonth()+1).toString().padStart(2,"0"),{yyyy:h,dd:p,hh:f,mm:l}=m(e.value||new Date);e.value=new Date(`${h}-${c}-${p}T${f}:${l}`)}else{const c=new Date(s.valueAsNumber).getTimezoneOffset()*1e3*60,h=s.valueAsNumber+c;e.value=new Date(h)}}return(i,s)=>(v(),I("div",{class:w(["native-datetime-picker",i.$props.class])},[g("label",{class:w(["native-datetime-picker__label",{"hidden-visually":i.hideLabel}]),for:i.id},S(i.label),11,et),g("input",T({id:i.id,class:["native-datetime-picker__input",i.inputClass],type:i.type,value:o.value,min:a.value,max:d.value},i.$attrs,{onInput:n}),null,16,it)],2))}}),nt=B(st,[["__scopeId","data-v-b97e1f7a"]]);z(J);const rt={name:"NcActionInput",components:{NcDateTimePickerNative:nt,NcPasswordField:Q,NcTextField:X,NcColorPicker:N(()=>V(()=>import("./index-Bk4hMpWo.chunk.mjs").then(r=>r.i),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]),import.meta.url)),NcDateTimePicker:N(()=>V(()=>import("./index-Bk4hMpWo.chunk.mjs").then(r=>r.b),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41]),import.meta.url)),NcSelect:N(()=>V(()=>import("./index-Blsbluag.chunk.mjs").then(r=>r.i),__vite__mapDeps([42,1,2,3,4,5,6,7,15,8,9,10,11,16,24,25]),import.meta.url))},mixins:[K],inheritAttrs:!1,props:{id:{type:String,default:()=>"action-"+C(),validator:r=>r.trim()!==""},inputId:{type:String,default:()=>"action-input-"+C(),validator:r=>r.trim()!==""},icon:{type:String,default:""},type:{type:String,default:"text",validator(r){return["date","datetime-local","month","multiselect","number","password","search","tel","text","time","url","week","color","email"].includes(r)}},idNativeDateTimePicker:{type:String,default:"date-time-picker_id"},isNativePicker:{type:Boolean,default:!1},label:{type:String,default:null},labelOutside:{type:Boolean,default:!0},modelValue:{type:[String,Date,Number,Array],default:""},disabled:{type:Boolean,default:!1},ariaLabel:{type:String,default:""},showTrailingButton:{type:Boolean,default:!0},trailingButtonLabel:{type:String,default:F("Submit")},class:{type:[String,Array,Object],default:""}},emits:["submit","update:modelValue"],computed:{isIconUrl(){try{return new URL(this.icon)}catch{return!1}},isMultiselectType(){return this.type==="multiselect"},nativeDatePickerType(){switch(this.type){case"date":case"month":case"time":case"week":case"datetime-local":return this.type}return!1},datePickerType(){if(!this.isNativePicker)switch(this.type){case"date":case"month":case"time":return this.type;case"datetime-local":return"datetime"}return!1},isFocusable(){return!this.disabled}},methods:{onLeave(){this.$refs.datetimepicker&&this.$refs.datetimepicker.$refs.datepicker&&this.$refs.datetimepicker.$refs.datepicker.closePopup()},onSubmit(r){if(r.preventDefault(),r.stopPropagation(),!this.disabled)this.$emit("submit",r);else return!1},onUpdateModelValue(r){this.$emit("update:modelValue",r)}}},at={class:"action-input__icon-wrapper"},ot=["disabled"],lt={class:"action-input__container"},ut=["for"],ct={class:"action-input__input-container"},ht={key:4,class:"action-input__container"},dt=["for"],pt={class:"action-input__input-container"};function mt(r,e,t,o,d,a){const m=k("NcDateTimePicker"),u=k("NcDateTimePickerNative"),n=k("NcSelect"),i=k("NcPasswordField"),s=k("NcColorPicker"),c=k("NcTextField");return v(),I("li",{class:w(["action",[{"action--disabled":t.disabled},r.$props.class]])},[g("span",{class:w(["action-input",{"action-input-picker--disabled":t.disabled,"action-input--visible-label":t.labelOutside&&t.label}]),onMouseleave:e[3]||(e[3]=(...h)=>a.onLeave&&a.onLeave(...h))},[g("span",at,[Y(r.$slots,"icon",{},()=>[g("span",{"aria-hidden":"true",class:w(["action-input__icon",[a.isIconUrl?"action-input__icon--url":t.icon]]),style:L({backgroundImage:a.isIconUrl?`url(${t.icon})`:null})},null,6)],!0)]),g("form",{ref:"form",class:"action-input__form",disabled:t.disabled,onSubmit:e[2]||(e[2]=Z((...h)=>a.onSubmit&&a.onSubmit(...h),["prevent"]))},[g("div",lt,[t.label&&t.labelOutside&&!t.isNativePicker?(v(),I("label",{key:0,class:w(["action-input__text-label",{"action-input__text-label--hidden":!t.labelOutside}]),for:t.inputId},S(t.label),11,ut)):D("",!0),g("div",ct,[a.datePickerType?(v(),x(m,T({key:0,ref:"datetimepicker",modelValue:t.modelValue,style:{"z-index":"99999999999"},placeholder:r.text,disabled:t.disabled,type:a.datePickerType,inputClass:["mx-input",{focusable:a.isFocusable}],class:"action-input__datetimepicker",appendToBody:""},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["modelValue","placeholder","disabled","type","inputClass","onUpdate:modelValue"])):t.isNativePicker?(v(),x(u,T({key:1,id:t.idNativeDateTimePicker,modelValue:t.modelValue,label:t.label,type:a.nativeDatePickerType,inputClass:{focusable:a.isFocusable},class:"action-input__datetimepicker"},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["id","modelValue","label","type","inputClass","onUpdate:modelValue"])):a.isMultiselectType?(v(),x(n,T({key:2,modelValue:t.modelValue,placeholder:r.text,disabled:t.disabled,appendToBody:!1,inputClass:{focusable:a.isFocusable},class:"action-input__multi"},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["modelValue","placeholder","disabled","inputClass","onUpdate:modelValue"])):t.type==="password"?(v(),x(i,T({key:3,id:t.inputId,modelValue:t.modelValue,label:t.label,labelOutside:!t.label||t.labelOutside,placeholder:r.text,disabled:t.disabled,inputClass:{focusable:a.isFocusable},showTrailingButton:t.showTrailingButton&&!t.disabled},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["id","modelValue","label","labelOutside","placeholder","disabled","inputClass","showTrailingButton","onUpdate:modelValue"])):t.type==="color"?(v(),I("div",ht,[t.label&&t.type==="color"?(v(),I("label",{key:0,class:w(["action-input__text-label",{"action-input__text-label--hidden":!t.labelOutside}]),for:t.inputId},S(t.label),11,dt)):D("",!0),g("div",pt,[H(s,T({id:"inputId",modelValue:t.modelValue,class:"colorpicker__trigger"},r.$attrs,{"onUpdate:modelValue":a.onUpdateModelValue,onSubmit:e[0]||(e[0]=h=>r.$refs.form.requestSubmit())}),{default:W(()=>[g("button",{class:w(["colorpicker__preview",{focusable:a.isFocusable}]),style:L({"background-color":t.modelValue})},null,6)]),_:1},16,["modelValue","onUpdate:modelValue"])])])):(v(),x(c,T({key:5,id:t.inputId,modelValue:t.modelValue,label:t.label,labelOutside:!t.label||t.labelOutside,placeholder:r.text,disabled:t.disabled,inputClass:{focusable:a.isFocusable},type:t.type,trailingButtonIcon:"arrowRight",trailingButtonLabel:t.trailingButtonLabel,showTrailingButton:t.showTrailingButton&&!t.disabled},r.$attrs,{onTrailingButtonClick:e[1]||(e[1]=h=>r.$refs.form.requestSubmit()),"onUpdate:modelValue":a.onUpdateModelValue}),null,16,["id","modelValue","label","labelOutside","placeholder","disabled","inputClass","type","trailingButtonLabel","showTrailingButton","onUpdate:modelValue"]))])])],40,ot)],34)],2)}const Pt=B(rt,[["render",mt],["__scopeId","data-v-3a83acfa"]]);var O={exports:{}},M;function ft(){return M||(M=1,(function(r){var e=Object.prototype.hasOwnProperty,t="~";function o(){}Object.create&&(o.prototype=Object.create(null),new o().__proto__||(t=!1));function d(n,i,s){this.fn=n,this.context=i,this.once=s||!1}function a(n,i,s,c,h){if(typeof s!="function")throw new TypeError("The listener must be a function");var p=new d(s,c||n,h),f=t?t+i:i;return n._events[f]?n._events[f].fn?n._events[f]=[n._events[f],p]:n._events[f].push(p):(n._events[f]=p,n._eventsCount++),n}function m(n,i){--n._eventsCount===0?n._events=new o:delete n._events[i]}function u(){this._events=new o,this._eventsCount=0}u.prototype.eventNames=function(){var n=[],i,s;if(this._eventsCount===0)return n;for(s in i=this._events)e.call(i,s)&&n.push(t?s.slice(1):s);return Object.getOwnPropertySymbols?n.concat(Object.getOwnPropertySymbols(i)):n},u.prototype.listeners=function(n){var i=t?t+n:n,s=this._events[i];if(!s)return[];if(s.fn)return[s.fn];for(var c=0,h=s.length,p=new Array(h);cr.reason??new DOMException("This operation was aborted.","AbortError");function vt(r,e){const{milliseconds:t,fallback:o,message:d,customTimers:a={setTimeout,clearTimeout},signal:m}=e;let u,n;const i=new Promise((s,c)=>{if(typeof t!="number"||Math.sign(t)!==1)throw new TypeError(`Expected \`milliseconds\` to be a positive number, got \`${t}\``);if(m?.aborted){c(U(m));return}if(m&&(n=()=>{c(U(m))},m.addEventListener("abort",n,{once:!0})),r.then(s,c),t===Number.POSITIVE_INFINITY)return;const h=new E;u=a.setTimeout.call(void 0,()=>{if(o){try{s(o())}catch(p){c(p)}return}typeof r.cancel=="function"&&r.cancel(),d===!1?s():d instanceof Error?c(d):(h.message=d??`Promise timed out after ${t} milliseconds`,c(h))},t)}).finally(()=>{i.clear(),n&&m&&m.removeEventListener("abort",n)});return i.clear=()=>{a.clearTimeout.call(void 0,u),u=void 0},i}function gt(r,e,t){let o=0,d=r.length;for(;d>0;){const a=Math.trunc(d/2);let m=o+a;t(r[m],e)<=0?(o=++m,d-=a+1):d=a}return o}class _t{#i=[];enqueue(e,t){const{priority:o=0,id:d}=t??{},a={priority:o,id:d,run:e};if(this.size===0||this.#i[this.size-1].priority>=o){this.#i.push(a);return}const m=gt(this.#i,a,(u,n)=>n.priority-u.priority);this.#i.splice(m,0,a)}setPriority(e,t){const o=this.#i.findIndex(a=>a.id===e);if(o===-1)throw new ReferenceError(`No promise function with the id "${e}" exists in the queue.`);const[d]=this.#i.splice(o,1);this.enqueue(d.run,{priority:t,id:e})}dequeue(){return this.#i.shift()?.run}filter(e){return this.#i.filter(t=>t.priority===e.priority).map(t=>t.run)}get size(){return this.#i.length}}class Nt extends bt{#i;#a;#o=0;#p;#f=!1;#v=!1;#l;#I=0;#g=0;#u;#c;#r;#n=[];#s=0;#t;#V;#e=0;#y;#h;#E=1n;#b=new Map;timeout;constructor(e){if(super(),e={carryoverIntervalCount:!1,intervalCap:Number.POSITIVE_INFINITY,interval:0,concurrency:Number.POSITIVE_INFINITY,autoStart:!0,queueClass:_t,strict:!1,...e},!(typeof e.intervalCap=="number"&&e.intervalCap>=1))throw new TypeError(`Expected \`intervalCap\` to be a number from 1 and up, got \`${e.intervalCap?.toString()??""}\` (${typeof e.intervalCap})`);if(e.interval===void 0||!(Number.isFinite(e.interval)&&e.interval>=0))throw new TypeError(`Expected \`interval\` to be a finite number >= 0, got \`${e.interval?.toString()??""}\` (${typeof e.interval})`);if(e.strict&&e.interval===0)throw new TypeError("The `strict` option requires a non-zero `interval`");if(e.strict&&e.intervalCap===Number.POSITIVE_INFINITY)throw new TypeError("The `strict` option requires a finite `intervalCap`");if(this.#i=e.carryoverIntervalCount??e.carryoverConcurrencyCount??!1,this.#a=e.intervalCap===Number.POSITIVE_INFINITY||e.interval===0,this.#p=e.intervalCap,this.#l=e.interval,this.#r=e.strict,this.#t=new e.queueClass,this.#V=e.queueClass,this.concurrency=e.concurrency,e.timeout!==void 0&&!(Number.isFinite(e.timeout)&&e.timeout>0))throw new TypeError(`Expected \`timeout\` to be a positive finite number, got \`${e.timeout}\` (${typeof e.timeout})`);this.timeout=e.timeout,this.#h=e.autoStart===!1,this.#F()}#_(e){for(;this.#s=this.#l)this.#s++;else break}(this.#s>100&&this.#s>this.#n.length/2||this.#s===this.#n.length)&&(this.#n=this.#n.slice(this.#s),this.#s=0)}#L(e){this.#r?this.#n.push(e):this.#o++}#D(){this.#r?this.#n.length>this.#s&&this.#n.pop():this.#o>0&&this.#o--}#w(){return this.#n.length-this.#s}get#O(){return this.#a?!0:this.#r?this.#w()=this.#p){const t=this.#n[this.#s],o=this.#l-(e-t);return this.#T(o),!0}return!1}if(this.#u===void 0){const t=this.#I-e;if(t<0){if(this.#g>0){const o=e-this.#g;if(o{this.#z()},e))}#k(){this.#u&&(clearInterval(this.#u),this.#u=void 0)}#P(){this.#c&&(clearTimeout(this.#c),this.#c=void 0)}#$(){if(this.#t.size===0){if(this.#k(),this.emit("empty"),this.#e===0){if(this.#P(),this.#r&&this.#s>0){const t=Date.now();this.#_(t)}this.emit("idle")}return!1}let e=!1;if(!this.#h){const t=Date.now(),o=!this.#B(t);if(this.#O&&this.#M){const d=this.#t.dequeue();this.#a||(this.#L(t),this.#m()),this.emit("active"),d(),o&&this.#N(),e=!0}}return e}#N(){this.#a||this.#u!==void 0||this.#r||(this.#u=setInterval(()=>{this.#S()},this.#l),this.#I=Date.now()+this.#l)}#S(){this.#r||(this.#o===0&&this.#e===0&&this.#u&&this.#k(),this.#o=this.#i?this.#e:0),this.#x(),this.#m()}#x(){for(;this.#$(););}get concurrency(){return this.#y}set concurrency(e){if(!(typeof e=="number"&&e>=1))throw new TypeError(`Expected \`concurrency\` to be a number from 1 and up, got \`${e}\` (${typeof e})`);this.#y=e,this.#x()}setPriority(e,t){if(typeof t!="number"||!Number.isFinite(t))throw new TypeError(`Expected \`priority\` to be a finite number, got \`${t}\` (${typeof t})`);this.#t.setPriority(e,t)}async add(e,t={}){return t={timeout:this.timeout,...t,id:t.id??(this.#E++).toString()},new Promise((o,d)=>{const a=Symbol(`task-${t.id}`);this.#t.enqueue(async()=>{this.#e++,this.#b.set(a,{id:t.id,priority:t.priority??0,startTime:Date.now(),timeout:t.timeout});let m;try{try{t.signal?.throwIfAborted()}catch(i){throw this.#q(),this.#b.delete(a),i}this.#g=Date.now();let u=e({signal:t.signal});if(t.timeout&&(u=vt(Promise.resolve(u),{milliseconds:t.timeout,message:`Task timed out after ${t.timeout}ms (queue has ${this.#e} running, ${this.#t.size} waiting)`})),t.signal){const{signal:i}=t;u=Promise.race([u,new Promise((s,c)=>{m=()=>{c(i.reason)},i.addEventListener("abort",m,{once:!0})})])}const n=await u;o(n),this.emit("completed",n)}catch(u){d(u),this.emit("error",u)}finally{m&&t.signal?.removeEventListener("abort",m),this.#b.delete(a),queueMicrotask(()=>{this.#U()})}},t),this.emit("add"),this.#$()})}async addAll(e,t){return Promise.all(e.map(async o=>this.add(o,t)))}start(){return this.#h?(this.#h=!1,this.#x(),this):this}pause(){this.#h=!0}clear(){this.#t=new this.#V,this.#k(),this.#C(),this.emit("empty"),this.#e===0&&(this.#P(),this.emit("idle")),this.emit("next")}async onEmpty(){this.#t.size!==0&&await this.#d("empty")}async onSizeLessThan(e){this.#t.sizethis.#t.size{const o=d=>{this.off("error",o),t(d)};this.on("error",o)})}async#d(e,t){return new Promise(o=>{const d=()=>{t&&!t()||(this.off(e,d),o())};this.on(e,d)})}get size(){return this.#t.size}sizeBy(e){return this.#t.filter(e).length}get pending(){return this.#e}get isPaused(){return this.#h}#F(){this.#a||(this.on("add",()=>{this.#t.size>0&&this.#m()}),this.on("next",()=>{this.#m()}))}#m(){this.#a||this.#v||(this.#v=!0,queueMicrotask(()=>{this.#v=!1,this.#C()}))}#q(){this.#a||(this.#D(),this.#m())}#C(){const e=this.#f;if(this.#a||this.#t.size===0){e&&(this.#f=!1,this.emit("rateLimitCleared"));return}let t;if(this.#r){const d=Date.now();this.#_(d),t=this.#w()}else t=this.#o;const o=t>=this.#p;o!==e&&(this.#f=o,this.emit(o?"rateLimit":"rateLimitCleared"))}get isRateLimited(){return this.#f}get isSaturated(){return this.#e===this.#y&&this.#t.size>0||this.isRateLimited&&this.#t.size>0}get runningTasks(){return[...this.#b.values()].map(e=>({...e}))}}export{nt as N,Nt as P,Pt as a}; +//# sourceMappingURL=NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs.map diff --git a/dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs.license b/dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs.license similarity index 100% rename from dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs.license rename to dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs.license diff --git a/dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs.map b/dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs.map similarity index 99% rename from dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs.map rename to dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs.map index c6e2636cc5f18..e38d0e9353b72 100644 --- a/dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs.map +++ b/dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["register","t40","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","mergeModels","createElementId","t","__props","modelValue","useModel","props","formattedValue","computed","formatValue","formattedMax","formattedMin","getReadableDate","value","yyyy","MM","dd","hh","mm","startDate","daysSinceBeginningOfYear","weekNumber","onInput","event","input","time","timezoneOffsetSeconds","inputDateWithTimezone","_ctx","_cache","openBlock","createElementBlock","normalizeClass","createElementVNode","toDisplayString","mergeProps","NcDateTimePickerNative","_export_sfc","t49","NcPasswordField","_sfc_main$1","defineAsyncComponent","__vitePreload","n","ActionGlobalMixin","id","type","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_sfc_render","$props","$setup","$data","$options","_component_NcDateTimePicker","resolveComponent","_component_NcDateTimePickerNative","_component_NcSelect","_component_NcPasswordField","_component_NcColorPicker","_component_NcTextField","args","renderSlot","normalizeStyle","withModifiers","createCommentVNode","createBlock","createVNode","$event","withCtx","NcActionInput","has","prefix","Events","EE","fn","context","once","addListener","emitter","listener","evt","clearEvent","EventEmitter","names","events","name","handlers","i","l","ee","listeners","a1","a2","a3","a4","a5","len","length","j","module","TimeoutError","message","options","getAbortedReason","signal","pTimeout","promise","milliseconds","fallback","customTimers","timer","abortHandler","cancelablePromise","resolve","reject","timeoutError","error","lowerBound","array","comparator","first","count","step","it","PriorityQueue","#queue","run","priority","element","index","a","b","item","PQueue","#carryoverIntervalCount","#isIntervalIgnored","#intervalCount","#intervalCap","#rateLimitedInInterval","#rateLimitFlushScheduled","#interval","#intervalEnd","#lastExecutionTime","#intervalId","#timeoutId","#strict","#strictTicks","#strictTicksStartIndex","#queueClass","#pending","#concurrency","#isPaused","#idAssigner","#runningTasks","#setupRateLimitTracking","#cleanupStrictTicks","now","oldestTick","#consumeIntervalSlot","#rollbackIntervalSlot","#getActiveTicksCount","#doesIntervalAllowAnother","#doesConcurrentAllowAnother","#next","#tryToStartAnother","#onResumeInterval","#onInterval","#initializeIntervalIfNeeded","#isIntervalPausedAt","delay","#createIntervalTimeout","timeSinceLastExecution","#clearIntervalTimer","#clearTimeoutTimer","taskStarted","canInitializeInterval","job","#scheduleRateLimitUpdate","#processQueue","newConcurrency","function_","taskSymbol","eventListener","#rollbackIntervalConsumption","operation","_resolve","result","functions","#updateRateLimitState","#onEvent","limit","handleError","filter","previous","shouldBeRateLimited","task"],"ignoreList":[0,1,2,3,4,5,6],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcDateTimePickerNative-BvtMQDIe.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionInput-BrI5iKHo.mjs","../node_modules/eventemitter3/index.js","../node_modules/p-timeout/index.js","../node_modules/p-queue/dist/lower-bound.js","../node_modules/p-queue/dist/priority-queue.js","../node_modules/p-queue/dist/index.js"],"sourcesContent":["import '../assets/NcDateTimePickerNative-BP6eg8aU.css';\nimport { defineComponent, useModel, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, mergeProps, mergeModels } from \"vue\";\nimport { r as register, x as t40, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t40);\nconst _hoisted_1 = [\"for\"];\nconst _hoisted_2 = [\"id\", \"type\", \"value\", \"min\", \"max\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcDateTimePickerNative\",\n props: /* @__PURE__ */ mergeModels({\n class: { default: void 0 },\n id: { default: () => createElementId() },\n inputClass: { default: \"\" },\n type: { default: \"date\" },\n label: { default: () => t(\"Please choose a date\") },\n min: { default: null },\n max: { default: null },\n hideLabel: { type: Boolean }\n }, {\n \"modelValue\": { default: null },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n const formattedValue = computed(() => modelValue.value ? formatValue(modelValue.value) : \"\");\n const formattedMax = computed(() => props.max ? formatValue(props.max) : void 0);\n const formattedMin = computed(() => props.min ? formatValue(props.min) : void 0);\n function getReadableDate(value) {\n const yyyy = value.getFullYear().toString().padStart(4, \"0\");\n const MM = (value.getMonth() + 1).toString().padStart(2, \"0\");\n const dd = value.getDate().toString().padStart(2, \"0\");\n const hh = value.getHours().toString().padStart(2, \"0\");\n const mm = value.getMinutes().toString().padStart(2, \"0\");\n return { yyyy, MM, dd, hh, mm };\n }\n function formatValue(value) {\n const { yyyy, MM, dd, hh, mm } = getReadableDate(value);\n if (props.type === \"datetime-local\") {\n return `${yyyy}-${MM}-${dd}T${hh}:${mm}`;\n } else if (props.type === \"date\") {\n return `${yyyy}-${MM}-${dd}`;\n } else if (props.type === \"month\") {\n return `${yyyy}-${MM}`;\n } else if (props.type === \"time\") {\n return `${hh}:${mm}`;\n } else if (props.type === \"week\") {\n const startDate = new Date(Number.parseInt(yyyy), 0, 1);\n const daysSinceBeginningOfYear = Math.floor((value.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1e3));\n const weekNumber = Math.ceil(daysSinceBeginningOfYear / 7);\n return `${yyyy}-W${weekNumber}`;\n }\n return \"\";\n }\n function onInput(event) {\n const input = event.target;\n if (!input || isNaN(input.valueAsNumber)) {\n modelValue.value = null;\n } else if (props.type === \"time\") {\n const time = input.value;\n const { yyyy, MM, dd } = getReadableDate(modelValue.value || /* @__PURE__ */ new Date());\n modelValue.value = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n } else if (props.type === \"month\") {\n const MM = (new Date(input.value).getMonth() + 1).toString().padStart(2, \"0\");\n const { yyyy, dd, hh, mm } = getReadableDate(modelValue.value || /* @__PURE__ */ new Date());\n modelValue.value = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n } else {\n const timezoneOffsetSeconds = new Date(input.valueAsNumber).getTimezoneOffset() * 1e3 * 60;\n const inputDateWithTimezone = input.valueAsNumber + timezoneOffsetSeconds;\n modelValue.value = new Date(inputDateWithTimezone);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"native-datetime-picker\", _ctx.$props.class])\n }, [\n createElementVNode(\"label\", {\n class: normalizeClass([\"native-datetime-picker__label\", { \"hidden-visually\": _ctx.hideLabel }]),\n for: _ctx.id\n }, toDisplayString(_ctx.label), 11, _hoisted_1),\n createElementVNode(\"input\", mergeProps({\n id: _ctx.id,\n class: [\"native-datetime-picker__input\", _ctx.inputClass],\n type: _ctx.type,\n value: formattedValue.value,\n min: formattedMin.value,\n max: formattedMax.value\n }, _ctx.$attrs, { onInput }), null, 16, _hoisted_2)\n ], 2);\n };\n }\n});\nconst NcDateTimePickerNative = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-b97e1f7a\"]]);\nexport {\n NcDateTimePickerNative as N\n};\n//# sourceMappingURL=NcDateTimePickerNative-BvtMQDIe.mjs.map\n","import '../assets/NcActionInput-BO4gR6sg.css';\nimport { defineAsyncComponent, resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, normalizeStyle, withModifiers, toDisplayString, createCommentVNode, createBlock, mergeProps, createVNode, withCtx } from \"vue\";\nimport { r as register, l as t49, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcDateTimePickerNative } from \"./NcDateTimePickerNative-BvtMQDIe.mjs\";\nimport { N as NcPasswordField } from \"./NcPasswordField-BOLzDHBJ.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t49);\nconst _sfc_main = {\n name: \"NcActionInput\",\n components: {\n NcDateTimePickerNative,\n NcPasswordField,\n NcTextField: _sfc_main$1,\n // Lazy load components with more than 50kB bundle size impact\n NcColorPicker: defineAsyncComponent(() => import(\"../components/NcColorPicker/index.mjs\")),\n NcDateTimePicker: defineAsyncComponent(() => import(\"../components/NcDateTimePicker/index.mjs\")),\n NcSelect: defineAsyncComponent(() => import(\"../components/NcSelect/index.mjs\"))\n },\n mixins: [ActionGlobalMixin],\n inheritAttrs: false,\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * id attribute of the text input element\n */\n inputId: {\n type: String,\n default: () => \"action-input-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * type attribute of the input field\n */\n type: {\n type: String,\n default: \"text\",\n validator(type) {\n return [\n \"date\",\n \"datetime-local\",\n \"month\",\n \"multiselect\",\n \"number\",\n \"password\",\n \"search\",\n \"tel\",\n \"text\",\n \"time\",\n \"url\",\n \"week\",\n \"color\",\n \"email\"\n ].includes(type);\n }\n },\n /**\n * id attribute for the native date time picker\n */\n idNativeDateTimePicker: {\n type: String,\n default: \"date-time-picker_id\"\n },\n /**\n * Flag to use a native date time picker\n */\n isNativePicker: {\n type: Boolean,\n default: false\n },\n /**\n * The visible input label for accessibility purposes.\n */\n label: {\n type: String,\n default: null\n },\n /**\n * If you want to show the label just above the\n * input field, pass in `true` to this prop.\n */\n labelOutside: {\n type: Boolean,\n default: true\n },\n /**\n * value attribute of the input field\n */\n modelValue: {\n type: [String, Date, Number, Array],\n default: \"\"\n },\n /**\n * disabled state of the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * aria-label attribute of the input field\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Attribute forwarded to the underlying NcPasswordField and NcTextField\n */\n showTrailingButton: {\n type: Boolean,\n default: true\n },\n /**\n * Trailing button label forwarded to the underlying NcTextField\n */\n trailingButtonLabel: {\n type: String,\n default: t(\"Submit\")\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"submit\",\n \"update:modelValue\"\n ],\n computed: {\n isIconUrl() {\n try {\n return new URL(this.icon);\n } catch {\n return false;\n }\n },\n isMultiselectType() {\n return this.type === \"multiselect\";\n },\n nativeDatePickerType() {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n case \"datetime-local\":\n return this.type;\n }\n return false;\n },\n datePickerType() {\n if (!this.isNativePicker) {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n return this.type;\n case \"datetime-local\":\n return \"datetime\";\n }\n }\n return false;\n },\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n }\n },\n methods: {\n // closing datepicker popup on mouseleave = unfocus\n onLeave() {\n if (this.$refs.datetimepicker && this.$refs.datetimepicker.$refs.datepicker) {\n this.$refs.datetimepicker.$refs.datepicker.closePopup();\n }\n },\n onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n } else {\n return false;\n }\n },\n onUpdateModelValue(event) {\n this.$emit(\"update:modelValue\", event);\n }\n }\n};\nconst _hoisted_1 = { class: \"action-input__icon-wrapper\" };\nconst _hoisted_2 = [\"disabled\"];\nconst _hoisted_3 = { class: \"action-input__container\" };\nconst _hoisted_4 = [\"for\"];\nconst _hoisted_5 = { class: \"action-input__input-container\" };\nconst _hoisted_6 = {\n key: 4,\n class: \"action-input__container\"\n};\nconst _hoisted_7 = [\"for\"];\nconst _hoisted_8 = { class: \"action-input__input-container\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcDateTimePicker = resolveComponent(\"NcDateTimePicker\");\n const _component_NcDateTimePickerNative = resolveComponent(\"NcDateTimePickerNative\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n const _component_NcPasswordField = resolveComponent(\"NcPasswordField\");\n const _component_NcColorPicker = resolveComponent(\"NcColorPicker\");\n const _component_NcTextField = resolveComponent(\"NcTextField\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\"action\", [{ \"action--disabled\": $props.disabled }, _ctx.$props.class]])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass([\"action-input\", {\n \"action-input-picker--disabled\": $props.disabled,\n \"action-input--visible-label\": $props.labelOutside && $props.label\n }]),\n onMouseleave: _cache[3] || (_cache[3] = (...args) => $options.onLeave && $options.onLeave(...args))\n }, [\n createElementVNode(\"span\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-input__icon\", [$options.isIconUrl ? \"action-input__icon--url\" : $props.icon]]),\n style: normalizeStyle({ backgroundImage: $options.isIconUrl ? `url(${$props.icon})` : null })\n }, null, 6)\n ], true)\n ]),\n createElementVNode(\"form\", {\n ref: \"form\",\n class: \"action-input__form\",\n disabled: $props.disabled,\n onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.onSubmit && $options.onSubmit(...args), [\"prevent\"]))\n }, [\n createElementVNode(\"div\", _hoisted_3, [\n $props.label && $props.labelOutside && !$props.isNativePicker ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: normalizeClass([\"action-input__text-label\", { \"action-input__text-label--hidden\": !$props.labelOutside }]),\n for: $props.inputId\n }, toDisplayString($props.label), 11, _hoisted_4)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_5, [\n $options.datePickerType ? (openBlock(), createBlock(_component_NcDateTimePicker, mergeProps({\n key: 0,\n ref: \"datetimepicker\",\n modelValue: $props.modelValue,\n style: { \"z-index\": \"99999999999\" },\n placeholder: _ctx.text,\n disabled: $props.disabled,\n type: $options.datePickerType,\n inputClass: [\"mx-input\", { focusable: $options.isFocusable }],\n class: \"action-input__datetimepicker\",\n appendToBody: \"\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"type\", \"inputClass\", \"onUpdate:modelValue\"])) : $props.isNativePicker ? (openBlock(), createBlock(_component_NcDateTimePickerNative, mergeProps({\n key: 1,\n id: $props.idNativeDateTimePicker,\n modelValue: $props.modelValue,\n label: $props.label,\n type: $options.nativeDatePickerType,\n inputClass: { focusable: $options.isFocusable },\n class: \"action-input__datetimepicker\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"id\", \"modelValue\", \"label\", \"type\", \"inputClass\", \"onUpdate:modelValue\"])) : $options.isMultiselectType ? (openBlock(), createBlock(_component_NcSelect, mergeProps({\n key: 2,\n modelValue: $props.modelValue,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n appendToBody: false,\n inputClass: { focusable: $options.isFocusable },\n class: \"action-input__multi\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"inputClass\", \"onUpdate:modelValue\"])) : $props.type === \"password\" ? (openBlock(), createBlock(_component_NcPasswordField, mergeProps({\n key: 3,\n id: $props.inputId,\n modelValue: $props.modelValue,\n label: $props.label,\n labelOutside: !$props.label || $props.labelOutside,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n inputClass: { focusable: $options.isFocusable },\n showTrailingButton: $props.showTrailingButton && !$props.disabled\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"id\", \"modelValue\", \"label\", \"labelOutside\", \"placeholder\", \"disabled\", \"inputClass\", \"showTrailingButton\", \"onUpdate:modelValue\"])) : $props.type === \"color\" ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n $props.label && $props.type === \"color\" ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: normalizeClass([\"action-input__text-label\", { \"action-input__text-label--hidden\": !$props.labelOutside }]),\n for: $props.inputId\n }, toDisplayString($props.label), 11, _hoisted_7)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_8, [\n createVNode(_component_NcColorPicker, mergeProps({\n id: \"inputId\",\n modelValue: $props.modelValue,\n class: \"colorpicker__trigger\"\n }, _ctx.$attrs, {\n \"onUpdate:modelValue\": $options.onUpdateModelValue,\n onSubmit: _cache[0] || (_cache[0] = ($event) => _ctx.$refs.form.requestSubmit())\n }), {\n default: withCtx(() => [\n createElementVNode(\"button\", {\n class: normalizeClass([\"colorpicker__preview\", { focusable: $options.isFocusable }]),\n style: normalizeStyle({ \"background-color\": $props.modelValue })\n }, null, 6)\n ]),\n _: 1\n }, 16, [\"modelValue\", \"onUpdate:modelValue\"])\n ])\n ])) : (openBlock(), createBlock(_component_NcTextField, mergeProps({\n key: 5,\n id: $props.inputId,\n modelValue: $props.modelValue,\n label: $props.label,\n labelOutside: !$props.label || $props.labelOutside,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n inputClass: { focusable: $options.isFocusable },\n type: $props.type,\n trailingButtonIcon: \"arrowRight\",\n trailingButtonLabel: $props.trailingButtonLabel,\n showTrailingButton: $props.showTrailingButton && !$props.disabled\n }, _ctx.$attrs, {\n onTrailingButtonClick: _cache[1] || (_cache[1] = ($event) => _ctx.$refs.form.requestSubmit()),\n \"onUpdate:modelValue\": $options.onUpdateModelValue\n }), null, 16, [\"id\", \"modelValue\", \"label\", \"labelOutside\", \"placeholder\", \"disabled\", \"inputClass\", \"type\", \"trailingButtonLabel\", \"showTrailingButton\", \"onUpdate:modelValue\"]))\n ])\n ])\n ], 40, _hoisted_2)\n ], 34)\n ], 2);\n}\nconst NcActionInput = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3a83acfa\"]]);\nexport {\n NcActionInput as N\n};\n//# sourceMappingURL=NcActionInput-BrI5iKHo.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export class TimeoutError extends Error {\n\tname = 'TimeoutError';\n\n\tconstructor(message, options) {\n\t\tsuper(message, options);\n\t\tError.captureStackTrace?.(this, TimeoutError);\n\t}\n}\n\nconst getAbortedReason = signal => signal.reason ?? new DOMException('This operation was aborted.', 'AbortError');\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t\tsignal,\n\t} = options;\n\n\tlet timer;\n\tlet abortHandler;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (signal?.aborted) {\n\t\t\treject(getAbortedReason(signal));\n\t\t\treturn;\n\t\t}\n\n\t\tif (signal) {\n\t\t\tabortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\t// Use .then() instead of async IIFE to preserve stack traces\n\t\t// eslint-disable-next-line promise/prefer-await-to-then, promise/prefer-catch\n\t\tpromise.then(resolve, reject);\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\t});\n\n\t// eslint-disable-next-line promise/prefer-await-to-then\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t\tif (abortHandler && signal) {\n\t\t\tsignal.removeEventListener('abort', abortHandler);\n\t\t}\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n const { priority = 0, id, } = options ?? {};\n const element = {\n priority,\n id,\n run,\n };\n if (this.size === 0 || this.#queue[this.size - 1].priority >= priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n const index = this.#queue.findIndex((element) => element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverIntervalCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #rateLimitedInInterval = false;\n #rateLimitFlushScheduled = false;\n #interval;\n #intervalEnd = 0;\n #lastExecutionTime = 0;\n #intervalId;\n #timeoutId;\n #strict;\n // Circular buffer implementation for better performance\n #strictTicks = [];\n #strictTicksStartIndex = 0;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n // Use to assign a unique identifier to a promise function, if not explicitly specified\n #idAssigner = 1n;\n // Track currently running tasks for debugging\n #runningTasks = new Map();\n /**\n Get or set the default timeout for all tasks. Can be changed at runtime.\n\n Operations will throw a `TimeoutError` if they don't complete within the specified time.\n\n The timeout begins when the operation is dequeued and starts execution, not while it's waiting in the queue.\n\n @example\n ```\n const queue = new PQueue({timeout: 5000});\n\n // Change timeout for all future tasks\n queue.timeout = 10000;\n ```\n */\n timeout;\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverIntervalCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n strict: false,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n if (options.strict && options.interval === 0) {\n throw new TypeError('The `strict` option requires a non-zero `interval`');\n }\n if (options.strict && options.intervalCap === Number.POSITIVE_INFINITY) {\n throw new TypeError('The `strict` option requires a finite `intervalCap`');\n }\n // TODO: Remove this fallback in the next major version\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.#carryoverIntervalCount = options.carryoverIntervalCount ?? options.carryoverConcurrencyCount ?? false;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#strict = options.strict;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n if (options.timeout !== undefined && !(Number.isFinite(options.timeout) && options.timeout > 0)) {\n throw new TypeError(`Expected \\`timeout\\` to be a positive finite number, got \\`${options.timeout}\\` (${typeof options.timeout})`);\n }\n this.timeout = options.timeout;\n this.#isPaused = options.autoStart === false;\n this.#setupRateLimitTracking();\n }\n #cleanupStrictTicks(now) {\n // Remove ticks outside the current interval window using circular buffer approach\n while (this.#strictTicksStartIndex < this.#strictTicks.length) {\n const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];\n if (oldestTick !== undefined && now - oldestTick >= this.#interval) {\n this.#strictTicksStartIndex++;\n }\n else {\n break;\n }\n }\n // Compact the array when it becomes inefficient or fully consumed\n // Compact when: (start index is large AND more than half wasted) OR all ticks expired\n const shouldCompact = (this.#strictTicksStartIndex > 100 && this.#strictTicksStartIndex > this.#strictTicks.length / 2)\n || this.#strictTicksStartIndex === this.#strictTicks.length;\n if (shouldCompact) {\n this.#strictTicks = this.#strictTicks.slice(this.#strictTicksStartIndex);\n this.#strictTicksStartIndex = 0;\n }\n }\n // Helper methods for interval consumption\n #consumeIntervalSlot(now) {\n if (this.#strict) {\n this.#strictTicks.push(now);\n }\n else {\n this.#intervalCount++;\n }\n }\n #rollbackIntervalSlot() {\n if (this.#strict) {\n // Pop from the end of the actual data (not from start index)\n if (this.#strictTicks.length > this.#strictTicksStartIndex) {\n this.#strictTicks.pop();\n }\n }\n else if (this.#intervalCount > 0) {\n this.#intervalCount--;\n }\n }\n #getActiveTicksCount() {\n return this.#strictTicks.length - this.#strictTicksStartIndex;\n }\n get #doesIntervalAllowAnother() {\n if (this.#isIntervalIgnored) {\n return true;\n }\n if (this.#strict) {\n // Cleanup already done by #isIntervalPausedAt before this is called\n return this.#getActiveTicksCount() < this.#intervalCap;\n }\n return this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n if (this.#pending === 0) {\n this.emit('pendingZero');\n }\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n // Clear timeout ID before processing to prevent race condition\n // Must clear before #onInterval to allow new timeouts to be scheduled\n this.#timeoutId = undefined;\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n }\n #isIntervalPausedAt(now) {\n // Strict mode: check if we need to wait for oldest tick to age out\n if (this.#strict) {\n this.#cleanupStrictTicks(now);\n // If at capacity, need to wait for oldest tick to age out\n const activeTicksCount = this.#getActiveTicksCount();\n if (activeTicksCount >= this.#intervalCap) {\n const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];\n // After cleanup, remaining ticks are within interval, so delay is always > 0\n const delay = this.#interval - (now - oldestTick);\n this.#createIntervalTimeout(delay);\n return true;\n }\n return false;\n }\n // Fixed window mode (original logic)\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // If the interval has expired while idle, check if we should enforce the interval\n // from the last task execution. This ensures proper spacing between tasks even\n // when the queue becomes empty and then new tasks are added.\n if (this.#lastExecutionTime > 0) {\n const timeSinceLastExecution = now - this.#lastExecutionTime;\n if (timeSinceLastExecution < this.#interval) {\n // Not enough time has passed since the last task execution\n this.#createIntervalTimeout(this.#interval - timeSinceLastExecution);\n return true;\n }\n }\n // Enough time has passed or no previous execution, allow execution\n this.#intervalCount = (this.#carryoverIntervalCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n this.#createIntervalTimeout(delay);\n return true;\n }\n }\n return false;\n }\n #createIntervalTimeout(delay) {\n if (this.#timeoutId !== undefined) {\n return;\n }\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n #clearIntervalTimer() {\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n }\n #clearTimeoutTimer() {\n if (this.#timeoutId) {\n clearTimeout(this.#timeoutId);\n this.#timeoutId = undefined;\n }\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n this.#clearIntervalTimer();\n this.emit('empty');\n if (this.#pending === 0) {\n // Clear timeout as well when completely idle\n this.#clearTimeoutTimer();\n // Compact strict ticks when idle to free memory\n if (this.#strict && this.#strictTicksStartIndex > 0) {\n const now = Date.now();\n this.#cleanupStrictTicks(now);\n }\n this.emit('idle');\n }\n return false;\n }\n let taskStarted = false;\n if (!this.#isPaused) {\n const now = Date.now();\n const canInitializeInterval = !this.#isIntervalPausedAt(now);\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!this.#isIntervalIgnored) {\n this.#consumeIntervalSlot(now);\n this.#scheduleRateLimitUpdate();\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n taskStarted = true;\n }\n }\n return taskStarted;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n // Strict mode uses timeouts instead of interval timers\n if (this.#strict) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n // Non-strict mode uses interval timers and intervalCount\n if (!this.#strict) {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n this.#clearIntervalTimer();\n }\n this.#intervalCount = this.#carryoverIntervalCount ? this.#pending : 0;\n }\n this.#processQueue();\n this.#scheduleRateLimitUpdate();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n /**\n Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.\n\n For example, this can be used to prioritize a promise function to run earlier.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 0, id: '🦀'});\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦄', {priority: 1});\n\n queue.setPriority('🦀', 2);\n ```\n\n In this case, the promise function with `id: '🦀'` runs second.\n\n You can also deprioritize a promise function to delay its execution:\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 1, id: '🦀'});\n queue.add(async () => '🦄');\n queue.add(async () => '🦄', {priority: 0});\n\n queue.setPriority('🦀', -1);\n ```\n Here, the promise function with `id: '🦀'` executes last.\n */\n setPriority(id, priority) {\n if (typeof priority !== 'number' || !Number.isFinite(priority)) {\n throw new TypeError(`Expected \\`priority\\` to be a finite number, got \\`${priority}\\` (${typeof priority})`);\n }\n this.#queue.setPriority(id, priority);\n }\n async add(function_, options = {}) {\n // Create a copy to avoid mutating the original options object\n options = {\n timeout: this.timeout,\n ...options,\n // Assign unique ID if not provided\n id: options.id ?? (this.#idAssigner++).toString(),\n };\n return new Promise((resolve, reject) => {\n // Create a unique symbol for tracking this task\n const taskSymbol = Symbol(`task-${options.id}`);\n this.#queue.enqueue(async () => {\n this.#pending++;\n // Track this running task\n this.#runningTasks.set(taskSymbol, {\n id: options.id,\n priority: options.priority ?? 0, // Match priority-queue default\n startTime: Date.now(),\n timeout: options.timeout,\n });\n let eventListener;\n try {\n // Check abort signal - if aborted, need to decrement the counter\n // that was incremented in tryToStartAnother\n try {\n options.signal?.throwIfAborted();\n }\n catch (error) {\n this.#rollbackIntervalConsumption();\n // Clean up tracking before throwing\n this.#runningTasks.delete(taskSymbol);\n throw error;\n }\n this.#lastExecutionTime = Date.now();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), {\n milliseconds: options.timeout,\n message: `Task timed out after ${options.timeout}ms (queue has ${this.#pending} running, ${this.#queue.size} waiting)`,\n });\n }\n if (options.signal) {\n const { signal } = options;\n operation = Promise.race([operation, new Promise((_resolve, reject) => {\n eventListener = () => {\n reject(signal.reason);\n };\n signal.addEventListener('abort', eventListener, { once: true });\n })]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n reject(error);\n this.emit('error', error);\n }\n finally {\n // Clean up abort event listener\n if (eventListener) {\n options.signal?.removeEventListener('abort', eventListener);\n }\n // Remove from running tasks\n this.#runningTasks.delete(taskSymbol);\n // Use queueMicrotask to prevent deep recursion while maintaining timing\n queueMicrotask(() => {\n this.#next();\n });\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n // Clear interval timer since queue is now empty (consistent with #tryToStartAnother)\n this.#clearIntervalTimer();\n // Note: We preserve strict mode rate-limiting state (ticks and timeout)\n // because clear() only clears queued tasks, not rate limit history.\n // This ensures that rate limits are still enforced after clearing the queue.\n // Note: We don't clear #runningTasks as those tasks are still running\n // They will be removed when they complete in the finally block\n // Force synchronous update since clear() should have immediate effect\n this.#updateRateLimitState();\n // Emit events so waiters (onEmpty, onIdle, onSizeLessThan) can resolve\n this.emit('empty');\n if (this.#pending === 0) {\n this.#clearTimeoutTimer();\n this.emit('idle');\n }\n this.emit('next');\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n /**\n The difference with `.onIdle` is that `.onPendingZero` only waits for currently running tasks to finish, ignoring queued tasks.\n\n @returns A promise that settles when all currently running tasks have completed; `queue.pending === 0`.\n */\n async onPendingZero() {\n if (this.#pending === 0) {\n return;\n }\n await this.#onEvent('pendingZero');\n }\n /**\n @returns A promise that settles when the queue becomes rate-limited due to intervalCap.\n */\n async onRateLimit() {\n if (this.isRateLimited) {\n return;\n }\n await this.#onEvent('rateLimit');\n }\n /**\n @returns A promise that settles when the queue is no longer rate-limited.\n */\n async onRateLimitCleared() {\n if (!this.isRateLimited) {\n return;\n }\n await this.#onEvent('rateLimitCleared');\n }\n /**\n @returns A promise that rejects when any task in the queue errors.\n\n Use with `Promise.race([queue.onError(), queue.onIdle()])` to fail fast on the first error while still resolving normally when the queue goes idle.\n\n Important: The promise returned by `add()` still rejects. You must handle each `add()` promise (for example, `.catch(() => {})`) to avoid unhandled rejections.\n\n @example\n ```\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n queue.add(() => fetchData(1)).catch(() => {});\n queue.add(() => fetchData(2)).catch(() => {});\n queue.add(() => fetchData(3)).catch(() => {});\n\n // Stop processing on first error\n try {\n await Promise.race([\n queue.onError(),\n queue.onIdle()\n ]);\n } catch (error) {\n queue.pause(); // Stop processing remaining tasks\n console.error('Queue failed:', error);\n }\n ```\n */\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n onError() {\n return new Promise((_resolve, reject) => {\n const handleError = (error) => {\n this.off('error', handleError);\n reject(error);\n };\n this.on('error', handleError);\n });\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n #setupRateLimitTracking() {\n // Only schedule updates when rate limiting is enabled\n if (this.#isIntervalIgnored) {\n return;\n }\n // Wire up to lifecycle events that affect rate limit state\n // Only 'add' and 'next' can actually change rate limit state\n this.on('add', () => {\n if (this.#queue.size > 0) {\n this.#scheduleRateLimitUpdate();\n }\n });\n this.on('next', () => {\n this.#scheduleRateLimitUpdate();\n });\n }\n #scheduleRateLimitUpdate() {\n // Skip if rate limiting is not enabled or already scheduled\n if (this.#isIntervalIgnored || this.#rateLimitFlushScheduled) {\n return;\n }\n this.#rateLimitFlushScheduled = true;\n queueMicrotask(() => {\n this.#rateLimitFlushScheduled = false;\n this.#updateRateLimitState();\n });\n }\n #rollbackIntervalConsumption() {\n if (this.#isIntervalIgnored) {\n return;\n }\n this.#rollbackIntervalSlot();\n this.#scheduleRateLimitUpdate();\n }\n #updateRateLimitState() {\n const previous = this.#rateLimitedInInterval;\n // Early exit if rate limiting is disabled or queue is empty\n if (this.#isIntervalIgnored || this.#queue.size === 0) {\n if (previous) {\n this.#rateLimitedInInterval = false;\n this.emit('rateLimitCleared');\n }\n return;\n }\n // Get the current count based on mode\n let count;\n if (this.#strict) {\n const now = Date.now();\n this.#cleanupStrictTicks(now);\n count = this.#getActiveTicksCount();\n }\n else {\n count = this.#intervalCount;\n }\n const shouldBeRateLimited = count >= this.#intervalCap;\n if (shouldBeRateLimited !== previous) {\n this.#rateLimitedInInterval = shouldBeRateLimited;\n this.emit(shouldBeRateLimited ? 'rateLimit' : 'rateLimitCleared');\n }\n }\n /**\n Whether the queue is currently rate-limited due to intervalCap.\n */\n get isRateLimited() {\n return this.#rateLimitedInInterval;\n }\n /**\n Whether the queue is saturated. Returns `true` when:\n - All concurrency slots are occupied and tasks are waiting, OR\n - The queue is rate-limited and tasks are waiting\n\n Useful for detecting backpressure and potential hanging tasks.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n // Backpressure handling\n if (queue.isSaturated) {\n console.log('Queue is saturated, waiting for capacity...');\n await queue.onSizeLessThan(queue.concurrency);\n }\n\n // Monitoring for stuck tasks\n setInterval(() => {\n if (queue.isSaturated) {\n console.warn(`Queue saturated: ${queue.pending} running, ${queue.size} waiting`);\n }\n }, 60000);\n ```\n */\n get isSaturated() {\n return (this.#pending === this.#concurrency && this.#queue.size > 0)\n || (this.isRateLimited && this.#queue.size > 0);\n }\n /**\n The tasks currently being executed. Each task includes its `id`, `priority`, `startTime`, and `timeout` (if set).\n\n Returns an array of task info objects.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n // Add tasks with IDs for better debugging\n queue.add(() => fetchUser(123), {id: 'user-123'});\n queue.add(() => fetchPosts(456), {id: 'posts-456', priority: 1});\n\n // Check what's running\n console.log(queue.runningTasks);\n // => [{\n // id: 'user-123',\n // priority: 0,\n // startTime: 1759253001716,\n // timeout: undefined\n // }, {\n // id: 'posts-456',\n // priority: 1,\n // startTime: 1759253001916,\n // timeout: undefined\n // }]\n ```\n */\n get runningTasks() {\n // Return fresh array with fresh objects to prevent mutations\n return [...this.#runningTasks.values()].map(task => ({ ...task }));\n }\n}\n/**\nError thrown when a task times out.\n\n@example\n```\nimport PQueue, {TimeoutError} from 'p-queue';\n\nconst queue = new PQueue({timeout: 1000});\n\ntry {\n await queue.add(() => someTask());\n} catch (error) {\n if (error instanceof TimeoutError) {\n console.log('Task timed out');\n }\n}\n```\n*/\nexport { TimeoutError } from 'p-timeout';\n"],"file":"NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["register","t40","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","mergeModels","createElementId","t","__props","modelValue","useModel","props","formattedValue","computed","formatValue","formattedMax","formattedMin","getReadableDate","value","yyyy","MM","dd","hh","mm","startDate","daysSinceBeginningOfYear","weekNumber","onInput","event","input","time","timezoneOffsetSeconds","inputDateWithTimezone","_ctx","_cache","openBlock","createElementBlock","normalizeClass","createElementVNode","toDisplayString","mergeProps","NcDateTimePickerNative","_export_sfc","t49","NcPasswordField","_sfc_main$1","defineAsyncComponent","__vitePreload","n","ActionGlobalMixin","id","type","_hoisted_3","_hoisted_4","_hoisted_5","_hoisted_6","_hoisted_7","_hoisted_8","_sfc_render","$props","$setup","$data","$options","_component_NcDateTimePicker","resolveComponent","_component_NcDateTimePickerNative","_component_NcSelect","_component_NcPasswordField","_component_NcColorPicker","_component_NcTextField","args","renderSlot","normalizeStyle","withModifiers","createCommentVNode","createBlock","createVNode","$event","withCtx","NcActionInput","has","prefix","Events","EE","fn","context","once","addListener","emitter","listener","evt","clearEvent","EventEmitter","names","events","name","handlers","i","l","ee","listeners","a1","a2","a3","a4","a5","len","length","j","module","TimeoutError","message","options","getAbortedReason","signal","pTimeout","promise","milliseconds","fallback","customTimers","timer","abortHandler","cancelablePromise","resolve","reject","timeoutError","error","lowerBound","array","comparator","first","count","step","it","PriorityQueue","#queue","run","priority","element","index","a","b","item","PQueue","#carryoverIntervalCount","#isIntervalIgnored","#intervalCount","#intervalCap","#rateLimitedInInterval","#rateLimitFlushScheduled","#interval","#intervalEnd","#lastExecutionTime","#intervalId","#timeoutId","#strict","#strictTicks","#strictTicksStartIndex","#queueClass","#pending","#concurrency","#isPaused","#idAssigner","#runningTasks","#setupRateLimitTracking","#cleanupStrictTicks","now","oldestTick","#consumeIntervalSlot","#rollbackIntervalSlot","#getActiveTicksCount","#doesIntervalAllowAnother","#doesConcurrentAllowAnother","#next","#tryToStartAnother","#onResumeInterval","#onInterval","#initializeIntervalIfNeeded","#isIntervalPausedAt","delay","#createIntervalTimeout","timeSinceLastExecution","#clearIntervalTimer","#clearTimeoutTimer","taskStarted","canInitializeInterval","job","#scheduleRateLimitUpdate","#processQueue","newConcurrency","function_","taskSymbol","eventListener","#rollbackIntervalConsumption","operation","_resolve","result","functions","#updateRateLimitState","#onEvent","limit","handleError","filter","previous","shouldBeRateLimited","task"],"ignoreList":[0,1,2,3,4,5,6],"sources":["../node_modules/@nextcloud/vue/dist/chunks/NcDateTimePickerNative-BvtMQDIe.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcActionInput-BrI5iKHo.mjs","../node_modules/eventemitter3/index.js","../node_modules/p-timeout/index.js","../node_modules/p-queue/dist/lower-bound.js","../node_modules/p-queue/dist/priority-queue.js","../node_modules/p-queue/dist/index.js"],"sourcesContent":["import '../assets/NcDateTimePickerNative-BP6eg8aU.css';\nimport { defineComponent, useModel, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, mergeProps, mergeModels } from \"vue\";\nimport { r as register, x as t40, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t40);\nconst _hoisted_1 = [\"for\"];\nconst _hoisted_2 = [\"id\", \"type\", \"value\", \"min\", \"max\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcDateTimePickerNative\",\n props: /* @__PURE__ */ mergeModels({\n class: { default: void 0 },\n id: { default: () => createElementId() },\n inputClass: { default: \"\" },\n type: { default: \"date\" },\n label: { default: () => t(\"Please choose a date\") },\n min: { default: null },\n max: { default: null },\n hideLabel: { type: Boolean }\n }, {\n \"modelValue\": { default: null },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n const formattedValue = computed(() => modelValue.value ? formatValue(modelValue.value) : \"\");\n const formattedMax = computed(() => props.max ? formatValue(props.max) : void 0);\n const formattedMin = computed(() => props.min ? formatValue(props.min) : void 0);\n function getReadableDate(value) {\n const yyyy = value.getFullYear().toString().padStart(4, \"0\");\n const MM = (value.getMonth() + 1).toString().padStart(2, \"0\");\n const dd = value.getDate().toString().padStart(2, \"0\");\n const hh = value.getHours().toString().padStart(2, \"0\");\n const mm = value.getMinutes().toString().padStart(2, \"0\");\n return { yyyy, MM, dd, hh, mm };\n }\n function formatValue(value) {\n const { yyyy, MM, dd, hh, mm } = getReadableDate(value);\n if (props.type === \"datetime-local\") {\n return `${yyyy}-${MM}-${dd}T${hh}:${mm}`;\n } else if (props.type === \"date\") {\n return `${yyyy}-${MM}-${dd}`;\n } else if (props.type === \"month\") {\n return `${yyyy}-${MM}`;\n } else if (props.type === \"time\") {\n return `${hh}:${mm}`;\n } else if (props.type === \"week\") {\n const startDate = new Date(Number.parseInt(yyyy), 0, 1);\n const daysSinceBeginningOfYear = Math.floor((value.getTime() - startDate.getTime()) / (24 * 60 * 60 * 1e3));\n const weekNumber = Math.ceil(daysSinceBeginningOfYear / 7);\n return `${yyyy}-W${weekNumber}`;\n }\n return \"\";\n }\n function onInput(event) {\n const input = event.target;\n if (!input || isNaN(input.valueAsNumber)) {\n modelValue.value = null;\n } else if (props.type === \"time\") {\n const time = input.value;\n const { yyyy, MM, dd } = getReadableDate(modelValue.value || /* @__PURE__ */ new Date());\n modelValue.value = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${time}`);\n } else if (props.type === \"month\") {\n const MM = (new Date(input.value).getMonth() + 1).toString().padStart(2, \"0\");\n const { yyyy, dd, hh, mm } = getReadableDate(modelValue.value || /* @__PURE__ */ new Date());\n modelValue.value = /* @__PURE__ */ new Date(`${yyyy}-${MM}-${dd}T${hh}:${mm}`);\n } else {\n const timezoneOffsetSeconds = new Date(input.valueAsNumber).getTimezoneOffset() * 1e3 * 60;\n const inputDateWithTimezone = input.valueAsNumber + timezoneOffsetSeconds;\n modelValue.value = new Date(inputDateWithTimezone);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"native-datetime-picker\", _ctx.$props.class])\n }, [\n createElementVNode(\"label\", {\n class: normalizeClass([\"native-datetime-picker__label\", { \"hidden-visually\": _ctx.hideLabel }]),\n for: _ctx.id\n }, toDisplayString(_ctx.label), 11, _hoisted_1),\n createElementVNode(\"input\", mergeProps({\n id: _ctx.id,\n class: [\"native-datetime-picker__input\", _ctx.inputClass],\n type: _ctx.type,\n value: formattedValue.value,\n min: formattedMin.value,\n max: formattedMax.value\n }, _ctx.$attrs, { onInput }), null, 16, _hoisted_2)\n ], 2);\n };\n }\n});\nconst NcDateTimePickerNative = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-b97e1f7a\"]]);\nexport {\n NcDateTimePickerNative as N\n};\n//# sourceMappingURL=NcDateTimePickerNative-BvtMQDIe.mjs.map\n","import '../assets/NcActionInput-BO4gR6sg.css';\nimport { defineAsyncComponent, resolveComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, normalizeStyle, withModifiers, toDisplayString, createCommentVNode, createBlock, mergeProps, createVNode, withCtx } from \"vue\";\nimport { r as register, l as t49, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { A as ActionGlobalMixin } from \"./actionGlobal-BZFdtdJL.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcDateTimePickerNative } from \"./NcDateTimePickerNative-BvtMQDIe.mjs\";\nimport { N as NcPasswordField } from \"./NcPasswordField-BOLzDHBJ.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t49);\nconst _sfc_main = {\n name: \"NcActionInput\",\n components: {\n NcDateTimePickerNative,\n NcPasswordField,\n NcTextField: _sfc_main$1,\n // Lazy load components with more than 50kB bundle size impact\n NcColorPicker: defineAsyncComponent(() => import(\"../components/NcColorPicker/index.mjs\")),\n NcDateTimePicker: defineAsyncComponent(() => import(\"../components/NcDateTimePicker/index.mjs\")),\n NcSelect: defineAsyncComponent(() => import(\"../components/NcSelect/index.mjs\"))\n },\n mixins: [ActionGlobalMixin],\n inheritAttrs: false,\n props: {\n /**\n * id attribute of the checkbox element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * id attribute of the text input element\n */\n inputId: {\n type: String,\n default: () => \"action-input-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Icon to show with the action, can be either a CSS class or an URL\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * type attribute of the input field\n */\n type: {\n type: String,\n default: \"text\",\n validator(type) {\n return [\n \"date\",\n \"datetime-local\",\n \"month\",\n \"multiselect\",\n \"number\",\n \"password\",\n \"search\",\n \"tel\",\n \"text\",\n \"time\",\n \"url\",\n \"week\",\n \"color\",\n \"email\"\n ].includes(type);\n }\n },\n /**\n * id attribute for the native date time picker\n */\n idNativeDateTimePicker: {\n type: String,\n default: \"date-time-picker_id\"\n },\n /**\n * Flag to use a native date time picker\n */\n isNativePicker: {\n type: Boolean,\n default: false\n },\n /**\n * The visible input label for accessibility purposes.\n */\n label: {\n type: String,\n default: null\n },\n /**\n * If you want to show the label just above the\n * input field, pass in `true` to this prop.\n */\n labelOutside: {\n type: Boolean,\n default: true\n },\n /**\n * value attribute of the input field\n */\n modelValue: {\n type: [String, Date, Number, Array],\n default: \"\"\n },\n /**\n * disabled state of the input field\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * aria-label attribute of the input field\n */\n ariaLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Attribute forwarded to the underlying NcPasswordField and NcTextField\n */\n showTrailingButton: {\n type: Boolean,\n default: true\n },\n /**\n * Trailing button label forwarded to the underlying NcTextField\n */\n trailingButtonLabel: {\n type: String,\n default: t(\"Submit\")\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"submit\",\n \"update:modelValue\"\n ],\n computed: {\n isIconUrl() {\n try {\n return new URL(this.icon);\n } catch {\n return false;\n }\n },\n isMultiselectType() {\n return this.type === \"multiselect\";\n },\n nativeDatePickerType() {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n case \"week\":\n case \"datetime-local\":\n return this.type;\n }\n return false;\n },\n datePickerType() {\n if (!this.isNativePicker) {\n switch (this.type) {\n case \"date\":\n case \"month\":\n case \"time\":\n return this.type;\n case \"datetime-local\":\n return \"datetime\";\n }\n }\n return false;\n },\n /**\n * determines if the action is focusable\n *\n * @return {boolean} is the action focusable ?\n */\n isFocusable() {\n return !this.disabled;\n }\n },\n methods: {\n // closing datepicker popup on mouseleave = unfocus\n onLeave() {\n if (this.$refs.datetimepicker && this.$refs.datetimepicker.$refs.datepicker) {\n this.$refs.datetimepicker.$refs.datepicker.closePopup();\n }\n },\n onSubmit(event) {\n event.preventDefault();\n event.stopPropagation();\n if (!this.disabled) {\n this.$emit(\"submit\", event);\n } else {\n return false;\n }\n },\n onUpdateModelValue(event) {\n this.$emit(\"update:modelValue\", event);\n }\n }\n};\nconst _hoisted_1 = { class: \"action-input__icon-wrapper\" };\nconst _hoisted_2 = [\"disabled\"];\nconst _hoisted_3 = { class: \"action-input__container\" };\nconst _hoisted_4 = [\"for\"];\nconst _hoisted_5 = { class: \"action-input__input-container\" };\nconst _hoisted_6 = {\n key: 4,\n class: \"action-input__container\"\n};\nconst _hoisted_7 = [\"for\"];\nconst _hoisted_8 = { class: \"action-input__input-container\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcDateTimePicker = resolveComponent(\"NcDateTimePicker\");\n const _component_NcDateTimePickerNative = resolveComponent(\"NcDateTimePickerNative\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n const _component_NcPasswordField = resolveComponent(\"NcPasswordField\");\n const _component_NcColorPicker = resolveComponent(\"NcColorPicker\");\n const _component_NcTextField = resolveComponent(\"NcTextField\");\n return openBlock(), createElementBlock(\"li\", {\n class: normalizeClass([\"action\", [{ \"action--disabled\": $props.disabled }, _ctx.$props.class]])\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass([\"action-input\", {\n \"action-input-picker--disabled\": $props.disabled,\n \"action-input--visible-label\": $props.labelOutside && $props.label\n }]),\n onMouseleave: _cache[3] || (_cache[3] = (...args) => $options.onLeave && $options.onLeave(...args))\n }, [\n createElementVNode(\"span\", _hoisted_1, [\n renderSlot(_ctx.$slots, \"icon\", {}, () => [\n createElementVNode(\"span\", {\n \"aria-hidden\": \"true\",\n class: normalizeClass([\"action-input__icon\", [$options.isIconUrl ? \"action-input__icon--url\" : $props.icon]]),\n style: normalizeStyle({ backgroundImage: $options.isIconUrl ? `url(${$props.icon})` : null })\n }, null, 6)\n ], true)\n ]),\n createElementVNode(\"form\", {\n ref: \"form\",\n class: \"action-input__form\",\n disabled: $props.disabled,\n onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.onSubmit && $options.onSubmit(...args), [\"prevent\"]))\n }, [\n createElementVNode(\"div\", _hoisted_3, [\n $props.label && $props.labelOutside && !$props.isNativePicker ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: normalizeClass([\"action-input__text-label\", { \"action-input__text-label--hidden\": !$props.labelOutside }]),\n for: $props.inputId\n }, toDisplayString($props.label), 11, _hoisted_4)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_5, [\n $options.datePickerType ? (openBlock(), createBlock(_component_NcDateTimePicker, mergeProps({\n key: 0,\n ref: \"datetimepicker\",\n modelValue: $props.modelValue,\n style: { \"z-index\": \"99999999999\" },\n placeholder: _ctx.text,\n disabled: $props.disabled,\n type: $options.datePickerType,\n inputClass: [\"mx-input\", { focusable: $options.isFocusable }],\n class: \"action-input__datetimepicker\",\n appendToBody: \"\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"type\", \"inputClass\", \"onUpdate:modelValue\"])) : $props.isNativePicker ? (openBlock(), createBlock(_component_NcDateTimePickerNative, mergeProps({\n key: 1,\n id: $props.idNativeDateTimePicker,\n modelValue: $props.modelValue,\n label: $props.label,\n type: $options.nativeDatePickerType,\n inputClass: { focusable: $options.isFocusable },\n class: \"action-input__datetimepicker\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"id\", \"modelValue\", \"label\", \"type\", \"inputClass\", \"onUpdate:modelValue\"])) : $options.isMultiselectType ? (openBlock(), createBlock(_component_NcSelect, mergeProps({\n key: 2,\n modelValue: $props.modelValue,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n appendToBody: false,\n inputClass: { focusable: $options.isFocusable },\n class: \"action-input__multi\"\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"modelValue\", \"placeholder\", \"disabled\", \"inputClass\", \"onUpdate:modelValue\"])) : $props.type === \"password\" ? (openBlock(), createBlock(_component_NcPasswordField, mergeProps({\n key: 3,\n id: $props.inputId,\n modelValue: $props.modelValue,\n label: $props.label,\n labelOutside: !$props.label || $props.labelOutside,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n inputClass: { focusable: $options.isFocusable },\n showTrailingButton: $props.showTrailingButton && !$props.disabled\n }, _ctx.$attrs, { \"onUpdate:modelValue\": $options.onUpdateModelValue }), null, 16, [\"id\", \"modelValue\", \"label\", \"labelOutside\", \"placeholder\", \"disabled\", \"inputClass\", \"showTrailingButton\", \"onUpdate:modelValue\"])) : $props.type === \"color\" ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n $props.label && $props.type === \"color\" ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: normalizeClass([\"action-input__text-label\", { \"action-input__text-label--hidden\": !$props.labelOutside }]),\n for: $props.inputId\n }, toDisplayString($props.label), 11, _hoisted_7)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_8, [\n createVNode(_component_NcColorPicker, mergeProps({\n id: \"inputId\",\n modelValue: $props.modelValue,\n class: \"colorpicker__trigger\"\n }, _ctx.$attrs, {\n \"onUpdate:modelValue\": $options.onUpdateModelValue,\n onSubmit: _cache[0] || (_cache[0] = ($event) => _ctx.$refs.form.requestSubmit())\n }), {\n default: withCtx(() => [\n createElementVNode(\"button\", {\n class: normalizeClass([\"colorpicker__preview\", { focusable: $options.isFocusable }]),\n style: normalizeStyle({ \"background-color\": $props.modelValue })\n }, null, 6)\n ]),\n _: 1\n }, 16, [\"modelValue\", \"onUpdate:modelValue\"])\n ])\n ])) : (openBlock(), createBlock(_component_NcTextField, mergeProps({\n key: 5,\n id: $props.inputId,\n modelValue: $props.modelValue,\n label: $props.label,\n labelOutside: !$props.label || $props.labelOutside,\n placeholder: _ctx.text,\n disabled: $props.disabled,\n inputClass: { focusable: $options.isFocusable },\n type: $props.type,\n trailingButtonIcon: \"arrowRight\",\n trailingButtonLabel: $props.trailingButtonLabel,\n showTrailingButton: $props.showTrailingButton && !$props.disabled\n }, _ctx.$attrs, {\n onTrailingButtonClick: _cache[1] || (_cache[1] = ($event) => _ctx.$refs.form.requestSubmit()),\n \"onUpdate:modelValue\": $options.onUpdateModelValue\n }), null, 16, [\"id\", \"modelValue\", \"label\", \"labelOutside\", \"placeholder\", \"disabled\", \"inputClass\", \"type\", \"trailingButtonLabel\", \"showTrailingButton\", \"onUpdate:modelValue\"]))\n ])\n ])\n ], 40, _hoisted_2)\n ], 34)\n ], 2);\n}\nconst NcActionInput = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-3a83acfa\"]]);\nexport {\n NcActionInput as N\n};\n//# sourceMappingURL=NcActionInput-BrI5iKHo.mjs.map\n","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","export class TimeoutError extends Error {\n\tname = 'TimeoutError';\n\n\tconstructor(message, options) {\n\t\tsuper(message, options);\n\t\tError.captureStackTrace?.(this, TimeoutError);\n\t}\n}\n\nconst getAbortedReason = signal => signal.reason ?? new DOMException('This operation was aborted.', 'AbortError');\n\nexport default function pTimeout(promise, options) {\n\tconst {\n\t\tmilliseconds,\n\t\tfallback,\n\t\tmessage,\n\t\tcustomTimers = {setTimeout, clearTimeout},\n\t\tsignal,\n\t} = options;\n\n\tlet timer;\n\tlet abortHandler;\n\n\tconst wrappedPromise = new Promise((resolve, reject) => {\n\t\tif (typeof milliseconds !== 'number' || Math.sign(milliseconds) !== 1) {\n\t\t\tthrow new TypeError(`Expected \\`milliseconds\\` to be a positive number, got \\`${milliseconds}\\``);\n\t\t}\n\n\t\tif (signal?.aborted) {\n\t\t\treject(getAbortedReason(signal));\n\t\t\treturn;\n\t\t}\n\n\t\tif (signal) {\n\t\t\tabortHandler = () => {\n\t\t\t\treject(getAbortedReason(signal));\n\t\t\t};\n\n\t\t\tsignal.addEventListener('abort', abortHandler, {once: true});\n\t\t}\n\n\t\t// Use .then() instead of async IIFE to preserve stack traces\n\t\t// eslint-disable-next-line promise/prefer-await-to-then, promise/prefer-catch\n\t\tpromise.then(resolve, reject);\n\n\t\tif (milliseconds === Number.POSITIVE_INFINITY) {\n\t\t\treturn;\n\t\t}\n\n\t\t// We create the error outside of `setTimeout` to preserve the stack trace.\n\t\tconst timeoutError = new TimeoutError();\n\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\ttimer = customTimers.setTimeout.call(undefined, () => {\n\t\t\tif (fallback) {\n\t\t\t\ttry {\n\t\t\t\t\tresolve(fallback());\n\t\t\t\t} catch (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t}\n\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof promise.cancel === 'function') {\n\t\t\t\tpromise.cancel();\n\t\t\t}\n\n\t\t\tif (message === false) {\n\t\t\t\tresolve();\n\t\t\t} else if (message instanceof Error) {\n\t\t\t\treject(message);\n\t\t\t} else {\n\t\t\t\ttimeoutError.message = message ?? `Promise timed out after ${milliseconds} milliseconds`;\n\t\t\t\treject(timeoutError);\n\t\t\t}\n\t\t}, milliseconds);\n\t});\n\n\t// eslint-disable-next-line promise/prefer-await-to-then\n\tconst cancelablePromise = wrappedPromise.finally(() => {\n\t\tcancelablePromise.clear();\n\t\tif (abortHandler && signal) {\n\t\t\tsignal.removeEventListener('abort', abortHandler);\n\t\t}\n\t});\n\n\tcancelablePromise.clear = () => {\n\t\t// `.call(undefined, ...)` is needed for custom timers to avoid context issues\n\t\tcustomTimers.clearTimeout.call(undefined, timer);\n\t\ttimer = undefined;\n\t};\n\n\treturn cancelablePromise;\n}\n","// Port of lower_bound from https://en.cppreference.com/w/cpp/algorithm/lower_bound\n// Used to compute insertion index to keep queue sorted after insertion\nexport default function lowerBound(array, value, comparator) {\n let first = 0;\n let count = array.length;\n while (count > 0) {\n const step = Math.trunc(count / 2);\n let it = first + step;\n if (comparator(array[it], value) <= 0) {\n first = ++it;\n count -= step + 1;\n }\n else {\n count = step;\n }\n }\n return first;\n}\n","import lowerBound from './lower-bound.js';\nexport default class PriorityQueue {\n #queue = [];\n enqueue(run, options) {\n const { priority = 0, id, } = options ?? {};\n const element = {\n priority,\n id,\n run,\n };\n if (this.size === 0 || this.#queue[this.size - 1].priority >= priority) {\n this.#queue.push(element);\n return;\n }\n const index = lowerBound(this.#queue, element, (a, b) => b.priority - a.priority);\n this.#queue.splice(index, 0, element);\n }\n setPriority(id, priority) {\n const index = this.#queue.findIndex((element) => element.id === id);\n if (index === -1) {\n throw new ReferenceError(`No promise function with the id \"${id}\" exists in the queue.`);\n }\n const [item] = this.#queue.splice(index, 1);\n this.enqueue(item.run, { priority, id });\n }\n dequeue() {\n const item = this.#queue.shift();\n return item?.run;\n }\n filter(options) {\n return this.#queue.filter((element) => element.priority === options.priority).map((element) => element.run);\n }\n get size() {\n return this.#queue.length;\n }\n}\n","import { EventEmitter } from 'eventemitter3';\nimport pTimeout from 'p-timeout';\nimport PriorityQueue from './priority-queue.js';\n/**\nPromise queue with concurrency control.\n*/\nexport default class PQueue extends EventEmitter {\n #carryoverIntervalCount;\n #isIntervalIgnored;\n #intervalCount = 0;\n #intervalCap;\n #rateLimitedInInterval = false;\n #rateLimitFlushScheduled = false;\n #interval;\n #intervalEnd = 0;\n #lastExecutionTime = 0;\n #intervalId;\n #timeoutId;\n #strict;\n // Circular buffer implementation for better performance\n #strictTicks = [];\n #strictTicksStartIndex = 0;\n #queue;\n #queueClass;\n #pending = 0;\n // The `!` is needed because of https://github.com/microsoft/TypeScript/issues/32194\n #concurrency;\n #isPaused;\n // Use to assign a unique identifier to a promise function, if not explicitly specified\n #idAssigner = 1n;\n // Track currently running tasks for debugging\n #runningTasks = new Map();\n /**\n Get or set the default timeout for all tasks. Can be changed at runtime.\n\n Operations will throw a `TimeoutError` if they don't complete within the specified time.\n\n The timeout begins when the operation is dequeued and starts execution, not while it's waiting in the queue.\n\n @example\n ```\n const queue = new PQueue({timeout: 5000});\n\n // Change timeout for all future tasks\n queue.timeout = 10000;\n ```\n */\n timeout;\n constructor(options) {\n super();\n // eslint-disable-next-line @typescript-eslint/consistent-type-assertions\n options = {\n carryoverIntervalCount: false,\n intervalCap: Number.POSITIVE_INFINITY,\n interval: 0,\n concurrency: Number.POSITIVE_INFINITY,\n autoStart: true,\n queueClass: PriorityQueue,\n strict: false,\n ...options,\n };\n if (!(typeof options.intervalCap === 'number' && options.intervalCap >= 1)) {\n throw new TypeError(`Expected \\`intervalCap\\` to be a number from 1 and up, got \\`${options.intervalCap?.toString() ?? ''}\\` (${typeof options.intervalCap})`);\n }\n if (options.interval === undefined || !(Number.isFinite(options.interval) && options.interval >= 0)) {\n throw new TypeError(`Expected \\`interval\\` to be a finite number >= 0, got \\`${options.interval?.toString() ?? ''}\\` (${typeof options.interval})`);\n }\n if (options.strict && options.interval === 0) {\n throw new TypeError('The `strict` option requires a non-zero `interval`');\n }\n if (options.strict && options.intervalCap === Number.POSITIVE_INFINITY) {\n throw new TypeError('The `strict` option requires a finite `intervalCap`');\n }\n // TODO: Remove this fallback in the next major version\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n this.#carryoverIntervalCount = options.carryoverIntervalCount ?? options.carryoverConcurrencyCount ?? false;\n this.#isIntervalIgnored = options.intervalCap === Number.POSITIVE_INFINITY || options.interval === 0;\n this.#intervalCap = options.intervalCap;\n this.#interval = options.interval;\n this.#strict = options.strict;\n this.#queue = new options.queueClass();\n this.#queueClass = options.queueClass;\n this.concurrency = options.concurrency;\n if (options.timeout !== undefined && !(Number.isFinite(options.timeout) && options.timeout > 0)) {\n throw new TypeError(`Expected \\`timeout\\` to be a positive finite number, got \\`${options.timeout}\\` (${typeof options.timeout})`);\n }\n this.timeout = options.timeout;\n this.#isPaused = options.autoStart === false;\n this.#setupRateLimitTracking();\n }\n #cleanupStrictTicks(now) {\n // Remove ticks outside the current interval window using circular buffer approach\n while (this.#strictTicksStartIndex < this.#strictTicks.length) {\n const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];\n if (oldestTick !== undefined && now - oldestTick >= this.#interval) {\n this.#strictTicksStartIndex++;\n }\n else {\n break;\n }\n }\n // Compact the array when it becomes inefficient or fully consumed\n // Compact when: (start index is large AND more than half wasted) OR all ticks expired\n const shouldCompact = (this.#strictTicksStartIndex > 100 && this.#strictTicksStartIndex > this.#strictTicks.length / 2)\n || this.#strictTicksStartIndex === this.#strictTicks.length;\n if (shouldCompact) {\n this.#strictTicks = this.#strictTicks.slice(this.#strictTicksStartIndex);\n this.#strictTicksStartIndex = 0;\n }\n }\n // Helper methods for interval consumption\n #consumeIntervalSlot(now) {\n if (this.#strict) {\n this.#strictTicks.push(now);\n }\n else {\n this.#intervalCount++;\n }\n }\n #rollbackIntervalSlot() {\n if (this.#strict) {\n // Pop from the end of the actual data (not from start index)\n if (this.#strictTicks.length > this.#strictTicksStartIndex) {\n this.#strictTicks.pop();\n }\n }\n else if (this.#intervalCount > 0) {\n this.#intervalCount--;\n }\n }\n #getActiveTicksCount() {\n return this.#strictTicks.length - this.#strictTicksStartIndex;\n }\n get #doesIntervalAllowAnother() {\n if (this.#isIntervalIgnored) {\n return true;\n }\n if (this.#strict) {\n // Cleanup already done by #isIntervalPausedAt before this is called\n return this.#getActiveTicksCount() < this.#intervalCap;\n }\n return this.#intervalCount < this.#intervalCap;\n }\n get #doesConcurrentAllowAnother() {\n return this.#pending < this.#concurrency;\n }\n #next() {\n this.#pending--;\n if (this.#pending === 0) {\n this.emit('pendingZero');\n }\n this.#tryToStartAnother();\n this.emit('next');\n }\n #onResumeInterval() {\n // Clear timeout ID before processing to prevent race condition\n // Must clear before #onInterval to allow new timeouts to be scheduled\n this.#timeoutId = undefined;\n this.#onInterval();\n this.#initializeIntervalIfNeeded();\n }\n #isIntervalPausedAt(now) {\n // Strict mode: check if we need to wait for oldest tick to age out\n if (this.#strict) {\n this.#cleanupStrictTicks(now);\n // If at capacity, need to wait for oldest tick to age out\n const activeTicksCount = this.#getActiveTicksCount();\n if (activeTicksCount >= this.#intervalCap) {\n const oldestTick = this.#strictTicks[this.#strictTicksStartIndex];\n // After cleanup, remaining ticks are within interval, so delay is always > 0\n const delay = this.#interval - (now - oldestTick);\n this.#createIntervalTimeout(delay);\n return true;\n }\n return false;\n }\n // Fixed window mode (original logic)\n if (this.#intervalId === undefined) {\n const delay = this.#intervalEnd - now;\n if (delay < 0) {\n // If the interval has expired while idle, check if we should enforce the interval\n // from the last task execution. This ensures proper spacing between tasks even\n // when the queue becomes empty and then new tasks are added.\n if (this.#lastExecutionTime > 0) {\n const timeSinceLastExecution = now - this.#lastExecutionTime;\n if (timeSinceLastExecution < this.#interval) {\n // Not enough time has passed since the last task execution\n this.#createIntervalTimeout(this.#interval - timeSinceLastExecution);\n return true;\n }\n }\n // Enough time has passed or no previous execution, allow execution\n this.#intervalCount = (this.#carryoverIntervalCount) ? this.#pending : 0;\n }\n else {\n // Act as the interval is pending\n this.#createIntervalTimeout(delay);\n return true;\n }\n }\n return false;\n }\n #createIntervalTimeout(delay) {\n if (this.#timeoutId !== undefined) {\n return;\n }\n this.#timeoutId = setTimeout(() => {\n this.#onResumeInterval();\n }, delay);\n }\n #clearIntervalTimer() {\n if (this.#intervalId) {\n clearInterval(this.#intervalId);\n this.#intervalId = undefined;\n }\n }\n #clearTimeoutTimer() {\n if (this.#timeoutId) {\n clearTimeout(this.#timeoutId);\n this.#timeoutId = undefined;\n }\n }\n #tryToStartAnother() {\n if (this.#queue.size === 0) {\n // We can clear the interval (\"pause\")\n // Because we can redo it later (\"resume\")\n this.#clearIntervalTimer();\n this.emit('empty');\n if (this.#pending === 0) {\n // Clear timeout as well when completely idle\n this.#clearTimeoutTimer();\n // Compact strict ticks when idle to free memory\n if (this.#strict && this.#strictTicksStartIndex > 0) {\n const now = Date.now();\n this.#cleanupStrictTicks(now);\n }\n this.emit('idle');\n }\n return false;\n }\n let taskStarted = false;\n if (!this.#isPaused) {\n const now = Date.now();\n const canInitializeInterval = !this.#isIntervalPausedAt(now);\n if (this.#doesIntervalAllowAnother && this.#doesConcurrentAllowAnother) {\n const job = this.#queue.dequeue();\n if (!this.#isIntervalIgnored) {\n this.#consumeIntervalSlot(now);\n this.#scheduleRateLimitUpdate();\n }\n this.emit('active');\n job();\n if (canInitializeInterval) {\n this.#initializeIntervalIfNeeded();\n }\n taskStarted = true;\n }\n }\n return taskStarted;\n }\n #initializeIntervalIfNeeded() {\n if (this.#isIntervalIgnored || this.#intervalId !== undefined) {\n return;\n }\n // Strict mode uses timeouts instead of interval timers\n if (this.#strict) {\n return;\n }\n this.#intervalId = setInterval(() => {\n this.#onInterval();\n }, this.#interval);\n this.#intervalEnd = Date.now() + this.#interval;\n }\n #onInterval() {\n // Non-strict mode uses interval timers and intervalCount\n if (!this.#strict) {\n if (this.#intervalCount === 0 && this.#pending === 0 && this.#intervalId) {\n this.#clearIntervalTimer();\n }\n this.#intervalCount = this.#carryoverIntervalCount ? this.#pending : 0;\n }\n this.#processQueue();\n this.#scheduleRateLimitUpdate();\n }\n /**\n Executes all queued functions until it reaches the limit.\n */\n #processQueue() {\n // eslint-disable-next-line no-empty\n while (this.#tryToStartAnother()) { }\n }\n get concurrency() {\n return this.#concurrency;\n }\n set concurrency(newConcurrency) {\n if (!(typeof newConcurrency === 'number' && newConcurrency >= 1)) {\n throw new TypeError(`Expected \\`concurrency\\` to be a number from 1 and up, got \\`${newConcurrency}\\` (${typeof newConcurrency})`);\n }\n this.#concurrency = newConcurrency;\n this.#processQueue();\n }\n /**\n Updates the priority of a promise function by its id, affecting its execution order. Requires a defined concurrency limit to take effect.\n\n For example, this can be used to prioritize a promise function to run earlier.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 0, id: '🦀'});\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦄', {priority: 1});\n\n queue.setPriority('🦀', 2);\n ```\n\n In this case, the promise function with `id: '🦀'` runs second.\n\n You can also deprioritize a promise function to delay its execution:\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 1});\n\n queue.add(async () => '🦄', {priority: 1});\n queue.add(async () => '🦀', {priority: 1, id: '🦀'});\n queue.add(async () => '🦄');\n queue.add(async () => '🦄', {priority: 0});\n\n queue.setPriority('🦀', -1);\n ```\n Here, the promise function with `id: '🦀'` executes last.\n */\n setPriority(id, priority) {\n if (typeof priority !== 'number' || !Number.isFinite(priority)) {\n throw new TypeError(`Expected \\`priority\\` to be a finite number, got \\`${priority}\\` (${typeof priority})`);\n }\n this.#queue.setPriority(id, priority);\n }\n async add(function_, options = {}) {\n // Create a copy to avoid mutating the original options object\n options = {\n timeout: this.timeout,\n ...options,\n // Assign unique ID if not provided\n id: options.id ?? (this.#idAssigner++).toString(),\n };\n return new Promise((resolve, reject) => {\n // Create a unique symbol for tracking this task\n const taskSymbol = Symbol(`task-${options.id}`);\n this.#queue.enqueue(async () => {\n this.#pending++;\n // Track this running task\n this.#runningTasks.set(taskSymbol, {\n id: options.id,\n priority: options.priority ?? 0, // Match priority-queue default\n startTime: Date.now(),\n timeout: options.timeout,\n });\n let eventListener;\n try {\n // Check abort signal - if aborted, need to decrement the counter\n // that was incremented in tryToStartAnother\n try {\n options.signal?.throwIfAborted();\n }\n catch (error) {\n this.#rollbackIntervalConsumption();\n // Clean up tracking before throwing\n this.#runningTasks.delete(taskSymbol);\n throw error;\n }\n this.#lastExecutionTime = Date.now();\n let operation = function_({ signal: options.signal });\n if (options.timeout) {\n operation = pTimeout(Promise.resolve(operation), {\n milliseconds: options.timeout,\n message: `Task timed out after ${options.timeout}ms (queue has ${this.#pending} running, ${this.#queue.size} waiting)`,\n });\n }\n if (options.signal) {\n const { signal } = options;\n operation = Promise.race([operation, new Promise((_resolve, reject) => {\n eventListener = () => {\n reject(signal.reason);\n };\n signal.addEventListener('abort', eventListener, { once: true });\n })]);\n }\n const result = await operation;\n resolve(result);\n this.emit('completed', result);\n }\n catch (error) {\n reject(error);\n this.emit('error', error);\n }\n finally {\n // Clean up abort event listener\n if (eventListener) {\n options.signal?.removeEventListener('abort', eventListener);\n }\n // Remove from running tasks\n this.#runningTasks.delete(taskSymbol);\n // Use queueMicrotask to prevent deep recursion while maintaining timing\n queueMicrotask(() => {\n this.#next();\n });\n }\n }, options);\n this.emit('add');\n this.#tryToStartAnother();\n });\n }\n async addAll(functions, options) {\n return Promise.all(functions.map(async (function_) => this.add(function_, options)));\n }\n /**\n Start (or resume) executing enqueued tasks within concurrency limit. No need to call this if queue is not paused (via `options.autoStart = false` or by `.pause()` method.)\n */\n start() {\n if (!this.#isPaused) {\n return this;\n }\n this.#isPaused = false;\n this.#processQueue();\n return this;\n }\n /**\n Put queue execution on hold.\n */\n pause() {\n this.#isPaused = true;\n }\n /**\n Clear the queue.\n */\n clear() {\n this.#queue = new this.#queueClass();\n // Clear interval timer since queue is now empty (consistent with #tryToStartAnother)\n this.#clearIntervalTimer();\n // Note: We preserve strict mode rate-limiting state (ticks and timeout)\n // because clear() only clears queued tasks, not rate limit history.\n // This ensures that rate limits are still enforced after clearing the queue.\n // Note: We don't clear #runningTasks as those tasks are still running\n // They will be removed when they complete in the finally block\n // Force synchronous update since clear() should have immediate effect\n this.#updateRateLimitState();\n // Emit events so waiters (onEmpty, onIdle, onSizeLessThan) can resolve\n this.emit('empty');\n if (this.#pending === 0) {\n this.#clearTimeoutTimer();\n this.emit('idle');\n }\n this.emit('next');\n }\n /**\n Can be called multiple times. Useful if you for example add additional items at a later time.\n\n @returns A promise that settles when the queue becomes empty.\n */\n async onEmpty() {\n // Instantly resolve if the queue is empty\n if (this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('empty');\n }\n /**\n @returns A promise that settles when the queue size is less than the given limit: `queue.size < limit`.\n\n If you want to avoid having the queue grow beyond a certain size you can `await queue.onSizeLessThan()` before adding a new item.\n\n Note that this only limits the number of items waiting to start. There could still be up to `concurrency` jobs already running that this call does not include in its calculation.\n */\n async onSizeLessThan(limit) {\n // Instantly resolve if the queue is empty.\n if (this.#queue.size < limit) {\n return;\n }\n await this.#onEvent('next', () => this.#queue.size < limit);\n }\n /**\n The difference with `.onEmpty` is that `.onIdle` guarantees that all work from the queue has finished. `.onEmpty` merely signals that the queue is empty, but it could mean that some promises haven't completed yet.\n\n @returns A promise that settles when the queue becomes empty, and all promises have completed; `queue.size === 0 && queue.pending === 0`.\n */\n async onIdle() {\n // Instantly resolve if none pending and if nothing else is queued\n if (this.#pending === 0 && this.#queue.size === 0) {\n return;\n }\n await this.#onEvent('idle');\n }\n /**\n The difference with `.onIdle` is that `.onPendingZero` only waits for currently running tasks to finish, ignoring queued tasks.\n\n @returns A promise that settles when all currently running tasks have completed; `queue.pending === 0`.\n */\n async onPendingZero() {\n if (this.#pending === 0) {\n return;\n }\n await this.#onEvent('pendingZero');\n }\n /**\n @returns A promise that settles when the queue becomes rate-limited due to intervalCap.\n */\n async onRateLimit() {\n if (this.isRateLimited) {\n return;\n }\n await this.#onEvent('rateLimit');\n }\n /**\n @returns A promise that settles when the queue is no longer rate-limited.\n */\n async onRateLimitCleared() {\n if (!this.isRateLimited) {\n return;\n }\n await this.#onEvent('rateLimitCleared');\n }\n /**\n @returns A promise that rejects when any task in the queue errors.\n\n Use with `Promise.race([queue.onError(), queue.onIdle()])` to fail fast on the first error while still resolving normally when the queue goes idle.\n\n Important: The promise returned by `add()` still rejects. You must handle each `add()` promise (for example, `.catch(() => {})`) to avoid unhandled rejections.\n\n @example\n ```\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n queue.add(() => fetchData(1)).catch(() => {});\n queue.add(() => fetchData(2)).catch(() => {});\n queue.add(() => fetchData(3)).catch(() => {});\n\n // Stop processing on first error\n try {\n await Promise.race([\n queue.onError(),\n queue.onIdle()\n ]);\n } catch (error) {\n queue.pause(); // Stop processing remaining tasks\n console.error('Queue failed:', error);\n }\n ```\n */\n // eslint-disable-next-line @typescript-eslint/promise-function-async\n onError() {\n return new Promise((_resolve, reject) => {\n const handleError = (error) => {\n this.off('error', handleError);\n reject(error);\n };\n this.on('error', handleError);\n });\n }\n async #onEvent(event, filter) {\n return new Promise(resolve => {\n const listener = () => {\n if (filter && !filter()) {\n return;\n }\n this.off(event, listener);\n resolve();\n };\n this.on(event, listener);\n });\n }\n /**\n Size of the queue, the number of queued items waiting to run.\n */\n get size() {\n return this.#queue.size;\n }\n /**\n Size of the queue, filtered by the given options.\n\n For example, this can be used to find the number of items remaining in the queue with a specific priority level.\n */\n sizeBy(options) {\n // eslint-disable-next-line unicorn/no-array-callback-reference\n return this.#queue.filter(options).length;\n }\n /**\n Number of running items (no longer in the queue).\n */\n get pending() {\n return this.#pending;\n }\n /**\n Whether the queue is currently paused.\n */\n get isPaused() {\n return this.#isPaused;\n }\n #setupRateLimitTracking() {\n // Only schedule updates when rate limiting is enabled\n if (this.#isIntervalIgnored) {\n return;\n }\n // Wire up to lifecycle events that affect rate limit state\n // Only 'add' and 'next' can actually change rate limit state\n this.on('add', () => {\n if (this.#queue.size > 0) {\n this.#scheduleRateLimitUpdate();\n }\n });\n this.on('next', () => {\n this.#scheduleRateLimitUpdate();\n });\n }\n #scheduleRateLimitUpdate() {\n // Skip if rate limiting is not enabled or already scheduled\n if (this.#isIntervalIgnored || this.#rateLimitFlushScheduled) {\n return;\n }\n this.#rateLimitFlushScheduled = true;\n queueMicrotask(() => {\n this.#rateLimitFlushScheduled = false;\n this.#updateRateLimitState();\n });\n }\n #rollbackIntervalConsumption() {\n if (this.#isIntervalIgnored) {\n return;\n }\n this.#rollbackIntervalSlot();\n this.#scheduleRateLimitUpdate();\n }\n #updateRateLimitState() {\n const previous = this.#rateLimitedInInterval;\n // Early exit if rate limiting is disabled or queue is empty\n if (this.#isIntervalIgnored || this.#queue.size === 0) {\n if (previous) {\n this.#rateLimitedInInterval = false;\n this.emit('rateLimitCleared');\n }\n return;\n }\n // Get the current count based on mode\n let count;\n if (this.#strict) {\n const now = Date.now();\n this.#cleanupStrictTicks(now);\n count = this.#getActiveTicksCount();\n }\n else {\n count = this.#intervalCount;\n }\n const shouldBeRateLimited = count >= this.#intervalCap;\n if (shouldBeRateLimited !== previous) {\n this.#rateLimitedInInterval = shouldBeRateLimited;\n this.emit(shouldBeRateLimited ? 'rateLimit' : 'rateLimitCleared');\n }\n }\n /**\n Whether the queue is currently rate-limited due to intervalCap.\n */\n get isRateLimited() {\n return this.#rateLimitedInInterval;\n }\n /**\n Whether the queue is saturated. Returns `true` when:\n - All concurrency slots are occupied and tasks are waiting, OR\n - The queue is rate-limited and tasks are waiting\n\n Useful for detecting backpressure and potential hanging tasks.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n // Backpressure handling\n if (queue.isSaturated) {\n console.log('Queue is saturated, waiting for capacity...');\n await queue.onSizeLessThan(queue.concurrency);\n }\n\n // Monitoring for stuck tasks\n setInterval(() => {\n if (queue.isSaturated) {\n console.warn(`Queue saturated: ${queue.pending} running, ${queue.size} waiting`);\n }\n }, 60000);\n ```\n */\n get isSaturated() {\n return (this.#pending === this.#concurrency && this.#queue.size > 0)\n || (this.isRateLimited && this.#queue.size > 0);\n }\n /**\n The tasks currently being executed. Each task includes its `id`, `priority`, `startTime`, and `timeout` (if set).\n\n Returns an array of task info objects.\n\n ```js\n import PQueue from 'p-queue';\n\n const queue = new PQueue({concurrency: 2});\n\n // Add tasks with IDs for better debugging\n queue.add(() => fetchUser(123), {id: 'user-123'});\n queue.add(() => fetchPosts(456), {id: 'posts-456', priority: 1});\n\n // Check what's running\n console.log(queue.runningTasks);\n // => [{\n // id: 'user-123',\n // priority: 0,\n // startTime: 1759253001716,\n // timeout: undefined\n // }, {\n // id: 'posts-456',\n // priority: 1,\n // startTime: 1759253001916,\n // timeout: undefined\n // }]\n ```\n */\n get runningTasks() {\n // Return fresh array with fresh objects to prevent mutations\n return [...this.#runningTasks.values()].map(task => ({ ...task }));\n }\n}\n/**\nError thrown when a task times out.\n\n@example\n```\nimport PQueue, {TimeoutError} from 'p-queue';\n\nconst queue = new PQueue({timeout: 1000});\n\ntry {\n await queue.add(() => someTask());\n} catch (error) {\n if (error instanceof TimeoutError) {\n console.log('Task timed out');\n }\n}\n```\n*/\nexport { TimeoutError } from 'p-timeout';\n"],"file":"NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs"} \ No newline at end of file diff --git a/dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs.map.license b/dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs.map.license similarity index 100% rename from dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs.map.license rename to dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs.map.license diff --git a/dist/SetStatusModal-__uilgdV.chunk.mjs b/dist/SetStatusModal-arJhi5cf.chunk.mjs similarity index 99% rename from dist/SetStatusModal-__uilgdV.chunk.mjs rename to dist/SetStatusModal-arJhi5cf.chunk.mjs index 8aa6e29510f6d..c639044647182 100644 --- a/dist/SetStatusModal-__uilgdV.chunk.mjs +++ b/dist/SetStatusModal-arJhi5cf.chunk.mjs @@ -1,2 +1,2 @@ -import{a as v}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as O}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as A}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{c as q}from"./index-Bos-XXa5.chunk.mjs";import{N as x}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{c as C,m as R,a as T,O as j,l as I}from"./user_status-menu.mjs";import{a as S}from"./index-BgmsSgl5.chunk.mjs";import{f as c,j as m,o as n,k as a,e as p,t as l,w as g,g as b,F as $,C as B,c as y,X as M,z as U,E as V,l as k}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{N as L}from"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import{_ as E}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{N as z}from"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";function D(){return[{label:s("user_status","Don't clear"),clearAt:null},{label:s("user_status","30 minutes"),clearAt:{type:"period",time:1800}},{label:s("user_status","1 hour"),clearAt:{type:"period",time:3600}},{label:s("user_status","4 hours"),clearAt:{type:"period",time:14400}},{label:s("user_status","Today"),clearAt:{type:"end-of",time:"day"}},{label:s("user_status","This week"),clearAt:{type:"end-of",time:"week"}}]}const H={name:"ClearAtSelect",components:{NcSelect:x},props:{clearAt:{type:Object,default:null}},emits:["selectClearAt"],data(){return{options:D()}},computed:{option(){return{clearAt:this.clearAt,label:C(this.clearAt)}}},methods:{t:s,select(t){t&&this.$emit("selectClearAt",t.clearAt)}}},W={class:"clear-at-select"},K={class:"clear-at-select__label",for:"clearStatus"};function X(t,i,u,f,o,e){const d=c("NcSelect");return n(),m("div",W,[a("label",K,l(e.t("user_status","Clear status after")),1),p(d,{inputId:"clearStatus",class:"clear-at-select__select",options:o.options,modelValue:e.option,clearable:!1,placement:"top",labelOutside:"","onOption:selected":e.select},null,8,["options","modelValue","onOption:selected"])])}const Y=S(H,[["render",X],["__scopeId","data-v-83a07433"]]),G={name:"CustomMessageInput",components:{NcTextField:E,NcButton:A,NcEmojiPicker:L},props:{icon:{type:String,default:"😀"},message:{type:String,default:""},disabled:{type:Boolean,default:!1}},emits:["change","selectIcon"],computed:{visibleIcon(){return this.icon||"😀"}},methods:{t:s,focus(){this.$refs.input.focus()},onChange(t){this.$emit("change",t)},setIcon(t){this.$emit("selectIcon",t)}}},J={class:"custom-input",role:"group"},Q={class:"custom-input__container"};function Z(t,i,u,f,o,e){const d=c("NcButton"),r=c("NcEmojiPicker"),_=c("NcTextField");return n(),m("div",J,[p(r,{container:"#user_status-dialog",onSelect:e.setIcon},{default:g(()=>[p(d,{variant:"tertiary","aria-label":e.t("user_status","Emoji for your status message")},{icon:g(()=>[b(l(e.visibleIcon),1)]),_:1},8,["aria-label"])]),_:1},8,["onSelect"]),a("div",Q,[p(_,{ref:"input",maxlength:"80",disabled:u.disabled,placeholder:e.t("user_status","What is your status?"),modelValue:u.message,type:"text",label:e.t("user_status","What is your status?"),"onUpdate:modelValue":e.onChange},null,8,["disabled","placeholder","modelValue","label","onUpdate:modelValue"])])])}const ee=S(G,[["render",Z],["__scopeId","data-v-90dc6f12"]]),te={name:"OnlineStatusSelect",components:{NcUserStatusIcon:z},props:{checked:{type:Boolean,default:!1},type:{type:String,required:!0},label:{type:String,required:!0},subline:{type:String,default:null}},emits:["select"],computed:{id(){return`user-status-online-status-${this.type}`}},methods:{onChange(){this.$emit("select",this.type)}}},se={class:"user-status-online-select"},ae=["id","checked"],ie=["for"],re={class:"user-status-online-select__icon-wrapper"},ue={class:"user-status-online-select__subline"};function le(t,i,u,f,o,e){const d=c("NcUserStatusIcon");return n(),m("div",se,[a("input",{id:e.id,checked:u.checked,class:"hidden-visually user-status-online-select__input",type:"radio",name:"user-status-online",onChange:i[0]||(i[0]=(...r)=>e.onChange&&e.onChange(...r))},null,40,ae),a("label",{for:e.id,class:"user-status-online-select__label"},[a("span",re,[p(d,{status:u.type,class:"user-status-online-select__icon","aria-hidden":"true"},null,8,["status"])]),b(" "+l(u.label)+" ",1),a("em",ue,l(u.subline),1)],8,ie)])}const ne=S(te,[["render",le],["__scopeId","data-v-16876893"]]),ce={name:"PredefinedStatus",props:{messageId:{type:String,required:!0},icon:{type:String,required:!0},message:{type:String,required:!0},clearAt:{type:Object,required:!1,default:null},selected:{type:Boolean,required:!1,default:!1}},emits:["select"],computed:{id(){return`user-status-predefined-status-${this.messageId}`},formattedClearAt(){return C(this.clearAt)}},methods:{select(){this.$emit("select")}}},oe={class:"predefined-status"},de=["id","checked"],pe=["for"],me={"aria-hidden":"true",class:"predefined-status__label--icon"},he={class:"predefined-status__label--message"},ge={class:"predefined-status__label--clear-at"};function Se(t,i,u,f,o,e){return n(),m("li",oe,[a("input",{id:e.id,class:"hidden-visually predefined-status__input",type:"radio",name:"predefined-status",checked:u.selected,onChange:i[0]||(i[0]=(...d)=>e.select&&e.select(...d))},null,40,de),a("label",{class:"predefined-status__label",for:e.id},[a("span",me,l(u.icon),1),a("span",he,l(u.message),1),a("span",ge,l(e.formattedClearAt),1)],8,pe)])}const fe=S(ce,[["render",Se],["__scopeId","data-v-200bf95b"]]),_e={name:"PredefinedStatusesList",components:{PredefinedStatus:fe},emits:["selectStatus"],data(){return{lastSelected:null}},computed:{...T({predefinedStatuses:t=>t.predefinedStatuses.predefinedStatuses,messageId:t=>t.userStatus.messageId}),...R(["statusesHaveLoaded"])},watch:{messageId:{immediate:!0,handler(){this.lastSelected=this.messageId}}},created(){this.$store.dispatch("loadAllPredefinedStatuses")},methods:{t:s,selectStatus(t){this.lastSelected=t.id,this.$emit("selectStatus",t)}}},be=["aria-label"],ye={key:1,class:"predefined-statuses-list"};function ve(t,i,u,f,o,e){const d=c("PredefinedStatus");return t.statusesHaveLoaded?(n(),m("ul",{key:0,class:"predefined-statuses-list","aria-label":e.t("user_status","Predefined statuses")},[(n(!0),m($,null,B(t.predefinedStatuses,r=>(n(),y(d,{key:r.id,messageId:r.id,icon:r.icon,message:r.message,clearAt:r.clearAt,selected:o.lastSelected===r.id,onSelect:_=>e.selectStatus(r)},null,8,["messageId","icon","message","clearAt","selected","onSelect"]))),128))],8,be)):(n(),m("div",ye,[...i[0]||(i[0]=[a("div",{class:"icon icon-loading-small"},null,-1)])]))}const Ie=S(_e,[["render",ve],["__scopeId","data-v-b7009355"]]),ke={name:"PreviousStatus",components:{NcButton:A},props:{icon:{type:[String,null],required:!0},message:{type:String,required:!0}},emits:["select"],methods:{t:s,select(){this.$emit("select")}}},Ae={class:"predefined-status__icon"},Me={class:"predefined-status__message"},Ce={class:"predefined-status__clear-at"},$e={class:"backup-status__reset-button"};function Be(t,i,u,f,o,e){const d=c("NcButton");return n(),m("div",{class:"predefined-status backup-status",tabindex:"0",onKeyup:[i[0]||(i[0]=M((...r)=>e.select&&e.select(...r),["enter"])),i[1]||(i[1]=M((...r)=>e.select&&e.select(...r),["space"]))],onClick:i[2]||(i[2]=(...r)=>e.select&&e.select(...r))},[a("span",Ae,l(u.icon),1),a("span",Me,l(u.message),1),a("span",Ce,l(e.t("user_status","Previously set")),1),a("div",$e,[p(d,{onClick:e.select},{default:g(()=>[b(l(e.t("user_status","Reset status")),1)]),_:1},8,["onClick"])])],32)}const Ne=S(ke,[["render",Be],["__scopeId","data-v-5fa747a0"]]);function Pe(){return[{type:"online",label:s("user_status","Online")},{type:"away",label:s("user_status","Away")},{type:"busy",label:s("user_status","Busy")},{type:"dnd",label:s("user_status","Do not disturb"),subline:s("user_status","Mute all notifications")},{type:"invisible",label:s("user_status","Invisible"),subline:s("user_status","Appear offline")}]}const we={name:"SetStatusModal",components:{ClearAtSelect:Y,CustomMessageInput:ee,NcModal:q,OnlineStatusSelect:ne,PredefinedStatusesList:Ie,PreviousStatus:Ne,NcButton:A},mixins:[j],props:{inline:{type:Boolean,default:!1}},emits:["close"],data(){return{clearAt:null,editedMessage:"",predefinedMessageId:null,isSavingStatus:!1,statuses:Pe()}},computed:{messageId(){return this.$store.state.userStatus.messageId},icon(){return this.$store.state.userStatus.icon},message(){return this.$store.state.userStatus.message||""},hasBackupStatus(){return this.messageId&&(this.backupIcon||this.backupMessage)},backupIcon(){return this.$store.state.userBackupStatus.icon||""},backupMessage(){return this.$store.state.userBackupStatus.message||""},absencePageUrl(){return O("settings/user/availability#absence")},resetButtonText(){return this.backupIcon&&this.backupMessage?s("user_status",'Reset status to "{icon} {message}"',{icon:this.backupIcon,message:this.backupMessage}):this.backupMessage?s("user_status",'Reset status to "{message}"',{message:this.backupMessage}):this.backupIcon?s("user_status",'Reset status to "{icon}"',{icon:this.backupIcon}):s("user_status","Reset status")},setReturnFocus(){if(!this.inline)return document.querySelector('[aria-controls="header-menu-user-menu"]')??void 0}},watch:{message:{immediate:!0,handler(t){this.editedMessage=t}}},mounted(){this.$store.dispatch("fetchBackupFromServer"),this.predefinedMessageId=this.$store.state.userStatus.messageId,this.$store.state.userStatus.clearAt!==null&&(this.clearAt={type:"_time",time:this.$store.state.userStatus.clearAt})},methods:{t:s,closeModal(){this.$emit("close")},setIcon(t){this.predefinedMessageId=null,this.$store.dispatch("setCustomMessage",{message:this.message,icon:t,clearAt:this.clearAt}),this.$nextTick(()=>{this.$refs.customMessageInput.focus()})},setMessage(t){this.predefinedMessageId=null,this.editedMessage=t},setClearAt(t){this.clearAt=t},selectPredefinedMessage(t){this.predefinedMessageId=t.id,this.clearAt=t.clearAt,this.$store.dispatch("setPredefinedMessage",{messageId:t.id,clearAt:t.clearAt})},async saveStatus(){if(!this.isSavingStatus){try{this.isSavingStatus=!0,this.predefinedMessageId===null?await this.$store.dispatch("setCustomMessage",{message:this.editedMessage,icon:this.icon,clearAt:this.clearAt}):this.$store.dispatch("setPredefinedMessage",{messageId:this.predefinedMessageId,clearAt:this.clearAt})}catch(t){v(s("user_status","There was an error saving the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.closeModal()}},async clearStatus(){try{this.isSavingStatus=!0,await this.$store.dispatch("clearMessage")}catch(t){v(s("user_status","There was an error clearing the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.predefinedMessageId=null,this.closeModal()},async revertBackupFromServer(){try{this.isSavingStatus=!0,await this.$store.dispatch("revertBackupFromServer",{messageId:this.messageId})}catch(t){v(s("user_status","There was an error reverting the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.predefinedMessageId=this.$store.state.userStatus?.messageId}}},Fe={class:"set-status-modal"},Oe={id:"user_status-set-dialog",class:"set-status-modal__header"},qe=["aria-label"],xe={class:"set-status-modal__header"},Re={class:"set-status-modal__custom-input"},Te={key:0,class:"set-status-modal__automation-hint"},je={class:"status-buttons"};function Ue(t,i,u,f,o,e){const d=c("OnlineStatusSelect"),r=c("CustomMessageInput"),_=c("NcButton"),N=c("PreviousStatus"),P=c("PredefinedStatusesList"),w=c("ClearAtSelect"),F=c("NcModal");return n(),y(F,{id:"user_status-dialog",size:"normal",labelId:"user_status-set-dialog",dark:"",setReturnFocus:e.setReturnFocus,onClose:e.closeModal},{default:g(()=>[a("div",Fe,[a("h2",Oe,l(e.t("user_status","Online status")),1),a("div",{class:"set-status-modal__online-status",role:"radiogroup","aria-label":e.t("user_status","Online status")},[(n(!0),m($,null,B(o.statuses,h=>(n(),y(d,U({key:h.type},{ref_for:!0},h,{checked:h.type===t.statusType,onSelect:t.changeStatus}),null,16,["checked","onSelect"]))),128))],8,qe),a("form",{onSubmit:i[0]||(i[0]=V((...h)=>e.saveStatus&&e.saveStatus(...h),["prevent"])),onReset:i[1]||(i[1]=(...h)=>e.clearStatus&&e.clearStatus(...h))},[a("h3",xe,l(e.t("user_status","Status message")),1),a("div",Re,[p(r,{ref:"customMessageInput",icon:e.icon,message:o.editedMessage,onChange:e.setMessage,onSelectIcon:e.setIcon},null,8,["icon","message","onChange","onSelectIcon"]),e.messageId==="vacationing"?(n(),y(_,{key:0,href:e.absencePageUrl,target:"_blank",variant:"secondary","aria-label":e.t("user_status","Set absence period")},{default:g(()=>[b(l(e.t("user_status","Set absence period and replacement")+" ↗"),1)]),_:1},8,["href","aria-label"])):k("",!0)]),e.hasBackupStatus?(n(),m("div",Te,l(e.t("user_status","Your status was set automatically")),1)):k("",!0),e.hasBackupStatus?(n(),y(N,{key:1,icon:e.backupIcon,message:e.backupMessage,onSelect:e.revertBackupFromServer},null,8,["icon","message","onSelect"])):k("",!0),p(P,{onSelectStatus:e.selectPredefinedMessage},null,8,["onSelectStatus"]),p(w,{clearAt:o.clearAt,onSelectClearAt:e.setClearAt},null,8,["clearAt","onSelectClearAt"]),a("div",je,[p(_,{wide:!0,variant:"tertiary",type:"reset","aria-label":e.t("user_status","Clear status message"),disabled:o.isSavingStatus},{default:g(()=>[b(l(e.t("user_status","Clear status message")),1)]),_:1},8,["aria-label","disabled"]),p(_,{wide:!0,variant:"primary",type:"submit","aria-label":e.t("user_status","Set status message"),disabled:o.isSavingStatus},{default:g(()=>[b(l(e.t("user_status","Set status message")),1)]),_:1},8,["aria-label","disabled"])])],32)])]),_:1},8,["setReturnFocus","onClose"])}const lt=S(we,[["render",Ue],["__scopeId","data-v-e87f4d59"]]);export{lt as default}; -//# sourceMappingURL=SetStatusModal-__uilgdV.chunk.mjs.map +import{a as v}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as O}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as A}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{c as q}from"./index-Bos-XXa5.chunk.mjs";import{N as x}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{c as C,m as R,a as T,O as j,l as I}from"./user_status-menu.mjs";import{a as S}from"./index-BgmsSgl5.chunk.mjs";import{f as c,j as m,o as n,k as a,e as p,t as l,w as g,g as b,F as $,C as B,c as y,X as M,z as U,E as V,l as k}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{N as L}from"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import{_ as E}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{N as z}from"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";function D(){return[{label:s("user_status","Don't clear"),clearAt:null},{label:s("user_status","30 minutes"),clearAt:{type:"period",time:1800}},{label:s("user_status","1 hour"),clearAt:{type:"period",time:3600}},{label:s("user_status","4 hours"),clearAt:{type:"period",time:14400}},{label:s("user_status","Today"),clearAt:{type:"end-of",time:"day"}},{label:s("user_status","This week"),clearAt:{type:"end-of",time:"week"}}]}const H={name:"ClearAtSelect",components:{NcSelect:x},props:{clearAt:{type:Object,default:null}},emits:["selectClearAt"],data(){return{options:D()}},computed:{option(){return{clearAt:this.clearAt,label:C(this.clearAt)}}},methods:{t:s,select(t){t&&this.$emit("selectClearAt",t.clearAt)}}},W={class:"clear-at-select"},K={class:"clear-at-select__label",for:"clearStatus"};function X(t,i,u,f,o,e){const d=c("NcSelect");return n(),m("div",W,[a("label",K,l(e.t("user_status","Clear status after")),1),p(d,{inputId:"clearStatus",class:"clear-at-select__select",options:o.options,modelValue:e.option,clearable:!1,placement:"top",labelOutside:"","onOption:selected":e.select},null,8,["options","modelValue","onOption:selected"])])}const Y=S(H,[["render",X],["__scopeId","data-v-83a07433"]]),G={name:"CustomMessageInput",components:{NcTextField:E,NcButton:A,NcEmojiPicker:L},props:{icon:{type:String,default:"😀"},message:{type:String,default:""},disabled:{type:Boolean,default:!1}},emits:["change","selectIcon"],computed:{visibleIcon(){return this.icon||"😀"}},methods:{t:s,focus(){this.$refs.input.focus()},onChange(t){this.$emit("change",t)},setIcon(t){this.$emit("selectIcon",t)}}},J={class:"custom-input",role:"group"},Q={class:"custom-input__container"};function Z(t,i,u,f,o,e){const d=c("NcButton"),r=c("NcEmojiPicker"),_=c("NcTextField");return n(),m("div",J,[p(r,{container:"#user_status-dialog",onSelect:e.setIcon},{default:g(()=>[p(d,{variant:"tertiary","aria-label":e.t("user_status","Emoji for your status message")},{icon:g(()=>[b(l(e.visibleIcon),1)]),_:1},8,["aria-label"])]),_:1},8,["onSelect"]),a("div",Q,[p(_,{ref:"input",maxlength:"80",disabled:u.disabled,placeholder:e.t("user_status","What is your status?"),modelValue:u.message,type:"text",label:e.t("user_status","What is your status?"),"onUpdate:modelValue":e.onChange},null,8,["disabled","placeholder","modelValue","label","onUpdate:modelValue"])])])}const ee=S(G,[["render",Z],["__scopeId","data-v-90dc6f12"]]),te={name:"OnlineStatusSelect",components:{NcUserStatusIcon:z},props:{checked:{type:Boolean,default:!1},type:{type:String,required:!0},label:{type:String,required:!0},subline:{type:String,default:null}},emits:["select"],computed:{id(){return`user-status-online-status-${this.type}`}},methods:{onChange(){this.$emit("select",this.type)}}},se={class:"user-status-online-select"},ae=["id","checked"],ie=["for"],re={class:"user-status-online-select__icon-wrapper"},ue={class:"user-status-online-select__subline"};function le(t,i,u,f,o,e){const d=c("NcUserStatusIcon");return n(),m("div",se,[a("input",{id:e.id,checked:u.checked,class:"hidden-visually user-status-online-select__input",type:"radio",name:"user-status-online",onChange:i[0]||(i[0]=(...r)=>e.onChange&&e.onChange(...r))},null,40,ae),a("label",{for:e.id,class:"user-status-online-select__label"},[a("span",re,[p(d,{status:u.type,class:"user-status-online-select__icon","aria-hidden":"true"},null,8,["status"])]),b(" "+l(u.label)+" ",1),a("em",ue,l(u.subline),1)],8,ie)])}const ne=S(te,[["render",le],["__scopeId","data-v-16876893"]]),ce={name:"PredefinedStatus",props:{messageId:{type:String,required:!0},icon:{type:String,required:!0},message:{type:String,required:!0},clearAt:{type:Object,required:!1,default:null},selected:{type:Boolean,required:!1,default:!1}},emits:["select"],computed:{id(){return`user-status-predefined-status-${this.messageId}`},formattedClearAt(){return C(this.clearAt)}},methods:{select(){this.$emit("select")}}},oe={class:"predefined-status"},de=["id","checked"],pe=["for"],me={"aria-hidden":"true",class:"predefined-status__label--icon"},he={class:"predefined-status__label--message"},ge={class:"predefined-status__label--clear-at"};function Se(t,i,u,f,o,e){return n(),m("li",oe,[a("input",{id:e.id,class:"hidden-visually predefined-status__input",type:"radio",name:"predefined-status",checked:u.selected,onChange:i[0]||(i[0]=(...d)=>e.select&&e.select(...d))},null,40,de),a("label",{class:"predefined-status__label",for:e.id},[a("span",me,l(u.icon),1),a("span",he,l(u.message),1),a("span",ge,l(e.formattedClearAt),1)],8,pe)])}const fe=S(ce,[["render",Se],["__scopeId","data-v-200bf95b"]]),_e={name:"PredefinedStatusesList",components:{PredefinedStatus:fe},emits:["selectStatus"],data(){return{lastSelected:null}},computed:{...T({predefinedStatuses:t=>t.predefinedStatuses.predefinedStatuses,messageId:t=>t.userStatus.messageId}),...R(["statusesHaveLoaded"])},watch:{messageId:{immediate:!0,handler(){this.lastSelected=this.messageId}}},created(){this.$store.dispatch("loadAllPredefinedStatuses")},methods:{t:s,selectStatus(t){this.lastSelected=t.id,this.$emit("selectStatus",t)}}},be=["aria-label"],ye={key:1,class:"predefined-statuses-list"};function ve(t,i,u,f,o,e){const d=c("PredefinedStatus");return t.statusesHaveLoaded?(n(),m("ul",{key:0,class:"predefined-statuses-list","aria-label":e.t("user_status","Predefined statuses")},[(n(!0),m($,null,B(t.predefinedStatuses,r=>(n(),y(d,{key:r.id,messageId:r.id,icon:r.icon,message:r.message,clearAt:r.clearAt,selected:o.lastSelected===r.id,onSelect:_=>e.selectStatus(r)},null,8,["messageId","icon","message","clearAt","selected","onSelect"]))),128))],8,be)):(n(),m("div",ye,[...i[0]||(i[0]=[a("div",{class:"icon icon-loading-small"},null,-1)])]))}const Ie=S(_e,[["render",ve],["__scopeId","data-v-b7009355"]]),ke={name:"PreviousStatus",components:{NcButton:A},props:{icon:{type:[String,null],required:!0},message:{type:String,required:!0}},emits:["select"],methods:{t:s,select(){this.$emit("select")}}},Ae={class:"predefined-status__icon"},Me={class:"predefined-status__message"},Ce={class:"predefined-status__clear-at"},$e={class:"backup-status__reset-button"};function Be(t,i,u,f,o,e){const d=c("NcButton");return n(),m("div",{class:"predefined-status backup-status",tabindex:"0",onKeyup:[i[0]||(i[0]=M((...r)=>e.select&&e.select(...r),["enter"])),i[1]||(i[1]=M((...r)=>e.select&&e.select(...r),["space"]))],onClick:i[2]||(i[2]=(...r)=>e.select&&e.select(...r))},[a("span",Ae,l(u.icon),1),a("span",Me,l(u.message),1),a("span",Ce,l(e.t("user_status","Previously set")),1),a("div",$e,[p(d,{onClick:e.select},{default:g(()=>[b(l(e.t("user_status","Reset status")),1)]),_:1},8,["onClick"])])],32)}const Ne=S(ke,[["render",Be],["__scopeId","data-v-5fa747a0"]]);function Pe(){return[{type:"online",label:s("user_status","Online")},{type:"away",label:s("user_status","Away")},{type:"busy",label:s("user_status","Busy")},{type:"dnd",label:s("user_status","Do not disturb"),subline:s("user_status","Mute all notifications")},{type:"invisible",label:s("user_status","Invisible"),subline:s("user_status","Appear offline")}]}const we={name:"SetStatusModal",components:{ClearAtSelect:Y,CustomMessageInput:ee,NcModal:q,OnlineStatusSelect:ne,PredefinedStatusesList:Ie,PreviousStatus:Ne,NcButton:A},mixins:[j],props:{inline:{type:Boolean,default:!1}},emits:["close"],data(){return{clearAt:null,editedMessage:"",predefinedMessageId:null,isSavingStatus:!1,statuses:Pe()}},computed:{messageId(){return this.$store.state.userStatus.messageId},icon(){return this.$store.state.userStatus.icon},message(){return this.$store.state.userStatus.message||""},hasBackupStatus(){return this.messageId&&(this.backupIcon||this.backupMessage)},backupIcon(){return this.$store.state.userBackupStatus.icon||""},backupMessage(){return this.$store.state.userBackupStatus.message||""},absencePageUrl(){return O("settings/user/availability#absence")},resetButtonText(){return this.backupIcon&&this.backupMessage?s("user_status",'Reset status to "{icon} {message}"',{icon:this.backupIcon,message:this.backupMessage}):this.backupMessage?s("user_status",'Reset status to "{message}"',{message:this.backupMessage}):this.backupIcon?s("user_status",'Reset status to "{icon}"',{icon:this.backupIcon}):s("user_status","Reset status")},setReturnFocus(){if(!this.inline)return document.querySelector('[aria-controls="header-menu-user-menu"]')??void 0}},watch:{message:{immediate:!0,handler(t){this.editedMessage=t}}},mounted(){this.$store.dispatch("fetchBackupFromServer"),this.predefinedMessageId=this.$store.state.userStatus.messageId,this.$store.state.userStatus.clearAt!==null&&(this.clearAt={type:"_time",time:this.$store.state.userStatus.clearAt})},methods:{t:s,closeModal(){this.$emit("close")},setIcon(t){this.predefinedMessageId=null,this.$store.dispatch("setCustomMessage",{message:this.message,icon:t,clearAt:this.clearAt}),this.$nextTick(()=>{this.$refs.customMessageInput.focus()})},setMessage(t){this.predefinedMessageId=null,this.editedMessage=t},setClearAt(t){this.clearAt=t},selectPredefinedMessage(t){this.predefinedMessageId=t.id,this.clearAt=t.clearAt,this.$store.dispatch("setPredefinedMessage",{messageId:t.id,clearAt:t.clearAt})},async saveStatus(){if(!this.isSavingStatus){try{this.isSavingStatus=!0,this.predefinedMessageId===null?await this.$store.dispatch("setCustomMessage",{message:this.editedMessage,icon:this.icon,clearAt:this.clearAt}):this.$store.dispatch("setPredefinedMessage",{messageId:this.predefinedMessageId,clearAt:this.clearAt})}catch(t){v(s("user_status","There was an error saving the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.closeModal()}},async clearStatus(){try{this.isSavingStatus=!0,await this.$store.dispatch("clearMessage")}catch(t){v(s("user_status","There was an error clearing the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.predefinedMessageId=null,this.closeModal()},async revertBackupFromServer(){try{this.isSavingStatus=!0,await this.$store.dispatch("revertBackupFromServer",{messageId:this.messageId})}catch(t){v(s("user_status","There was an error reverting the status")),I.debug(t),this.isSavingStatus=!1;return}this.isSavingStatus=!1,this.predefinedMessageId=this.$store.state.userStatus?.messageId}}},Fe={class:"set-status-modal"},Oe={id:"user_status-set-dialog",class:"set-status-modal__header"},qe=["aria-label"],xe={class:"set-status-modal__header"},Re={class:"set-status-modal__custom-input"},Te={key:0,class:"set-status-modal__automation-hint"},je={class:"status-buttons"};function Ue(t,i,u,f,o,e){const d=c("OnlineStatusSelect"),r=c("CustomMessageInput"),_=c("NcButton"),N=c("PreviousStatus"),P=c("PredefinedStatusesList"),w=c("ClearAtSelect"),F=c("NcModal");return n(),y(F,{id:"user_status-dialog",size:"normal",labelId:"user_status-set-dialog",dark:"",setReturnFocus:e.setReturnFocus,onClose:e.closeModal},{default:g(()=>[a("div",Fe,[a("h2",Oe,l(e.t("user_status","Online status")),1),a("div",{class:"set-status-modal__online-status",role:"radiogroup","aria-label":e.t("user_status","Online status")},[(n(!0),m($,null,B(o.statuses,h=>(n(),y(d,U({key:h.type},{ref_for:!0},h,{checked:h.type===t.statusType,onSelect:t.changeStatus}),null,16,["checked","onSelect"]))),128))],8,qe),a("form",{onSubmit:i[0]||(i[0]=V((...h)=>e.saveStatus&&e.saveStatus(...h),["prevent"])),onReset:i[1]||(i[1]=(...h)=>e.clearStatus&&e.clearStatus(...h))},[a("h3",xe,l(e.t("user_status","Status message")),1),a("div",Re,[p(r,{ref:"customMessageInput",icon:e.icon,message:o.editedMessage,onChange:e.setMessage,onSelectIcon:e.setIcon},null,8,["icon","message","onChange","onSelectIcon"]),e.messageId==="vacationing"?(n(),y(_,{key:0,href:e.absencePageUrl,target:"_blank",variant:"secondary","aria-label":e.t("user_status","Set absence period")},{default:g(()=>[b(l(e.t("user_status","Set absence period and replacement")+" ↗"),1)]),_:1},8,["href","aria-label"])):k("",!0)]),e.hasBackupStatus?(n(),m("div",Te,l(e.t("user_status","Your status was set automatically")),1)):k("",!0),e.hasBackupStatus?(n(),y(N,{key:1,icon:e.backupIcon,message:e.backupMessage,onSelect:e.revertBackupFromServer},null,8,["icon","message","onSelect"])):k("",!0),p(P,{onSelectStatus:e.selectPredefinedMessage},null,8,["onSelectStatus"]),p(w,{clearAt:o.clearAt,onSelectClearAt:e.setClearAt},null,8,["clearAt","onSelectClearAt"]),a("div",je,[p(_,{wide:!0,variant:"tertiary",type:"reset","aria-label":e.t("user_status","Clear status message"),disabled:o.isSavingStatus},{default:g(()=>[b(l(e.t("user_status","Clear status message")),1)]),_:1},8,["aria-label","disabled"]),p(_,{wide:!0,variant:"primary",type:"submit","aria-label":e.t("user_status","Set status message"),disabled:o.isSavingStatus},{default:g(()=>[b(l(e.t("user_status","Set status message")),1)]),_:1},8,["aria-label","disabled"])])],32)])]),_:1},8,["setReturnFocus","onClose"])}const lt=S(we,[["render",Ue],["__scopeId","data-v-e87f4d59"]]);export{lt as default}; +//# sourceMappingURL=SetStatusModal-arJhi5cf.chunk.mjs.map diff --git a/dist/SetStatusModal-__uilgdV.chunk.mjs.license b/dist/SetStatusModal-arJhi5cf.chunk.mjs.license similarity index 100% rename from dist/SetStatusModal-__uilgdV.chunk.mjs.license rename to dist/SetStatusModal-arJhi5cf.chunk.mjs.license diff --git a/dist/SetStatusModal-__uilgdV.chunk.mjs.map b/dist/SetStatusModal-arJhi5cf.chunk.mjs.map similarity index 99% rename from dist/SetStatusModal-__uilgdV.chunk.mjs.map rename to dist/SetStatusModal-arJhi5cf.chunk.mjs.map index aff36c093343a..5216f5025a9f5 100644 --- a/dist/SetStatusModal-__uilgdV.chunk.mjs.map +++ b/dist/SetStatusModal-arJhi5cf.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"SetStatusModal-__uilgdV.chunk.mjs","sources":["../build/frontend/apps/user_status/src/services/clearAtOptionsService.js","../build/frontend/apps/user_status/src/components/ClearAtSelect.vue","../build/frontend/apps/user_status/src/components/CustomMessageInput.vue","../build/frontend/apps/user_status/src/components/OnlineStatusSelect.vue","../build/frontend/apps/user_status/src/components/PredefinedStatus.vue","../build/frontend/apps/user_status/src/components/PredefinedStatusesList.vue","../build/frontend/apps/user_status/src/components/PreviousStatus.vue","../build/frontend/apps/user_status/src/services/statusOptionsService.js","../build/frontend/apps/user_status/src/components/SetStatusModal.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Returns an array\n *\n * @return {object[]}\n */\nfunction getAllClearAtOptions() {\n\treturn [{\n\t\tlabel: t('user_status', 'Don\\'t clear'),\n\t\tclearAt: null,\n\t}, {\n\t\tlabel: t('user_status', '30 minutes'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 1800,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '1 hour'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 3600,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '4 hours'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 14400,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'Today'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'day',\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'This week'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'week',\n\t\t},\n\t}]\n}\n\nexport {\n\tgetAllClearAtOptions,\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Returns a list of all user-definable statuses\n *\n * @return {object[]}\n */\nfunction getAllStatusOptions() {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t}, {\n\t\ttype: 'busy',\n\t\tlabel: t('user_status', 'Busy'),\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\tsubline: t('user_status', 'Appear offline'),\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\n}\n","\n\n\n\n\n\n\n"],"names":["getAllClearAtOptions","t","_sfc_main","NcSelect","clearAtFormat","option","_hoisted_1","_openBlock","_createElementBlock","_createElementVNode","_hoisted_2","_toDisplayString","$options","_createVNode","_component_NcSelect","$data","NcTextField","NcButton","NcEmojiPicker","value","icon","_component_NcEmojiPicker","_component_NcButton","_component_NcTextField","$props","NcUserStatusIcon","_hoisted_4","_hoisted_5","args","_component_NcUserStatusIcon","_hoisted_6","PredefinedStatus","mapState","state","mapGetters","status","_ctx","_Fragment","_renderList","_createBlock","_component_PredefinedStatus","$event","_cache","_hoisted_3","getAllStatusOptions","ClearAtSelect","CustomMessageInput","NcModal","OnlineStatusSelect","PredefinedStatusesList","PreviousStatus","OnlineStatusMixin","generateUrl","newValue","message","clearAt","err","showError","logger","_hoisted_7","_component_NcModal","_component_OnlineStatusSelect","_mergeProps","_component_CustomMessageInput","_component_PreviousStatus","_component_PredefinedStatusesList","_component_ClearAtSelect"],"mappings":"4sCAYA,SAASA,GAAuB,CAC/B,MAAO,CAAC,CACP,MAAOC,EAAE,cAAe,aAAc,EACtC,QAAS,IACX,EAAI,CACF,MAAOA,EAAE,cAAe,YAAY,EACpC,QAAS,CACR,KAAM,SACN,KAAM,IACT,CACA,EAAI,CACF,MAAOA,EAAE,cAAe,QAAQ,EAChC,QAAS,CACR,KAAM,SACN,KAAM,IACT,CACA,EAAI,CACF,MAAOA,EAAE,cAAe,SAAS,EACjC,QAAS,CACR,KAAM,SACN,KAAM,KACT,CACA,EAAI,CACF,MAAOA,EAAE,cAAe,OAAO,EAC/B,QAAS,CACR,KAAM,SACN,KAAM,KACT,CACA,EAAI,CACF,MAAOA,EAAE,cAAe,WAAW,EACnC,QAAS,CACR,KAAM,SACN,KAAM,MACT,CACA,CAAE,CACF,CCnBA,MAAKC,EAAU,CACd,KAAM,gBACN,WAAY,CACX,SAAAC,GAGD,MAAO,CACN,QAAS,CACR,KAAM,OACN,QAAS,OAIX,MAAO,CAAC,eAAe,EAEvB,MAAO,CACN,MAAO,CACN,QAASH,EAAoB,CAC9B,CACD,EAEA,SAAU,CAMT,QAAS,CACR,MAAO,CACN,QAAS,KAAK,QACd,MAAOI,EAAc,KAAK,OAAO,CAClC,CACD,GAGD,QAAS,GACRH,EAOA,OAAOI,EAAQ,CACTA,GAIL,KAAK,MAAM,gBAAiBA,EAAO,OAAO,CAC3C,EAEF,EAzEMC,EAAA,CAAA,MAAM,iBAAiB,KACpB,MAAM,yBAAyB,IAAI,6DAD3C,OAAAC,EAAA,EAAAC,EAaM,MAbNF,EAaM,CAZLG,EAEQ,QAFRC,EAEQC,EADJC,EAAA,EAAC,cAAA,oBAAA,CAAA,EAAA,CAAA,EAELC,EAQ6BC,EAAA,CAP5B,QAAQ,cACR,MAAM,0BACL,QAASC,EAAA,QACT,WAAYH,EAAA,OACZ,UAAW,GACZ,UAAU,MACV,aAAA,GACC,oBAAiBA,EAAA,2HCiBhBV,EAAU,CACd,KAAM,qBAEN,WAAY,aACXc,EACA,SAAAC,EACA,cAAAC,GAGD,MAAO,CACN,KAAM,CACL,KAAM,OACN,QAAS,MAGV,QAAS,CACR,KAAM,OACN,QAAS,IAGV,SAAU,CACT,KAAM,QACN,QAAS,KAIX,MAAO,CACN,SACA,cAGD,SAAU,CAMT,aAAc,CACb,OAAO,KAAK,MAAQ,IACrB,GAGD,QAAS,GACRjB,EAEA,OAAQ,CACP,KAAK,MAAM,MAAM,MAAK,CACvB,EAOA,SAASkB,EAAO,CACf,KAAK,MAAM,SAAUA,CAAK,CAC3B,EAEA,QAAQC,EAAM,CACb,KAAK,MAAM,aAAcA,CAAI,CAC9B,EAEF,KA5FM,MAAM,eAAe,KAAK,SAUzBV,EAAA,CAAA,MAAM,yBAAyB,wFAVrC,OAAAH,EAAA,EAAAC,EAqBM,MArBNF,EAqBM,CApBLO,EAQgBQ,EAAA,CARD,UAAU,sBAAuB,SAAQT,EAAA,oBACvD,IAMW,CANXC,EAMWS,EAAA,CALV,QAAQ,WACP,aAAYV,EAAA,EAAC,cAAA,+BAAA,IACH,OACV,IAAiB,KAAdA,EAAA,WAAW,EAAA,CAAA,kDAIjBH,EAUM,MAVNC,EAUM,CATLG,EAQiCU,EAAA,CAPhC,IAAI,QACJ,UAAU,KACT,SAAUC,EAAA,SACV,YAAaZ,EAAA,EAAC,cAAA,sBAAA,EACd,WAAYY,EAAA,QACb,KAAK,OACJ,MAAOZ,EAAA,EAAC,cAAA,sBAAA,EACR,sBAAmBA,EAAA,yJCKnBV,GAAU,CACd,KAAM,qBAEN,WAAY,CACX,iBAAAuB,GAGD,MAAO,CACN,QAAS,CACR,KAAM,QACN,QAAS,IAGV,KAAM,CACL,KAAM,OACN,SAAU,IAGX,MAAO,CACN,KAAM,OACN,SAAU,IAGX,QAAS,CACR,KAAM,OACN,QAAS,OAIX,MAAO,CAAC,QAAQ,EAEhB,SAAU,CACT,IAAK,CACJ,MAAO,6BAA6B,KAAK,IAAI,EAC9C,GAGD,QAAS,CACR,UAAW,CACV,KAAK,MAAM,SAAU,KAAK,IAAI,CAC/B,EAEF,EAlEMnB,GAAA,CAAA,MAAM,2BAA2B,iCAS9BoB,GAAA,CAAA,MAAM,yCAAyC,EAOjDC,GAAA,CAAA,MAAM,oCAAoC,yDAhBhD,OAAApB,EAAA,EAAAC,EAkBM,MAlBNF,GAkBM,CAjBLG,EAMoB,QAAA,CALlB,GAAIG,EAAA,GACJ,QAASY,EAAA,QACV,MAAM,mDACN,KAAK,QACL,KAAK,qBACJ,6BAAQZ,EAAA,UAAAA,EAAA,SAAA,GAAAgB,CAAA,gBACVnB,EASQ,QAAA,CATA,IAAKG,EAAA,GAAI,MAAM,qCACtBH,EAKO,OALPiB,GAKO,CAJNb,EAGsBgB,EAAA,CAFpB,OAAQL,EAAA,KACT,MAAM,kCACN,cAAY,+BACP,IACPb,EAAGa,EAAA,KAAK,EAAG,IACX,CAAA,EAAAf,EAAiE,KAAjEkB,GAAiEhB,EAAfa,EAAA,OAAO,EAAA,CAAA,0ECSvDtB,GAAU,CACd,KAAM,mBAEN,MAAO,CACN,UAAW,CACV,KAAM,OACN,SAAU,IAGX,KAAM,CACL,KAAM,OACN,SAAU,IAGX,QAAS,CACR,KAAM,OACN,SAAU,IAGX,QAAS,CACR,KAAM,OACN,SAAU,GACV,QAAS,MAGV,SAAU,CACT,KAAM,QACN,SAAU,GACV,QAAS,KAIX,MAAO,CAAC,QAAQ,EAEhB,SAAU,CACT,IAAK,CACJ,MAAO,iCAAiC,KAAK,SAAS,EACvD,EAEA,kBAAmB,CAClB,OAAOE,EAAc,KAAK,OAAO,CAClC,GAGD,QAAS,CAIR,QAAS,CACR,KAAK,MAAM,QAAQ,CACpB,EAEF,EA7EKE,GAAA,CAAA,MAAM,mBAAmB,qCASrB,cAAY,OAAO,MAAM,kCAGzBqB,GAAA,CAAA,MAAM,mCAAmC,EAGzCG,GAAA,CAAA,MAAM,oCAAoC,2BAflD,OAAAvB,EAAA,EAAAC,EAmBK,KAnBLF,GAmBK,CAlBJG,EAMkB,QAAA,CALhB,GAAIG,EAAA,GACL,MAAM,2CACN,KAAK,QACL,KAAK,oBACJ,QAASY,EAAA,SACT,6BAAQZ,EAAA,QAAAA,EAAA,OAAA,GAAAgB,CAAA,gBACVnB,EAUQ,QAAA,CAVD,MAAM,2BAA4B,IAAKG,EAAA,KAC7CH,EAEO,OAFPiB,GAEOf,EADHa,EAAA,IAAI,EAAA,CAAA,EAERf,EAEO,OAFPkB,GAEOhB,EADHa,EAAA,OAAO,EAAA,CAAA,EAEXf,EAEO,OAFPqB,GAEOnB,EADHC,EAAA,gBAAgB,EAAA,CAAA,0ECWlBV,GAAU,CACd,KAAM,yBACN,WAAY,CACX,iBAAA6B,IAGD,MAAO,CAAC,cAAc,EAEtB,MAAO,CACN,MAAO,CACN,aAAc,IACf,CACD,EAEA,SAAU,CACT,GAAGC,EAAS,CACX,mBAAqBC,GAAUA,EAAM,mBAAmB,mBACxD,UAAYA,GAAUA,EAAM,WAAW,SACxC,CAAC,EAED,GAAGC,EAAW,CAAC,oBAAoB,CAAC,GAGrC,MAAO,CACN,UAAW,CACV,UAAW,GACX,SAAU,CACT,KAAK,aAAe,KAAK,SAC1B,IAQF,SAAU,CACT,KAAK,OAAO,SAAS,2BAA2B,CACjD,EAEA,QAAS,GACRjC,EAOA,aAAakC,EAAQ,CACpB,KAAK,aAAeA,EAAO,GAC3B,KAAK,MAAM,eAAgBA,CAAM,CAClC,EAEF,8BA/DE,MAAM,0FAfAC,EAAA,wBADP5B,EAaK,KAAA,OAXJ,MAAM,2BACL,aAAYI,EAAA,EAAC,cAAA,qBAAA,WACdJ,EAQkC6B,EAAA,KAAAC,EAPhBF,EAAA,mBAAVD,QADRI,EAQkCC,EAAA,CANhC,IAAKL,EAAO,GACZ,UAAWA,EAAO,GAClB,KAAMA,EAAO,KACb,QAASA,EAAO,QAChB,QAASA,EAAO,QAChB,SAAUpB,EAAA,eAAiBoB,EAAO,GAClC,SAAMM,GAAE7B,EAAA,aAAauB,CAAM,2FAE9B5B,IAAAC,EAIM,MAJNE,GAIM,CAAA,GAAAgC,EAAA,CAAA,IAAAA,EAAA,CAAA,EAAA,CADLjC,EAAuC,MAAA,CAAlC,MAAM,yBAAyB,EAAA,KAAA,EAAA,sECUjCP,GAAU,CACd,KAAM,iBAEN,WAAY,CACX,SAAAe,GAGD,MAAO,CACN,KAAM,CACL,KAAM,CAAC,OAAQ,IAAI,EACnB,SAAU,IAGX,QAAS,CACR,KAAM,OACN,SAAU,KAIZ,MAAO,CAAC,QAAQ,EAEhB,QAAS,GACRhB,EAKA,QAAS,CACR,KAAK,MAAM,QAAQ,CACpB,EAEF,EArDQK,GAAA,CAAA,MAAM,yBAAyB,EAG/BI,GAAA,CAAA,MAAM,4BAA4B,EAGlCiC,GAAA,CAAA,MAAM,6BAA6B,EAIpCjB,GAAA,CAAA,MAAM,6BAA6B,4DAhBzClB,EAqBM,MAAA,CApBL,MAAM,kCACN,SAAS,IACR,QAAK,uBAAQI,EAAA,QAAAA,EAAA,OAAA,GAAAgB,CAAA,EAAM,CAAA,OAAA,CAAA,yBACNhB,EAAA,QAAAA,EAAA,OAAA,GAAAgB,CAAA,EAAM,CAAA,OAAA,CAAA,IACnB,4BAAOhB,EAAA,QAAAA,EAAA,OAAA,GAAAgB,CAAA,KACRnB,EAEO,OAFPH,GAEOK,EADHa,EAAA,IAAI,EAAA,CAAA,EAERf,EAEO,OAFPC,GAEOC,EADHa,EAAA,OAAO,EAAA,CAAA,EAEXf,EAEO,OAFPkC,GAEOhC,EADHC,EAAA,EAAC,cAAA,gBAAA,CAAA,EAAA,CAAA,EAGLH,EAIM,MAJNiB,GAIM,CAHLb,EAEWS,EAAA,CAFA,QAAOV,EAAA,MAAM,EAAA,WACvB,IAAsC,KAAnCA,EAAA,EAAC,cAAA,cAAA,CAAA,EAAA,CAAA,8FCXR,SAASgC,IAAsB,CAC9B,MAAO,CAAC,CACP,KAAM,SACN,MAAO3C,EAAE,cAAe,QAAQ,CAClC,EAAI,CACF,KAAM,OACN,MAAOA,EAAE,cAAe,MAAM,CAChC,EAAI,CACF,KAAM,OACN,MAAOA,EAAE,cAAe,MAAM,CAChC,EAAI,CACF,KAAM,MACN,MAAOA,EAAE,cAAe,gBAAgB,EACxC,QAASA,EAAE,cAAe,wBAAwB,CACpD,EAAI,CACF,KAAM,YACN,MAAOA,EAAE,cAAe,WAAW,EACnC,QAASA,EAAE,cAAe,gBAAgB,CAC5C,CAAE,CACF,CCwEA,MAAKC,GAAU,CACd,KAAM,iBAEN,WAAY,CACX,cAAA2C,EACA,mBAAAC,GACA,QAAAC,EACA,mBAAAC,GACA,uBAAAC,GACA,eAAAC,GACA,SAAAjC,GAGD,OAAQ,CAACkC,CAAiB,EAE1B,MAAO,CAMN,OAAQ,CACP,KAAM,QACN,QAAS,KAIX,MAAO,CAAC,OAAO,EAEf,MAAO,CACN,MAAO,CACN,QAAS,KACT,cAAe,GACf,oBAAqB,KACrB,eAAgB,GAChB,SAAUP,GAAmB,CAC9B,CACD,EAEA,SAAU,CACT,WAAY,CACX,OAAO,KAAK,OAAO,MAAM,WAAW,SACrC,EAEA,MAAO,CACN,OAAO,KAAK,OAAO,MAAM,WAAW,IACrC,EAEA,SAAU,CACT,OAAO,KAAK,OAAO,MAAM,WAAW,SAAW,EAChD,EAEA,iBAAkB,CACjB,OAAO,KAAK,YAAc,KAAK,YAAc,KAAK,cACnD,EAEA,YAAa,CACZ,OAAO,KAAK,OAAO,MAAM,iBAAiB,MAAQ,EACnD,EAEA,eAAgB,CACf,OAAO,KAAK,OAAO,MAAM,iBAAiB,SAAW,EACtD,EAEA,gBAAiB,CAChB,OAAOQ,EAAY,oCAAoC,CACxD,EAEA,iBAAkB,CACjB,OAAI,KAAK,YAAc,KAAK,cACpBnD,EAAE,cAAe,qCAAsC,CAC7D,KAAM,KAAK,WACX,QAAS,KAAK,cACd,EACS,KAAK,cACRA,EAAE,cAAe,8BAA+B,CACtD,QAAS,KAAK,cACd,EACS,KAAK,WACRA,EAAE,cAAe,2BAA4B,CACnD,KAAM,KAAK,WACX,EAGKA,EAAE,cAAe,cAAc,CACvC,EAEA,gBAAiB,CAChB,GAAI,CAAA,KAAK,OAGT,OAAO,SAAS,cAAc,yCAAyC,GAAK,MAC7E,GAGD,MAAO,CACN,QAAS,CACR,UAAW,GACX,QAAQoD,EAAU,CACjB,KAAK,cAAgBA,CACtB,IAOF,SAAU,CACT,KAAK,OAAO,SAAS,uBAAuB,EAE5C,KAAK,oBAAsB,KAAK,OAAO,MAAM,WAAW,UACpD,KAAK,OAAO,MAAM,WAAW,UAAY,OAC5C,KAAK,QAAU,CACd,KAAM,QACN,KAAM,KAAK,OAAO,MAAM,WAAW,OACpC,EAEF,EAEA,QAAS,GACRpD,EAKA,YAAa,CACZ,KAAK,MAAM,OAAO,CACnB,EAOA,QAAQmB,EAAM,CACb,KAAK,oBAAsB,KAC3B,KAAK,OAAO,SAAS,mBAAoB,CACxC,QAAS,KAAK,QACd,KAAAA,EACA,QAAS,KAAK,QACd,EACD,KAAK,UAAU,IAAM,CACpB,KAAK,MAAM,mBAAmB,MAAK,CACpC,CAAC,CACF,EAOA,WAAWkC,EAAS,CACnB,KAAK,oBAAsB,KAC3B,KAAK,cAAgBA,CACtB,EAOA,WAAWC,EAAS,CACnB,KAAK,QAAUA,CAChB,EAOA,wBAAwBpB,EAAQ,CAC/B,KAAK,oBAAsBA,EAAO,GAClC,KAAK,QAAUA,EAAO,QACtB,KAAK,OAAO,SAAS,uBAAwB,CAC5C,UAAWA,EAAO,GAClB,QAASA,EAAO,QAChB,CACF,EAOA,MAAM,YAAa,CAClB,GAAI,CAAA,KAAK,eAIT,CAAA,GAAI,CACH,KAAK,eAAiB,GAElB,KAAK,sBAAwB,KAChC,MAAM,KAAK,OAAO,SAAS,mBAAoB,CAC9C,QAAS,KAAK,cACd,KAAM,KAAK,KACX,QAAS,KAAK,QACd,EAED,KAAK,OAAO,SAAS,uBAAwB,CAC5C,UAAW,KAAK,oBAChB,QAAS,KAAK,QACd,CAEH,OAASqB,EAAK,CACbC,EAAUxD,EAAE,cAAe,sCAAsC,CAAC,EAClEyD,EAAO,MAAMF,CAAG,EAChB,KAAK,eAAiB,GACtB,MACD,CAEA,KAAK,eAAiB,GACtB,KAAK,WAAU,CAAA,CAChB,EAMA,MAAM,aAAc,CACnB,GAAI,CACH,KAAK,eAAiB,GAEtB,MAAM,KAAK,OAAO,SAAS,cAAc,CAC1C,OAASA,EAAK,CACbC,EAAUxD,EAAE,cAAe,wCAAwC,CAAC,EACpEyD,EAAO,MAAMF,CAAG,EAChB,KAAK,eAAiB,GACtB,MACD,CAEA,KAAK,eAAiB,GACtB,KAAK,oBAAsB,KAC3B,KAAK,WAAU,CAChB,EAMA,MAAM,wBAAyB,CAC9B,GAAI,CACH,KAAK,eAAiB,GAEtB,MAAM,KAAK,OAAO,SAAS,yBAA0B,CACpD,UAAW,KAAK,UAChB,CACF,OAASA,EAAK,CACbC,EAAUxD,EAAE,cAAe,yCAAyC,CAAC,EACrEyD,EAAO,MAAMF,CAAG,EAChB,KAAK,eAAiB,GACtB,MACD,CAEA,KAAK,eAAiB,GACtB,KAAK,oBAAsB,KAAK,OAAO,MAAM,YAAY,SAC1D,EAEF,EA5VOlD,GAAA,CAAA,MAAM,kBAAkB,MAExB,GAAG,yBAAyB,MAAM,8CAiBjCoB,GAAA,CAAA,MAAM,0BAA0B,EAG/BC,GAAA,CAAA,MAAM,gCAAgC,YAkB1C,MAAM,qCAYFgC,GAAA,CAAA,MAAM,gBAAgB,wMA3D9BpB,EA+EUqB,EAAA,CA9ET,GAAG,qBACH,KAAK,SACL,QAAQ,yBACR,KAAA,GACC,eAAgBhD,EAAA,eAChB,QAAOA,EAAA,uBACR,IAuEM,CAvENH,EAuEM,MAvENH,GAuEM,CArELG,EAEK,KAFLC,GAEKC,EADDC,EAAA,EAAC,cAAA,eAAA,CAAA,EAAA,CAAA,EAELH,EAUM,MAAA,CATL,MAAM,kCACN,KAAK,aACJ,aAAYG,EAAA,EAAC,cAAA,eAAA,WACdJ,EAK0B6B,EAAA,KAAAC,EAJRvB,EAAA,SAAVoB,IADR5B,EAAA,EAAAgC,EAK0BsB,EAL1BC,EAK0B,CAHxB,IAAK3B,EAAO,mBACLA,EAAM,CACb,QAASA,EAAO,OAASC,EAAA,WACzB,SAAQA,EAAA,8DAIX3B,EAoDO,OAAA,CApDA,+BAAgBG,EAAA,YAAAA,EAAA,WAAA,GAAAgB,CAAA,EAAU,CAAA,SAAA,CAAA,GAAG,4BAAOhB,EAAA,aAAAA,EAAA,YAAA,GAAAgB,CAAA,KAC1CnB,EAEK,KAFLiB,GAEKf,EADDC,EAAA,EAAC,cAAA,gBAAA,CAAA,EAAA,CAAA,EAELH,EAeM,MAfNkB,GAeM,CAdLd,EAKyBkD,EAAA,CAJxB,IAAI,qBACH,KAAMnD,EAAA,KACN,QAASG,EAAA,cACT,SAAQH,EAAA,WACR,aAAYA,EAAA,8DAEPA,EAAA,YAAS,mBADhB2B,EAOWjB,EAAA,OALT,KAAMV,EAAA,eACP,OAAO,SACP,QAAQ,YACP,aAAYA,EAAA,EAAC,cAAA,oBAAA,cACd,IAAmE,KAAhEA,EAAA,EAAC,cAAA,oCAAA,EAAA,IAAA,EAAA,CAAA,8CAICA,EAAA,qBADPJ,EAIM,MAJNsB,GAIMnB,EADFC,EAAA,EAAC,cAAA,mCAAA,CAAA,EAAA,CAAA,YAGEA,EAAA,qBADP2B,EAIoCyB,EAAA,OAFlC,KAAMpD,EAAA,WACN,QAASA,EAAA,cACT,SAAQA,EAAA,wEACVC,EAAkEoD,EAAA,CAAzC,eAAcrD,EAAA,uBAAuB,EAAA,KAAA,EAAA,CAAA,gBAAA,CAAA,EAC9DC,EAE+BqD,EAAA,CAD7B,QAASnD,EAAA,QACT,gBAAeH,EAAA,kDACjBH,EAiBM,MAjBNkD,GAiBM,CAhBL9C,EAOWS,EAAA,CANT,KAAM,GACP,QAAQ,WACR,KAAK,QACJ,aAAYV,EAAA,EAAC,cAAA,sBAAA,EACb,SAAUG,EAAA,2BACX,IAA8C,KAA3CH,EAAA,EAAC,cAAA,sBAAA,CAAA,EAAA,CAAA,sCAELC,EAOWS,EAAA,CANT,KAAM,GACP,QAAQ,UACR,KAAK,SACJ,aAAYV,EAAA,EAAC,cAAA,oBAAA,EACb,SAAUG,EAAA,2BACX,IAA4C,KAAzCH,EAAA,EAAC,cAAA,oBAAA,CAAA,EAAA,CAAA"} \ No newline at end of file +{"version":3,"file":"SetStatusModal-arJhi5cf.chunk.mjs","sources":["../build/frontend/apps/user_status/src/services/clearAtOptionsService.js","../build/frontend/apps/user_status/src/components/ClearAtSelect.vue","../build/frontend/apps/user_status/src/components/CustomMessageInput.vue","../build/frontend/apps/user_status/src/components/OnlineStatusSelect.vue","../build/frontend/apps/user_status/src/components/PredefinedStatus.vue","../build/frontend/apps/user_status/src/components/PredefinedStatusesList.vue","../build/frontend/apps/user_status/src/components/PreviousStatus.vue","../build/frontend/apps/user_status/src/services/statusOptionsService.js","../build/frontend/apps/user_status/src/components/SetStatusModal.vue"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Returns an array\n *\n * @return {object[]}\n */\nfunction getAllClearAtOptions() {\n\treturn [{\n\t\tlabel: t('user_status', 'Don\\'t clear'),\n\t\tclearAt: null,\n\t}, {\n\t\tlabel: t('user_status', '30 minutes'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 1800,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '1 hour'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 3600,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', '4 hours'),\n\t\tclearAt: {\n\t\t\ttype: 'period',\n\t\t\ttime: 14400,\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'Today'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'day',\n\t\t},\n\t}, {\n\t\tlabel: t('user_status', 'This week'),\n\t\tclearAt: {\n\t\t\ttype: 'end-of',\n\t\t\ttime: 'week',\n\t\t},\n\t}]\n}\n\nexport {\n\tgetAllClearAtOptions,\n}\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n","\n\n\n\n\n\n\n","\n\n\n\n\n\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { t } from '@nextcloud/l10n'\n\n/**\n * Returns a list of all user-definable statuses\n *\n * @return {object[]}\n */\nfunction getAllStatusOptions() {\n\treturn [{\n\t\ttype: 'online',\n\t\tlabel: t('user_status', 'Online'),\n\t}, {\n\t\ttype: 'away',\n\t\tlabel: t('user_status', 'Away'),\n\t}, {\n\t\ttype: 'busy',\n\t\tlabel: t('user_status', 'Busy'),\n\t}, {\n\t\ttype: 'dnd',\n\t\tlabel: t('user_status', 'Do not disturb'),\n\t\tsubline: t('user_status', 'Mute all notifications'),\n\t}, {\n\t\ttype: 'invisible',\n\t\tlabel: t('user_status', 'Invisible'),\n\t\tsubline: t('user_status', 'Appear offline'),\n\t}]\n}\n\nexport {\n\tgetAllStatusOptions,\n}\n","\n\n\n\n\n\n\n"],"names":["getAllClearAtOptions","t","_sfc_main","NcSelect","clearAtFormat","option","_hoisted_1","_openBlock","_createElementBlock","_createElementVNode","_hoisted_2","_toDisplayString","$options","_createVNode","_component_NcSelect","$data","NcTextField","NcButton","NcEmojiPicker","value","icon","_component_NcEmojiPicker","_component_NcButton","_component_NcTextField","$props","NcUserStatusIcon","_hoisted_4","_hoisted_5","args","_component_NcUserStatusIcon","_hoisted_6","PredefinedStatus","mapState","state","mapGetters","status","_ctx","_Fragment","_renderList","_createBlock","_component_PredefinedStatus","$event","_cache","_hoisted_3","getAllStatusOptions","ClearAtSelect","CustomMessageInput","NcModal","OnlineStatusSelect","PredefinedStatusesList","PreviousStatus","OnlineStatusMixin","generateUrl","newValue","message","clearAt","err","showError","logger","_hoisted_7","_component_NcModal","_component_OnlineStatusSelect","_mergeProps","_component_CustomMessageInput","_component_PreviousStatus","_component_PredefinedStatusesList","_component_ClearAtSelect"],"mappings":"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"} \ No newline at end of file diff --git a/dist/SetStatusModal-__uilgdV.chunk.mjs.map.license b/dist/SetStatusModal-arJhi5cf.chunk.mjs.map.license similarity index 100% rename from dist/SetStatusModal-__uilgdV.chunk.mjs.map.license rename to dist/SetStatusModal-arJhi5cf.chunk.mjs.map.license diff --git a/dist/SystemTagPicker-iHgA05bq.chunk.mjs b/dist/SystemTagPicker-EcQCUDHG.chunk.mjs similarity index 99% rename from dist/SystemTagPicker-iHgA05bq.chunk.mjs rename to dist/SystemTagPicker-EcQCUDHG.chunk.mjs index 9fcec540918ab..f9a2161b315e8 100644 --- a/dist/SystemTagPicker-iHgA05bq.chunk.mjs +++ b/dist/SystemTagPicker-EcQCUDHG.chunk.mjs @@ -1,2 +1,2 @@ -import{e as R,d as q,a as J}from"./index-DqIuD5e7.chunk.mjs";import{a as _}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{a as A,l as K}from"./index-BgmsSgl5.chunk.mjs";import{t as y,g as S,e as Q,p as W,b as k}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as X}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as Y}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as tt}from"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import{N as et}from"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import{N as st}from"./index-Bos-XXa5.chunk.mjs";import{P as at,N as it}from"./Plus-BsxGg9Cm.chunk.mjs";import{N as ot}from"./mdi-e8YUrhPH.chunk.mjs";import{N as lt}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{_ as nt}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{j as d,o as a,k as g,l as C,t as p,z as w,b as rt,f as c,c as h,w as m,_ as ct,F as E,e as u,C as dt,D as mt,g as N,$ as gt,n as ht}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{P as pt}from"./PencilOutline-TGZB0t_n.chunk.mjs";import{l as L,g as O,s as z,e as I,h as x,c as ut,i as ft,f as yt,u as Ct}from"./api-7RyG6Inm.chunk.mjs";import{e as bt,i as kt,a as Nt}from"./systemtags-init.mjs";import"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-CXHO4UEV.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./dav-C3Vmpmsl.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";import"./folder-29HuacU_-CQFyGatl.chunk.mjs";import"./index-Dpj4ddZx.chunk.mjs";const At={name:"CheckCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},vt=["aria-hidden","aria-label"],wt=["fill","width","height"],Tt={d:"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z"},_t={key:0};function St(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon check-circle-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Tt,[e.title?(a(),d("title",_t,p(e.title),1)):C("",!0)])],8,wt))],16,vt)}const Lt=A(At,[["render",St]]),It={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},$t=["aria-hidden","aria-label"],Rt=["fill","width","height"],Et={d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Ot={key:0};function zt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon circle-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Et,[e.title?(a(),d("title",Ot,p(e.title),1)):C("",!0)])],8,Rt))],16,$t)}const xt=A(It,[["render",zt]]),Pt={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Mt=["aria-hidden","aria-label"],Vt=["fill","width","height"],Bt={d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Ut={key:0};function Dt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon circle-outline-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Bt,[e.title?(a(),d("title",Ut,p(e.title),1)):C("",!0)])],8,Vt))],16,Mt)}const Gt=A(Pt,[["render",Dt]]),jt={name:"TagOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ft=["aria-hidden","aria-label"],Ht=["fill","width","height"],Zt={d:"M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L4 11V4H11L20 13M6.5 5A1.5 1.5 0 1 1 5 6.5A1.5 1.5 0 0 1 6.5 5Z"},qt={key:0};function Jt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon tag-outline-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Zt,[e.title?(a(),d("title",qt,p(e.title),1)):C("",!0)])],8,Ht))],16,Ft)}const Kt=A(jt,[["render",Jt]]),Qt=q(Ct,500),Wt=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||(Nt()?"000000":"ffffff");var P=(t=>(t.BASE="base",t.LOADING="loading",t.CREATING_TAG="creating-tag",t.DONE="done",t))(P||{});const Xt=K("systemtags","restrictSystemTagsCreationToAdmin",!1),Yt=rt({name:"SystemTagPicker",components:{CheckIcon:Lt,CircleIcon:xt,CircleOutlineIcon:Gt,NcButton:X,NcCheckboxRadioSwitch:Y,NcChip:tt,NcColorPicker:et,NcDialog:st,NcEmptyContent:it,NcLoadingIcon:ot,NcNoteCard:lt,NcTextField:nt,PencilIcon:pt,PlusIcon:at,TagIcon:Kt},props:{nodes:{type:Array,required:!0}},emits:{close(t){return t===null||typeof t=="boolean"}},setup(){return{emit:R,Status:P,t:y,canEditOrCreateTag:!Xt||J()?.isAdmin}},data(){return{status:"base",opened:!0,openedPicker:!1,input:"",tags:[],tagList:{},toAdd:[],toRemove:[]}},computed:{sortedTags(){return[...this.tags].sort((t,s)=>t.displayName.localeCompare(s.displayName,S(),{ignorePunctuation:!0}))},filteredTags(){return this.input.trim()===""?this.sortedTags:this.sortedTags.filter(t=>t.displayName.normalize().toLowerCase().includes(this.input.normalize().toLowerCase()))},hasChanges(){return this.toAdd.length>0||this.toRemove.length>0},canCreateTag(){return this.input.trim()!==""&&!this.tags.some(t=>t.displayName.trim().toLocaleLowerCase()===this.input.trim().toLocaleLowerCase())},statusMessage(){if(this.toAdd.length===0&&this.toRemove.length===0)return"";if(this.toAdd.length===1&&this.toRemove.length===1)return k("systemtags","{tag1} will be set and {tag2} will be removed from 1 file.","{tag1} will be set and {tag2} will be removed from {count} files.",this.nodes.length,{tag1:this.formatTagChip(this.toAdd[0]),tag2:this.formatTagChip(this.toRemove[0]),count:this.nodes.length},{escape:!1});const t=this.toAdd.map(this.formatTagChip),s=t.pop(),e=this.toRemove.map(this.formatTagChip),o=e.pop(),l=k("systemtags","{tag} will be set to 1 file.","{tag} will be set to {count} files.",this.nodes.length,{tag:s,count:this.nodes.length},{escape:!1}),n=k("systemtags","{tag} will be removed from 1 file.","{tag} will be removed from {count} files.",this.nodes.length,{tag:o,count:this.nodes.length},{escape:!1}),i=k("systemtags","{tags} and {lastTag} will be set to 1 file.","{tags} and {lastTag} will be set to {count} files.",this.nodes.length,{tags:t.join(", "),lastTag:s,count:this.nodes.length},{escape:!1}),f=k("systemtags","{tags} and {lastTag} will be removed from 1 file.","{tags} and {lastTag} will be removed from {count} files.",this.nodes.length,{tags:e.join(", "),lastTag:o,count:this.nodes.length},{escape:!1});return this.toAdd.length===1&&this.toRemove.length===0?l:this.toAdd.length===0&&this.toRemove.length===1?n:this.toAdd.length>1&&this.toRemove.length===0?i:this.toAdd.length===0&&this.toRemove.length>1?f:this.toAdd.length>1&&this.toRemove.length===1?`${i} ${n}`:this.toAdd.length===1&&this.toRemove.length>1?`${l} ${f}`:`${i} ${f}`}},beforeMount(){yt().then(t=>{this.tags=t}),this.tagList=this.nodes.reduce((t,s)=>((I(s)||[]).forEach(e=>{t[e]=(t[e]||0)+1}),t),{}),this.canEditOrCreateTag||L.debug("System tag creation is restricted to admins and the current user is not an admin")},methods:{formatTagChip(t){const s=this.$refs.chip.$el.cloneNode(!0);if(t.color){const e=this.tagListStyle(t);Object.entries(e).forEach(([o,l])=>{s.style.setProperty(o,l)})}return s.outerHTML.replace("%s",Q(W.sanitize(t.displayName)))},formatTagName(t){return t.userVisible?t.userAssignable?t.displayName:y("systemtags","{displayName} (restricted)",{displayName:t.displayName}):y("systemtags","{displayName} (hidden)",{displayName:t.displayName})},onColorChange(t,s){t.color=s.replace("#",""),Qt(t)},isChecked(t){return t.displayName in this.tagList&&this.tagList[t.displayName]===this.nodes.length},isIndeterminate(t){return t.displayName in this.tagList&&this.tagList[t.displayName]!==0&&this.tagList[t.displayName]!==this.nodes.length},onCheckUpdate(t,s){s?(this.toAdd.push(t),this.toRemove=this.toRemove.filter(e=>e.id!==t.id),this.tagList[t.displayName]=this.nodes.length):(this.toRemove.push(t),this.toAdd=this.toAdd.filter(e=>e.id!==t.id),this.tagList[t.displayName]=0)},async onNewTag(){if(!this.canEditOrCreateTag){_(y("systemtags","Only admins can create new tags"));return}this.status="creating-tag";try{const t={displayName:this.input.trim(),userAssignable:!0,userVisible:!0,canAssign:!0},s=await ut(t),e=await ft(s);this.tags.push(e),this.input="",this.onCheckUpdate(e,!0),await this.$nextTick(),Array.isArray(this.$refs.tags)&&this.$refs.tags.find(o=>o.dataset.cySystemtagsPickerTag===s.toString())?.scrollIntoView({behavior:"instant",block:"center",inline:"center"})}catch(t){_(t?.message||y("systemtags","Failed to create tag"))}finally{this.status="base"}},async onSubmit(){this.status="loading",L.debug("Applying tags",{toAdd:this.toAdd,toRemove:this.toRemove});try{for(const s of this.toAdd){const{etag:e,objects:o}=await O(s,"files"),l=[...new Set([...o.map(n=>n.id).filter(Boolean),...this.nodes.map(n=>n.fileid).filter(Boolean)])];await z(s,"files",l.map(n=>({id:n,type:"files"})),e)}for(const s of this.toRemove){const{etag:e,objects:o}=await O(s,"files"),l=new Set(this.nodes.map(i=>i.fileid)),n=o.map(i=>i.id).filter((i,f,T)=>!l.has(i)&&T.indexOf(i)===f);await z(s,"files",n.map(i=>({id:i,type:"files"})),e)}}catch(s){L.error("Failed to apply tags",{error:s}),_(y("systemtags","Failed to apply tags changes")),this.status="base";return}const t=[];this.toAdd.forEach(s=>{this.nodes.forEach(e=>{const o=[...I(e)||[],s.displayName].sort((l,n)=>l.localeCompare(n,S(),{ignorePunctuation:!0}));x(e,o),t.push(e)})}),this.toRemove.forEach(s=>{this.nodes.forEach(e=>{const o=[...I(e)||[]].filter(l=>l!==s.displayName).sort((l,n)=>l.localeCompare(n,S(),{ignorePunctuation:!0}));x(e,o),t.push(e)})}),t.forEach(s=>R("systemtags:node:updated",s)),this.status="done",setTimeout(()=>{this.opened=!1,this.$emit("close",!0)},2e3)},onCancel(){this.opened=!1,this.$emit("close",null)},tagListStyle(t){if(!t.color)return{"--color-circle-icon":"var(--color-text-maxcontrast)"};const s=bt(`#${t.color}`,`#${Wt}`),e=kt(s)?"#000000":"#ffffff";return{"--color-circle-icon":"var(--color-primary-element)","--color-primary":s,"--color-primary-text":e,"--color-primary-element":s,"--color-primary-element-text":e}}}}),te={class:"systemtags-picker__input"},ee={class:"systemtags-picker__tags","data-cy-systemtags-picker-tags":""},se=["data-cy-systemtags-picker-tag"],ae={class:"systemtags-picker__tag-create-subline"},ie={class:"systemtags-picker__note"},oe=["innerHTML"];function le(t,s,e,o,l,n){const i=c("NcLoadingIcon"),f=c("CheckIcon"),T=c("NcEmptyContent"),M=c("TagIcon"),V=c("NcTextField"),B=c("NcCheckboxRadioSwitch"),U=c("CircleIcon"),D=c("CircleOutlineIcon"),G=c("PencilIcon"),v=c("NcButton"),j=c("NcColorPicker"),F=c("PlusIcon"),$=c("NcNoteCard"),H=c("NcChip"),Z=c("NcDialog");return a(),h(Z,{"data-cy-systemtags-picker":"",noClose:t.status===t.Status.LOADING,name:t.t("systemtags","Manage tags"),open:t.opened,class:ht(["systemtags-picker--"+t.status,"systemtags-picker"]),closeOnClickOutside:"",outTransition:"","onUpdate:open":t.onCancel},{actions:m(()=>[u(v,{disabled:t.status!==t.Status.BASE,variant:"tertiary","data-cy-systemtags-picker-button-cancel":"",onClick:t.onCancel},{default:m(()=>[N(p(t.t("systemtags","Cancel")),1)]),_:1},8,["disabled","onClick"]),u(v,{disabled:!t.hasChanges||t.status!==t.Status.BASE,"data-cy-systemtags-picker-button-submit":"",onClick:t.onSubmit},{default:m(()=>[N(p(t.t("systemtags","Apply")),1)]),_:1},8,["disabled","onClick"])]),default:m(()=>[t.status===t.Status.LOADING||t.status===t.Status.DONE?(a(),h(T,{key:0,name:t.t("systemtags","Applying tags changes…")},{icon:m(()=>[t.status===t.Status.LOADING?(a(),h(i,{key:0})):(a(),h(f,{key:1,fillColor:"var(--color-border-success)"}))]),_:1},8,["name"])):(a(),d(E,{key:1},[g("div",te,[u(V,{modelValue:t.input,"onUpdate:modelValue":s[0]||(s[0]=r=>t.input=r),label:t.canEditOrCreateTag?t.t("systemtags","Search or create tag"):t.t("systemtags","Search tag"),"data-cy-systemtags-picker-input":""},{default:m(()=>[u(M,{size:20})]),_:1},8,["modelValue","label"])]),g("ul",ee,[(a(!0),d(E,null,dt(t.filteredTags,r=>(a(),d("li",{key:r.id,ref_for:!0,ref:"tags","data-cy-systemtags-picker-tag":r.id,style:mt(t.tagListStyle(r)),class:"systemtags-picker__tag"},[u(B,{modelValue:t.isChecked(r),disabled:!r.canAssign,indeterminate:t.isIndeterminate(r),label:r.displayName,class:"systemtags-picker__tag-checkbox","onUpdate:modelValue":b=>t.onCheckUpdate(r,b)},{default:m(()=>[N(p(t.formatTagName(r)),1)]),_:2},1032,["modelValue","disabled","indeterminate","label","onUpdate:modelValue"]),t.canEditOrCreateTag?(a(),h(j,{key:0,"data-cy-systemtags-picker-tag-color":r.id,modelValue:`#${r.color||"000000"}`,shown:t.openedPicker===r.id,class:"systemtags-picker__tag-color","onUpdate:shown":b=>t.openedPicker=b?r.id:!1,onSubmit:b=>t.onColorChange(r,b)},{default:m(()=>[u(v,{"aria-label":t.t("systemtags","Change tag color"),variant:"tertiary"},{icon:m(()=>[r.color?(a(),h(U,{key:0,size:24,fillColor:"var(--color-circle-icon)",class:"button-color-circle"})):(a(),h(D,{key:1,size:24,fillColor:"var(--color-circle-icon)",class:"button-color-empty"})),u(G,{class:"button-color-pencil"})]),_:2},1032,["aria-label"])]),_:2},1032,["data-cy-systemtags-picker-tag-color","modelValue","shown","onUpdate:shown","onSubmit"])):C("",!0)],12,se))),128)),g("li",null,[t.canEditOrCreateTag&&t.canCreateTag?(a(),h(v,{key:0,disabled:t.status===t.Status.CREATING_TAG,alignment:"start",class:"systemtags-picker__tag-create",type:"submit",variant:"tertiary","data-cy-systemtags-picker-button-create":"",onClick:t.onNewTag},{icon:m(()=>[u(F)]),default:m(()=>[N(p(t.input.trim()),1),s[1]||(s[1]=g("br",null,null,-1)),g("span",ae,p(t.t("systemtags","Create new tag")),1)]),_:1},8,["disabled","onClick"])):C("",!0)])]),g("div",ie,[t.hasChanges?(a(),h($,{key:1,type:"info"},{default:m(()=>[g("span",{innerHTML:t.statusMessage},null,8,oe)]),_:1})):(a(),h($,{key:0,type:"info"},{default:m(()=>[N(p(t.t("systemtags","Choose tags for the selected files")),1)]),_:1}))])],64)),ct(g("div",null,[u(H,{ref:"chip",text:"%s",noClose:"",variant:"primary"},null,512)],512),[[gt,!1]])]),_:1},8,["noClose","name","open","class","onUpdate:open"])}const xe=A(Yt,[["render",le],["__scopeId","data-v-fbaf4147"]]);export{xe as default}; -//# sourceMappingURL=SystemTagPicker-iHgA05bq.chunk.mjs.map +import{e as R,d as q,a as J}from"./index-DqIuD5e7.chunk.mjs";import{a as _}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{a as A,l as K}from"./index-BgmsSgl5.chunk.mjs";import{t as y,g as S,e as Q,p as W,b as k}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as X}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as Y}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as tt}from"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import{N as et}from"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import{N as st}from"./index-Bos-XXa5.chunk.mjs";import{P as at,N as it}from"./Plus-BsxGg9Cm.chunk.mjs";import{N as ot}from"./mdi-e8YUrhPH.chunk.mjs";import{N as lt}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{_ as nt}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{j as d,o as a,k as g,l as C,t as p,z as w,b as rt,f as c,c as h,w as m,_ as ct,F as E,e as u,C as dt,D as mt,g as N,$ as gt,n as ht}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{P as pt}from"./PencilOutline-TGZB0t_n.chunk.mjs";import{l as L,g as O,s as z,e as I,h as x,c as ut,i as ft,f as yt,u as Ct}from"./api-7RyG6Inm.chunk.mjs";import{e as bt,i as kt,a as Nt}from"./systemtags-init.mjs";import"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-CXHO4UEV.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./dav-C3Vmpmsl.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";import"./folder-29HuacU_-CQFyGatl.chunk.mjs";import"./index-Dpj4ddZx.chunk.mjs";const At={name:"CheckCircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},vt=["aria-hidden","aria-label"],wt=["fill","width","height"],Tt={d:"M12 2C6.5 2 2 6.5 2 12S6.5 22 12 22 22 17.5 22 12 17.5 2 12 2M10 17L5 12L6.41 10.59L10 14.17L17.59 6.58L19 8L10 17Z"},_t={key:0};function St(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon check-circle-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Tt,[e.title?(a(),d("title",_t,p(e.title),1)):C("",!0)])],8,wt))],16,vt)}const Lt=A(At,[["render",St]]),It={name:"CircleIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},$t=["aria-hidden","aria-label"],Rt=["fill","width","height"],Et={d:"M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Ot={key:0};function zt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon circle-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Et,[e.title?(a(),d("title",Ot,p(e.title),1)):C("",!0)])],8,Rt))],16,$t)}const xt=A(It,[["render",zt]]),Pt={name:"CircleOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Mt=["aria-hidden","aria-label"],Vt=["fill","width","height"],Bt={d:"M12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4A8,8 0 0,1 20,12A8,8 0 0,1 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},Ut={key:0};function Dt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon circle-outline-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Bt,[e.title?(a(),d("title",Ut,p(e.title),1)):C("",!0)])],8,Vt))],16,Mt)}const Gt=A(Pt,[["render",Dt]]),jt={name:"TagOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ft=["aria-hidden","aria-label"],Ht=["fill","width","height"],Zt={d:"M21.41 11.58L12.41 2.58A2 2 0 0 0 11 2H4A2 2 0 0 0 2 4V11A2 2 0 0 0 2.59 12.42L11.59 21.42A2 2 0 0 0 13 22A2 2 0 0 0 14.41 21.41L21.41 14.41A2 2 0 0 0 22 13A2 2 0 0 0 21.41 11.58M13 20L4 11V4H11L20 13M6.5 5A1.5 1.5 0 1 1 5 6.5A1.5 1.5 0 0 1 6.5 5Z"},qt={key:0};function Jt(t,s,e,o,l,n){return a(),d("span",w(t.$attrs,{"aria-hidden":e.title?null:"true","aria-label":e.title,class:"material-design-icon tag-outline-icon",role:"img",onClick:s[0]||(s[0]=i=>t.$emit("click",i))}),[(a(),d("svg",{fill:e.fillColor,class:"material-design-icon__svg",width:e.size,height:e.size,viewBox:"0 0 24 24"},[g("path",Zt,[e.title?(a(),d("title",qt,p(e.title),1)):C("",!0)])],8,Ht))],16,Ft)}const Kt=A(jt,[["render",Jt]]),Qt=q(Ct,500),Wt=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||(Nt()?"000000":"ffffff");var P=(t=>(t.BASE="base",t.LOADING="loading",t.CREATING_TAG="creating-tag",t.DONE="done",t))(P||{});const Xt=K("systemtags","restrictSystemTagsCreationToAdmin",!1),Yt=rt({name:"SystemTagPicker",components:{CheckIcon:Lt,CircleIcon:xt,CircleOutlineIcon:Gt,NcButton:X,NcCheckboxRadioSwitch:Y,NcChip:tt,NcColorPicker:et,NcDialog:st,NcEmptyContent:it,NcLoadingIcon:ot,NcNoteCard:lt,NcTextField:nt,PencilIcon:pt,PlusIcon:at,TagIcon:Kt},props:{nodes:{type:Array,required:!0}},emits:{close(t){return t===null||typeof t=="boolean"}},setup(){return{emit:R,Status:P,t:y,canEditOrCreateTag:!Xt||J()?.isAdmin}},data(){return{status:"base",opened:!0,openedPicker:!1,input:"",tags:[],tagList:{},toAdd:[],toRemove:[]}},computed:{sortedTags(){return[...this.tags].sort((t,s)=>t.displayName.localeCompare(s.displayName,S(),{ignorePunctuation:!0}))},filteredTags(){return this.input.trim()===""?this.sortedTags:this.sortedTags.filter(t=>t.displayName.normalize().toLowerCase().includes(this.input.normalize().toLowerCase()))},hasChanges(){return this.toAdd.length>0||this.toRemove.length>0},canCreateTag(){return this.input.trim()!==""&&!this.tags.some(t=>t.displayName.trim().toLocaleLowerCase()===this.input.trim().toLocaleLowerCase())},statusMessage(){if(this.toAdd.length===0&&this.toRemove.length===0)return"";if(this.toAdd.length===1&&this.toRemove.length===1)return k("systemtags","{tag1} will be set and {tag2} will be removed from 1 file.","{tag1} will be set and {tag2} will be removed from {count} files.",this.nodes.length,{tag1:this.formatTagChip(this.toAdd[0]),tag2:this.formatTagChip(this.toRemove[0]),count:this.nodes.length},{escape:!1});const t=this.toAdd.map(this.formatTagChip),s=t.pop(),e=this.toRemove.map(this.formatTagChip),o=e.pop(),l=k("systemtags","{tag} will be set to 1 file.","{tag} will be set to {count} files.",this.nodes.length,{tag:s,count:this.nodes.length},{escape:!1}),n=k("systemtags","{tag} will be removed from 1 file.","{tag} will be removed from {count} files.",this.nodes.length,{tag:o,count:this.nodes.length},{escape:!1}),i=k("systemtags","{tags} and {lastTag} will be set to 1 file.","{tags} and {lastTag} will be set to {count} files.",this.nodes.length,{tags:t.join(", "),lastTag:s,count:this.nodes.length},{escape:!1}),f=k("systemtags","{tags} and {lastTag} will be removed from 1 file.","{tags} and {lastTag} will be removed from {count} files.",this.nodes.length,{tags:e.join(", "),lastTag:o,count:this.nodes.length},{escape:!1});return this.toAdd.length===1&&this.toRemove.length===0?l:this.toAdd.length===0&&this.toRemove.length===1?n:this.toAdd.length>1&&this.toRemove.length===0?i:this.toAdd.length===0&&this.toRemove.length>1?f:this.toAdd.length>1&&this.toRemove.length===1?`${i} ${n}`:this.toAdd.length===1&&this.toRemove.length>1?`${l} ${f}`:`${i} ${f}`}},beforeMount(){yt().then(t=>{this.tags=t}),this.tagList=this.nodes.reduce((t,s)=>((I(s)||[]).forEach(e=>{t[e]=(t[e]||0)+1}),t),{}),this.canEditOrCreateTag||L.debug("System tag creation is restricted to admins and the current user is not an admin")},methods:{formatTagChip(t){const s=this.$refs.chip.$el.cloneNode(!0);if(t.color){const e=this.tagListStyle(t);Object.entries(e).forEach(([o,l])=>{s.style.setProperty(o,l)})}return s.outerHTML.replace("%s",Q(W.sanitize(t.displayName)))},formatTagName(t){return t.userVisible?t.userAssignable?t.displayName:y("systemtags","{displayName} (restricted)",{displayName:t.displayName}):y("systemtags","{displayName} (hidden)",{displayName:t.displayName})},onColorChange(t,s){t.color=s.replace("#",""),Qt(t)},isChecked(t){return t.displayName in this.tagList&&this.tagList[t.displayName]===this.nodes.length},isIndeterminate(t){return t.displayName in this.tagList&&this.tagList[t.displayName]!==0&&this.tagList[t.displayName]!==this.nodes.length},onCheckUpdate(t,s){s?(this.toAdd.push(t),this.toRemove=this.toRemove.filter(e=>e.id!==t.id),this.tagList[t.displayName]=this.nodes.length):(this.toRemove.push(t),this.toAdd=this.toAdd.filter(e=>e.id!==t.id),this.tagList[t.displayName]=0)},async onNewTag(){if(!this.canEditOrCreateTag){_(y("systemtags","Only admins can create new tags"));return}this.status="creating-tag";try{const t={displayName:this.input.trim(),userAssignable:!0,userVisible:!0,canAssign:!0},s=await ut(t),e=await ft(s);this.tags.push(e),this.input="",this.onCheckUpdate(e,!0),await this.$nextTick(),Array.isArray(this.$refs.tags)&&this.$refs.tags.find(o=>o.dataset.cySystemtagsPickerTag===s.toString())?.scrollIntoView({behavior:"instant",block:"center",inline:"center"})}catch(t){_(t?.message||y("systemtags","Failed to create tag"))}finally{this.status="base"}},async onSubmit(){this.status="loading",L.debug("Applying tags",{toAdd:this.toAdd,toRemove:this.toRemove});try{for(const s of this.toAdd){const{etag:e,objects:o}=await O(s,"files"),l=[...new Set([...o.map(n=>n.id).filter(Boolean),...this.nodes.map(n=>n.fileid).filter(Boolean)])];await z(s,"files",l.map(n=>({id:n,type:"files"})),e)}for(const s of this.toRemove){const{etag:e,objects:o}=await O(s,"files"),l=new Set(this.nodes.map(i=>i.fileid)),n=o.map(i=>i.id).filter((i,f,T)=>!l.has(i)&&T.indexOf(i)===f);await z(s,"files",n.map(i=>({id:i,type:"files"})),e)}}catch(s){L.error("Failed to apply tags",{error:s}),_(y("systemtags","Failed to apply tags changes")),this.status="base";return}const t=[];this.toAdd.forEach(s=>{this.nodes.forEach(e=>{const o=[...I(e)||[],s.displayName].sort((l,n)=>l.localeCompare(n,S(),{ignorePunctuation:!0}));x(e,o),t.push(e)})}),this.toRemove.forEach(s=>{this.nodes.forEach(e=>{const o=[...I(e)||[]].filter(l=>l!==s.displayName).sort((l,n)=>l.localeCompare(n,S(),{ignorePunctuation:!0}));x(e,o),t.push(e)})}),t.forEach(s=>R("systemtags:node:updated",s)),this.status="done",setTimeout(()=>{this.opened=!1,this.$emit("close",!0)},2e3)},onCancel(){this.opened=!1,this.$emit("close",null)},tagListStyle(t){if(!t.color)return{"--color-circle-icon":"var(--color-text-maxcontrast)"};const s=bt(`#${t.color}`,`#${Wt}`),e=kt(s)?"#000000":"#ffffff";return{"--color-circle-icon":"var(--color-primary-element)","--color-primary":s,"--color-primary-text":e,"--color-primary-element":s,"--color-primary-element-text":e}}}}),te={class:"systemtags-picker__input"},ee={class:"systemtags-picker__tags","data-cy-systemtags-picker-tags":""},se=["data-cy-systemtags-picker-tag"],ae={class:"systemtags-picker__tag-create-subline"},ie={class:"systemtags-picker__note"},oe=["innerHTML"];function le(t,s,e,o,l,n){const i=c("NcLoadingIcon"),f=c("CheckIcon"),T=c("NcEmptyContent"),M=c("TagIcon"),V=c("NcTextField"),B=c("NcCheckboxRadioSwitch"),U=c("CircleIcon"),D=c("CircleOutlineIcon"),G=c("PencilIcon"),v=c("NcButton"),j=c("NcColorPicker"),F=c("PlusIcon"),$=c("NcNoteCard"),H=c("NcChip"),Z=c("NcDialog");return a(),h(Z,{"data-cy-systemtags-picker":"",noClose:t.status===t.Status.LOADING,name:t.t("systemtags","Manage tags"),open:t.opened,class:ht(["systemtags-picker--"+t.status,"systemtags-picker"]),closeOnClickOutside:"",outTransition:"","onUpdate:open":t.onCancel},{actions:m(()=>[u(v,{disabled:t.status!==t.Status.BASE,variant:"tertiary","data-cy-systemtags-picker-button-cancel":"",onClick:t.onCancel},{default:m(()=>[N(p(t.t("systemtags","Cancel")),1)]),_:1},8,["disabled","onClick"]),u(v,{disabled:!t.hasChanges||t.status!==t.Status.BASE,"data-cy-systemtags-picker-button-submit":"",onClick:t.onSubmit},{default:m(()=>[N(p(t.t("systemtags","Apply")),1)]),_:1},8,["disabled","onClick"])]),default:m(()=>[t.status===t.Status.LOADING||t.status===t.Status.DONE?(a(),h(T,{key:0,name:t.t("systemtags","Applying tags changes…")},{icon:m(()=>[t.status===t.Status.LOADING?(a(),h(i,{key:0})):(a(),h(f,{key:1,fillColor:"var(--color-border-success)"}))]),_:1},8,["name"])):(a(),d(E,{key:1},[g("div",te,[u(V,{modelValue:t.input,"onUpdate:modelValue":s[0]||(s[0]=r=>t.input=r),label:t.canEditOrCreateTag?t.t("systemtags","Search or create tag"):t.t("systemtags","Search tag"),"data-cy-systemtags-picker-input":""},{default:m(()=>[u(M,{size:20})]),_:1},8,["modelValue","label"])]),g("ul",ee,[(a(!0),d(E,null,dt(t.filteredTags,r=>(a(),d("li",{key:r.id,ref_for:!0,ref:"tags","data-cy-systemtags-picker-tag":r.id,style:mt(t.tagListStyle(r)),class:"systemtags-picker__tag"},[u(B,{modelValue:t.isChecked(r),disabled:!r.canAssign,indeterminate:t.isIndeterminate(r),label:r.displayName,class:"systemtags-picker__tag-checkbox","onUpdate:modelValue":b=>t.onCheckUpdate(r,b)},{default:m(()=>[N(p(t.formatTagName(r)),1)]),_:2},1032,["modelValue","disabled","indeterminate","label","onUpdate:modelValue"]),t.canEditOrCreateTag?(a(),h(j,{key:0,"data-cy-systemtags-picker-tag-color":r.id,modelValue:`#${r.color||"000000"}`,shown:t.openedPicker===r.id,class:"systemtags-picker__tag-color","onUpdate:shown":b=>t.openedPicker=b?r.id:!1,onSubmit:b=>t.onColorChange(r,b)},{default:m(()=>[u(v,{"aria-label":t.t("systemtags","Change tag color"),variant:"tertiary"},{icon:m(()=>[r.color?(a(),h(U,{key:0,size:24,fillColor:"var(--color-circle-icon)",class:"button-color-circle"})):(a(),h(D,{key:1,size:24,fillColor:"var(--color-circle-icon)",class:"button-color-empty"})),u(G,{class:"button-color-pencil"})]),_:2},1032,["aria-label"])]),_:2},1032,["data-cy-systemtags-picker-tag-color","modelValue","shown","onUpdate:shown","onSubmit"])):C("",!0)],12,se))),128)),g("li",null,[t.canEditOrCreateTag&&t.canCreateTag?(a(),h(v,{key:0,disabled:t.status===t.Status.CREATING_TAG,alignment:"start",class:"systemtags-picker__tag-create",type:"submit",variant:"tertiary","data-cy-systemtags-picker-button-create":"",onClick:t.onNewTag},{icon:m(()=>[u(F)]),default:m(()=>[N(p(t.input.trim()),1),s[1]||(s[1]=g("br",null,null,-1)),g("span",ae,p(t.t("systemtags","Create new tag")),1)]),_:1},8,["disabled","onClick"])):C("",!0)])]),g("div",ie,[t.hasChanges?(a(),h($,{key:1,type:"info"},{default:m(()=>[g("span",{innerHTML:t.statusMessage},null,8,oe)]),_:1})):(a(),h($,{key:0,type:"info"},{default:m(()=>[N(p(t.t("systemtags","Choose tags for the selected files")),1)]),_:1}))])],64)),ct(g("div",null,[u(H,{ref:"chip",text:"%s",noClose:"",variant:"primary"},null,512)],512),[[gt,!1]])]),_:1},8,["noClose","name","open","class","onUpdate:open"])}const xe=A(Yt,[["render",le],["__scopeId","data-v-fbaf4147"]]);export{xe as default}; +//# sourceMappingURL=SystemTagPicker-EcQCUDHG.chunk.mjs.map diff --git a/dist/SystemTagPicker-iHgA05bq.chunk.mjs.license b/dist/SystemTagPicker-EcQCUDHG.chunk.mjs.license similarity index 100% rename from dist/SystemTagPicker-iHgA05bq.chunk.mjs.license rename to dist/SystemTagPicker-EcQCUDHG.chunk.mjs.license diff --git a/dist/SystemTagPicker-iHgA05bq.chunk.mjs.map b/dist/SystemTagPicker-EcQCUDHG.chunk.mjs.map similarity index 99% rename from dist/SystemTagPicker-iHgA05bq.chunk.mjs.map rename to dist/SystemTagPicker-EcQCUDHG.chunk.mjs.map index 4d62b4d9e9531..9050ed8ba5fff 100644 --- a/dist/SystemTagPicker-iHgA05bq.chunk.mjs.map +++ b/dist/SystemTagPicker-EcQCUDHG.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"SystemTagPicker-iHgA05bq.chunk.mjs","sources":["../node_modules/vue-material-design-icons/CheckCircle.vue","../node_modules/vue-material-design-icons/Circle.vue","../node_modules/vue-material-design-icons/CircleOutline.vue","../node_modules/vue-material-design-icons/TagOutline.vue","../build/frontend/apps/systemtags/src/components/SystemTagPicker.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","debounceUpdateTag","debounce","updateTag","mainBackgroundColor","isDarkModeEnabled","Status","restrictSystemTagsCreationToAdmin","loadState","defineComponent","CheckIcon","CircleIcon","CircleOutlineIcon","NcButton","NcCheckboxRadioSwitch","NcChip","NcColorPicker","NcDialog","NcEmptyContent","NcLoadingIcon","NcNoteCard","NcTextField","PencilIcon","PlusIcon","TagIcon","status","emit","t","getCurrentUser","a","b","getLanguage","tag","n","tagsAdd","lastTagAdd","tagsRemove","lastTagRemove","addStringSingular","removeStringSingular","addStringPlural","removeStringPlural","fetchTags","tags","acc","node","getNodeSystemTags","logger","chipCloneEl","style","key","value","escapeHTML","domPurify","color","checked","search","showError","payload","id","createTag","fetchTag","el","error","etag","objects","getTagObjects","ids","obj","setTagObjects","nodeFileIds","index","self","nodes","setNodeSystemTags","primaryElement","elementColor","textColor","invertTextColor","_hoisted_1","_hoisted_4","_hoisted_5","_createBlock","_component_NcDialog","_normalizeClass","_withCtx","_createVNode","_component_NcButton","_createTextVNode","_toDisplayString","_component_NcEmptyContent","_component_NcLoadingIcon","_component_CheckIcon","_Fragment","_component_NcTextField","_component_TagIcon","_hoisted_2","_renderList","_normalizeStyle","_component_NcCheckboxRadioSwitch","_component_NcColorPicker","_component_CircleIcon","_component_CircleOutlineIcon","_component_PencilIcon","_component_PlusIcon","_component_NcNoteCard","_hoisted_6","_component_NcChip"],"mappings":"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","x_google_ignoreList":[0,1,2,3]} \ No newline at end of file +{"version":3,"file":"SystemTagPicker-EcQCUDHG.chunk.mjs","sources":["../node_modules/vue-material-design-icons/CheckCircle.vue","../node_modules/vue-material-design-icons/Circle.vue","../node_modules/vue-material-design-icons/CircleOutline.vue","../node_modules/vue-material-design-icons/TagOutline.vue","../build/frontend/apps/systemtags/src/components/SystemTagPicker.vue"],"sourcesContent":["\n\n","\n\n","\n\n","\n\n","\n\n\n\n\n\n\n"],"names":["_sfc_main","_hoisted_3","_createElementBlock","_mergeProps","_ctx","$props","_cache","$event","_createElementVNode","_openBlock","debounceUpdateTag","debounce","updateTag","mainBackgroundColor","isDarkModeEnabled","Status","restrictSystemTagsCreationToAdmin","loadState","defineComponent","CheckIcon","CircleIcon","CircleOutlineIcon","NcButton","NcCheckboxRadioSwitch","NcChip","NcColorPicker","NcDialog","NcEmptyContent","NcLoadingIcon","NcNoteCard","NcTextField","PencilIcon","PlusIcon","TagIcon","status","emit","t","getCurrentUser","a","b","getLanguage","tag","n","tagsAdd","lastTagAdd","tagsRemove","lastTagRemove","addStringSingular","removeStringSingular","addStringPlural","removeStringPlural","fetchTags","tags","acc","node","getNodeSystemTags","logger","chipCloneEl","style","key","value","escapeHTML","domPurify","color","checked","search","showError","payload","id","createTag","fetchTag","el","error","etag","objects","getTagObjects","ids","obj","setTagObjects","nodeFileIds","index","self","nodes","setNodeSystemTags","primaryElement","elementColor","textColor","invertTextColor","_hoisted_1","_hoisted_4","_hoisted_5","_createBlock","_component_NcDialog","_normalizeClass","_withCtx","_createVNode","_component_NcButton","_createTextVNode","_toDisplayString","_component_NcEmptyContent","_component_NcLoadingIcon","_component_CheckIcon","_Fragment","_component_NcTextField","_component_TagIcon","_hoisted_2","_renderList","_normalizeStyle","_component_NcCheckboxRadioSwitch","_component_NcColorPicker","_component_CircleIcon","_component_CircleOutlineIcon","_component_PencilIcon","_component_PlusIcon","_component_NcNoteCard","_hoisted_6","_component_NcChip"],"mappings":"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","x_google_ignoreList":[0,1,2,3]} \ No newline at end of file diff --git a/dist/SystemTagPicker-iHgA05bq.chunk.mjs.map.license b/dist/SystemTagPicker-EcQCUDHG.chunk.mjs.map.license similarity index 100% rename from dist/SystemTagPicker-iHgA05bq.chunk.mjs.map.license rename to dist/SystemTagPicker-EcQCUDHG.chunk.mjs.map.license diff --git a/dist/dav-dav-settings-personal-availability-86q6-LKF.chunk.css b/dist/dav-dav-settings-personal-availability-86q6-LKF.chunk.css new file mode 100644 index 0000000000000..c179ce2ce8603 --- /dev/null +++ b/dist/dav-dav-settings-personal-availability-86q6-LKF.chunk.css @@ -0,0 +1 @@ +._absenceForm_1i2bj_2{display:flex;flex-direction:column;gap:5px}._absenceForm__pickerContainer_1i2bj_8{display:flex;gap:10px;width:100%}._absenceForm__picker_1i2bj_8{flex:1 auto;.native-datetime-picker--input{margin-bottom:0}}._absenceForm__longMessage_1i2bj_22{height:calc(var(--default-line-height) * 6 * var(--font-size-small))}._absenceForm__longMessageContainer_1i2bj_26{height:calc(var(--default-line-height) * 6 * var(--font-size-small) + var(--default-grid-baseline) * 2);display:flex;flex-direction:column;justify-content:start}._absenceForm__actions_1i2bj_33{display:flex;gap:5px}.availability-day[data-v-3ef03e87]{padding:0 10px;position:absolute}.availability-slots[data-v-3ef03e87]{max-width:332px;width:100%;display:flex;justify-content:flex-start;white-space:nowrap}.availability-slot[data-v-3ef03e87]{display:flex;flex-direction:row;align-items:center}.availability-slot-group[data-v-3ef03e87]{display:flex;flex-direction:column}.time-zone[data-v-3ef03e87]{padding:32px 12px 12px 0}.week-day-container[data-v-3ef03e87]{box-sizing:border-box;margin-bottom:32px;max-width:500px;width:100%;display:flex;flex-direction:column;align-items:flex-start}.button[data-v-3ef03e87]{align-self:flex-end}.label-weekday[data-v-3ef03e87]{position:relative;display:flex;align-items:flex-start;min-width:77px;width:77px}.label-weekday>span[data-v-3ef03e87]{height:50px;display:flex;align-items:center}.add-another[data-v-3ef03e87]{background-color:transparent;border:none;opacity:.5;display:inline-flex;padding:0;margin:0 0 3px}.add-another[data-v-3ef03e87]:hover{opacity:1}.to-text[data-v-3ef03e87]{padding-right:12px}.time-zone-text[data-v-3ef03e87]{padding-left:22px}.empty-content[data-v-3ef03e87]{color:var(--color-text-lighter);display:inline-flex;align-items:center}.start-date[data-v-3ef03e87]{padding-right:12px}.day-container[data-v-3ef03e87]{display:flex;max-width:500px;width:100%;gap:24px;border-top:1px solid var(--color-border);padding-top:calc(3 * var(--default-grid-baseline));margin-top:calc(2 * var(--default-grid-baseline));align-items:center}.day-container>button[data-v-3ef03e87]{align-self:center}[data-v-3ad7b763] .availability-day{padding:0 10px;position:absolute}[data-v-3ad7b763] .availability-slots{display:flex;white-space:normal}[data-v-3ad7b763] .availability-slot{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap}[data-v-3ad7b763] .availability-slot-group{display:flex;flex-direction:column}[data-v-3ad7b763] .mx-input-wrapper{width:85px}[data-v-3ad7b763] .mx-datepicker{width:97px}.time-zone[data-v-3ad7b763]{padding-block:32px 12px;padding-inline:0 12px;display:flex;flex-wrap:wrap}.time-zone__heading[data-v-3ad7b763]{margin-inline-end:calc(var(--default-grid-baseline) * 2);line-height:var(--default-clickable-area);font-weight:700}.grid-table[data-v-3ad7b763]{display:grid;margin-bottom:32px;column-gap:24px;row-gap:6px;grid-template-columns:min-content auto min-content;max-width:500px}.button[data-v-3ad7b763]{align-self:flex-end}[data-v-3ad7b763] .label-weekday{position:relative;display:inline-flex;padding-top:4px;align-self:center}[data-v-3ad7b763] .delete-slot{padding-bottom:unset}[data-v-3ad7b763] .add-another{align-self:center}.to-text[data-v-3ad7b763]{padding-inline-end:12px}.empty-content[data-v-3ad7b763]{align-self:center;color:var(--color-text-maxcontrast);margin-block-start:var(--default-grid-baseline)} diff --git a/dist/dav-dav-settings-personal-availability-DSI9XS6G.chunk.css b/dist/dav-dav-settings-personal-availability-DSI9XS6G.chunk.css deleted file mode 100644 index 3098327ef9645..0000000000000 --- a/dist/dav-dav-settings-personal-availability-DSI9XS6G.chunk.css +++ /dev/null @@ -1 +0,0 @@ -._absenceForm_1i2bj_2{display:flex;flex-direction:column;gap:5px}._absenceForm__pickerContainer_1i2bj_8{display:flex;gap:10px;width:100%}._absenceForm__picker_1i2bj_8{flex:1 auto}._absenceForm__picker_1i2bj_8 .native-datetime-picker--input{margin-bottom:0}._absenceForm__longMessage_1i2bj_22{height:calc(var(--default-line-height) * 6 * var(--font-size-small))}._absenceForm__longMessageContainer_1i2bj_26{height:calc(var(--default-line-height) * 6 * var(--font-size-small) + var(--default-grid-baseline) * 2);display:flex;flex-direction:column;justify-content:start}._absenceForm__actions_1i2bj_33{display:flex;gap:5px}.availability-day[data-v-3ef03e87]{padding:0 10px;position:absolute}.availability-slots[data-v-3ef03e87]{max-width:332px;width:100%;display:flex;justify-content:flex-start;white-space:nowrap}.availability-slot[data-v-3ef03e87]{display:flex;flex-direction:row;align-items:center}.availability-slot-group[data-v-3ef03e87]{display:flex;flex-direction:column}.time-zone[data-v-3ef03e87]{padding:32px 12px 12px 0}.week-day-container[data-v-3ef03e87]{box-sizing:border-box;margin-bottom:32px;max-width:500px;width:100%;display:flex;flex-direction:column;align-items:flex-start}.button[data-v-3ef03e87]{align-self:flex-end}.label-weekday[data-v-3ef03e87]{position:relative;display:flex;align-items:flex-start;min-width:77px;width:77px}.label-weekday>span[data-v-3ef03e87]{height:50px;display:flex;align-items:center}.add-another[data-v-3ef03e87]{background-color:transparent;border:none;opacity:.5;display:inline-flex;padding:0;margin:0 0 3px}.add-another[data-v-3ef03e87]:hover{opacity:1}.to-text[data-v-3ef03e87]{padding-right:12px}.time-zone-text[data-v-3ef03e87]{padding-left:22px}.empty-content[data-v-3ef03e87]{color:var(--color-text-lighter);display:inline-flex;align-items:center}.start-date[data-v-3ef03e87]{padding-right:12px}.day-container[data-v-3ef03e87]{display:flex;max-width:500px;width:100%;gap:24px;border-top:1px solid var(--color-border);padding-top:calc(3 * var(--default-grid-baseline));margin-top:calc(2 * var(--default-grid-baseline));align-items:center}.day-container>button[data-v-3ef03e87]{align-self:center}[data-v-3ad7b763] .availability-day{padding:0 10px;position:absolute}[data-v-3ad7b763] .availability-slots{display:flex;white-space:normal}[data-v-3ad7b763] .availability-slot{display:flex;flex-direction:row;align-items:center;flex-wrap:wrap}[data-v-3ad7b763] .availability-slot-group{display:flex;flex-direction:column}[data-v-3ad7b763] .mx-input-wrapper{width:85px}[data-v-3ad7b763] .mx-datepicker{width:97px}.time-zone[data-v-3ad7b763]{padding-block:32px 12px;padding-inline:0 12px;display:flex;flex-wrap:wrap}.time-zone__heading[data-v-3ad7b763]{margin-inline-end:calc(var(--default-grid-baseline) * 2);line-height:var(--default-clickable-area);font-weight:700}.grid-table[data-v-3ad7b763]{display:grid;margin-bottom:32px;column-gap:24px;row-gap:6px;grid-template-columns:min-content auto min-content;max-width:500px}.button[data-v-3ad7b763]{align-self:flex-end}[data-v-3ad7b763] .label-weekday{position:relative;display:inline-flex;padding-top:4px;align-self:center}[data-v-3ad7b763] .delete-slot{padding-bottom:unset}[data-v-3ad7b763] .add-another{align-self:center}.to-text[data-v-3ad7b763]{padding-inline-end:12px}.empty-content[data-v-3ad7b763]{align-self:center;color:var(--color-text-maxcontrast);margin-block-start:var(--default-grid-baseline)} diff --git a/dist/dav-settings-admin-example-content.css b/dist/dav-settings-admin-example-content.css index bd6c13614c755..6399eee008c63 100644 --- a/dist/dav-settings-admin-example-content.css +++ b/dist/dav-settings-admin-example-content.css @@ -18,7 +18,7 @@ @import './NcBreadcrumbs-5gl8Syfa-CtBAA7-7.chunk.css'; @import './NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'; @import './NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'; -@import './index-DxCeSeyt.chunk.css'; +@import './index-CEtX00Aw.chunk.css'; @import './NcChip-CrVOU2RM-Som-mR4B.chunk.css'; @import './TrayArrowDown-D79n0IQ6.chunk.css'; @import './NcGuestContent-j8ai4O1K-D0718NyY.chunk.css'; diff --git a/dist/dav-settings-admin-example-content.mjs b/dist/dav-settings-admin-example-content.mjs index ef871bec91ae4..a0500a0b5036a 100644 --- a/dist/dav-settings-admin-example-content.mjs +++ b/dist/dav-settings-admin-example-content.mjs @@ -1,2 +1,2 @@ -import{j as d,o as l,k as u,l as h,t as m,z as V,b as U,c as y,u as x,w as n,e as r,m as B,f as p,g,h as Z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as w,l as k}from"./index-BgmsSgl5.chunk.mjs";import{t as c}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import{g as C}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-BpgPbDC6.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{N as H}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import{N as L}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import{D as T,s as j}from"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{c as _}from"./index-CPwHjAPR.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import{N as q}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{d as M,a as E}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{l as I}from"./logger-B-hwoHFJ.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const G='',J={name:"AccountIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},K=["aria-hidden","aria-label"],P=["fill","width","height"],Q={d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"},W={key:0};function X(a,e,t,i,o,s){return l(),d("span",V(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon account-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",Q,[t.title?(l(),d("title",W,m(t.title),1)):h("",!0)])],8,P))],16,K)}const Y=w(J,[["render",X]]),ee={name:"RestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},te=["aria-hidden","aria-label"],ae=["fill","width","height"],oe={d:"M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z"},le={key:0};function ne(a,e,t,i,o,s){return l(),d("span",V(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon restore-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",oe,[t.title?(l(),d("title",le,m(t.title),1)):h("",!0)])],8,ae))],16,te)}const R=w(ee,[["render",ne]]),ie={name:"TrayArrowUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},se=["aria-hidden","aria-label"],re=["fill","width","height"],ce={d:"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 2L6.46 7.46L7.88 8.88L11 5.75V15H13V5.75L16.13 8.88L17.55 7.45L12 2Z"},de={key:0};function pe(a,e,t,i,o,s){return l(),d("span",V(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon tray-arrow-up-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",ce,[t.title?(l(),d("title",de,m(t.title),1)):h("",!0)])],8,re))],16,se)}const $=w(ie,[["render",pe]]),me={class:"download-button"},ue={class:"download-button__label"},ve=U({__name:"ExampleContentDownloadButton",props:{href:{}},setup(a){return(e,t)=>(l(),y(x(S),{variant:"tertiary",href:a.href},{icon:n(()=>[B(e.$slots,"icon",{},void 0,!0)]),default:n(()=>[u("div",me,[u("span",ue,[B(e.$slots,"default",{},void 0,!0)]),r(T,{class:"download-button__icon",size:20})])]),_:3},8,["href"]))}}),O=w(ve,[["__scopeId","data-v-be40807a"]]),he=k("dav","enableDefaultContact",!1),fe=k("dav","hasCustomDefaultContact",!1),ge={name:"ExampleContactSettings",components:{NcDialog:H,NcButton:S,NcCheckboxRadioSwitch:L,IconUpload:$,IconRestore:R,IconAccount:Y,ExampleContentDownloadButton:O},setup(){return{t:c}},data(){return{enableDefaultContact:he,hasCustomDefaultContact:fe,isModalOpen:!1,loading:!1,buttons:[{label:c("dav","Cancel"),icon:G,callback:()=>{this.isModalOpen=!1}},{label:c("dav","Import"),icon:j,variant:"primary",callback:()=>{this.clickImportInput()}}]}},computed:{downloadUrl(){return C("/apps/dav/api/defaultcontact/contact")}},methods:{updateEnableDefaultContact(){_.put(C("apps/dav/api/defaultcontact/config"),{allow:!this.enableDefaultContact}).then(()=>{this.enableDefaultContact=!this.enableDefaultContact}).catch(()=>{E(c("dav","Error while saving settings"))})},toggleModal(){this.isModalOpen=!this.isModalOpen},clickImportInput(){this.$refs.exampleContactImportInput.click()},resetContact(){this.loading=!0,_.put(C("/apps/dav/api/defaultcontact/contact")).then(()=>{this.hasCustomDefaultContact=!1,M(c("dav","Contact reset successfully"))}).catch(a=>{I.error("Error importing contact:",{error:a}),E(c("dav","Error while resetting contact"))}).finally(()=>{this.loading=!1})},processFile(a){this.loading=!0;const e=a.target.files[0],t=new FileReader;t.onload=async()=>{this.isModalOpen=!1;try{await _.put(C("/apps/dav/api/defaultcontact/contact"),{contactData:t.result}),this.hasCustomDefaultContact=!0,M(c("dav","Contact imported successfully"))}catch(i){I.error("Error importing contact:",{error:i}),E(c("dav","Error while importing contact"))}finally{this.loading=!1,a.target.value=""}},t.readAsText(e)}}},Ce={class:"example-contact-settings"},we={key:0,class:"example-contact-settings__buttons"},be=["disabled"];function xe(a,e,t,i,o,s){const v=p("NcCheckboxRadioSwitch"),N=p("IconAccount"),z=p("ExampleContentDownloadButton"),D=p("IconUpload"),b=p("NcButton"),A=p("IconRestore"),F=p("NcDialog");return l(),d("div",Ce,[r(v,{modelValue:o.enableDefaultContact,type:"switch","onUpdate:modelValue":s.updateEnableDefaultContact},{default:n(()=>[g(m(i.t("dav","Add example contact to user's address book when they first log in")),1)]),_:1},8,["modelValue","onUpdate:modelValue"]),o.enableDefaultContact?(l(),d("div",we,[r(z,{href:s.downloadUrl},{icon:n(()=>[r(N,{size:20})]),default:n(()=>[e[2]||(e[2]=g(" example_contact.vcf ",-1))]),_:1},8,["href"]),r(b,{variant:"secondary",onClick:s.toggleModal},{icon:n(()=>[r(D,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Import contact")),1)]),_:1},8,["onClick"]),o.hasCustomDefaultContact?(l(),y(b,{key:0,variant:"tertiary",onClick:s.resetContact},{icon:n(()=>[r(A,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Reset to default")),1)]),_:1},8,["onClick"])):h("",!0)])):h("",!0),r(F,{open:o.isModalOpen,"onUpdate:open":e[0]||(e[0]=f=>o.isModalOpen=f),name:i.t("dav","Import contacts"),buttons:o.buttons},{default:n(()=>[u("div",null,[u("p",null,m(i.t("dav","Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?")),1)])]),_:1},8,["open","name","buttons"]),u("input",{id:"example-contact-import",ref:"exampleContactImportInput",disabled:o.loading,type:"file",accept:".vcf",class:"hidden-visually",onChange:e[1]||(e[1]=(...f)=>s.processFile&&s.processFile(...f))},null,40,be)])}const ye=w(ge,[["render",xe],["__scopeId","data-v-db8b0002"]]),_e={name:"CalendarBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ee=["aria-hidden","aria-label"],ke=["fill","width","height"],Ie={d:"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1"},De={key:0};function Me(a,e,t,i,o,s){return l(),d("span",V(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon calendar-blank-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",Ie,[t.title?(l(),d("title",De,m(t.title),1)):h("",!0)])],8,ke))],16,Ee)}const Ve=w(_e,[["render",Me]]);async function Ne(a){const e=C("/apps/dav/api/exampleEvent/enable");await _.post(e,{enable:a})}async function ze(a){const e=C("/apps/dav/api/exampleEvent/event");await _.post(e,{ics:a})}async function Ae(){const a=C("/apps/dav/api/exampleEvent/event");await _.delete(a)}const Fe={name:"ExampleEventSettings",components:{NcButton:S,NcCheckboxRadioSwitch:L,NcDialog:H,IconCalendarBlank:Ve,IconUpload:$,IconRestore:R,ExampleContentDownloadButton:O},setup(){return{t:c}},data(){return{createExampleEvent:k("dav","create_example_event",!1),hasCustomEvent:k("dav","has_custom_example_event",!1),showImportModal:!1,uploading:!1,deleting:!1,savingConfig:!1,selectedFile:void 0}},computed:{downloadUrl(){return C("/apps/dav/api/exampleEvent/event")}},methods:{selectFile(){this.selectedFile=this.$refs["event-file"]?.files[0]},async updateCreateExampleEvent(){this.savingConfig=!0;const a=!this.createExampleEvent;try{await Ne(a)}catch(e){E(c("dav","Failed to save example event creation setting")),I.error("Failed to save example event creation setting",{error:e,enable:a})}finally{this.savingConfig=!1}this.createExampleEvent=a},uploadCustomEvent(){if(!this.selectedFile)return;this.uploading=!0;const a=new FileReader;a.addEventListener("load",async()=>{const e=a.result;try{await ze(e)}catch(t){E(c("dav","Failed to upload the example event")),I.error("Failed to upload example ICS",{error:t,ics:e});return}finally{this.uploading=!1}M(c("dav","Custom example event was saved successfully")),this.showImportModal=!1,this.hasCustomEvent=!0}),a.readAsText(this.selectedFile)},async deleteCustomEvent(){this.deleting=!0;try{await Ae()}catch(a){E(c("dav","Failed to delete the custom example event")),I.error("Failed to delete the custom example event",{error:a});return}finally{this.deleting=!1}M(c("dav","Custom example event was deleted successfully")),this.hasCustomEvent=!1}}},Se={class:"example-event-settings"},Be={key:0,class:"example-event-settings__buttons"},Ue={class:"import-event-modal"},He=["disabled"],Le={class:"import-event-modal__buttons"};function Re(a,e,t,i,o,s){const v=p("NcCheckboxRadioSwitch"),N=p("IconCalendarBlank"),z=p("ExampleContentDownloadButton"),D=p("IconUpload"),b=p("NcButton"),A=p("IconRestore"),F=p("NcDialog");return l(),d("div",Se,[r(v,{modelValue:o.createExampleEvent,disabled:o.savingConfig,type:"switch","onUpdate:modelValue":s.updateCreateExampleEvent},{default:n(()=>[g(m(i.t("dav","Add example event to user's calendar when they first log in")),1)]),_:1},8,["modelValue","disabled","onUpdate:modelValue"]),o.createExampleEvent?(l(),d("div",Be,[r(z,{href:s.downloadUrl},{icon:n(()=>[r(N,{size:20})]),default:n(()=>[e[4]||(e[4]=g(" example_event.ics ",-1))]),_:1},8,["href"]),r(b,{variant:"secondary",onClick:e[0]||(e[0]=f=>o.showImportModal=!0)},{icon:n(()=>[r(D,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Import calendar event")),1)]),_:1}),o.hasCustomEvent?(l(),y(b,{key:0,variant:"tertiary",disabled:o.deleting,onClick:s.deleteCustomEvent},{icon:n(()=>[r(A,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Reset to default")),1)]),_:1},8,["disabled","onClick"])):h("",!0)])):h("",!0),r(F,{open:o.showImportModal,"onUpdate:open":e[3]||(e[3]=f=>o.showImportModal=f),name:i.t("dav","Import calendar event")},{default:n(()=>[u("div",Ue,[u("p",null,m(i.t("dav","Uploading a new event will overwrite the existing one.")),1),u("input",{ref:"event-file",disabled:o.uploading,type:"file",accept:".ics,text/calendar",class:"import-event-modal__file-picker",onChange:e[1]||(e[1]=(...f)=>s.selectFile&&s.selectFile(...f))},null,40,He),u("div",Le,[r(b,{disabled:o.uploading||!o.selectedFile,variant:"primary",onClick:e[2]||(e[2]=f=>s.uploadCustomEvent())},{icon:n(()=>[r(D,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Upload event")),1)]),_:1},8,["disabled"])])])]),_:1},8,["open","name"])])}const $e=w(Fe,[["render",Re],["__scopeId","data-v-88fee128"]]),Oe=U({__name:"ExampleContentSettingsSection",setup(a){const e=k("dav","contactsEnabled"),t=k("dav","calendarEnabled");return(i,o)=>(l(),y(x(q),{id:"example-content",name:x(c)("dav","Example content"),description:x(c)("dav","Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content.")},{default:n(()=>[x(e)?(l(),y(ye,{key:0})):h("",!0),x(t)?(l(),y($e,{key:1})):h("",!0)]),_:1},8,["name","description"]))}}),Ze=Z(Oe);Ze.mount("#settings-example-content"); +import{j as d,o as l,k as u,l as h,t as m,z as V,b as U,c as y,u as x,w as n,e as r,m as B,f as p,g,h as Z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as w,l as k}from"./index-BgmsSgl5.chunk.mjs";import{t as c}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import{g as C}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-Bk4hMpWo.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{N as H}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as S}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import{N as L}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import{D as T,s as j}from"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{c as _}from"./index-CPwHjAPR.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import{N as q}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{d as M,a as E}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{l as I}from"./logger-B-hwoHFJ.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const G='',J={name:"AccountIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},K=["aria-hidden","aria-label"],P=["fill","width","height"],Q={d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,14C16.42,14 20,15.79 20,18V20H4V18C4,15.79 7.58,14 12,14Z"},W={key:0};function X(a,e,t,i,o,s){return l(),d("span",V(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon account-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",Q,[t.title?(l(),d("title",W,m(t.title),1)):h("",!0)])],8,P))],16,K)}const Y=w(J,[["render",X]]),ee={name:"RestoreIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},te=["aria-hidden","aria-label"],ae=["fill","width","height"],oe={d:"M13,3A9,9 0 0,0 4,12H1L4.89,15.89L4.96,16.03L9,12H6A7,7 0 0,1 13,5A7,7 0 0,1 20,12A7,7 0 0,1 13,19C11.07,19 9.32,18.21 8.06,16.94L6.64,18.36C8.27,20 10.5,21 13,21A9,9 0 0,0 22,12A9,9 0 0,0 13,3Z"},le={key:0};function ne(a,e,t,i,o,s){return l(),d("span",V(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon restore-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",oe,[t.title?(l(),d("title",le,m(t.title),1)):h("",!0)])],8,ae))],16,te)}const R=w(ee,[["render",ne]]),ie={name:"TrayArrowUpIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},se=["aria-hidden","aria-label"],re=["fill","width","height"],ce={d:"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 2L6.46 7.46L7.88 8.88L11 5.75V15H13V5.75L16.13 8.88L17.55 7.45L12 2Z"},de={key:0};function pe(a,e,t,i,o,s){return l(),d("span",V(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon tray-arrow-up-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",ce,[t.title?(l(),d("title",de,m(t.title),1)):h("",!0)])],8,re))],16,se)}const $=w(ie,[["render",pe]]),me={class:"download-button"},ue={class:"download-button__label"},ve=U({__name:"ExampleContentDownloadButton",props:{href:{}},setup(a){return(e,t)=>(l(),y(x(S),{variant:"tertiary",href:a.href},{icon:n(()=>[B(e.$slots,"icon",{},void 0,!0)]),default:n(()=>[u("div",me,[u("span",ue,[B(e.$slots,"default",{},void 0,!0)]),r(T,{class:"download-button__icon",size:20})])]),_:3},8,["href"]))}}),O=w(ve,[["__scopeId","data-v-be40807a"]]),he=k("dav","enableDefaultContact",!1),fe=k("dav","hasCustomDefaultContact",!1),ge={name:"ExampleContactSettings",components:{NcDialog:H,NcButton:S,NcCheckboxRadioSwitch:L,IconUpload:$,IconRestore:R,IconAccount:Y,ExampleContentDownloadButton:O},setup(){return{t:c}},data(){return{enableDefaultContact:he,hasCustomDefaultContact:fe,isModalOpen:!1,loading:!1,buttons:[{label:c("dav","Cancel"),icon:G,callback:()=>{this.isModalOpen=!1}},{label:c("dav","Import"),icon:j,variant:"primary",callback:()=>{this.clickImportInput()}}]}},computed:{downloadUrl(){return C("/apps/dav/api/defaultcontact/contact")}},methods:{updateEnableDefaultContact(){_.put(C("apps/dav/api/defaultcontact/config"),{allow:!this.enableDefaultContact}).then(()=>{this.enableDefaultContact=!this.enableDefaultContact}).catch(()=>{E(c("dav","Error while saving settings"))})},toggleModal(){this.isModalOpen=!this.isModalOpen},clickImportInput(){this.$refs.exampleContactImportInput.click()},resetContact(){this.loading=!0,_.put(C("/apps/dav/api/defaultcontact/contact")).then(()=>{this.hasCustomDefaultContact=!1,M(c("dav","Contact reset successfully"))}).catch(a=>{I.error("Error importing contact:",{error:a}),E(c("dav","Error while resetting contact"))}).finally(()=>{this.loading=!1})},processFile(a){this.loading=!0;const e=a.target.files[0],t=new FileReader;t.onload=async()=>{this.isModalOpen=!1;try{await _.put(C("/apps/dav/api/defaultcontact/contact"),{contactData:t.result}),this.hasCustomDefaultContact=!0,M(c("dav","Contact imported successfully"))}catch(i){I.error("Error importing contact:",{error:i}),E(c("dav","Error while importing contact"))}finally{this.loading=!1,a.target.value=""}},t.readAsText(e)}}},Ce={class:"example-contact-settings"},we={key:0,class:"example-contact-settings__buttons"},be=["disabled"];function xe(a,e,t,i,o,s){const v=p("NcCheckboxRadioSwitch"),N=p("IconAccount"),z=p("ExampleContentDownloadButton"),D=p("IconUpload"),b=p("NcButton"),A=p("IconRestore"),F=p("NcDialog");return l(),d("div",Ce,[r(v,{modelValue:o.enableDefaultContact,type:"switch","onUpdate:modelValue":s.updateEnableDefaultContact},{default:n(()=>[g(m(i.t("dav","Add example contact to user's address book when they first log in")),1)]),_:1},8,["modelValue","onUpdate:modelValue"]),o.enableDefaultContact?(l(),d("div",we,[r(z,{href:s.downloadUrl},{icon:n(()=>[r(N,{size:20})]),default:n(()=>[e[2]||(e[2]=g(" example_contact.vcf ",-1))]),_:1},8,["href"]),r(b,{variant:"secondary",onClick:s.toggleModal},{icon:n(()=>[r(D,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Import contact")),1)]),_:1},8,["onClick"]),o.hasCustomDefaultContact?(l(),y(b,{key:0,variant:"tertiary",onClick:s.resetContact},{icon:n(()=>[r(A,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Reset to default")),1)]),_:1},8,["onClick"])):h("",!0)])):h("",!0),r(F,{open:o.isModalOpen,"onUpdate:open":e[0]||(e[0]=f=>o.isModalOpen=f),name:i.t("dav","Import contacts"),buttons:o.buttons},{default:n(()=>[u("div",null,[u("p",null,m(i.t("dav","Importing a new .vcf file will delete the existing default contact and replace it with the new one. Do you want to continue?")),1)])]),_:1},8,["open","name","buttons"]),u("input",{id:"example-contact-import",ref:"exampleContactImportInput",disabled:o.loading,type:"file",accept:".vcf",class:"hidden-visually",onChange:e[1]||(e[1]=(...f)=>s.processFile&&s.processFile(...f))},null,40,be)])}const ye=w(ge,[["render",xe],["__scopeId","data-v-db8b0002"]]),_e={name:"CalendarBlankIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ee=["aria-hidden","aria-label"],ke=["fill","width","height"],Ie={d:"M19,19H5V8H19M16,1V3H8V1H6V3H5C3.89,3 3,3.89 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V5C21,3.89 20.1,3 19,3H18V1"},De={key:0};function Me(a,e,t,i,o,s){return l(),d("span",V(a.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon calendar-blank-icon",role:"img",onClick:e[0]||(e[0]=v=>a.$emit("click",v))}),[(l(),d("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[u("path",Ie,[t.title?(l(),d("title",De,m(t.title),1)):h("",!0)])],8,ke))],16,Ee)}const Ve=w(_e,[["render",Me]]);async function Ne(a){const e=C("/apps/dav/api/exampleEvent/enable");await _.post(e,{enable:a})}async function ze(a){const e=C("/apps/dav/api/exampleEvent/event");await _.post(e,{ics:a})}async function Ae(){const a=C("/apps/dav/api/exampleEvent/event");await _.delete(a)}const Fe={name:"ExampleEventSettings",components:{NcButton:S,NcCheckboxRadioSwitch:L,NcDialog:H,IconCalendarBlank:Ve,IconUpload:$,IconRestore:R,ExampleContentDownloadButton:O},setup(){return{t:c}},data(){return{createExampleEvent:k("dav","create_example_event",!1),hasCustomEvent:k("dav","has_custom_example_event",!1),showImportModal:!1,uploading:!1,deleting:!1,savingConfig:!1,selectedFile:void 0}},computed:{downloadUrl(){return C("/apps/dav/api/exampleEvent/event")}},methods:{selectFile(){this.selectedFile=this.$refs["event-file"]?.files[0]},async updateCreateExampleEvent(){this.savingConfig=!0;const a=!this.createExampleEvent;try{await Ne(a)}catch(e){E(c("dav","Failed to save example event creation setting")),I.error("Failed to save example event creation setting",{error:e,enable:a})}finally{this.savingConfig=!1}this.createExampleEvent=a},uploadCustomEvent(){if(!this.selectedFile)return;this.uploading=!0;const a=new FileReader;a.addEventListener("load",async()=>{const e=a.result;try{await ze(e)}catch(t){E(c("dav","Failed to upload the example event")),I.error("Failed to upload example ICS",{error:t,ics:e});return}finally{this.uploading=!1}M(c("dav","Custom example event was saved successfully")),this.showImportModal=!1,this.hasCustomEvent=!0}),a.readAsText(this.selectedFile)},async deleteCustomEvent(){this.deleting=!0;try{await Ae()}catch(a){E(c("dav","Failed to delete the custom example event")),I.error("Failed to delete the custom example event",{error:a});return}finally{this.deleting=!1}M(c("dav","Custom example event was deleted successfully")),this.hasCustomEvent=!1}}},Se={class:"example-event-settings"},Be={key:0,class:"example-event-settings__buttons"},Ue={class:"import-event-modal"},He=["disabled"],Le={class:"import-event-modal__buttons"};function Re(a,e,t,i,o,s){const v=p("NcCheckboxRadioSwitch"),N=p("IconCalendarBlank"),z=p("ExampleContentDownloadButton"),D=p("IconUpload"),b=p("NcButton"),A=p("IconRestore"),F=p("NcDialog");return l(),d("div",Se,[r(v,{modelValue:o.createExampleEvent,disabled:o.savingConfig,type:"switch","onUpdate:modelValue":s.updateCreateExampleEvent},{default:n(()=>[g(m(i.t("dav","Add example event to user's calendar when they first log in")),1)]),_:1},8,["modelValue","disabled","onUpdate:modelValue"]),o.createExampleEvent?(l(),d("div",Be,[r(z,{href:s.downloadUrl},{icon:n(()=>[r(N,{size:20})]),default:n(()=>[e[4]||(e[4]=g(" example_event.ics ",-1))]),_:1},8,["href"]),r(b,{variant:"secondary",onClick:e[0]||(e[0]=f=>o.showImportModal=!0)},{icon:n(()=>[r(D,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Import calendar event")),1)]),_:1}),o.hasCustomEvent?(l(),y(b,{key:0,variant:"tertiary",disabled:o.deleting,onClick:s.deleteCustomEvent},{icon:n(()=>[r(A,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Reset to default")),1)]),_:1},8,["disabled","onClick"])):h("",!0)])):h("",!0),r(F,{open:o.showImportModal,"onUpdate:open":e[3]||(e[3]=f=>o.showImportModal=f),name:i.t("dav","Import calendar event")},{default:n(()=>[u("div",Ue,[u("p",null,m(i.t("dav","Uploading a new event will overwrite the existing one.")),1),u("input",{ref:"event-file",disabled:o.uploading,type:"file",accept:".ics,text/calendar",class:"import-event-modal__file-picker",onChange:e[1]||(e[1]=(...f)=>s.selectFile&&s.selectFile(...f))},null,40,He),u("div",Le,[r(b,{disabled:o.uploading||!o.selectedFile,variant:"primary",onClick:e[2]||(e[2]=f=>s.uploadCustomEvent())},{icon:n(()=>[r(D,{size:20})]),default:n(()=>[g(" "+m(i.t("dav","Upload event")),1)]),_:1},8,["disabled"])])])]),_:1},8,["open","name"])])}const $e=w(Fe,[["render",Re],["__scopeId","data-v-88fee128"]]),Oe=U({__name:"ExampleContentSettingsSection",setup(a){const e=k("dav","contactsEnabled"),t=k("dav","calendarEnabled");return(i,o)=>(l(),y(x(q),{id:"example-content",name:x(c)("dav","Example content"),description:x(c)("dav","Example content serves to showcase the features of Nextcloud. Default content is shipped with Nextcloud, and can be replaced by custom content.")},{default:n(()=>[x(e)?(l(),y(ye,{key:0})):h("",!0),x(t)?(l(),y($e,{key:1})):h("",!0)]),_:1},8,["name","description"]))}}),Ze=Z(Oe);Ze.mount("#settings-example-content"); //# sourceMappingURL=dav-settings-admin-example-content.mjs.map diff --git a/dist/dav-settings-personal-availability.css b/dist/dav-settings-personal-availability.css index 064ba03afca64..39c882c7c3592 100644 --- a/dist/dav-settings-personal-availability.css +++ b/dist/dav-settings-personal-availability.css @@ -1,5 +1,5 @@ /* extracted by css-entry-points-plugin */ -@import './dav-dav-settings-personal-availability-DSI9XS6G.chunk.css'; +@import './dav-dav-settings-personal-availability-86q6-LKF.chunk.css'; @import './createElementId-DhjFt1I9-C_oBIsvc.chunk.css'; @import './ContentCopy-D7mIRwIy.chunk.css'; @import './logger-D3RVzcfQ-D7L4ZBkR.chunk.css'; @@ -19,7 +19,7 @@ @import './NcRichText-D_ssz6sB-CfXisSUS.chunk.css'; @import './NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'; @import './NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'; -@import './index-DxCeSeyt.chunk.css'; +@import './index-CEtX00Aw.chunk.css'; @import './NcChip-CrVOU2RM-Som-mR4B.chunk.css'; @import './TrayArrowDown-D79n0IQ6.chunk.css'; @import './NcGuestContent-j8ai4O1K-D0718NyY.chunk.css'; diff --git a/dist/dav-settings-personal-availability.mjs b/dist/dav-settings-personal-availability.mjs index c22b71fb3144c..0b03960cba10d 100644 --- a/dist/dav-settings-personal-availability.mjs +++ b/dist/dav-settings-personal-availability.mjs @@ -1,4 +1,4 @@ -import{f as G,j as H,o as B,k as Q,e as v,n as dt,t as et,w as st,g as vt,E as Se,F as Ft,C as Gt,c as Pt,l as ue,b as de,r as St,A as Ae,u as E,h as ge}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as ce,l as jt,g as De}from"./index-BgmsSgl5.chunk.mjs";import{t as D}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as Kt}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{d as Ee,a as Lt,g as _e,o as be,b as Ue}from"./index-DqIuD5e7.chunk.mjs";import{c as mt}from"./index-CPwHjAPR.chunk.mjs";import{d as zt,a as Ot}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{b as ft,i as Ce}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{S as Ye}from"./ShareType-suoNfd7y.chunk.mjs";import{N as Ht}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as he}from"./NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs";import{N as ve,a as Oe}from"./index-BpgPbDC6.chunk.mjs";import{_ as we}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{l as W}from"./logger-B-hwoHFJ.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{j as Me}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import{N as Ne}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import{P as xe}from"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import{D as Ie}from"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{z as ke,_ as Be}from"./index-DuirWb3a.chunk.mjs";import"./index-sH3U_332.chunk.mjs";function qt(a){const t=a.getFullYear(),e=(a.getMonth()+1).toString().padStart(2,"0"),s=a.getDate().toString().padStart(2,"0");return`${t}-${e}-${s}`}const Pe="_absenceForm_1i2bj_2",Le="_absenceForm__pickerContainer_1i2bj_8",ze="_absenceForm__picker_1i2bj_8",Ve="_absenceForm__longMessage_1i2bj_22",je="_absenceForm__longMessageContainer_1i2bj_26",He="_absenceForm__actions_1i2bj_33",Re={absenceForm:Pe,absenceForm__pickerContainer:Le,absenceForm__picker:ze,absenceForm__longMessage:Ve,absenceForm__longMessageContainer:je,absenceForm__actions:He},We={name:"AbsenceForm",components:{NcButton:Ht,NcTextField:we,NcTextArea:Oe,NcDateTimePickerNative:he,NcSelectUsers:ve},setup(){return{t:D}},data(){const{firstDay:a,lastDay:t,status:e,message:s,replacementUserId:r,replacementUserDisplayName:i}=jt("dav","absence",{});return{loading:!1,status:e??"",message:s??"",firstDay:a?new Date(a):new Date,lastDay:t?new Date(t):null,replacementUserId:r,replacementUser:r?{user:r,displayName:i}:null,searchLoading:!1,options:[]}},computed:{valid(){const a=new Date(this.firstDay?.getTime()),t=new Date(this.lastDay?.getTime());return a?.setHours(0,0,0,0),t?.setHours(0,0,0,0),!!this.firstDay&&!!this.lastDay&&!!this.status&&!!this.message&&t>=a}},methods:{resetForm(){this.status="",this.message="",this.firstDay=new Date,this.lastDay=null},formatForMultiselect(a){return{user:a.uuid||a.value.shareWith,displayName:a.name||a.label,subtitle:a.dsc|""}},async asyncFind(a){this.searchLoading=!0,await this.debounceGetSuggestions(a.trim())},async getSuggestions(a){const t=[Ye.User];let e;try{e=await mt.get(ft("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"file",search:a,shareType:t}})}catch(d){W.error("Error fetching suggestions",{error:d});return}const s=e.data.ocs.data,r=e.data.ocs.data.exact;s.exact=[];const i=r.users,o=s.users;W.info("AbsenceForm raw suggestions",{rawExactSuggestions:i,rawSuggestions:o});const n=i.map(d=>this.formatForMultiselect(d)),l=o.map(d=>this.formatForMultiselect(d)),u=n.concat(l),c=u.reduce((d,m)=>(m.displayName&&(d[m.displayName]||(d[m.displayName]=0),d[m.displayName]++),d),{});this.options=u.map(d=>c[d.displayName]>1&&!d.desc?{...d,desc:d.shareWithDisplayNameUnique}:d),this.searchLoading=!1,W.info("AbsenseForm suggestions",{options:this.options})},debounceGetSuggestions:Ee(function(...a){this.getSuggestions(...a)},300),async saveForm(){if(this.valid){this.loading=!0;try{await mt.post(ft("/apps/dav/api/v1/outOfOffice/{userId}",{userId:Lt().uid}),{firstDay:qt(this.firstDay),lastDay:qt(this.lastDay),status:this.status,message:this.message,replacementUserId:this.replacementUser?.user??null}),zt(D("dav","Absence saved"))}catch(a){Ot(D("dav","Failed to save your absence settings")),W.error("Could not save absence",{error:a})}finally{this.loading=!1}}},async clearAbsence(){this.loading=!0;try{await mt.delete(ft("/apps/dav/api/v1/outOfOffice/{userId}",{userId:Lt().uid})),this.resetForm(),zt(D("dav","Absence cleared"))}catch(a){Ot(D("dav","Failed to clear your absence settings")),W.error("Could not clear absence",{error:a})}finally{this.loading=!1}}}},Fe={for:"replacement-search-input"};function Ge(a,t,e,s,r,i){const o=G("NcDateTimePickerNative"),n=G("NcSelectUsers"),l=G("NcTextField"),u=G("NcTextArea"),c=G("NcButton");return B(),H("form",{class:dt(a.$style.absenceForm),onSubmit:t[5]||(t[5]=Se((...d)=>i.saveForm&&i.saveForm(...d),["prevent"]))},[Q("div",{class:dt(a.$style.absenceForm__pickerContainer)},[v(o,{id:"absence-first-day",modelValue:r.firstDay,"onUpdate:modelValue":t[0]||(t[0]=d=>r.firstDay=d),class:dt(a.$style.absenceForm__picker),label:s.t("dav","First day"),required:""},null,8,["modelValue","class","label"]),v(o,{id:"absence-last-day",modelValue:r.lastDay,"onUpdate:modelValue":t[1]||(t[1]=d=>r.lastDay=d),class:dt(a.$style.absenceForm__picker),label:s.t("dav","Last day (inclusive)"),required:""},null,8,["modelValue","class","label"])],2),Q("label",Fe,et(s.t("dav","Out of office replacement (optional)")),1),v(n,{modelValue:r.replacementUser,"onUpdate:modelValue":t[2]||(t[2]=d=>r.replacementUser=d),inputId:"replacement-search-input",loading:r.searchLoading,placeholder:s.t("dav","Name of the replacement"),options:r.options,onSearch:i.asyncFind},null,8,["modelValue","loading","placeholder","options","onSearch"]),v(l,{modelValue:r.status,"onUpdate:modelValue":t[3]||(t[3]=d=>r.status=d),label:s.t("dav","Short absence status"),required:!0},null,8,["modelValue","label"]),Q("div",{class:dt(a.$style.absenceForm__longMessageContainer)},[v(u,{modelValue:r.message,"onUpdate:modelValue":t[4]||(t[4]=d=>r.message=d),inputClass:a.$style.absenceForm__longMessage,label:s.t("dav","Long absence Message"),required:"",resize:"none",rows:"6"},null,8,["modelValue","inputClass","label"])],2),Q("div",{class:dt(a.$style.absenceForm__actions)},[v(c,{disabled:r.loading||!i.valid,variant:"primary",type:"submit"},{default:st(()=>[vt(et(s.t("dav","Save")),1)]),_:1},8,["disabled"]),v(c,{disabled:r.loading||!i.valid,variant:"error",onClick:i.clearAbsence},{default:st(()=>[vt(et(s.t("dav","Disable absence")),1)]),_:1},8,["disabled","onClick"])],2)],34)}const Ke={$style:Re},qe=ce(We,[["render",Ge],["__cssModules",Ke]]);var rt={},ct={},Zt;function Ze(){return Zt||(Zt=1,Object.defineProperty(ct,"__esModule",{value:!0}),ct.zonesMap=ct.defaultStart=void 0,ct.defaultStart="19700101T000000",ct.zonesMap=new Map([["Africa/Abidjan",{s:{f:"+0000",n:"GMT"}}],["Africa/Accra",{s:{f:"+0000",n:"GMT"}}],["Africa/Addis_Ababa",{s:{f:"+0300",n:"EAT"}}],["Africa/Algiers",{s:{f:"+0100",n:"CET"}}],["Africa/Asmara",{s:{f:"+0300",n:"EAT"}}],["Africa/Bamako",{s:{f:"+0000",n:"GMT"}}],["Africa/Bangui",{s:{f:"+0100",n:"WAT"}}],["Africa/Banjul",{s:{f:"+0000",n:"GMT"}}],["Africa/Bissau",{s:{f:"+0000",n:"GMT"}}],["Africa/Blantyre",{s:{f:"+0200",n:"CAT"}}],["Africa/Brazzaville",{s:{f:"+0100",n:"WAT"}}],["Africa/Bujumbura",{s:{f:"+0200",n:"CAT"}}],["Africa/Cairo",{s:{f:"+0200",n:"EET"}}],["Africa/Casablanca",{s:{f:"+0100",n:"+01"}}],["Africa/Ceuta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Africa/Conakry",{s:{f:"+0000",n:"GMT"}}],["Africa/Dakar",{s:{f:"+0000",n:"GMT"}}],["Africa/Dar_es_Salaam",{s:{f:"+0300",n:"EAT"}}],["Africa/Djibouti",{s:{f:"+0300",n:"EAT"}}],["Africa/Douala",{s:{f:"+0100",n:"WAT"}}],["Africa/El_Aaiun",{s:{f:"+0100",n:"+01"}}],["Africa/Freetown",{s:{f:"+0000",n:"GMT"}}],["Africa/Gaborone",{s:{f:"+0200",n:"CAT"}}],["Africa/Harare",{s:{f:"+0200",n:"CAT"}}],["Africa/Johannesburg",{s:{f:"+0200",n:"SAST"}}],["Africa/Juba",{s:{f:"+0300",n:"EAT"}}],["Africa/Kampala",{s:{f:"+0300",n:"EAT"}}],["Africa/Khartoum",{s:{f:"+0200",n:"CAT"}}],["Africa/Kigali",{s:{f:"+0200",n:"CAT"}}],["Africa/Kinshasa",{s:{f:"+0100",n:"WAT"}}],["Africa/Lagos",{s:{f:"+0100",n:"WAT"}}],["Africa/Libreville",{s:{f:"+0100",n:"WAT"}}],["Africa/Lome",{s:{f:"+0000",n:"GMT"}}],["Africa/Luanda",{s:{f:"+0100",n:"WAT"}}],["Africa/Lubumbashi",{s:{f:"+0200",n:"CAT"}}],["Africa/Lusaka",{s:{f:"+0200",n:"CAT"}}],["Africa/Malabo",{s:{f:"+0100",n:"WAT"}}],["Africa/Maputo",{s:{f:"+0200",n:"CAT"}}],["Africa/Maseru",{s:{f:"+0200",n:"SAST"}}],["Africa/Mbabane",{s:{f:"+0200",n:"SAST"}}],["Africa/Mogadishu",{s:{f:"+0300",n:"EAT"}}],["Africa/Monrovia",{s:{f:"+0000",n:"GMT"}}],["Africa/Nairobi",{s:{f:"+0300",n:"EAT"}}],["Africa/Ndjamena",{s:{f:"+0100",n:"WAT"}}],["Africa/Niamey",{s:{f:"+0100",n:"WAT"}}],["Africa/Nouakchott",{s:{f:"+0000",n:"GMT"}}],["Africa/Ouagadougou",{s:{f:"+0000",n:"GMT"}}],["Africa/Porto-Novo",{s:{f:"+0100",n:"WAT"}}],["Africa/Sao_Tome",{s:{f:"+0100",n:"WAT"}}],["Africa/Tripoli",{s:{f:"+0200",n:"EET"}}],["Africa/Tunis",{s:{f:"+0100",n:"CET"}}],["Africa/Windhoek",{s:{f:"+0200",n:"CAT"}}],["America/Adak",{s:{f:"-0900",t:"-1000",n:"HST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-1000",t:"-0900",n:"HDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anchorage",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anguilla",{s:{f:"-0400",n:"AST"}}],["America/Antigua",{s:{f:"-0400",n:"AST"}}],["America/Araguaina",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Buenos_Aires",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Catamarca",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Cordoba",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Jujuy",{s:{f:"-0300",n:"-03"}}],["America/Argentina/La_Rioja",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Mendoza",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Rio_Gallegos",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Salta",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Juan",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Luis",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Tucuman",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Ushuaia",{s:{f:"-0300",n:"-03"}}],["America/Aruba",{s:{f:"-0400",n:"AST"}}],["America/Asuncion",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700322T000000",r:{m:3,d:"4SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701004T000000",r:{m:10,d:"1SU"}}}],["America/Atikokan",{s:{f:"-0500",n:"EST"}}],["America/Bahia_Banderas",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Bahia",{s:{f:"-0300",n:"-03"}}],["America/Barbados",{s:{f:"-0400",n:"AST"}}],["America/Belem",{s:{f:"-0300",n:"-03"}}],["America/Belize",{s:{f:"-0600",n:"CST"}}],["America/Blanc-Sablon",{s:{f:"-0400",n:"AST"}}],["America/Boa_Vista",{s:{f:"-0400",n:"-04"}}],["America/Bogota",{s:{f:"-0500",n:"-05"}}],["America/Boise",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Cambridge_Bay",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Campo_Grande",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Cancun",{s:{f:"-0500",n:"EST"}}],["America/Caracas",{s:{f:"-0400",n:"-04"}}],["America/Cayenne",{s:{f:"-0300",n:"-03"}}],["America/Cayman",{s:{f:"-0500",n:"EST"}}],["America/Chicago",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Chihuahua",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Costa_Rica",{s:{f:"-0600",n:"CST"}}],["America/Creston",{s:{f:"-0700",n:"MST"}}],["America/Cuiaba",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Curacao",{s:{f:"-0400",n:"AST"}}],["America/Danmarkshavn",{s:{f:"+0000",n:"GMT"}}],["America/Dawson_Creek",{s:{f:"-0700",n:"MST"}}],["America/Dawson",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Denver",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Detroit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Dominica",{s:{f:"-0400",n:"AST"}}],["America/Edmonton",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Eirunepe",{s:{f:"-0500",n:"-05"}}],["America/El_Salvador",{s:{f:"-0600",n:"CST"}}],["America/Fort_Nelson",{s:{f:"-0700",n:"MST"}}],["America/Fortaleza",{s:{f:"-0300",n:"-03"}}],["America/Glace_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Godthab",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701024T230000",r:{m:10,d:"-1SA"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700328T220000",r:{m:3,d:"-1SA"}}}],["America/Goose_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grand_Turk",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grenada",{s:{f:"-0400",n:"AST"}}],["America/Guadeloupe",{s:{f:"-0400",n:"AST"}}],["America/Guatemala",{s:{f:"-0600",n:"CST"}}],["America/Guayaquil",{s:{f:"-0500",n:"-05"}}],["America/Guyana",{s:{f:"-0400",n:"-04"}}],["America/Halifax",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Havana",{s:{f:"-0400",t:"-0500",n:"CST",s:"19701101T010000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"CDT",s:"19700308T000000",r:{m:3,d:"2SU"}}}],["America/Hermosillo",{s:{f:"-0700",n:"MST"}}],["America/Indiana/Indianapolis",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Knox",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Marengo",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Petersburg",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Tell_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vevay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vincennes",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Winamac",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Inuvik",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Iqaluit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Jamaica",{s:{f:"-0500",n:"EST"}}],["America/Juneau",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Louisville",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Monticello",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kralendijk",{s:{f:"-0400",n:"AST"}}],["America/La_Paz",{s:{f:"-0400",n:"-04"}}],["America/Lima",{s:{f:"-0500",n:"-05"}}],["America/Los_Angeles",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Lower_Princes",{s:{f:"-0400",n:"AST"}}],["America/Maceio",{s:{f:"-0300",n:"-03"}}],["America/Managua",{s:{f:"-0600",n:"CST"}}],["America/Manaus",{s:{f:"-0400",n:"-04"}}],["America/Marigot",{s:{f:"-0400",n:"AST"}}],["America/Martinique",{s:{f:"-0400",n:"AST"}}],["America/Matamoros",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mazatlan",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Menominee",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Merida",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Metlakatla",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mexico_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Miquelon",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Moncton",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Monterrey",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Montevideo",{s:{f:"-0300",n:"-03"}}],["America/Montserrat",{s:{f:"-0400",n:"AST"}}],["America/Nassau",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/New_York",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nipigon",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nome",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Noronha",{s:{f:"-0200",n:"-02"}}],["America/North_Dakota/Beulah",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/Center",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/New_Salem",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Ojinaga",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Panama",{s:{f:"-0500",n:"EST"}}],["America/Pangnirtung",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Paramaribo",{s:{f:"-0300",n:"-03"}}],["America/Phoenix",{s:{f:"-0700",n:"MST"}}],["America/Port_of_Spain",{s:{f:"-0400",n:"AST"}}],["America/Port-au-Prince",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Porto_Velho",{s:{f:"-0400",n:"-04"}}],["America/Puerto_Rico",{s:{f:"-0400",n:"AST"}}],["America/Punta_Arenas",{s:{f:"-0300",n:"-03"}}],["America/Rainy_River",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rankin_Inlet",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Recife",{s:{f:"-0300",n:"-03"}}],["America/Regina",{s:{f:"-0600",n:"CST"}}],["America/Resolute",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rio_Branco",{s:{f:"-0500",n:"-05"}}],["America/Santarem",{s:{f:"-0300",n:"-03"}}],["America/Santiago",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700405T000000",r:{m:4,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19700906T000000",r:{m:9,d:"1SU"}}}],["America/Santo_Domingo",{s:{f:"-0400",n:"AST"}}],["America/Sao_Paulo",{s:{f:"-0300",n:"-03",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Scoresbysund",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["America/Sitka",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Barthelemy",{s:{f:"-0400",n:"AST"}}],["America/St_Johns",{s:{f:"-0230",t:"-0330",n:"NST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0330",t:"-0230",n:"NDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Kitts",{s:{f:"-0400",n:"AST"}}],["America/St_Lucia",{s:{f:"-0400",n:"AST"}}],["America/St_Thomas",{s:{f:"-0400",n:"AST"}}],["America/St_Vincent",{s:{f:"-0400",n:"AST"}}],["America/Swift_Current",{s:{f:"-0600",n:"CST"}}],["America/Tegucigalpa",{s:{f:"-0600",n:"CST"}}],["America/Thule",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Thunder_Bay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tijuana",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Toronto",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tortola",{s:{f:"-0400",n:"AST"}}],["America/Vancouver",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Whitehorse",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Winnipeg",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yakutat",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yellowknife",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Antarctica/Casey",{s:{f:"+0800",n:"+08"}}],["Antarctica/Davis",{s:{f:"+0700",n:"+07"}}],["Antarctica/DumontDUrville",{s:{f:"+1000",n:"+10"}}],["Antarctica/Macquarie",{s:{f:"+1100",n:"+11"}}],["Antarctica/Mawson",{s:{f:"+0500",n:"+05"}}],["Antarctica/McMurdo",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Antarctica/Palmer",{s:{f:"-0300",n:"-03"}}],["Antarctica/Rothera",{s:{f:"-0300",n:"-03"}}],["Antarctica/Syowa",{s:{f:"+0300",n:"+03"}}],["Antarctica/Troll",{s:{f:"+0200",t:"+0000",n:"+00",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0200",n:"+02",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Antarctica/Vostok",{s:{f:"+0600",n:"+06"}}],["Arctic/Longyearbyen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Asia/Aden",{s:{f:"+0300",n:"+03"}}],["Asia/Almaty",{s:{f:"+0600",n:"+06"}}],["Asia/Amman",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T010000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700326T235959",r:{m:3,d:"-1TH"}}}],["Asia/Anadyr",{s:{f:"+1200",n:"+12"}}],["Asia/Aqtau",{s:{f:"+0500",n:"+05"}}],["Asia/Aqtobe",{s:{f:"+0500",n:"+05"}}],["Asia/Ashgabat",{s:{f:"+0500",n:"+05"}}],["Asia/Atyrau",{s:{f:"+0500",n:"+05"}}],["Asia/Baghdad",{s:{f:"+0300",n:"+03"}}],["Asia/Bahrain",{s:{f:"+0300",n:"+03"}}],["Asia/Baku",{s:{f:"+0400",n:"+04"}}],["Asia/Bangkok",{s:{f:"+0700",n:"+07"}}],["Asia/Barnaul",{s:{f:"+0700",n:"+07"}}],["Asia/Beirut",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T000000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Asia/Bishkek",{s:{f:"+0600",n:"+06"}}],["Asia/Brunei",{s:{f:"+0800",n:"+08"}}],["Asia/Chita",{s:{f:"+0900",n:"+09"}}],["Asia/Choibalsan",{s:{f:"+0800",n:"+08"}}],["Asia/Colombo",{s:{f:"+0530",n:"+0530"}}],["Asia/Damascus",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T000000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700327T000000",r:{m:3,d:"-1FR"}}}],["Asia/Dhaka",{s:{f:"+0600",n:"+06"}}],["Asia/Dili",{s:{f:"+0900",n:"+09"}}],["Asia/Dubai",{s:{f:"+0400",n:"+04"}}],["Asia/Dushanbe",{s:{f:"+0500",n:"+05"}}],["Asia/Famagusta",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Gaza",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Hebron",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Ho_Chi_Minh",{s:{f:"+0700",n:"+07"}}],["Asia/Hong_Kong",{s:{f:"+0800",n:"HKT"}}],["Asia/Hovd",{s:{f:"+0700",n:"+07"}}],["Asia/Irkutsk",{s:{f:"+0800",n:"+08"}}],["Asia/Istanbul",{s:{f:"+0300",n:"+03"}}],["Asia/Jakarta",{s:{f:"+0700",n:"WIB"}}],["Asia/Jayapura",{s:{f:"+0900",n:"WIT"}}],["Asia/Jerusalem",{s:{f:"+0300",t:"+0200",n:"IST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"IDT",s:"19700327T020000",r:{m:3,d:"-1FR"}}}],["Asia/Kabul",{s:{f:"+0430",n:"+0430"}}],["Asia/Kamchatka",{s:{f:"+1200",n:"+12"}}],["Asia/Karachi",{s:{f:"+0500",n:"PKT"}}],["Asia/Kathmandu",{s:{f:"+0545",n:"+0545"}}],["Asia/Khandyga",{s:{f:"+0900",n:"+09"}}],["Asia/Kolkata",{s:{f:"+0530",n:"IST"}}],["Asia/Krasnoyarsk",{s:{f:"+0700",n:"+07"}}],["Asia/Kuala_Lumpur",{s:{f:"+0800",n:"+08"}}],["Asia/Kuching",{s:{f:"+0800",n:"+08"}}],["Asia/Kuwait",{s:{f:"+0300",n:"+03"}}],["Asia/Macau",{s:{f:"+0800",n:"CST"}}],["Asia/Magadan",{s:{f:"+1100",n:"+11"}}],["Asia/Makassar",{s:{f:"+0800",n:"WITA"}}],["Asia/Manila",{s:{f:"+0800",n:"PST"}}],["Asia/Muscat",{s:{f:"+0400",n:"+04"}}],["Asia/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Novokuznetsk",{s:{f:"+0700",n:"+07"}}],["Asia/Novosibirsk",{s:{f:"+0700",n:"+07"}}],["Asia/Omsk",{s:{f:"+0600",n:"+06"}}],["Asia/Oral",{s:{f:"+0500",n:"+05"}}],["Asia/Phnom_Penh",{s:{f:"+0700",n:"+07"}}],["Asia/Pontianak",{s:{f:"+0700",n:"WIB"}}],["Asia/Pyongyang",{s:{f:"+0900",n:"KST"}}],["Asia/Qatar",{s:{f:"+0300",n:"+03"}}],["Asia/Qyzylorda",{s:{f:"+0600",n:"+06"}}],["Asia/Riyadh",{s:{f:"+0300",n:"+03"}}],["Asia/Sakhalin",{s:{f:"+1100",n:"+11"}}],["Asia/Samarkand",{s:{f:"+0500",n:"+05"}}],["Asia/Seoul",{s:{f:"+0900",n:"KST"}}],["Asia/Shanghai",{s:{f:"+0800",n:"CST"}}],["Asia/Singapore",{s:{f:"+0800",n:"+08"}}],["Asia/Srednekolymsk",{s:{f:"+1100",n:"+11"}}],["Asia/Taipei",{s:{f:"+0800",n:"CST"}}],["Asia/Tashkent",{s:{f:"+0500",n:"+05"}}],["Asia/Tbilisi",{s:{f:"+0400",n:"+04"}}],["Asia/Tehran",{s:{f:"+0430",t:"+0330",n:"+0330",s:"19700921T000000",r:{m:9,d:"3SU"}},d:{f:"+0330",t:"+0430",n:"+0430",s:"19700321T000000",r:{m:3,d:"3SU"}}}],["Asia/Thimphu",{s:{f:"+0600",n:"+06"}}],["Asia/Tokyo",{s:{f:"+0900",n:"JST"}}],["Asia/Tomsk",{s:{f:"+0700",n:"+07"}}],["Asia/Ulaanbaatar",{s:{f:"+0800",n:"+08"}}],["Asia/Urumqi",{s:{f:"+0600",n:"+06"}}],["Asia/Ust-Nera",{s:{f:"+1000",n:"+10"}}],["Asia/Vientiane",{s:{f:"+0700",n:"+07"}}],["Asia/Vladivostok",{s:{f:"+1000",n:"+10"}}],["Asia/Yakutsk",{s:{f:"+0900",n:"+09"}}],["Asia/Yangon",{s:{f:"+0630",n:"+0630"}}],["Asia/Yekaterinburg",{s:{f:"+0500",n:"+05"}}],["Asia/Yerevan",{s:{f:"+0400",n:"+04"}}],["Atlantic/Azores",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Atlantic/Bermuda",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Atlantic/Canary",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Cape_Verde",{s:{f:"-0100",n:"-01"}}],["Atlantic/Faroe",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Madeira",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Reykjavik",{s:{f:"+0000",n:"GMT"}}],["Atlantic/South_Georgia",{s:{f:"-0200",n:"-02"}}],["Atlantic/St_Helena",{s:{f:"+0000",n:"GMT"}}],["Atlantic/Stanley",{s:{f:"-0300",n:"-03"}}],["Australia/Adelaide",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Brisbane",{s:{f:"+1000",n:"AEST"}}],["Australia/Broken_Hill",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Currie",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Darwin",{s:{f:"+0930",n:"ACST"}}],["Australia/Eucla",{s:{f:"+0845",n:"+0845"}}],["Australia/Hobart",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Lindeman",{s:{f:"+1000",n:"AEST"}}],["Australia/Lord_Howe",{s:{f:"+1100",t:"+1030",n:"+1030",s:"19700405T020000",r:{m:4,d:"1SU"}},d:{f:"+1030",t:"+1100",n:"+11",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Melbourne",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Perth",{s:{f:"+0800",n:"AWST"}}],["Australia/Sydney",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Etc/GMT-0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT-1",{s:{f:"-0100",n:"-01"}}],["Etc/GMT-10",{s:{f:"-1000",n:"-10"}}],["Etc/GMT-11",{s:{f:"-1100",n:"-11"}}],["Etc/GMT-12",{s:{f:"-1200",n:"-12"}}],["Etc/GMT-2",{s:{f:"-0200",n:"-02"}}],["Etc/GMT-3",{s:{f:"-0300",n:"-03"}}],["Etc/GMT-4",{s:{f:"-0400",n:"-04"}}],["Etc/GMT-5",{s:{f:"-0500",n:"-05"}}],["Etc/GMT-6",{s:{f:"-0600",n:"-06"}}],["Etc/GMT-7",{s:{f:"-0700",n:"-07"}}],["Etc/GMT-8",{s:{f:"-0800",n:"-08"}}],["Etc/GMT-9",{s:{f:"-0900",n:"-09"}}],["Etc/GMT",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+1",{s:{f:"+0100",n:"+01"}}],["Etc/GMT+10",{s:{f:"+1000",n:"+10"}}],["Etc/GMT+11",{s:{f:"+1100",n:"+11"}}],["Etc/GMT+12",{s:{f:"+1200",n:"+12"}}],["Etc/GMT+13",{s:{f:"+1300",n:"+13"}}],["Etc/GMT+14",{s:{f:"+1400",n:"+14"}}],["Etc/GMT+2",{s:{f:"+0200",n:"+02"}}],["Etc/GMT+3",{s:{f:"+0300",n:"+03"}}],["Etc/GMT+4",{s:{f:"+0400",n:"+04"}}],["Etc/GMT+5",{s:{f:"+0500",n:"+05"}}],["Etc/GMT+6",{s:{f:"+0600",n:"+06"}}],["Etc/GMT+7",{s:{f:"+0700",n:"+07"}}],["Etc/GMT+8",{s:{f:"+0800",n:"+08"}}],["Etc/GMT+9",{s:{f:"+0900",n:"+09"}}],["Etc/GMT0",{s:{f:"+0000",n:"GMT"}}],["Etc/Greenwich",{s:{f:"+0000",n:"GMT"}}],["Etc/UCT",{s:{f:"+0000",n:"UCT"}}],["Etc/Universal",{s:{f:"+0000",n:"UTC"}}],["Etc/UTC",{s:{f:"+0000",n:"UTC"}}],["Etc/Zulu",{s:{f:"+0000",n:"UTC"}}],["Europe/Amsterdam",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Andorra",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Astrakhan",{s:{f:"+0400",n:"+04"}}],["Europe/Athens",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Belgrade",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Berlin",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bratislava",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Brussels",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bucharest",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Budapest",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Busingen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Chisinau",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Copenhagen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Dublin",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"IST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Gibraltar",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Guernsey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Helsinki",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Isle_of_Man",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Istanbul",{s:{f:"+0300",n:"+03"}}],["Europe/Jersey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Kaliningrad",{s:{f:"+0200",n:"EET"}}],["Europe/Kiev",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Kirov",{s:{f:"+0300",n:"+03"}}],["Europe/Lisbon",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Ljubljana",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/London",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Luxembourg",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Madrid",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Malta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Mariehamn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Minsk",{s:{f:"+0300",n:"+03"}}],["Europe/Monaco",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Moscow",{s:{f:"+0300",n:"MSK"}}],["Europe/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Oslo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Paris",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Podgorica",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Prague",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Riga",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Rome",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Samara",{s:{f:"+0400",n:"+04"}}],["Europe/San_Marino",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sarajevo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Saratov",{s:{f:"+0400",n:"+04"}}],["Europe/Simferopol",{s:{f:"+0300",n:"MSK"}}],["Europe/Skopje",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sofia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Stockholm",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Tallinn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Tirane",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Ulyanovsk",{s:{f:"+0400",n:"+04"}}],["Europe/Uzhgorod",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Vaduz",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vatican",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vienna",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vilnius",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Volgograd",{s:{f:"+0400",n:"+04"}}],["Europe/Warsaw",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zagreb",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zaporozhye",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Zurich",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Indian/Antananarivo",{s:{f:"+0300",n:"EAT"}}],["Indian/Chagos",{s:{f:"+0600",n:"+06"}}],["Indian/Christmas",{s:{f:"+0700",n:"+07"}}],["Indian/Cocos",{s:{f:"+0630",n:"+0630"}}],["Indian/Comoro",{s:{f:"+0300",n:"EAT"}}],["Indian/Kerguelen",{s:{f:"+0500",n:"+05"}}],["Indian/Mahe",{s:{f:"+0400",n:"+04"}}],["Indian/Maldives",{s:{f:"+0500",n:"+05"}}],["Indian/Mauritius",{s:{f:"+0400",n:"+04"}}],["Indian/Mayotte",{s:{f:"+0300",n:"EAT"}}],["Indian/Reunion",{s:{f:"+0400",n:"+04"}}],["Pacific/Apia",{s:{f:"+1400",t:"+1300",n:"+13",s:"19700405T040000",r:{m:4,d:"1SU"}},d:{f:"+1300",t:"+1400",n:"+14",s:"19700927T030000",r:{m:9,d:"-1SU"}}}],["Pacific/Auckland",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Pacific/Bougainville",{s:{f:"+1100",n:"+11"}}],["Pacific/Chatham",{s:{f:"+1345",t:"+1245",n:"+1245",s:"19700405T034500",r:{m:4,d:"1SU"}},d:{f:"+1245",t:"+1345",n:"+1345",s:"19700927T024500",r:{m:9,d:"-1SU"}}}],["Pacific/Chuuk",{s:{f:"+1000",n:"+10"}}],["Pacific/Easter",{s:{f:"-0500",t:"-0600",n:"-06",s:"19700404T220000",r:{m:4,d:"1SA"}},d:{f:"-0600",t:"-0500",n:"-05",s:"19700905T220000",r:{m:9,d:"1SA"}}}],["Pacific/Efate",{s:{f:"+1100",n:"+11"}}],["Pacific/Enderbury",{s:{f:"+1300",n:"+13"}}],["Pacific/Fakaofo",{s:{f:"+1300",n:"+13"}}],["Pacific/Fiji",{s:{f:"+1300",t:"+1200",n:"+12",s:"19700118T030000",r:{m:1,d:"-2SU"}},d:{f:"+1200",t:"+1300",n:"+13",s:"19701101T020000",r:{m:11,d:"1SU"}}}],["Pacific/Funafuti",{s:{f:"+1200",n:"+12"}}],["Pacific/Galapagos",{s:{f:"-0600",n:"-06"}}],["Pacific/Gambier",{s:{f:"-0900",n:"-09"}}],["Pacific/Guadalcanal",{s:{f:"+1100",n:"+11"}}],["Pacific/Guam",{s:{f:"+1000",n:"ChST"}}],["Pacific/Honolulu",{s:{f:"-1000",n:"HST"}}],["Pacific/Kiritimati",{s:{f:"+1400",n:"+14"}}],["Pacific/Kosrae",{s:{f:"+1100",n:"+11"}}],["Pacific/Kwajalein",{s:{f:"+1200",n:"+12"}}],["Pacific/Majuro",{s:{f:"+1200",n:"+12"}}],["Pacific/Marquesas",{s:{f:"-0930",n:"-0930"}}],["Pacific/Midway",{s:{f:"-1100",n:"SST"}}],["Pacific/Nauru",{s:{f:"+1200",n:"+12"}}],["Pacific/Niue",{s:{f:"-1100",n:"-11"}}],["Pacific/Norfolk",{s:{f:"+1100",n:"+11"}}],["Pacific/Noumea",{s:{f:"+1100",n:"+11"}}],["Pacific/Pago_Pago",{s:{f:"-1100",n:"SST"}}],["Pacific/Palau",{s:{f:"+0900",n:"+09"}}],["Pacific/Pitcairn",{s:{f:"-0800",n:"-08"}}],["Pacific/Pohnpei",{s:{f:"+1100",n:"+11"}}],["Pacific/Port_Moresby",{s:{f:"+1000",n:"+10"}}],["Pacific/Rarotonga",{s:{f:"-1000",n:"-10"}}],["Pacific/Saipan",{s:{f:"+1000",n:"ChST"}}],["Pacific/Tahiti",{s:{f:"-1000",n:"-10"}}],["Pacific/Tarawa",{s:{f:"+1200",n:"+12"}}],["Pacific/Tongatapu",{s:{f:"+1300",n:"+13"}}],["Pacific/Wake",{s:{f:"+1200",n:"+12"}}],["Pacific/Wallis",{s:{f:"+1200",n:"+12"}}]])),ct}var Jt;function Je(){if(Jt)return rt;Jt=1,Object.defineProperty(rt,"__esModule",{value:!0}),rt.getZoneString=rt.getZoneLines=void 0;const a=Ze();function t(r){const{n:i,f:o,t:n,r:l,s:u}=r;return[`TZNAME:${i}`,`TZOFFSETFROM:${o}`,`TZOFFSETTO:${n||o}`,`DTSTART:${u||a.defaultStart}`,...l?[`RRULE:FREQ=${l.f||"YEARLY"};BYMONTH=${l.m};BYDAY=${l.d}`]:[]]}function e(r,i=!0){const o=a.zonesMap.get(r);if(o){const{s:n,d:l}=o;return[...i?["BEGIN:VTIMEZONE"]:[],`TZID:${r}`,"BEGIN:STANDARD",...t(n),"END:STANDARD",...l?["BEGIN:DAYLIGHT",...t(l),"END:DAYLIGHT"]:[],...i?["END:VTIMEZONE"]:[]]}}rt.getZoneLines=e;function s(r,i=!0){return e(r,i)?.join(`\r +import{f as G,j as H,o as B,k as Q,e as v,n as dt,t as et,w as st,g as vt,E as Se,F as Ft,C as Gt,c as Pt,l as ue,b as de,r as St,A as Ae,u as E,h as ge}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as ce,l as jt,g as De}from"./index-BgmsSgl5.chunk.mjs";import{t as D}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as Kt}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{d as Ee,a as Lt,g as _e,o as be,b as Ue}from"./index-DqIuD5e7.chunk.mjs";import{c as mt}from"./index-CPwHjAPR.chunk.mjs";import{d as zt,a as Ot}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{b as ft,i as Ce}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{S as Ye}from"./ShareType-suoNfd7y.chunk.mjs";import{N as Ht}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as he}from"./NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs";import{N as ve,a as Oe}from"./index-Bk4hMpWo.chunk.mjs";import{_ as we}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{l as W}from"./logger-B-hwoHFJ.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{j as Me}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import{N as Ne}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import{P as xe}from"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import{D as Ie}from"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{z as ke,_ as Be}from"./index-DuirWb3a.chunk.mjs";import"./index-sH3U_332.chunk.mjs";function qt(a){const t=a.getFullYear(),e=(a.getMonth()+1).toString().padStart(2,"0"),s=a.getDate().toString().padStart(2,"0");return`${t}-${e}-${s}`}const Pe="_absenceForm_1i2bj_2",Le="_absenceForm__pickerContainer_1i2bj_8",ze="_absenceForm__picker_1i2bj_8",Ve="_absenceForm__longMessage_1i2bj_22",je="_absenceForm__longMessageContainer_1i2bj_26",He="_absenceForm__actions_1i2bj_33",Re={absenceForm:Pe,absenceForm__pickerContainer:Le,absenceForm__picker:ze,absenceForm__longMessage:Ve,absenceForm__longMessageContainer:je,absenceForm__actions:He},We={name:"AbsenceForm",components:{NcButton:Ht,NcTextField:we,NcTextArea:Oe,NcDateTimePickerNative:he,NcSelectUsers:ve},setup(){return{t:D}},data(){const{firstDay:a,lastDay:t,status:e,message:s,replacementUserId:r,replacementUserDisplayName:i}=jt("dav","absence",{});return{loading:!1,status:e??"",message:s??"",firstDay:a?new Date(a):new Date,lastDay:t?new Date(t):null,replacementUserId:r,replacementUser:r?{user:r,displayName:i}:null,searchLoading:!1,options:[]}},computed:{valid(){const a=new Date(this.firstDay?.getTime()),t=new Date(this.lastDay?.getTime());return a?.setHours(0,0,0,0),t?.setHours(0,0,0,0),!!this.firstDay&&!!this.lastDay&&!!this.status&&!!this.message&&t>=a}},methods:{resetForm(){this.status="",this.message="",this.firstDay=new Date,this.lastDay=null},formatForMultiselect(a){return{user:a.uuid||a.value.shareWith,displayName:a.name||a.label,subtitle:a.dsc|""}},async asyncFind(a){this.searchLoading=!0,await this.debounceGetSuggestions(a.trim())},async getSuggestions(a){const t=[Ye.User];let e;try{e=await mt.get(ft("apps/files_sharing/api/v1/sharees"),{params:{format:"json",itemType:"file",search:a,shareType:t}})}catch(d){W.error("Error fetching suggestions",{error:d});return}const s=e.data.ocs.data,r=e.data.ocs.data.exact;s.exact=[];const i=r.users,o=s.users;W.info("AbsenceForm raw suggestions",{rawExactSuggestions:i,rawSuggestions:o});const n=i.map(d=>this.formatForMultiselect(d)),l=o.map(d=>this.formatForMultiselect(d)),u=n.concat(l),c=u.reduce((d,m)=>(m.displayName&&(d[m.displayName]||(d[m.displayName]=0),d[m.displayName]++),d),{});this.options=u.map(d=>c[d.displayName]>1&&!d.desc?{...d,desc:d.shareWithDisplayNameUnique}:d),this.searchLoading=!1,W.info("AbsenseForm suggestions",{options:this.options})},debounceGetSuggestions:Ee(function(...a){this.getSuggestions(...a)},300),async saveForm(){if(this.valid){this.loading=!0;try{await mt.post(ft("/apps/dav/api/v1/outOfOffice/{userId}",{userId:Lt().uid}),{firstDay:qt(this.firstDay),lastDay:qt(this.lastDay),status:this.status,message:this.message,replacementUserId:this.replacementUser?.user??null}),zt(D("dav","Absence saved"))}catch(a){Ot(D("dav","Failed to save your absence settings")),W.error("Could not save absence",{error:a})}finally{this.loading=!1}}},async clearAbsence(){this.loading=!0;try{await mt.delete(ft("/apps/dav/api/v1/outOfOffice/{userId}",{userId:Lt().uid})),this.resetForm(),zt(D("dav","Absence cleared"))}catch(a){Ot(D("dav","Failed to clear your absence settings")),W.error("Could not clear absence",{error:a})}finally{this.loading=!1}}}},Fe={for:"replacement-search-input"};function Ge(a,t,e,s,r,i){const o=G("NcDateTimePickerNative"),n=G("NcSelectUsers"),l=G("NcTextField"),u=G("NcTextArea"),c=G("NcButton");return B(),H("form",{class:dt(a.$style.absenceForm),onSubmit:t[5]||(t[5]=Se((...d)=>i.saveForm&&i.saveForm(...d),["prevent"]))},[Q("div",{class:dt(a.$style.absenceForm__pickerContainer)},[v(o,{id:"absence-first-day",modelValue:r.firstDay,"onUpdate:modelValue":t[0]||(t[0]=d=>r.firstDay=d),class:dt(a.$style.absenceForm__picker),label:s.t("dav","First day"),required:""},null,8,["modelValue","class","label"]),v(o,{id:"absence-last-day",modelValue:r.lastDay,"onUpdate:modelValue":t[1]||(t[1]=d=>r.lastDay=d),class:dt(a.$style.absenceForm__picker),label:s.t("dav","Last day (inclusive)"),required:""},null,8,["modelValue","class","label"])],2),Q("label",Fe,et(s.t("dav","Out of office replacement (optional)")),1),v(n,{modelValue:r.replacementUser,"onUpdate:modelValue":t[2]||(t[2]=d=>r.replacementUser=d),inputId:"replacement-search-input",loading:r.searchLoading,placeholder:s.t("dav","Name of the replacement"),options:r.options,onSearch:i.asyncFind},null,8,["modelValue","loading","placeholder","options","onSearch"]),v(l,{modelValue:r.status,"onUpdate:modelValue":t[3]||(t[3]=d=>r.status=d),label:s.t("dav","Short absence status"),required:!0},null,8,["modelValue","label"]),Q("div",{class:dt(a.$style.absenceForm__longMessageContainer)},[v(u,{modelValue:r.message,"onUpdate:modelValue":t[4]||(t[4]=d=>r.message=d),inputClass:a.$style.absenceForm__longMessage,label:s.t("dav","Long absence Message"),required:"",resize:"none",rows:"6"},null,8,["modelValue","inputClass","label"])],2),Q("div",{class:dt(a.$style.absenceForm__actions)},[v(c,{disabled:r.loading||!i.valid,variant:"primary",type:"submit"},{default:st(()=>[vt(et(s.t("dav","Save")),1)]),_:1},8,["disabled"]),v(c,{disabled:r.loading||!i.valid,variant:"error",onClick:i.clearAbsence},{default:st(()=>[vt(et(s.t("dav","Disable absence")),1)]),_:1},8,["disabled","onClick"])],2)],34)}const Ke={$style:Re},qe=ce(We,[["render",Ge],["__cssModules",Ke]]);var rt={},ct={},Zt;function Ze(){return Zt||(Zt=1,Object.defineProperty(ct,"__esModule",{value:!0}),ct.zonesMap=ct.defaultStart=void 0,ct.defaultStart="19700101T000000",ct.zonesMap=new Map([["Africa/Abidjan",{s:{f:"+0000",n:"GMT"}}],["Africa/Accra",{s:{f:"+0000",n:"GMT"}}],["Africa/Addis_Ababa",{s:{f:"+0300",n:"EAT"}}],["Africa/Algiers",{s:{f:"+0100",n:"CET"}}],["Africa/Asmara",{s:{f:"+0300",n:"EAT"}}],["Africa/Bamako",{s:{f:"+0000",n:"GMT"}}],["Africa/Bangui",{s:{f:"+0100",n:"WAT"}}],["Africa/Banjul",{s:{f:"+0000",n:"GMT"}}],["Africa/Bissau",{s:{f:"+0000",n:"GMT"}}],["Africa/Blantyre",{s:{f:"+0200",n:"CAT"}}],["Africa/Brazzaville",{s:{f:"+0100",n:"WAT"}}],["Africa/Bujumbura",{s:{f:"+0200",n:"CAT"}}],["Africa/Cairo",{s:{f:"+0200",n:"EET"}}],["Africa/Casablanca",{s:{f:"+0100",n:"+01"}}],["Africa/Ceuta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Africa/Conakry",{s:{f:"+0000",n:"GMT"}}],["Africa/Dakar",{s:{f:"+0000",n:"GMT"}}],["Africa/Dar_es_Salaam",{s:{f:"+0300",n:"EAT"}}],["Africa/Djibouti",{s:{f:"+0300",n:"EAT"}}],["Africa/Douala",{s:{f:"+0100",n:"WAT"}}],["Africa/El_Aaiun",{s:{f:"+0100",n:"+01"}}],["Africa/Freetown",{s:{f:"+0000",n:"GMT"}}],["Africa/Gaborone",{s:{f:"+0200",n:"CAT"}}],["Africa/Harare",{s:{f:"+0200",n:"CAT"}}],["Africa/Johannesburg",{s:{f:"+0200",n:"SAST"}}],["Africa/Juba",{s:{f:"+0300",n:"EAT"}}],["Africa/Kampala",{s:{f:"+0300",n:"EAT"}}],["Africa/Khartoum",{s:{f:"+0200",n:"CAT"}}],["Africa/Kigali",{s:{f:"+0200",n:"CAT"}}],["Africa/Kinshasa",{s:{f:"+0100",n:"WAT"}}],["Africa/Lagos",{s:{f:"+0100",n:"WAT"}}],["Africa/Libreville",{s:{f:"+0100",n:"WAT"}}],["Africa/Lome",{s:{f:"+0000",n:"GMT"}}],["Africa/Luanda",{s:{f:"+0100",n:"WAT"}}],["Africa/Lubumbashi",{s:{f:"+0200",n:"CAT"}}],["Africa/Lusaka",{s:{f:"+0200",n:"CAT"}}],["Africa/Malabo",{s:{f:"+0100",n:"WAT"}}],["Africa/Maputo",{s:{f:"+0200",n:"CAT"}}],["Africa/Maseru",{s:{f:"+0200",n:"SAST"}}],["Africa/Mbabane",{s:{f:"+0200",n:"SAST"}}],["Africa/Mogadishu",{s:{f:"+0300",n:"EAT"}}],["Africa/Monrovia",{s:{f:"+0000",n:"GMT"}}],["Africa/Nairobi",{s:{f:"+0300",n:"EAT"}}],["Africa/Ndjamena",{s:{f:"+0100",n:"WAT"}}],["Africa/Niamey",{s:{f:"+0100",n:"WAT"}}],["Africa/Nouakchott",{s:{f:"+0000",n:"GMT"}}],["Africa/Ouagadougou",{s:{f:"+0000",n:"GMT"}}],["Africa/Porto-Novo",{s:{f:"+0100",n:"WAT"}}],["Africa/Sao_Tome",{s:{f:"+0100",n:"WAT"}}],["Africa/Tripoli",{s:{f:"+0200",n:"EET"}}],["Africa/Tunis",{s:{f:"+0100",n:"CET"}}],["Africa/Windhoek",{s:{f:"+0200",n:"CAT"}}],["America/Adak",{s:{f:"-0900",t:"-1000",n:"HST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-1000",t:"-0900",n:"HDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anchorage",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Anguilla",{s:{f:"-0400",n:"AST"}}],["America/Antigua",{s:{f:"-0400",n:"AST"}}],["America/Araguaina",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Buenos_Aires",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Catamarca",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Cordoba",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Jujuy",{s:{f:"-0300",n:"-03"}}],["America/Argentina/La_Rioja",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Mendoza",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Rio_Gallegos",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Salta",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Juan",{s:{f:"-0300",n:"-03"}}],["America/Argentina/San_Luis",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Tucuman",{s:{f:"-0300",n:"-03"}}],["America/Argentina/Ushuaia",{s:{f:"-0300",n:"-03"}}],["America/Aruba",{s:{f:"-0400",n:"AST"}}],["America/Asuncion",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700322T000000",r:{m:3,d:"4SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701004T000000",r:{m:10,d:"1SU"}}}],["America/Atikokan",{s:{f:"-0500",n:"EST"}}],["America/Bahia_Banderas",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Bahia",{s:{f:"-0300",n:"-03"}}],["America/Barbados",{s:{f:"-0400",n:"AST"}}],["America/Belem",{s:{f:"-0300",n:"-03"}}],["America/Belize",{s:{f:"-0600",n:"CST"}}],["America/Blanc-Sablon",{s:{f:"-0400",n:"AST"}}],["America/Boa_Vista",{s:{f:"-0400",n:"-04"}}],["America/Bogota",{s:{f:"-0500",n:"-05"}}],["America/Boise",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Cambridge_Bay",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Campo_Grande",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Cancun",{s:{f:"-0500",n:"EST"}}],["America/Caracas",{s:{f:"-0400",n:"-04"}}],["America/Cayenne",{s:{f:"-0300",n:"-03"}}],["America/Cayman",{s:{f:"-0500",n:"EST"}}],["America/Chicago",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Chihuahua",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Costa_Rica",{s:{f:"-0600",n:"CST"}}],["America/Creston",{s:{f:"-0700",n:"MST"}}],["America/Cuiaba",{s:{f:"-0400",n:"-04",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Curacao",{s:{f:"-0400",n:"AST"}}],["America/Danmarkshavn",{s:{f:"+0000",n:"GMT"}}],["America/Dawson_Creek",{s:{f:"-0700",n:"MST"}}],["America/Dawson",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Denver",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Detroit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Dominica",{s:{f:"-0400",n:"AST"}}],["America/Edmonton",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Eirunepe",{s:{f:"-0500",n:"-05"}}],["America/El_Salvador",{s:{f:"-0600",n:"CST"}}],["America/Fort_Nelson",{s:{f:"-0700",n:"MST"}}],["America/Fortaleza",{s:{f:"-0300",n:"-03"}}],["America/Glace_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Godthab",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701024T230000",r:{m:10,d:"-1SA"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700328T220000",r:{m:3,d:"-1SA"}}}],["America/Goose_Bay",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grand_Turk",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Grenada",{s:{f:"-0400",n:"AST"}}],["America/Guadeloupe",{s:{f:"-0400",n:"AST"}}],["America/Guatemala",{s:{f:"-0600",n:"CST"}}],["America/Guayaquil",{s:{f:"-0500",n:"-05"}}],["America/Guyana",{s:{f:"-0400",n:"-04"}}],["America/Halifax",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Havana",{s:{f:"-0400",t:"-0500",n:"CST",s:"19701101T010000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"CDT",s:"19700308T000000",r:{m:3,d:"2SU"}}}],["America/Hermosillo",{s:{f:"-0700",n:"MST"}}],["America/Indiana/Indianapolis",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Knox",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Marengo",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Petersburg",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Tell_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vevay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Vincennes",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Indiana/Winamac",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Inuvik",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Iqaluit",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Jamaica",{s:{f:"-0500",n:"EST"}}],["America/Juneau",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Louisville",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kentucky/Monticello",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Kralendijk",{s:{f:"-0400",n:"AST"}}],["America/La_Paz",{s:{f:"-0400",n:"-04"}}],["America/Lima",{s:{f:"-0500",n:"-05"}}],["America/Los_Angeles",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Lower_Princes",{s:{f:"-0400",n:"AST"}}],["America/Maceio",{s:{f:"-0300",n:"-03"}}],["America/Managua",{s:{f:"-0600",n:"CST"}}],["America/Manaus",{s:{f:"-0400",n:"-04"}}],["America/Marigot",{s:{f:"-0400",n:"AST"}}],["America/Martinique",{s:{f:"-0400",n:"AST"}}],["America/Matamoros",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mazatlan",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Menominee",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Merida",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Metlakatla",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Mexico_City",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Miquelon",{s:{f:"-0200",t:"-0300",n:"-03",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Moncton",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Monterrey",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700405T020000",r:{m:4,d:"1SU"}}}],["America/Montevideo",{s:{f:"-0300",n:"-03"}}],["America/Montserrat",{s:{f:"-0400",n:"AST"}}],["America/Nassau",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/New_York",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nipigon",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Nome",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Noronha",{s:{f:"-0200",n:"-02"}}],["America/North_Dakota/Beulah",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/Center",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/North_Dakota/New_Salem",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Ojinaga",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Panama",{s:{f:"-0500",n:"EST"}}],["America/Pangnirtung",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Paramaribo",{s:{f:"-0300",n:"-03"}}],["America/Phoenix",{s:{f:"-0700",n:"MST"}}],["America/Port_of_Spain",{s:{f:"-0400",n:"AST"}}],["America/Port-au-Prince",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Porto_Velho",{s:{f:"-0400",n:"-04"}}],["America/Puerto_Rico",{s:{f:"-0400",n:"AST"}}],["America/Punta_Arenas",{s:{f:"-0300",n:"-03"}}],["America/Rainy_River",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rankin_Inlet",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Recife",{s:{f:"-0300",n:"-03"}}],["America/Regina",{s:{f:"-0600",n:"CST"}}],["America/Resolute",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Rio_Branco",{s:{f:"-0500",n:"-05"}}],["America/Santarem",{s:{f:"-0300",n:"-03"}}],["America/Santiago",{s:{f:"-0300",t:"-0400",n:"-04",s:"19700405T000000",r:{m:4,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"-03",s:"19700906T000000",r:{m:9,d:"1SU"}}}],["America/Santo_Domingo",{s:{f:"-0400",n:"AST"}}],["America/Sao_Paulo",{s:{f:"-0300",n:"-03",s:"19700215T000000",r:{m:2,d:"3SU"}},d:{f:"-0300",t:"-0200",n:"-02",s:"19701101T000000",r:{m:11,d:"1SU"}}}],["America/Scoresbysund",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["America/Sitka",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Barthelemy",{s:{f:"-0400",n:"AST"}}],["America/St_Johns",{s:{f:"-0230",t:"-0330",n:"NST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0330",t:"-0230",n:"NDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/St_Kitts",{s:{f:"-0400",n:"AST"}}],["America/St_Lucia",{s:{f:"-0400",n:"AST"}}],["America/St_Thomas",{s:{f:"-0400",n:"AST"}}],["America/St_Vincent",{s:{f:"-0400",n:"AST"}}],["America/Swift_Current",{s:{f:"-0600",n:"CST"}}],["America/Tegucigalpa",{s:{f:"-0600",n:"CST"}}],["America/Thule",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Thunder_Bay",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tijuana",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Toronto",{s:{f:"-0400",t:"-0500",n:"EST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0500",t:"-0400",n:"EDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Tortola",{s:{f:"-0400",n:"AST"}}],["America/Vancouver",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Whitehorse",{s:{f:"-0700",t:"-0800",n:"PST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0800",t:"-0700",n:"PDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Winnipeg",{s:{f:"-0500",t:"-0600",n:"CST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0600",t:"-0500",n:"CDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yakutat",{s:{f:"-0800",t:"-0900",n:"AKST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0900",t:"-0800",n:"AKDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["America/Yellowknife",{s:{f:"-0600",t:"-0700",n:"MST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0700",t:"-0600",n:"MDT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Antarctica/Casey",{s:{f:"+0800",n:"+08"}}],["Antarctica/Davis",{s:{f:"+0700",n:"+07"}}],["Antarctica/DumontDUrville",{s:{f:"+1000",n:"+10"}}],["Antarctica/Macquarie",{s:{f:"+1100",n:"+11"}}],["Antarctica/Mawson",{s:{f:"+0500",n:"+05"}}],["Antarctica/McMurdo",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Antarctica/Palmer",{s:{f:"-0300",n:"-03"}}],["Antarctica/Rothera",{s:{f:"-0300",n:"-03"}}],["Antarctica/Syowa",{s:{f:"+0300",n:"+03"}}],["Antarctica/Troll",{s:{f:"+0200",t:"+0000",n:"+00",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0200",n:"+02",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Antarctica/Vostok",{s:{f:"+0600",n:"+06"}}],["Arctic/Longyearbyen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Asia/Aden",{s:{f:"+0300",n:"+03"}}],["Asia/Almaty",{s:{f:"+0600",n:"+06"}}],["Asia/Amman",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T010000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700326T235959",r:{m:3,d:"-1TH"}}}],["Asia/Anadyr",{s:{f:"+1200",n:"+12"}}],["Asia/Aqtau",{s:{f:"+0500",n:"+05"}}],["Asia/Aqtobe",{s:{f:"+0500",n:"+05"}}],["Asia/Ashgabat",{s:{f:"+0500",n:"+05"}}],["Asia/Atyrau",{s:{f:"+0500",n:"+05"}}],["Asia/Baghdad",{s:{f:"+0300",n:"+03"}}],["Asia/Bahrain",{s:{f:"+0300",n:"+03"}}],["Asia/Baku",{s:{f:"+0400",n:"+04"}}],["Asia/Bangkok",{s:{f:"+0700",n:"+07"}}],["Asia/Barnaul",{s:{f:"+0700",n:"+07"}}],["Asia/Beirut",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T000000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Asia/Bishkek",{s:{f:"+0600",n:"+06"}}],["Asia/Brunei",{s:{f:"+0800",n:"+08"}}],["Asia/Chita",{s:{f:"+0900",n:"+09"}}],["Asia/Choibalsan",{s:{f:"+0800",n:"+08"}}],["Asia/Colombo",{s:{f:"+0530",n:"+0530"}}],["Asia/Damascus",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701030T000000",r:{m:10,d:"-1FR"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700327T000000",r:{m:3,d:"-1FR"}}}],["Asia/Dhaka",{s:{f:"+0600",n:"+06"}}],["Asia/Dili",{s:{f:"+0900",n:"+09"}}],["Asia/Dubai",{s:{f:"+0400",n:"+04"}}],["Asia/Dushanbe",{s:{f:"+0500",n:"+05"}}],["Asia/Famagusta",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Gaza",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Hebron",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701031T010000",r:{m:10,d:"-1SA"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700328T010000",r:{m:3,d:"4SA"}}}],["Asia/Ho_Chi_Minh",{s:{f:"+0700",n:"+07"}}],["Asia/Hong_Kong",{s:{f:"+0800",n:"HKT"}}],["Asia/Hovd",{s:{f:"+0700",n:"+07"}}],["Asia/Irkutsk",{s:{f:"+0800",n:"+08"}}],["Asia/Istanbul",{s:{f:"+0300",n:"+03"}}],["Asia/Jakarta",{s:{f:"+0700",n:"WIB"}}],["Asia/Jayapura",{s:{f:"+0900",n:"WIT"}}],["Asia/Jerusalem",{s:{f:"+0300",t:"+0200",n:"IST",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"IDT",s:"19700327T020000",r:{m:3,d:"-1FR"}}}],["Asia/Kabul",{s:{f:"+0430",n:"+0430"}}],["Asia/Kamchatka",{s:{f:"+1200",n:"+12"}}],["Asia/Karachi",{s:{f:"+0500",n:"PKT"}}],["Asia/Kathmandu",{s:{f:"+0545",n:"+0545"}}],["Asia/Khandyga",{s:{f:"+0900",n:"+09"}}],["Asia/Kolkata",{s:{f:"+0530",n:"IST"}}],["Asia/Krasnoyarsk",{s:{f:"+0700",n:"+07"}}],["Asia/Kuala_Lumpur",{s:{f:"+0800",n:"+08"}}],["Asia/Kuching",{s:{f:"+0800",n:"+08"}}],["Asia/Kuwait",{s:{f:"+0300",n:"+03"}}],["Asia/Macau",{s:{f:"+0800",n:"CST"}}],["Asia/Magadan",{s:{f:"+1100",n:"+11"}}],["Asia/Makassar",{s:{f:"+0800",n:"WITA"}}],["Asia/Manila",{s:{f:"+0800",n:"PST"}}],["Asia/Muscat",{s:{f:"+0400",n:"+04"}}],["Asia/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Asia/Novokuznetsk",{s:{f:"+0700",n:"+07"}}],["Asia/Novosibirsk",{s:{f:"+0700",n:"+07"}}],["Asia/Omsk",{s:{f:"+0600",n:"+06"}}],["Asia/Oral",{s:{f:"+0500",n:"+05"}}],["Asia/Phnom_Penh",{s:{f:"+0700",n:"+07"}}],["Asia/Pontianak",{s:{f:"+0700",n:"WIB"}}],["Asia/Pyongyang",{s:{f:"+0900",n:"KST"}}],["Asia/Qatar",{s:{f:"+0300",n:"+03"}}],["Asia/Qyzylorda",{s:{f:"+0600",n:"+06"}}],["Asia/Riyadh",{s:{f:"+0300",n:"+03"}}],["Asia/Sakhalin",{s:{f:"+1100",n:"+11"}}],["Asia/Samarkand",{s:{f:"+0500",n:"+05"}}],["Asia/Seoul",{s:{f:"+0900",n:"KST"}}],["Asia/Shanghai",{s:{f:"+0800",n:"CST"}}],["Asia/Singapore",{s:{f:"+0800",n:"+08"}}],["Asia/Srednekolymsk",{s:{f:"+1100",n:"+11"}}],["Asia/Taipei",{s:{f:"+0800",n:"CST"}}],["Asia/Tashkent",{s:{f:"+0500",n:"+05"}}],["Asia/Tbilisi",{s:{f:"+0400",n:"+04"}}],["Asia/Tehran",{s:{f:"+0430",t:"+0330",n:"+0330",s:"19700921T000000",r:{m:9,d:"3SU"}},d:{f:"+0330",t:"+0430",n:"+0430",s:"19700321T000000",r:{m:3,d:"3SU"}}}],["Asia/Thimphu",{s:{f:"+0600",n:"+06"}}],["Asia/Tokyo",{s:{f:"+0900",n:"JST"}}],["Asia/Tomsk",{s:{f:"+0700",n:"+07"}}],["Asia/Ulaanbaatar",{s:{f:"+0800",n:"+08"}}],["Asia/Urumqi",{s:{f:"+0600",n:"+06"}}],["Asia/Ust-Nera",{s:{f:"+1000",n:"+10"}}],["Asia/Vientiane",{s:{f:"+0700",n:"+07"}}],["Asia/Vladivostok",{s:{f:"+1000",n:"+10"}}],["Asia/Yakutsk",{s:{f:"+0900",n:"+09"}}],["Asia/Yangon",{s:{f:"+0630",n:"+0630"}}],["Asia/Yekaterinburg",{s:{f:"+0500",n:"+05"}}],["Asia/Yerevan",{s:{f:"+0400",n:"+04"}}],["Atlantic/Azores",{s:{f:"+0000",t:"-0100",n:"-01",s:"19701025T010000",r:{m:10,d:"-1SU"}},d:{f:"-0100",t:"+0000",n:"+00",s:"19700329T000000",r:{m:3,d:"-1SU"}}}],["Atlantic/Bermuda",{s:{f:"-0300",t:"-0400",n:"AST",s:"19701101T020000",r:{m:11,d:"1SU"}},d:{f:"-0400",t:"-0300",n:"ADT",s:"19700308T020000",r:{m:3,d:"2SU"}}}],["Atlantic/Canary",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Cape_Verde",{s:{f:"-0100",n:"-01"}}],["Atlantic/Faroe",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Madeira",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Atlantic/Reykjavik",{s:{f:"+0000",n:"GMT"}}],["Atlantic/South_Georgia",{s:{f:"-0200",n:"-02"}}],["Atlantic/St_Helena",{s:{f:"+0000",n:"GMT"}}],["Atlantic/Stanley",{s:{f:"-0300",n:"-03"}}],["Australia/Adelaide",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Brisbane",{s:{f:"+1000",n:"AEST"}}],["Australia/Broken_Hill",{s:{f:"+1030",t:"+0930",n:"ACST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+0930",t:"+1030",n:"ACDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Currie",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Darwin",{s:{f:"+0930",n:"ACST"}}],["Australia/Eucla",{s:{f:"+0845",n:"+0845"}}],["Australia/Hobart",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Lindeman",{s:{f:"+1000",n:"AEST"}}],["Australia/Lord_Howe",{s:{f:"+1100",t:"+1030",n:"+1030",s:"19700405T020000",r:{m:4,d:"1SU"}},d:{f:"+1030",t:"+1100",n:"+11",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Melbourne",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Australia/Perth",{s:{f:"+0800",n:"AWST"}}],["Australia/Sydney",{s:{f:"+1100",t:"+1000",n:"AEST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1000",t:"+1100",n:"AEDT",s:"19701004T020000",r:{m:10,d:"1SU"}}}],["Etc/GMT-0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT-1",{s:{f:"-0100",n:"-01"}}],["Etc/GMT-10",{s:{f:"-1000",n:"-10"}}],["Etc/GMT-11",{s:{f:"-1100",n:"-11"}}],["Etc/GMT-12",{s:{f:"-1200",n:"-12"}}],["Etc/GMT-2",{s:{f:"-0200",n:"-02"}}],["Etc/GMT-3",{s:{f:"-0300",n:"-03"}}],["Etc/GMT-4",{s:{f:"-0400",n:"-04"}}],["Etc/GMT-5",{s:{f:"-0500",n:"-05"}}],["Etc/GMT-6",{s:{f:"-0600",n:"-06"}}],["Etc/GMT-7",{s:{f:"-0700",n:"-07"}}],["Etc/GMT-8",{s:{f:"-0800",n:"-08"}}],["Etc/GMT-9",{s:{f:"-0900",n:"-09"}}],["Etc/GMT",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+0",{s:{f:"+0000",n:"GMT"}}],["Etc/GMT+1",{s:{f:"+0100",n:"+01"}}],["Etc/GMT+10",{s:{f:"+1000",n:"+10"}}],["Etc/GMT+11",{s:{f:"+1100",n:"+11"}}],["Etc/GMT+12",{s:{f:"+1200",n:"+12"}}],["Etc/GMT+13",{s:{f:"+1300",n:"+13"}}],["Etc/GMT+14",{s:{f:"+1400",n:"+14"}}],["Etc/GMT+2",{s:{f:"+0200",n:"+02"}}],["Etc/GMT+3",{s:{f:"+0300",n:"+03"}}],["Etc/GMT+4",{s:{f:"+0400",n:"+04"}}],["Etc/GMT+5",{s:{f:"+0500",n:"+05"}}],["Etc/GMT+6",{s:{f:"+0600",n:"+06"}}],["Etc/GMT+7",{s:{f:"+0700",n:"+07"}}],["Etc/GMT+8",{s:{f:"+0800",n:"+08"}}],["Etc/GMT+9",{s:{f:"+0900",n:"+09"}}],["Etc/GMT0",{s:{f:"+0000",n:"GMT"}}],["Etc/Greenwich",{s:{f:"+0000",n:"GMT"}}],["Etc/UCT",{s:{f:"+0000",n:"UCT"}}],["Etc/Universal",{s:{f:"+0000",n:"UTC"}}],["Etc/UTC",{s:{f:"+0000",n:"UTC"}}],["Etc/Zulu",{s:{f:"+0000",n:"UTC"}}],["Europe/Amsterdam",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Andorra",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Astrakhan",{s:{f:"+0400",n:"+04"}}],["Europe/Athens",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Belgrade",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Berlin",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bratislava",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Brussels",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Bucharest",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Budapest",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Busingen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Chisinau",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Copenhagen",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Dublin",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"IST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Gibraltar",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Guernsey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Helsinki",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Isle_of_Man",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Istanbul",{s:{f:"+0300",n:"+03"}}],["Europe/Jersey",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Kaliningrad",{s:{f:"+0200",n:"EET"}}],["Europe/Kiev",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Kirov",{s:{f:"+0300",n:"+03"}}],["Europe/Lisbon",{s:{f:"+0100",t:"+0000",n:"WET",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"WEST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Ljubljana",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/London",{s:{f:"+0100",t:"+0000",n:"GMT",s:"19701025T020000",r:{m:10,d:"-1SU"}},d:{f:"+0000",t:"+0100",n:"BST",s:"19700329T010000",r:{m:3,d:"-1SU"}}}],["Europe/Luxembourg",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Madrid",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Malta",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Mariehamn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Minsk",{s:{f:"+0300",n:"+03"}}],["Europe/Monaco",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Moscow",{s:{f:"+0300",n:"MSK"}}],["Europe/Nicosia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Oslo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Paris",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Podgorica",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Prague",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Riga",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Rome",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Samara",{s:{f:"+0400",n:"+04"}}],["Europe/San_Marino",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sarajevo",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Saratov",{s:{f:"+0400",n:"+04"}}],["Europe/Simferopol",{s:{f:"+0300",n:"MSK"}}],["Europe/Skopje",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Sofia",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Stockholm",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Tallinn",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Tirane",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Ulyanovsk",{s:{f:"+0400",n:"+04"}}],["Europe/Uzhgorod",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Vaduz",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vatican",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vienna",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Vilnius",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Volgograd",{s:{f:"+0400",n:"+04"}}],["Europe/Warsaw",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zagreb",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Europe/Zaporozhye",{s:{f:"+0300",t:"+0200",n:"EET",s:"19701025T040000",r:{m:10,d:"-1SU"}},d:{f:"+0200",t:"+0300",n:"EEST",s:"19700329T030000",r:{m:3,d:"-1SU"}}}],["Europe/Zurich",{s:{f:"+0200",t:"+0100",n:"CET",s:"19701025T030000",r:{m:10,d:"-1SU"}},d:{f:"+0100",t:"+0200",n:"CEST",s:"19700329T020000",r:{m:3,d:"-1SU"}}}],["Indian/Antananarivo",{s:{f:"+0300",n:"EAT"}}],["Indian/Chagos",{s:{f:"+0600",n:"+06"}}],["Indian/Christmas",{s:{f:"+0700",n:"+07"}}],["Indian/Cocos",{s:{f:"+0630",n:"+0630"}}],["Indian/Comoro",{s:{f:"+0300",n:"EAT"}}],["Indian/Kerguelen",{s:{f:"+0500",n:"+05"}}],["Indian/Mahe",{s:{f:"+0400",n:"+04"}}],["Indian/Maldives",{s:{f:"+0500",n:"+05"}}],["Indian/Mauritius",{s:{f:"+0400",n:"+04"}}],["Indian/Mayotte",{s:{f:"+0300",n:"EAT"}}],["Indian/Reunion",{s:{f:"+0400",n:"+04"}}],["Pacific/Apia",{s:{f:"+1400",t:"+1300",n:"+13",s:"19700405T040000",r:{m:4,d:"1SU"}},d:{f:"+1300",t:"+1400",n:"+14",s:"19700927T030000",r:{m:9,d:"-1SU"}}}],["Pacific/Auckland",{s:{f:"+1300",t:"+1200",n:"NZST",s:"19700405T030000",r:{m:4,d:"1SU"}},d:{f:"+1200",t:"+1300",n:"NZDT",s:"19700927T020000",r:{m:9,d:"-1SU"}}}],["Pacific/Bougainville",{s:{f:"+1100",n:"+11"}}],["Pacific/Chatham",{s:{f:"+1345",t:"+1245",n:"+1245",s:"19700405T034500",r:{m:4,d:"1SU"}},d:{f:"+1245",t:"+1345",n:"+1345",s:"19700927T024500",r:{m:9,d:"-1SU"}}}],["Pacific/Chuuk",{s:{f:"+1000",n:"+10"}}],["Pacific/Easter",{s:{f:"-0500",t:"-0600",n:"-06",s:"19700404T220000",r:{m:4,d:"1SA"}},d:{f:"-0600",t:"-0500",n:"-05",s:"19700905T220000",r:{m:9,d:"1SA"}}}],["Pacific/Efate",{s:{f:"+1100",n:"+11"}}],["Pacific/Enderbury",{s:{f:"+1300",n:"+13"}}],["Pacific/Fakaofo",{s:{f:"+1300",n:"+13"}}],["Pacific/Fiji",{s:{f:"+1300",t:"+1200",n:"+12",s:"19700118T030000",r:{m:1,d:"-2SU"}},d:{f:"+1200",t:"+1300",n:"+13",s:"19701101T020000",r:{m:11,d:"1SU"}}}],["Pacific/Funafuti",{s:{f:"+1200",n:"+12"}}],["Pacific/Galapagos",{s:{f:"-0600",n:"-06"}}],["Pacific/Gambier",{s:{f:"-0900",n:"-09"}}],["Pacific/Guadalcanal",{s:{f:"+1100",n:"+11"}}],["Pacific/Guam",{s:{f:"+1000",n:"ChST"}}],["Pacific/Honolulu",{s:{f:"-1000",n:"HST"}}],["Pacific/Kiritimati",{s:{f:"+1400",n:"+14"}}],["Pacific/Kosrae",{s:{f:"+1100",n:"+11"}}],["Pacific/Kwajalein",{s:{f:"+1200",n:"+12"}}],["Pacific/Majuro",{s:{f:"+1200",n:"+12"}}],["Pacific/Marquesas",{s:{f:"-0930",n:"-0930"}}],["Pacific/Midway",{s:{f:"-1100",n:"SST"}}],["Pacific/Nauru",{s:{f:"+1200",n:"+12"}}],["Pacific/Niue",{s:{f:"-1100",n:"-11"}}],["Pacific/Norfolk",{s:{f:"+1100",n:"+11"}}],["Pacific/Noumea",{s:{f:"+1100",n:"+11"}}],["Pacific/Pago_Pago",{s:{f:"-1100",n:"SST"}}],["Pacific/Palau",{s:{f:"+0900",n:"+09"}}],["Pacific/Pitcairn",{s:{f:"-0800",n:"-08"}}],["Pacific/Pohnpei",{s:{f:"+1100",n:"+11"}}],["Pacific/Port_Moresby",{s:{f:"+1000",n:"+10"}}],["Pacific/Rarotonga",{s:{f:"-1000",n:"-10"}}],["Pacific/Saipan",{s:{f:"+1000",n:"ChST"}}],["Pacific/Tahiti",{s:{f:"-1000",n:"-10"}}],["Pacific/Tarawa",{s:{f:"+1200",n:"+12"}}],["Pacific/Tongatapu",{s:{f:"+1300",n:"+13"}}],["Pacific/Wake",{s:{f:"+1200",n:"+12"}}],["Pacific/Wallis",{s:{f:"+1200",n:"+12"}}]])),ct}var Jt;function Je(){if(Jt)return rt;Jt=1,Object.defineProperty(rt,"__esModule",{value:!0}),rt.getZoneString=rt.getZoneLines=void 0;const a=Ze();function t(r){const{n:i,f:o,t:n,r:l,s:u}=r;return[`TZNAME:${i}`,`TZOFFSETFROM:${o}`,`TZOFFSETTO:${n||o}`,`DTSTART:${u||a.defaultStart}`,...l?[`RRULE:FREQ=${l.f||"YEARLY"};BYMONTH=${l.m};BYDAY=${l.d}`]:[]]}function e(r,i=!0){const o=a.zonesMap.get(r);if(o){const{s:n,d:l}=o;return[...i?["BEGIN:VTIMEZONE"]:[],`TZID:${r}`,"BEGIN:STANDARD",...t(n),"END:STANDARD",...l?["BEGIN:DAYLIGHT",...t(l),"END:DAYLIGHT"]:[],...i?["END:VTIMEZONE"]:[]]}}rt.getZoneLines=e;function s(r,i=!0){return e(r,i)?.join(`\r `)}return rt.getZoneString=s,rt}var $e=Je();class Nt{static fromString(t){return new Nt(t)}constructor(t){this.value=t}icaltype="binary";decodeValue(){return this._b64_decode(this.value)}setEncodedValue(t){this.value=this._b64_encode(t)}_b64_encode(t){let e="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=",s,r,i,o,n,l,u,c,d=0,m=0,p="",y=[];if(!t)return t;do s=t.charCodeAt(d++),r=t.charCodeAt(d++),i=t.charCodeAt(d++),c=s<<16|r<<8|i,o=c>>18&63,n=c>>12&63,l=c>>6&63,u=c&63,y[m++]=e.charAt(o)+e.charAt(n)+e.charAt(l)+e.charAt(u);while(d>16&255,r=c>>8&255,i=c&255,l==64?y[m++]=String.fromCharCode(s):u==64?y[m++]=String.fromCharCode(s,r):y[m++]=String.fromCharCode(s,r,i);while(ds)-(e0?-1:0}toString(){return this.start+"/"+(this.end||this.duration)}toJSON(){return[this.start.toString(),(this.end||this.duration).toString()]}toICALString(){return this.start.toICALString()+"/"+(this.end||this.duration).toICALString()}}class h{static _dowCache={};static _wnCache={};static daysInMonth(t,e){let s=[0,31,28,31,30,31,30,31,31,30,31,30,31],r=30;return t<1||t>12||(r=s[t],t==2&&(r+=h.isLeapYear(e))),r}static isLeapYear(t){return t<=1752?t%4==0:t%4==0&&t%100!=0||t%400==0}static fromDayOfYear(t,e){let s=e,r=t,i=new h;i.auto_normalize=!1;let o=h.isLeapYear(s)?1:0;if(r<1)return s--,o=h.isLeapYear(s)?1:0,r+=h.daysInYearPassedMonth[o][12],h.fromDayOfYear(r,s);if(r>h.daysInYearPassedMonth[o][12])return o=h.isLeapYear(s)?1:0,r-=h.daysInYearPassedMonth[o][12],s++,h.fromDayOfYear(r,s);i.year=s,i.isDate=!0;for(let n=11;n>=0;n--)if(r>h.daysInYearPassedMonth[o][n]){i.month=n+1,i.day=r-h.daysInYearPassedMonth[o][n];break}return i.auto_normalize=!0,i}static fromStringv2(t){return new h({year:parseInt(t.slice(0,4),10),month:parseInt(t.slice(5,7),10),day:parseInt(t.slice(8,10),10),isDate:!0})}static fromDateString(t){return new h({year:O(t.slice(0,4)),month:O(t.slice(5,7)),day:O(t.slice(8,10)),isDate:!0})}static fromDateTimeString(t,e){if(t.length<19)throw new Error('invalid date-time value: "'+t+'"');let s,r;t.slice(-1)==="Z"?s=T.utcTimezone:e&&(r=e.getParameter("tzid"),e.parent&&(e.parent.name==="standard"||e.parent.name==="daylight"?s=T.localTimezone:r&&(s=e.parent.getTimeZoneByID(r))));const i={year:O(t.slice(0,4)),month:O(t.slice(5,7)),day:O(t.slice(8,10)),hour:O(t.slice(11,13)),minute:O(t.slice(14,16)),second:O(t.slice(17,19))};return r&&!s&&(i.timezone=r),new h(i,s)}static fromString(t,e){return t.length>10?h.fromDateTimeString(t,e):h.fromDateString(t)}static fromJSDate(t,e){return new h().fromJSDate(t,e)}static fromData=function(t,e){return new h().fromData(t,e)};static now(){return h.fromJSDate(new Date,!1)}static weekOneStarts(t,e){let s=h.fromData({year:t,month:1,day:1,isDate:!0}),r=s.dayOfWeek(),i=e||h.DEFAULT_WEEK_START;return r>h.THURSDAY&&(s.day+=7),i>h.THURSDAY&&(s.day-=7),s.day-=r-i,s}static getDominicalLetter(t){let e="GFEDCBA",s=(t+(t/4|0)+(t/400|0)-(t/100|0)-1)%7;return h.isLeapYear(t)?e[(s+6)%7]+e[s]:e[s]}static#t=null;static get epochTime(){return this.#t||(this.#t=h.fromData({year:1970,month:1,day:1,hour:0,minute:0,second:0,isDate:!1,timezone:"Z"})),this.#t}static _cmp_attr(t,e,s){return t[s]>e[s]?1:t[s]=0){n.day=1,i!=0&&i--,o=n.day;let l=n.dayOfWeek(),u=t-l;u<0&&(u+=7),o+=u,o-=t,r=t}else{n.day=s;let l=n.dayOfWeek();i++,r=l-t,r<0&&(r+=7),r=s-r}return r+=i*7,o+r}isNthWeekDay(t,e){let s=this.dayOfWeek();return e===0&&s===t||this.nthWeekDay(t,e)===this.day}weekNumber(t){let e=(this.year<<12)+(this.month<<8)+(this.day<<3)+t;if(e in h._wnCache)return h._wnCache[e];let s,r=this.clone();r.isDate=!0;let i=this.year;r.month==12&&r.day>25?(s=h.weekOneStarts(i+1,t),r.compare(s)<0?s=h.weekOneStarts(i,t):i++):(s=h.weekOneStarts(i,t),r.compare(s)<0&&(s=h.weekOneStarts(--i,t)));let o=r.subtractDate(s).toSeconds()/86400,n=C(o/7)+1;return h._wnCache[e]=n,n}addDuration(t){let e=t.isNegative?-1:1,s=this.second,r=this.minute,i=this.hour,o=this.day;s+=e*t.seconds,r+=e*t.minutes,i+=e*t.hours,o+=e*t.days,o+=e*7*t.weeks,this.second=s,this.minute=r,this.hour=i,this.day=o,this._cachedUnixTime=null}subtractDate(t){let e=this.toUnixTime()+this.utcOffset(),s=t.toUnixTime()+t.utcOffset();return M.fromSeconds(e-s)}subtractDateTz(t){let e=this.toUnixTime(),s=t.toUnixTime();return M.fromSeconds(e-s)}compare(t){if(t instanceof K)return-1*t.compare(this);{let e=this.toUnixTime(),s=t.toUnixTime();return e>s?1:s>e?-1:0}}compareDateOnlyTz(t,e){let s=this.convertToZone(e),r=t.convertToZone(e),i=0;return(i=h._cmp_attr(s,r,"year"))!=0||(i=h._cmp_attr(s,r,"month"))!=0||(i=h._cmp_attr(s,r,"day"))!=0,i}convertToZone(t){let e=this.clone(),s=this.zone.tzid==t.tzid;return!this.isDate&&!s&&T.convert_time(e,this.zone,t),e.zone=t,e}utcOffset(){return this.zone==T.localTimezone||this.zone==T.utcTimezone?0:this.zone.utcOffset(this)}toICALString(){let t=this.toString();return t.length>10?b.icalendar.value["date-time"].toICAL(t):b.icalendar.value.date.toICAL(t)}toString(){let t=this.year+"-"+k(this.month)+"-"+k(this.day);return this.isDate||(t+="T"+k(this.hour)+":"+k(this.minute)+":"+k(this.second),this.zone===T.utcTimezone&&(t+="Z")),t}toJSDate(){return this.zone==T.localTimezone?this.isDate?new Date(this.year,this.month-1,this.day):new Date(this.year,this.month-1,this.day,this.hour,this.minute,this.second,0):new Date(this.toUnixTime()*1e3)}_normalize(){return this._time.isDate&&(this._time.hour=0,this._time.minute=0,this._time.second=0),this.adjust(0,0,0,0),this}adjust(t,e,s,r,i){let o,n,l=0,u=0,c,d,m,p,y,f=i||this._time;if(f.isDate||(c=f.second+r,f.second=c%60,o=C(c/60),f.second<0&&(f.second+=60,o--),d=f.minute+s+o,f.minute=d%60,n=C(d/60),f.minute<0&&(f.minute+=60,n--),m=f.hour+e+n,f.hour=m%24,l=C(m/24),f.hour<0&&(f.hour+=24,l--)),f.month>12?u=C((f.month-1)/12):f.month<1&&(u=C(f.month/12)-1),f.year+=u,f.month-=12*u,p=f.day+t+l,p>0)for(;y=h.daysInMonth(f.month,f.year),!(p<=y);)f.month++,f.month>12&&(f.year++,f.month=1),p-=y;else for(;p<=0;)f.month==1?(f.year--,f.month=12):f.month--,p+=h.daysInMonth(f.month,f.year);return f.day=p,this._cachedUnixTime=null,this}fromUnixTime(t){this.zone=T.utcTimezone;let e=new Date(t*1e3);this.year=e.getUTCFullYear(),this.month=e.getUTCMonth()+1,this.day=e.getUTCDate(),this._time.isDate?(this.hour=0,this.minute=0,this.second=0):(this.hour=e.getUTCHours(),this.minute=e.getUTCMinutes(),this.second=e.getUTCSeconds()),this._cachedUnixTime=null}toUnixTime(){if(this._cachedUnixTime!==null)return this._cachedUnixTime;let t=this.utcOffset(),e=Date.UTC(this.year,this.month-1,this.day,this.hour,this.minute,this.second-t);return this._cachedUnixTime=e/1e3,this._cachedUnixTime}toJSON(){let t=["year","month","day","hour","minute","second","isDate"],e=Object.create(null),s=0,r=t.length,i;for(;s1)throw new it("invalid ical body. component began but did not end");return t=null,e.length==1?e[0]:e}g.property=function(a,t){let e={component:[[],[]],designSet:t||b.defaultSet};return g._handleContentLine(a,e),e.component[1][0]},g.component=function(a){return g(a)};class it extends Error{name=this.constructor.name}g.ParserError=it,g._handleContentLine=function(a,t){let e=a.indexOf(At),s=a.indexOf(xt),r,i,o,n,l={};s!==-1&&e!==-1&&s>e&&(s=-1);let u;if(s!==-1){if(o=a.slice(0,Math.max(0,s)).toLowerCase(),u=g._parseParameters(a.slice(Math.max(0,s)),0,t.designSet),u[2]==-1)throw new it("Invalid parameters in '"+a+"'");l=u[0];let U;if(typeof u[1]=="string"?U=u[1].length:U=u[1].reduce((ht,at)=>ht+at.length,0),r=U+u[2]+s,(i=a.slice(Math.max(0,r)).indexOf(At))!==-1)n=a.slice(Math.max(0,r+i+1));else throw new it("Missing parameter value in '"+a+"'")}else if(e!==-1){if(o=a.slice(0,Math.max(0,e)).toLowerCase(),n=a.slice(Math.max(0,e+1)),o==="begin"){let U=[n.toLowerCase(),[],[]];t.stack.length===1?t.component.push(U):t.component[2].push(U),t.stack.push(t.component),t.component=U,t.designSet||(t.designSet=b.getDesignSet(t.component[0]));return}else if(o==="end"){t.component=t.stack.pop();return}}else throw new it('invalid line (no token ";" or ":") "'+a+'"');let c,d=!1,m=!1,p,y,f;t.designSet.propertyGroups&&o.indexOf(".")!==-1?(y=o.split("."),l.group=y[0],f=y[1]):f=o,f in t.designSet.property&&(p=t.designSet.property[f],"multiValue"in p&&(d=p.multiValue),"structuredValue"in p&&(m=p.structuredValue),n&&"detectType"in p&&(c=p.detectType(n))),c||("value"in l?c=l.value.toLowerCase():p?c=p.defaultType:c=a0),delete l.value;let A;d&&m?(n=g._parseMultiValue(n,m,c,[],d,t.designSet,m),A=[f,l,c,n]):d?(A=[f,l,c],g._parseMultiValue(n,d,c,A,null,t.designSet,!1)):m?(n=g._parseMultiValue(n,m,c,[],null,t.designSet,m),A=[f,l,c,n]):(n=g._parseValue(n,c,t.designSet,!1),A=[f,l,c,n]),t.component[0]==="vcard"&&t.component[1].length===0&&!(o==="version"&&n==="4.0")&&(t.designSet=b.getDesignSet("vcard3")),t.component[1].push(A)},g._parseValue=function(a,t,e,s){return t in e.value&&"fromICAL"in e.value[t]?e.value[t].fromICAL(a,s):a},g._parseParameters=function(a,t,e){let s=t,r=0,i=s0,o={},n,l,u,c=-1,d,m,p;for(;r!==!1&&(r=a.indexOf(i,r+1))!==-1;){if(n=a.slice(s+1,r),n.length==0)throw new it("Empty parameter name in '"+a+"'");if(l=n.toLowerCase(),p=!1,m=!1,l in e.param&&e.param[l].valueType?d=e.param[l].valueType:d=r0,l in e.param&&(m=e.param[l].multiValue,e.param[l].multiValueSeparateDQuote&&(p=g._rfc6868Escape('"'+m+'"'))),a[r+1]==='"'){if(c=r+2,r=a.indexOf('"',c),m&&r!=-1){let A=!0;for(;A;)a[r+1]==m&&a[r+2]=='"'?r=a.indexOf('"',r+3):A=!1}if(r===-1)throw new it('invalid line (no matching double quote) "'+a+'"');u=a.slice(c,r),s=a.indexOf(xt,r);let f=a.indexOf(At,r);(s===-1||f!==-1&&s>f)&&(r=!1)}else{c=r+1;let f=a.indexOf(xt,c),A=a.indexOf(At,c);A!==-1&&f>A?(f=A,r=!1):f===-1?(A===-1?f=a.length:f=A,r=!1):(s=f,r=f),u=a.slice(c,f)}const y=u.length;if(u=g._rfc6868Escape(u),c+=y-u.length,m){let f=p||m;u=g._parseMultiValue(u,f,d,[],null,e)}else u=g._parseValue(u,d,e);m&&l in o?Array.isArray(o[l])?o[l].push(u):o[l]=[o[l],u]:o[l]=u}return[o,u,c]},g._rfc6868Escape=function(a){return a.replace(/\^['n^]/g,function(t){return i0[t]})},g._parseMultiValue=function(a,t,e,s,r,i,o){let n=0,l=0,u;if(t.length===0)return a;for(;(n=me(a,t,l))!==-1;)u=a.slice(l,n),r?u=g._parseMultiValue(u,r,e,[],null,i,o):u=g._parseValue(u,e,i,o),s.push(u),l=n+t.length;return u=a.slice(l),r?u=g._parseMultiValue(u,r,e,[],null,i,o):u=g._parseValue(u,e,i,o),s.push(u),s.length==1?s[0]:s},g._eachLine=function(a,t){let e=a.length,s=a.search(e0),r=s,i,o,n;do r=a.indexOf(` `,s)+1,r>1&&a[r-2]==="\r"?n=2:n=1,r===0&&(r=e,n=0),o=a[s],o===" "||o===" "?i+=a.slice(s+1,r-n):(i&&t(null,i),i=a.slice(s,r-n)),s=r;while(r!==e);i=i.trim(),i.length&&t(null,i)};const n0=["tzid","location","tznames","latitude","longitude"];class T{static _compare_change_fn(t,e){return t.yeare.year?1:t.monthe.month?1:t.daye.day?1:t.houre.hour?1:t.minutee.minute?1:t.seconde.second?1:0}static convert_time(t,e,s){if(t.isDate||e.tzid==s.tzid||e==T.localTimezone||s==T.localTimezone)return t.zone=s,t;let r=e.utcOffset(t);return t.adjust(0,0,0,-r),r=s.utcOffset(t),t.adjust(0,0,0,r),null}static fromData(t){return new T().fromData(t)}static#t=null;static get utcTimezone(){return this.#t||(this.#t=T.fromData({tzid:"UTC"})),this.#t}static#e=null;static get localTimezone(){return this.#e||(this.#e=T.fromData({tzid:"floating"})),this.#e}static adjust_change(t,e,s,r,i){return h.prototype.adjust.call(t,e,s,r,i,t)}static _minimumExpansionYear=-1;static EXTRA_COVERAGE=5;constructor(t){this.wrappedJSObject=this,this.fromData(t)}tzid="";location="";tznames="";latitude=0;longitude=0;component=null;expandedUntilYear=0;icalclass="icaltimezone";fromData(t){if(this.expandedUntilYear=0,this.changes=[],t instanceof z)this.component=t;else{if(t&&"component"in t)if(typeof t.component=="string"){let e=g(t.component);this.component=new z(e)}else t.component instanceof z?this.component=t.component:this.component=null;for(let e of n0)t&&e in t&&(this[e]=t[e])}return this.component instanceof z&&!this.tzid&&(this.tzid=this.component.getFirstPropertyValue("tzid")),this}utcOffset(t){if(this==T.utcTimezone||this==T.localTimezone||(this._ensureCoverage(t.year),!this.changes.length))return 0;let e={year:t.year,month:t.month,day:t.day,hour:t.hour,minute:t.minute,second:t.second},s=this._findNearbyChange(e),r=-1,i=1;for(;;){let n=lt(this.changes[s],!0);if(n.utcOffset=0?r=s:i=-1,i==-1&&r!=-1)break;if(s+=i,s<0)return 0;if(s>=this.changes.length)break}let o=this.changes[r];if(o.utcOffset-o.prevUtcOffset<0&&r>0){let n=lt(o,!0);if(T.adjust_change(n,0,0,0,n.prevUtcOffset),T._compare_change_fn(e,n)<0){let l=this.changes[r-1],u=!1;o.is_daylight!=u&&l.is_daylight==u&&(o=l)}}return o.utcOffset}_findNearbyChange(t){let e=nt(this.changes,t,T._compare_change_fn);return e>=this.changes.length?this.changes.length-1:e}_ensureCoverage(t){if(T._minimumExpansionYear==-1){let s=h.now();T._minimumExpansionYear=s.year}let e=t;if(ee||!d));)i.year=d.year,i.month=d.month,i.day=d.day,i.hour=d.hour,i.minute=d.minute,i.second=d.second,i.isDate=d.isDate,T.adjust_change(i,0,0,0,-i.prevUtcOffset),s.push(i)}}return s}toString(){return this.tznames?this.tznames:this.tzid}}let N=null;const wt={get count(){return N===null?0:Object.keys(N).length},reset:function(){N=Object.create(null);let a=T.utcTimezone;N.Z=a,N.UTC=a,N.GMT=a},_hard_reset:function(){N=null},has:function(a){return N===null?!1:!!N[a]},get:function(a){return N===null&&this.reset(),N[a]},register:function(a,t){if(N===null&&this.reset(),typeof a=="string"&&t instanceof T&&([a,t]=[t,a]),t||(a instanceof T?t=a.tzid:a.name==="vtimezone"&&(a=new T(a),t=a.tzid)),!t)throw new TypeError("Neither a timezone nor a name was passed");if(a instanceof T)N[t]=a;else throw new TypeError("timezone must be ICAL.Timezone or ICAL.Component")},remove:function(a){return N===null?null:delete N[a]}};function o0(a){let t,e,s,r,i;if(!a||a.name!=="vcalendar")return a;for(t=a.getAllSubcomponents(),e=[],s={},i=0;i"u"))return a instanceof t?a:new t(a)}function me(a,t,e){for(;(e=a.indexOf(t,e))!==-1;)if(e>0&&a[e-1]==="\\")e+=1;else return e;return-1}function nt(a,t,e){if(!a.length)return 0;let s=0,r=a.length-1,i,o;for(;s<=r;)if(i=s+Math.floor((r-s)/2),o=e(t,a[i]),o<0)r=i-1;else if(o>0)s=i+1;else break;return o<0?i:o>0?i+1:i}function lt(a,t){if(!a||typeof a!="object")return a;if(a instanceof Date)return new Date(a.getTime());if("clone"in a)return a.clone();if(Array.isArray(a)){let e=[];for(let s=0;s65535?2:1:(t+=L.newLineChar+" "+e.slice(0,Math.max(0,s)),e=e.slice(Math.max(0,s)),s=r=0)}return t.slice(L.newLineChar.length+1)}function k(a){switch(typeof a!="string"&&(typeof a=="number"&&(a=parseInt(a)),a=String(a)),a.length){case 0:return"00";case 1:return"0"+a;default:return a}}function C(a){return a<0?Math.ceil(a):Math.floor(a)}function ut(a,t){for(let e in a){let s=Object.getOwnPropertyDescriptor(a,e);s&&!Object.getOwnPropertyDescriptor(t,e)&&Object.defineProperty(t,e,s)}return t}var l0=Object.freeze({__proto__:null,binsearchInsert:nt,clone:lt,extend:ut,foldline:fe,formatClassType:q,isStrictlyNaN:pt,pad2:k,strictParseInt:O,trunc:C,unescapedIndexOf:me,updateTimezones:o0});class V{static fromString(t){let e={};return e.factor=t[0]==="+"?1:-1,e.hours=O(t.slice(1,3)),e.minutes=O(t.slice(4,6)),new V(e)}static fromSeconds(t){let e=new V;return e.fromSeconds(t),e}constructor(t){this.fromData(t)}hours=0;minutes=0;factor=1;icaltype="utc-offset";clone(){return V.fromSeconds(this.toSeconds())}fromData(t){if(t)for(let[e,s]of Object.entries(t))this[e]=s;this._normalize()}fromSeconds(t){let e=Math.abs(t);return this.factor=t<0?-1:1,this.hours=C(e/3600),e-=this.hours*3600,this.minutes=C(e/60),this}toSeconds(){return this.factor*(60*this.minutes+3600*this.hours)}compare(t){let e=this.toSeconds(),s=t.toSeconds();return(e>s)-(s>e)}_normalize(){let t=this.toSeconds(),e=this.factor;for(;t<-43200;)t+=97200;for(;t>50400;)t-=97200;this.fromSeconds(t),t==0&&(this.factor=e)}toICALString(){return b.icalendar.value["utc-offset"].toICAL(this.toString())}toString(){return(this.factor==1?"+":"-")+k(this.hours)+":"+k(this.minutes)}}class tt extends h{static fromDateAndOrTimeString(t,e){function s(f,A,U){return f?O(f.slice(A,A+U)):null}let r=t.split("T"),i=r[0],o=r[1],n=o?b.vcard.value.time._splitZone(o):[],l=n[0],u=n[1],c=i?i.length:0,d=u?u.length:0,m=i&&i[0]=="-"&&i[1]=="-",p=u&&u[0]=="-",y={year:m?null:s(i,0,4),month:m&&(c==4||c==7)?s(i,2,2):c==7||c==10?s(i,5,2):null,day:c==5?s(i,3,2):c==7&&m?s(i,5,2):c==10?s(i,8,2):null,hour:p?null:s(u,0,2),minute:p&&d==3?s(u,1,2):d>4?p?s(u,1,2):s(u,3,2):null,second:d==4?s(u,2,2):d==6?s(u,4,2):d==8?s(u,6,2):null};return l=="Z"?l=T.utcTimezone:l&&l[3]==":"?l=V.fromString(l):l=null,new tt(y,l,e)}constructor(t,e,s){super(t,e),this.icaltype=s||"date-and-or-time"}icalclass="vcardtime";icaltype="date-and-or-time";clone(){return new tt(this._time,this.zone,this.icaltype)}_normalize(){return this}utcOffset(){return this.zone instanceof V?this.zone.toSeconds():h.prototype.utcOffset.apply(this,arguments)}toICALString(){return b.vcard.value[this.icaltype].toICAL(this.toString())}toString(){let t=this.year,e=this.month,s=this.day,r=this.hour,i=this.minute,o=this.second,n=t!==null,l=e!==null,u=s!==null,c=r!==null,d=i!==null,m=o!==null,p=(n?k(t)+(l||u?"-":""):l||u?"--":"")+(l?k(e):"")+(u?"-"+k(s):""),y=(c?k(r):"-")+(c&&d?":":"")+(d?k(i):"")+(!c&&!d?"-":"")+(d&&m?":":"")+(m?k(o):""),f;switch(this.zone===T.utcTimezone?f="Z":this.zone instanceof V?f=this.zone.toString():this.zone===T.localTimezone?f="":this.zone instanceof T?f=V.fromSeconds(this.zone.utcOffset(this)).toString():f="",this.icaltype){case"time":return y+f;case"date-and-or-time":case"date-time":return p+(y=="--"?"":"T"+y+f);case"date":return p}return null}}class R{static _indexMap={BYSECOND:0,BYMINUTE:1,BYHOUR:2,BYDAY:3,BYMONTHDAY:4,BYYEARDAY:5,BYWEEKNO:6,BYMONTH:7,BYSETPOS:8};static _expandMap={SECONDLY:[1,1,1,1,1,1,1,1],MINUTELY:[2,1,1,1,1,1,1,1],HOURLY:[2,2,1,1,1,1,1,1],DAILY:[2,2,2,1,1,1,1,1],WEEKLY:[2,2,2,2,3,3,1,1],MONTHLY:[2,2,2,2,2,3,3,1],YEARLY:[2,2,2,2,2,2,2,2]};static UNKNOWN=0;static CONTRACT=1;static EXPAND=2;static ILLEGAL=3;constructor(t){this.fromData(t)}completed=!1;rule=null;dtstart=null;last=null;occurrence_number=0;by_indices=null;initialized=!1;by_data=null;days=null;days_index=0;fromData(t){if(this.rule=q(t.rule,w),!this.rule)throw new Error("iterator requires a (ICAL.Recur) rule");if(this.dtstart=q(t.dtstart,h),!this.dtstart)throw new Error("iterator requires a (ICAL.Time) dtstart");if(t.by_data?this.by_data=t.by_data:this.by_data=lt(this.rule.parts,!0),t.occurrence_number&&(this.occurrence_number=t.occurrence_number),this.days=t.days||[],t.last&&(this.last=q(t.last,h)),this.by_indices=t.by_indices,this.by_indices||(this.by_indices={BYSECOND:0,BYMINUTE:0,BYHOUR:0,BYDAY:0,BYMONTH:0,BYWEEKNO:0,BYMONTHDAY:0}),this.initialized=t.initialized||!1,!this.initialized)try{this.init()}catch(e){if(e instanceof gt)this.completed=!0;else throw e}}init(){this.initialized=!0,this.last=this.dtstart.clone();let t=this.by_data;if("BYDAY"in t&&this.sort_byday_rules(t.BYDAY),"BYYEARDAY"in t&&("BYMONTH"in t||"BYWEEKNO"in t||"BYMONTHDAY"in t))throw new Error("Invalid BYYEARDAY rule");if("BYWEEKNO"in t&&"BYMONTHDAY"in t)throw new Error("BYWEEKNO does not fit to BYMONTHDAY");if(this.rule.freq=="MONTHLY"&&("BYYEARDAY"in t||"BYWEEKNO"in t))throw new Error("For MONTHLY recurrences neither BYYEARDAY nor BYWEEKNO may appear");if(this.rule.freq=="WEEKLY"&&("BYYEARDAY"in t||"BYMONTHDAY"in t))throw new Error("For WEEKLY recurrences neither BYMONTHDAY nor BYYEARDAY may appear");if(this.rule.freq!="YEARLY"&&"BYYEARDAY"in t)throw new Error("BYYEARDAY may only appear in YEARLY rules");if(this.last.second=this.setup_defaults("BYSECOND","SECONDLY",this.dtstart.second),this.last.minute=this.setup_defaults("BYMINUTE","MINUTELY",this.dtstart.minute),this.last.hour=this.setup_defaults("BYHOUR","HOURLY",this.dtstart.hour),this.last.day=this.setup_defaults("BYMONTHDAY","DAILY",this.dtstart.day),this.last.month=this.setup_defaults("BYMONTH","MONTHLY",this.dtstart.month),this.rule.freq=="WEEKLY")if("BYDAY"in t){let[,e]=this.ruleDayOfWeek(t.BYDAY[0],this.rule.wkst),s=e-this.last.dayOfWeek(this.rule.wkst);(this.last.dayOfWeek(this.rule.wkst)=0||s<0)&&(this.last.day+=s)}else{let e=w.numericDayToIcalDay(this.dtstart.dayOfWeek());t.BYDAY=[e]}if(this.rule.freq=="YEARLY"){const e=this.rule.until?this.rule.until.year:2e4;for(;this.last.year<=e&&(this.expand_year_days(this.last.year),!(this.days.length>0));)this.increment_year(this.rule.interval);if(this.days.length==0)throw new gt;if(!this._nextByYearDay()&&!this.next_year()&&!this.next_year()&&!this.next_year())throw new gt}if(this.rule.freq=="MONTHLY"){if(this.has_by_data("BYDAY")){let e=null,s=this.last.clone(),r=h.daysInMonth(this.last.month,this.last.year);for(let i of this.by_data.BYDAY){this.last=s.clone();let[o,n]=this.ruleDayOfWeek(i),l=this.last.nthWeekDay(n,o);if(o>=6||o<=-6)throw new Error("Malformed values in BYDAY part");if(l>r||l<=0){if(e&&e.month==s.month)continue;for(;l>r||l<=0;)this.increment_month(),r=h.daysInMonth(this.last.month,this.last.year),l=this.last.nthWeekDay(n,o)}this.last.day=l,(!e||this.last.compare(e)<0)&&(e=this.last.clone())}if(this.last=e.clone(),this.has_by_data("BYMONTHDAY")&&this._byDayAndMonthDay(!0),this.last.day>r||this.last.day==0)throw new Error("Malformed values in BYDAY part")}else if(this.has_by_data("BYMONTHDAY")){this.last.day=1;let e=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY).filter(s=>s>=this.last.day);if(e.length)this.last.day=e[0],this.by_data.BYMONTHDAY=e;else if(!this.next_month()&&!this.next_month()&&!this.next_month())throw new gt}}}next(t=!1){let e=this.last?this.last.clone():null;if((this.rule.count&&this.occurrence_number>=this.rule.count||this.rule.until&&this.last.compare(this.rule.until)>0)&&(this.completed=!0),this.completed)return null;if(this.occurrence_number==0&&this.last.compare(this.dtstart)>=0)return this.occurrence_number++,this.last;let s,r=0;do switch(s=1,this.rule.freq){case"SECONDLY":this.next_second();break;case"MINUTELY":this.next_minute();break;case"HOURLY":this.next_hour();break;case"DAILY":this.next_day();break;case"WEEKLY":this.next_week();break;case"MONTHLY":if(s=this.next_month(),s)r=0;else if(++r==336)return this.completed=!0,null;break;case"YEARLY":if(s=this.next_year(),s)r=0;else if(++r==28)return this.completed=!0,null;break;default:return null}while(!this.check_contracting_rules()||this.last.compare(this.dtstart)<0||!s);if(this.last.compare(e)==0){if(t)throw new Error("Same occurrence found twice, protecting you from death by recursion");this.next(!0)}return this.rule.until&&this.last.compare(this.rule.until)>0?(this.completed=!0,null):(this.occurrence_number++,this.last)}next_second(){return this.next_generic("BYSECOND","SECONDLY","second","minute")}increment_second(t){return this.increment_generic(t,"second",60,"minute")}next_minute(){return this.next_generic("BYMINUTE","MINUTELY","minute","hour","next_second")}increment_minute(t){return this.increment_generic(t,"minute",60,"hour")}next_hour(){return this.next_generic("BYHOUR","HOURLY","hour","monthday","next_minute")}increment_hour(t){this.increment_generic(t,"hour",24,"monthday")}next_day(){let t=this.rule.freq=="DAILY";return this.next_hour()==0||(t?this.increment_monthday(this.rule.interval):this.increment_monthday(1)),0}next_week(){let t=0;if(this.next_weekday_by_week()==0)return t;if(this.has_by_data("BYWEEKNO")){this.by_indices.BYWEEKNO++,this.by_indices.BYWEEKNO==this.by_data.BYWEEKNO.length&&(this.by_indices.BYWEEKNO=0,t=1),this.last.month=1,this.last.day=1;let e=this.by_data.BYWEEKNO[this.by_indices.BYWEEKNO];this.last.day+=7*e,t&&this.increment_year(1)}else this.increment_monthday(7*this.rule.interval);return t}normalizeByMonthDayRules(t,e,s){let r=h.daysInMonth(e,t),i=[],o=0,n=s.length,l;for(;or)){if(l<0)l=r+(l+1);else if(l===0)continue;i.indexOf(l)===-1&&i.push(l)}}return i.sort(function(u,c){return u-c})}_byDayAndMonthDay(t){let e,s=this.by_data.BYDAY,r,i=0,o,n=s.length,l=0,u,c=this,d=this.last.day;function m(){for(u=h.daysInMonth(c.last.month,c.last.year),e=c.normalizeByMonthDayRules(c.last.year,c.last.month,c.by_data.BYMONTHDAY),o=e.length;e[i]<=d&&!(t&&e[i]==d)&&iu){p();continue}let f=e[i++];if(f>=r)d=f;else{p();continue}for(let A=0;Ae&&(this.last.day=1,this.increment_month(),this.is_day_in_byday(this.last)?(!this.has_by_data("BYSETPOS")||this.check_set_position(1))&&(t=1):t=0)}else if(this.has_by_data("BYMONTHDAY")){if(this.by_indices.BYMONTHDAY++,this.by_indices.BYMONTHDAY>=this.by_data.BYMONTHDAY.length&&(this.by_indices.BYMONTHDAY=0,this.increment_month(),this.by_indices.BYMONTHDAY>=this.by_data.BYMONTHDAY.length))return 0;let e=h.daysInMonth(this.last.month,this.last.year),s=this.by_data.BYMONTHDAY[this.by_indices.BYMONTHDAY];s<0&&(s=e+s+1),s>e?(this.last.day=1,t=this.is_day_in_byday(this.last)):this.last.day=s}else{this.increment_month();let e=h.daysInMonth(this.last.month,this.last.year);this.by_data.BYMONTHDAY[0]>e?t=0:this.last.day=this.by_data.BYMONTHDAY[0]}return t}next_weekday_by_week(){let t=0;if(this.next_hour()==0)return t;if(!this.has_by_data("BYDAY"))return 1;for(;;){let e=new h;this.by_indices.BYDAY++,this.by_indices.BYDAY==Object.keys(this.by_data.BYDAY).length&&(this.by_indices.BYDAY=0,t=1);let s=this.by_data.BYDAY[this.by_indices.BYDAY],r=this.ruleDayOfWeek(s)[1];r-=this.rule.wkst,r<0&&(r+=7),e.year=this.last.year,e.month=this.last.month,e.day=this.last.day;let i=e.startDoyWeek(this.rule.wkst);if(r+i<1&&!t)continue;let o=h.fromDayOfYear(i+r,this.last.year);return this.last.year=o.year,this.last.month=o.month,this.last.day=o.day,t}}next_year(){return this.next_hour()==0||(this.days.length==0||++this.days_index==this.days.length)&&(this.days_index=0,this.increment_year(this.rule.interval),this.has_by_data("BYMONTHDAY")&&(this.by_data.BYMONTHDAY=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY)),this.expand_year_days(this.last.year),this.days.length==0)?0:this._nextByYearDay()}_nextByYearDay(){let t=this.days[this.days_index],e=this.last.year;if(Math.abs(t)==366&&!h.isLeapYear(this.last.year))return 0;t<1&&(t+=1,e+=1);let s=h.fromDayOfYear(t,e);return this.last.day=s.day,this.last.month=s.month,1}ruleDayOfWeek(t,e){let s=t.match(/([+-]?[0-9])?(MO|TU|WE|TH|FR|SA|SU)/);if(s){let r=parseInt(s[1]||0,10);return t=w.icalDayToNumericDay(s[2],e),[r,t]}else return[0,0]}next_generic(t,e,s,r,i){let o=t in this.by_data,n=this.rule.freq==e,l=0;if(i&&this[i]()==0)return l;if(o){this.by_indices[t]++;let u=this.by_data[t];this.by_indices[t]==u.length&&(this.by_indices[t]=0,l=1),this.last[s]=u[this.by_indices[t]]}else n&&this["increment_"+s](this.rule.interval);return o&&l&&n&&this["increment_"+r](1),l}increment_monthday(t){for(let e=0;es&&(this.last.day-=s,this.increment_month())}}increment_month(){if(this.last.day=1,this.has_by_data("BYMONTH"))this.by_indices.BYMONTH++,this.by_indices.BYMONTH==this.by_data.BYMONTH.length&&(this.by_indices.BYMONTH=0,this.increment_year(1)),this.last.month=this.by_data.BYMONTH[this.by_indices.BYMONTH];else{this.rule.freq=="MONTHLY"?this.last.month+=this.rule.interval:this.last.month++,this.last.month--;let t=C(this.last.month/12);this.last.month%=12,this.last.month++,t!=0&&this.increment_year(t)}this.has_by_data("BYMONTHDAY")&&(this.by_data.BYMONTHDAY=this.normalizeByMonthDayRules(this.last.year,this.last.month,this.rule.parts.BYMONTHDAY))}increment_year(t){this.last.day=1,this.last.year+=t}increment_generic(t,e,s,r){this.last[e]+=t;let i=C(this.last[e]/s);this.last[e]%=s,i!=0&&this["increment_"+r](i)}has_by_data(t){return t in this.rule.parts}expand_year_days(t){let e=new h;this.days=[];let s={},r=["BYDAY","BYWEEKNO","BYMONTHDAY","BYMONTH","BYYEARDAY"];for(let n of r)n in this.rule.parts&&(s[n]=this.rule.parts[n]);if("BYMONTH"in s&&"BYWEEKNO"in s){let n=1,l={};e.year=t,e.isDate=!0;for(let u=0;u0?(A=U+(y-1)*7,A<=l&&this.days.push(c+A)):(A=ht+(y+1)*7,A>0&&this.days.push(c+A))}}this.days.sort(function(n,l){return n-l})}else if(i==2&&"BYDAY"in s&&"BYMONTHDAY"in s){let n=this.expand_by_day(t);for(let l of n){let u=h.fromDayOfYear(l,t);this.by_data.BYMONTHDAY.indexOf(u.day)>=0&&this.days.push(l)}}else if(i==3&&"BYDAY"in s&&"BYMONTHDAY"in s&&"BYMONTH"in s){let n=this.expand_by_day(t);for(let l of n){let u=h.fromDayOfYear(l,t);this.by_data.BYMONTH.indexOf(u.month)>=0&&this.by_data.BYMONTHDAY.indexOf(u.day)>=0&&this.days.push(l)}}else if(i==2&&"BYDAY"in s&&"BYWEEKNO"in s){let n=this.expand_by_day(t);for(let l of n){let u=h.fromDayOfYear(l,t).weekNumber(this.rule.wkst);this.by_data.BYWEEKNO.indexOf(u)&&this.days.push(l)}}else if(!(i==3&&"BYDAY"in s&&"BYWEEKNO"in s&&"BYMONTHDAY"in s))if(i==1&&"BYYEARDAY"in s)this.days=this.days.concat(this.by_data.BYYEARDAY);else if(i==2&&"BYYEARDAY"in s&&"BYDAY"in s){let n=h.isLeapYear(t)?366:365,l=new Set(this.expand_by_day(t));for(let u of this.by_data.BYYEARDAY)u<0&&(u+=n+1),l.has(u)&&this.days.push(u)}else this.days=[]}let o=h.isLeapYear(t)?366:365;return this.days.sort((n,l)=>(n<0&&(n+=o+1),l<0&&(l+=o+1),n-l)),0}expand_by_day(t){let e=[],s=this.last.clone();s.year=t,s.month=1,s.day=1,s.isDate=!0;let r=s.dayOfWeek();s.month=12,s.day=31,s.isDate=!0;let i=s.dayOfWeek(),o=s.dayOfYear();for(let n of this.by_data.BYDAY){let l=this.ruleDayOfWeek(n),u=l[0],c=l[1];if(u==0){let d=(c+7-r)%7+1;for(let m=d;m<=o;m+=7)e.push(m)}else if(u>0){let d;c>=r?d=c-r+1:d=c-r+8,e.push(d+(u-1)*7)}else{let d;u=-u,c<=i?d=o-i+c:d=o-i+c-7,e.push(d-(u-1)*7)}}return e}is_day_in_byday(t){if(this.by_data.BYDAY)for(let e of this.by_data.BYDAY){let s=this.ruleDayOfWeek(e),r=s[0],i=s[1],o=t.dayOfWeek();if(r==0&&i==o||t.nthWeekDay(i,r)==t.day)return 1}return 0}check_set_position(t){return this.has_by_data("BYSETPOS")?this.by_data.BYSETPOS.indexOf(t)!==-1:!1}sort_byday_rules(t){for(let e=0;ei){let o=t[e];t[e]=t[s],t[s]=o}}}check_contract_restriction(t,e){let s=R._indexMap[t],r=R._expandMap[this.rule.freq][s],i=!1;if(t in this.by_data&&r==R.CONTRACT){let o=this.by_data[t];for(let n of o)if(n==e){i=!0;break}}else i=!0;return i}check_contracting_rules(){let t=this.last.dayOfWeek(),e=this.last.weekNumber(this.rule.wkst),s=this.last.dayOfYear();return this.check_contract_restriction("BYSECOND",this.last.second)&&this.check_contract_restriction("BYMINUTE",this.last.minute)&&this.check_contract_restriction("BYHOUR",this.last.hour)&&this.check_contract_restriction("BYDAY",w.numericDayToIcalDay(t))&&this.check_contract_restriction("BYWEEKNO",e)&&this.check_contract_restriction("BYMONTHDAY",this.last.day)&&this.check_contract_restriction("BYMONTH",this.last.month)&&this.check_contract_restriction("BYYEARDAY",s)}setup_defaults(t,e,s){let r=R._indexMap[t];return R._expandMap[this.rule.freq][r]!=R.CONTRACT&&(t in this.by_data||(this.by_data[t]=[s]),this.rule.freq!=e)?this.by_data[t][0]:s}toJSON(){let t=Object.create(null);return t.initialized=this.initialized,t.rule=this.rule.toJSON(),t.dtstart=this.dtstart.toJSON(),t.by_data=this.by_data,t.days=this.days,t.last=this.last.toJSON(),t.by_indices=this.by_indices,t.occurrence_number=this.occurrence_number,t}}class gt extends Error{constructor(){super("Recurrence rule has no valid occurrences")}}const u0=/^(SU|MO|TU|WE|TH|FR|SA)$/,d0=/^([+-])?(5[0-3]|[1-4][0-9]|[1-9])?(SU|MO|TU|WE|TH|FR|SA)$/,pe={SU:h.SUNDAY,MO:h.MONDAY,TU:h.TUESDAY,WE:h.WEDNESDAY,TH:h.THURSDAY,FR:h.FRIDAY,SA:h.SATURDAY},c0=Object.fromEntries(Object.entries(pe).map(a=>a.reverse())),$t=["SECONDLY","MINUTELY","HOURLY","DAILY","WEEKLY","MONTHLY","YEARLY"];class w{static fromString(t){let e=this._stringToData(t,!1);return new w(e)}static fromData(t){return new w(t)}static _stringToData(t,e){let s=Object.create(null),r=t.split(";"),i=r.length;for(let o=0;o7&&(r-=7),c0[r]}constructor(t){this.wrappedJSObject=this,this.parts={},t&&typeof t=="object"&&this.fromData(t)}parts=null;interval=1;wkst=h.MONDAY;until=null;count=null;freq=null;icalclass="icalrecur";icaltype="recur";iterator(t){return new R({rule:this,dtstart:t})}clone(){return new w(this.toJSON())}isFinite(){return!!(this.count||this.until)}isByCount(){return!!(this.count&&!this.until)}addComponent(t,e){let s=t.toUpperCase();s in this.parts?this.parts[s].push(e):this.parts[s]=[e]}setComponent(t,e){this.parts[t.toUpperCase()]=e.slice()}getComponent(t){let e=t.toUpperCase();return e in this.parts?this.parts[e].slice():[]}getNextOccurrence(t,e){let s=this.iterator(t),r;do r=s.next();while(r&&r.compare(e)<=0);return r&&e.zone&&(r.zone=e.zone),r}fromData(t){for(let e in t){let s=e.toUpperCase();s in kt?Array.isArray(t[e])?this.parts[s]=t[e]:this.parts[s]=[t[e]]:this[e]=t[e]}this.interval&&typeof this.interval!="number"&&It.INTERVAL(this.interval,this),this.wkst&&typeof this.wkst!="number"&&(this.wkst=w.icalDayToNumericDay(this.wkst)),this.until&&!(this.until instanceof h)&&(this.until=h.fromString(this.until))}toJSON(){let t=Object.create(null);t.freq=this.freq,this.count&&(t.count=this.count),this.interval>1&&(t.interval=this.interval);for(let[e,s]of Object.entries(this.parts))Array.isArray(s)&&s.length==1?t[e.toLowerCase()]=s[0]:t[e.toLowerCase()]=lt(s);return this.until&&(t.until=this.until.toString()),"wkst"in this&&this.wkst!==h.DEFAULT_WEEK_START&&(t.wkst=w.numericDayToIcalDay(this.wkst)),t}toString(){let t="FREQ="+this.freq;this.count&&(t+=";COUNT="+this.count),this.interval>1&&(t+=";INTERVAL="+this.interval);for(let[e,s]of Object.entries(this.parts))t+=";"+e+"="+s;return this.until&&(t+=";UNTIL="+this.until.toICALString()),"wkst"in this&&this.wkst!==h.DEFAULT_WEEK_START&&(t+=";WKST="+w.numericDayToIcalDay(this.wkst)),t}}function Z(a,t,e,s){let r=s;if(s[0]==="+"&&(r=s.slice(1)),r=O(r),t!==void 0&&s '+t);if(e!==void 0&&s>e)throw new Error(a+': invalid value "'+s+'" must be < '+t);return r}const It={FREQ:function(a,t,e){if($t.indexOf(a)!==-1)t.freq=a;else throw new Error('invalid frequency "'+a+'" expected: "'+$t.join(", ")+'"')},COUNT:function(a,t,e){t.count=O(a)},INTERVAL:function(a,t,e){t.interval=O(a),t.interval<1&&(t.interval=1)},UNTIL:function(a,t,e){a.length>10?t.until=b.icalendar.value["date-time"].fromICAL(a):t.until=b.icalendar.value.date.fromICAL(a),e||(t.until=h.fromString(t.until))},WKST:function(a,t,e){if(u0.test(a))t.wkst=w.icalDayToNumericDay(a);else throw new Error('invalid WKST value "'+a+'"')}},kt={BYSECOND:Z.bind(void 0,"BYSECOND",0,60),BYMINUTE:Z.bind(void 0,"BYMINUTE",0,59),BYHOUR:Z.bind(void 0,"BYHOUR",0,23),BYDAY:function(a){if(d0.test(a))return a;throw new Error('invalid BYDAY value "'+a+'"')},BYMONTHDAY:Z.bind(void 0,"BYMONTHDAY",-31,31),BYYEARDAY:Z.bind(void 0,"BYYEARDAY",-366,366),BYWEEKNO:Z.bind(void 0,"BYWEEKNO",-53,53),BYMONTH:Z.bind(void 0,"BYMONTH",1,12),BYSETPOS:Z.bind(void 0,"BYSETPOS",-366,366)},h0=/\\\\|\\;|\\,|\\[Nn]/g,m0=/\\|;|,|\n/g,Xt=/\\\\|\\,|\\[Nn]/g,Qt=/\\|,|\n/g;function Vt(a,t){return{matches:/.*/,fromICAL:function(e,s){return p0(e,a,s)},toICAL:function(e,s){let r=t;return s&&(r=new RegExp(r.source+"|"+s,r.flags)),e.replace(r,function(i){switch(i){case"\\":return"\\\\";case";":return"\\;";case",":return"\\,";case` diff --git a/dist/encryption-encryption.mjs b/dist/encryption-encryption.mjs index 97c0ab7987d53..38655a832a4d8 100644 --- a/dist/encryption-encryption.mjs +++ b/dist/encryption-encryption.mjs @@ -1,2 +1,2 @@ -import{a as o}from"./index-DqIuD5e7.chunk.mjs";import{c as i}from"./index-CPwHjAPR.chunk.mjs";import{s as r}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{g as a}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-BgmsSgl5.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";window.addEventListener("DOMContentLoaded",async function(){if(o()===null)return;const{data:t}=await i.get(a("/apps/encryption/ajax/getStatus"));t.status==="interactionNeeded"&&r(t.data.message)}); +import{a as o}from"./index-DqIuD5e7.chunk.mjs";import{c as i}from"./index-CPwHjAPR.chunk.mjs";import{s as r}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{g as a}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-BgmsSgl5.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";window.addEventListener("DOMContentLoaded",async function(){if(o()===null)return;const{data:t}=await i.get(a("/apps/encryption/ajax/getStatus"));t.status==="interactionNeeded"&&r(t.data.message)}); //# sourceMappingURL=encryption-encryption.mjs.map diff --git a/dist/encryption-settings_admin.css b/dist/encryption-settings_admin.css index fff07af40ed1e..93711b0d2b7b0 100644 --- a/dist/encryption-settings_admin.css +++ b/dist/encryption-settings_admin.css @@ -18,7 +18,7 @@ @import './NcBreadcrumbs-5gl8Syfa-CtBAA7-7.chunk.css'; @import './NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'; @import './NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'; -@import './index-DxCeSeyt.chunk.css'; +@import './index-CEtX00Aw.chunk.css'; @import './NcChip-CrVOU2RM-Som-mR4B.chunk.css'; @import './TrayArrowDown-D79n0IQ6.chunk.css'; @import './NcGuestContent-j8ai4O1K-D0718NyY.chunk.css'; diff --git a/dist/encryption-settings_admin.mjs b/dist/encryption-settings_admin.mjs index 3e51ac9653763..f62d4bd7e3eba 100644 --- a/dist/encryption-settings_admin.mjs +++ b/dist/encryption-settings_admin.mjs @@ -1,2 +1,2 @@ -import{b as k,s as x,v as T,r as i,c as f,o as m,u as e,w as c,g,t as w,x as A,j as P,e as p,l as h,p as K,E as U,n as j,F as H,k as D,h as F}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as I,l as M}from"./index-BgmsSgl5.chunk.mjs";import{t as o}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import{g as S}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-BpgPbDC6.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{w as z}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as q}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import{N as B}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as E}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as V}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{c as R}from"./index-CPwHjAPR.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import{N as $}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{d as O}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{N,l as C,I as G}from"./types-Dhw8OyWT.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const J=k({__name:"SettingsAdminHomeStorage",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(b){const a=x(b,"modelValue"),s=i(!1);return T(a,()=>{s.value=!0}),z(a,async(t,n)=>{if(t===n){s.value=!1;return}try{await R.post(S("/apps/encryption/ajax/setEncryptHomeStorage"),{encryptHomeStorage:t})}finally{s.value=!1}},{debounce:800}),(t,n)=>(m(),f(e(B),{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=r=>a.value=r),loading:s.value,description:e(o)("encryption","Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted"),type:"switch"},{default:c(()=>[g(w(e(o)("encryption","Encrypt the home storage")),1)]),_:1},8,["modelValue","loading","description"]))}}),L=k({__name:"SettingsAdminRecoveryKey",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(b){const a=x(b,"modelValue"),s=A("form"),t=i(!1),n=i(!1),r=i(""),l=i(""),v=K(()=>r.value===l.value);async function _(){if(!t.value&&v.value){n.value=!1,t.value=!0;try{const{data:d}=await R.post(S("/apps/encryption/ajax/adminRecovery"),{adminEnableRecovery:!a.value,recoveryPassword:r.value,confirmPassword:l.value});a.value=!a.value,r.value=l.value="",s.value?.reset(),d.data.message&&O(d.data.message)}catch(d){n.value=!0,C.error("Failed to update recovery key settings",{error:d})}finally{t.value=!1}}}return(d,u)=>(m(),P("form",{ref:"form",onSubmit:U(_,["prevent"])},[p(e(N),{label:a.value?e(o)("encryption","Disable recovery key"):e(o)("encryption","Enable recovery key"),description:e(o)("encryption","The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten.")},{default:c(()=>[p(e(V),{modelValue:r.value,"onUpdate:modelValue":u[0]||(u[0]=y=>r.value=y),required:"",name:"password",label:e(o)("encryption","Recovery key password")},null,8,["modelValue","label"]),p(e(V),{modelValue:l.value,"onUpdate:modelValue":u[1]||(u[1]=y=>l.value=y),required:"",name:"confirmPassword",error:!!l.value&&!v.value,helperText:v.value||!l.value?"":e(o)("encryption","Passwords fields do not match"),label:e(o)("encryption","Repeat recovery key password")},null,8,["modelValue","error","helperText","label"]),p(e(q),{type:"submit",variant:a.value?"error":"primary"},{default:c(()=>[g(w(a.value?e(o)("encryption","Disable recovery key"):e(o)("encryption","Enable recovery key")),1)]),_:1},8,["variant"]),n.value?(m(),f(e(E),{key:0,type:"error"},{default:c(()=>[g(w(e(o)("encryption","An error occurred while updating the recovery key settings. Please try again.")),1)]),_:1})):h("",!0)]),_:1},8,["label","description"])],544))}}),Q=k({__name:"SettingsAdminRecoveryKeyChange",setup(b){const a=A("form"),s=i(!1),t=i(!1),n=i(""),r=i(""),l=i(""),v=K(()=>r.value===l.value);async function _(){if(!s.value&&v.value){t.value=!1,s.value=!0;try{await R.post(S("/apps/encryption/ajax/changeRecoveryPassword"),{oldPassword:n.value,newPassword:r.value,confirmPassword:l.value}),n.value=r.value=l.value="",a.value?.reset()}catch(d){t.value=!0,C.error("Failed to update recovery key settings",{error:d})}finally{s.value=!1}}}return(d,u)=>(m(),P("form",{ref:"form",class:j(d.$style.settingsAdminRecoveryKeyChange),onSubmit:U(_,["prevent"])},[p(e(N),{label:e(o)("encryption","Change recovery key password")},{default:c(()=>[p(e(V),{modelValue:n.value,"onUpdate:modelValue":u[0]||(u[0]=y=>n.value=y),required:"",name:"oldPassword",label:e(o)("encryption","Old recovery key password")},null,8,["modelValue","label"]),p(e(V),{modelValue:r.value,"onUpdate:modelValue":u[1]||(u[1]=y=>r.value=y),required:"",name:"password",label:e(o)("encryption","New recovery key password")},null,8,["modelValue","label"]),p(e(V),{modelValue:l.value,"onUpdate:modelValue":u[2]||(u[2]=y=>l.value=y),required:"",name:"confirmPassword",error:!v.value&&!!l.value,helperText:v.value||!l.value?"":e(o)("encryption","Passwords fields do not match"),label:e(o)("encryption","Repeat new recovery key password")},null,8,["modelValue","error","helperText","label"]),p(e(q),{type:"submit",variant:"primary"},{default:c(()=>[g(w(e(o)("encryption","Change recovery key password")),1)]),_:1}),t.value?(m(),f(e(E),{key:0,type:"error"},{default:c(()=>[g(w(e(o)("encryption","An error occurred while changing the recovery key password. Please try again.")),1)]),_:1})):h("",!0)]),_:1},8,["label"])],34))}}),W="_settingsAdminRecoveryKeyChange_12rwr_2",X={settingsAdminRecoveryKeyChange:W},Y={$style:X},Z=I(Q,[["__cssModules",Y]]),ee=k({__name:"SettingsAdmin",setup(b){const a=M("encryption","adminSettings"),s=i(a.encryptHomeStorage),t=i(a.recoveryEnabled);return(n,r)=>(m(),f(e($),{name:e(o)("encryption","Default encryption module")},{default:c(()=>[e(a).initStatus===e(G).NotInitialized&&!e(a).masterKeyEnabled?(m(),f(e(E),{key:0,type:"warning"},{default:c(()=>[g(w(e(o)("encryption","Encryption app is enabled but your keys are not initialized, please log-out and log-in again")),1)]),_:1})):(m(),P(H,{key:1},[p(J,{modelValue:s.value,"onUpdate:modelValue":r[0]||(r[0]=l=>s.value=l)},null,8,["modelValue"]),r[2]||(r[2]=D("br",null,null,-1)),e(a).masterKeyEnabled?h("",!0):(m(),f(L,{key:0,modelValue:t.value,"onUpdate:modelValue":r[1]||(r[1]=l=>t.value=l)},null,8,["modelValue"])),!e(a).masterKeyEnabled&&t.value?(m(),f(Z,{key:1})):h("",!0)],64))]),_:1},8,["name"]))}}),ae=F(ee);ae.mount("#encryption-settings-section"); +import{b as k,s as x,v as T,r as i,c as f,o as m,u as e,w as c,g,t as w,x as A,j as P,e as p,l as h,p as K,E as U,n as j,F as H,k as D,h as F}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as I,l as M}from"./index-BgmsSgl5.chunk.mjs";import{t as o}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import{g as S}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-Bk4hMpWo.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{w as z}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as q}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import{N as B}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as E}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as V}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{c as R}from"./index-CPwHjAPR.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import{N as $}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{d as O}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{N,l as C,I as G}from"./types-ND6tniN8.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const J=k({__name:"SettingsAdminHomeStorage",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(b){const a=x(b,"modelValue"),s=i(!1);return T(a,()=>{s.value=!0}),z(a,async(t,n)=>{if(t===n){s.value=!1;return}try{await R.post(S("/apps/encryption/ajax/setEncryptHomeStorage"),{encryptHomeStorage:t})}finally{s.value=!1}},{debounce:800}),(t,n)=>(m(),f(e(B),{modelValue:a.value,"onUpdate:modelValue":n[0]||(n[0]=r=>a.value=r),loading:s.value,description:e(o)("encryption","Enabling this option encrypts all files stored on the main storage, otherwise only files on external storage will be encrypted"),type:"switch"},{default:c(()=>[g(w(e(o)("encryption","Encrypt the home storage")),1)]),_:1},8,["modelValue","loading","description"]))}}),L=k({__name:"SettingsAdminRecoveryKey",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(b){const a=x(b,"modelValue"),s=A("form"),t=i(!1),n=i(!1),r=i(""),l=i(""),v=K(()=>r.value===l.value);async function _(){if(!t.value&&v.value){n.value=!1,t.value=!0;try{const{data:d}=await R.post(S("/apps/encryption/ajax/adminRecovery"),{adminEnableRecovery:!a.value,recoveryPassword:r.value,confirmPassword:l.value});a.value=!a.value,r.value=l.value="",s.value?.reset(),d.data.message&&O(d.data.message)}catch(d){n.value=!0,C.error("Failed to update recovery key settings",{error:d})}finally{t.value=!1}}}return(d,u)=>(m(),P("form",{ref:"form",onSubmit:U(_,["prevent"])},[p(e(N),{label:a.value?e(o)("encryption","Disable recovery key"):e(o)("encryption","Enable recovery key"),description:e(o)("encryption","The recovery key is an additional encryption key used to encrypt files. It is used to recover files from an account if the password is forgotten.")},{default:c(()=>[p(e(V),{modelValue:r.value,"onUpdate:modelValue":u[0]||(u[0]=y=>r.value=y),required:"",name:"password",label:e(o)("encryption","Recovery key password")},null,8,["modelValue","label"]),p(e(V),{modelValue:l.value,"onUpdate:modelValue":u[1]||(u[1]=y=>l.value=y),required:"",name:"confirmPassword",error:!!l.value&&!v.value,helperText:v.value||!l.value?"":e(o)("encryption","Passwords fields do not match"),label:e(o)("encryption","Repeat recovery key password")},null,8,["modelValue","error","helperText","label"]),p(e(q),{type:"submit",variant:a.value?"error":"primary"},{default:c(()=>[g(w(a.value?e(o)("encryption","Disable recovery key"):e(o)("encryption","Enable recovery key")),1)]),_:1},8,["variant"]),n.value?(m(),f(e(E),{key:0,type:"error"},{default:c(()=>[g(w(e(o)("encryption","An error occurred while updating the recovery key settings. Please try again.")),1)]),_:1})):h("",!0)]),_:1},8,["label","description"])],544))}}),Q=k({__name:"SettingsAdminRecoveryKeyChange",setup(b){const a=A("form"),s=i(!1),t=i(!1),n=i(""),r=i(""),l=i(""),v=K(()=>r.value===l.value);async function _(){if(!s.value&&v.value){t.value=!1,s.value=!0;try{await R.post(S("/apps/encryption/ajax/changeRecoveryPassword"),{oldPassword:n.value,newPassword:r.value,confirmPassword:l.value}),n.value=r.value=l.value="",a.value?.reset()}catch(d){t.value=!0,C.error("Failed to update recovery key settings",{error:d})}finally{s.value=!1}}}return(d,u)=>(m(),P("form",{ref:"form",class:j(d.$style.settingsAdminRecoveryKeyChange),onSubmit:U(_,["prevent"])},[p(e(N),{label:e(o)("encryption","Change recovery key password")},{default:c(()=>[p(e(V),{modelValue:n.value,"onUpdate:modelValue":u[0]||(u[0]=y=>n.value=y),required:"",name:"oldPassword",label:e(o)("encryption","Old recovery key password")},null,8,["modelValue","label"]),p(e(V),{modelValue:r.value,"onUpdate:modelValue":u[1]||(u[1]=y=>r.value=y),required:"",name:"password",label:e(o)("encryption","New recovery key password")},null,8,["modelValue","label"]),p(e(V),{modelValue:l.value,"onUpdate:modelValue":u[2]||(u[2]=y=>l.value=y),required:"",name:"confirmPassword",error:!v.value&&!!l.value,helperText:v.value||!l.value?"":e(o)("encryption","Passwords fields do not match"),label:e(o)("encryption","Repeat new recovery key password")},null,8,["modelValue","error","helperText","label"]),p(e(q),{type:"submit",variant:"primary"},{default:c(()=>[g(w(e(o)("encryption","Change recovery key password")),1)]),_:1}),t.value?(m(),f(e(E),{key:0,type:"error"},{default:c(()=>[g(w(e(o)("encryption","An error occurred while changing the recovery key password. Please try again.")),1)]),_:1})):h("",!0)]),_:1},8,["label"])],34))}}),W="_settingsAdminRecoveryKeyChange_12rwr_2",X={settingsAdminRecoveryKeyChange:W},Y={$style:X},Z=I(Q,[["__cssModules",Y]]),ee=k({__name:"SettingsAdmin",setup(b){const a=M("encryption","adminSettings"),s=i(a.encryptHomeStorage),t=i(a.recoveryEnabled);return(n,r)=>(m(),f(e($),{name:e(o)("encryption","Default encryption module")},{default:c(()=>[e(a).initStatus===e(G).NotInitialized&&!e(a).masterKeyEnabled?(m(),f(e(E),{key:0,type:"warning"},{default:c(()=>[g(w(e(o)("encryption","Encryption app is enabled but your keys are not initialized, please log-out and log-in again")),1)]),_:1})):(m(),P(H,{key:1},[p(J,{modelValue:s.value,"onUpdate:modelValue":r[0]||(r[0]=l=>s.value=l)},null,8,["modelValue"]),r[2]||(r[2]=D("br",null,null,-1)),e(a).masterKeyEnabled?h("",!0):(m(),f(L,{key:0,modelValue:t.value,"onUpdate:modelValue":r[1]||(r[1]=l=>t.value=l)},null,8,["modelValue"])),!e(a).masterKeyEnabled&&t.value?(m(),f(Z,{key:1})):h("",!0)],64))]),_:1},8,["name"]))}}),ae=F(ee);ae.mount("#encryption-settings-section"); //# sourceMappingURL=encryption-settings_admin.mjs.map diff --git a/dist/encryption-settings_personal.css b/dist/encryption-settings_personal.css index f1e4f7dc67246..da8dac6381c6f 100644 --- a/dist/encryption-settings_personal.css +++ b/dist/encryption-settings_personal.css @@ -18,7 +18,7 @@ @import './NcBreadcrumbs-5gl8Syfa-CtBAA7-7.chunk.css'; @import './NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'; @import './NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'; -@import './index-DxCeSeyt.chunk.css'; +@import './index-CEtX00Aw.chunk.css'; @import './NcChip-CrVOU2RM-Som-mR4B.chunk.css'; @import './TrayArrowDown-D79n0IQ6.chunk.css'; @import './NcGuestContent-j8ai4O1K-D0718NyY.chunk.css'; diff --git a/dist/encryption-settings_personal.mjs b/dist/encryption-settings_personal.mjs index 123db93f2ea50..1c1d17e7ee597 100644 --- a/dist/encryption-settings_personal.mjs +++ b/dist/encryption-settings_personal.mjs @@ -1,2 +1,2 @@ -import{b,x,j as F,o as l,e as v,w as d,c as u,l as k,u as e,g as f,t as g,E as N,r as p,s as j,v as I,h as z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as w,i as U}from"./index-CPwHjAPR.chunk.mjs";import{a as S,c as B,b as K}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{l as R}from"./index-BgmsSgl5.chunk.mjs";import{t}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as E}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as V}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as C}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./index-BpgPbDC6.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{w as T}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as q}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import{N as M}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";import{N as O,I as _,l as Y}from"./types-Dhw8OyWT.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as h}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const A=b({__name:"SettingsPersonalChangePrivateKey",props:{recoveryEnabledForUser:{type:Boolean}},emits:["updated"],setup(c,{emit:a}){const s=a,i=x("form"),r=p(!1),o=p(!1),n=p(""),y=p("");async function P(){if(!r.value){r.value=!0,o.value=!1;try{await w.post(E("/apps/encryption/ajax/updatePrivateKeyPassword"),{oldPassword:n.value,newPassword:y.value}),n.value=y.value="",i.value?.reset(),s("updated")}catch(m){U(m)&&m.response&&m.response.data?.data?.message&&S(m.response.data.data.message),o.value=!0}finally{r.value=!1}}}return(m,J)=>(l(),F("form",{ref:"form",onSubmit:N(P,["prevent"])},[v(e(O),{label:e(t)("encryption","Update private key password"),description:e(t)("encryption","Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password.")},{default:d(()=>[c.recoveryEnabledForUser?(l(),u(e(V),{key:0},{default:d(()=>[f(g(e(t)("encryption","If you do not remember your old password you can ask your administrator to recover your files.")),1)]),_:1})):k("",!0),v(e(h),{label:e(t)("encryption","Old log-in password")},null,8,["label"]),v(e(h),{label:e(t)("encryption","Current log-in password")},null,8,["label"]),v(e(q),{type:"submit",variant:"primary"},{default:d(()=>[f(g(e(t)("encryption","Update")),1)]),_:1})]),_:1},8,["label","description"])],544))}}),D=b({__name:"SettingsPersonalEnableRecovery",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(c){const a=j(c,"modelValue"),s=p(!1);return I(a,()=>{s.value=!0}),T([a],async([i],[r])=>{if(i===r){s.value=!1;return}const o=B(t("encryption","Updating recovery keys. This can take some time…"));try{await w.post(E("/apps/encryption/ajax/userSetRecovery"),{userEnableRecovery:a.value})}catch(n){a.value=r,U(n)&&n.response&&n.response.data?.data?.message&&S(n.response.data.data.message)}finally{o.hideToast(),s.value=!1}},{debounce:800}),(i,r)=>(l(),u(e(M),{modelValue:a.value,"onUpdate:modelValue":r[0]||(r[0]=o=>a.value=o),type:"switch",loading:s.value,description:e(t)("encryption","Enabling this option will allow you to reobtain access to your encrypted files in case of password loss")},{default:d(()=>[f(g(e(t)("encryption","Enable password recovery")),1)]),_:1},8,["modelValue","loading","description"]))}}),G=b({__name:"SettingsPersonal",setup(c){const a=R("encryption","personalSettings"),s=p(a.initialized),i=p(a.recoveryEnabledForUser);async function r(){try{const{data:o}=await w.get(E("/apps/encryption/ajax/getStatus"));s.value=o.initStatus,o.data.message&&K(o.data.message)}catch(o){Y.error("Failed to fetch current encryption status",{error:o})}}return(o,n)=>(l(),u(e(C),{name:e(t)("encryption","Basic encryption module")},{default:d(()=>[s.value===e(_).NotInitialized?(l(),u(e(V),{key:0,type:"warning"},{default:d(()=>[f(g(e(t)("encryption","Encryption app is enabled but your keys are not initialized, please log-out and log-in again")),1)]),_:1})):s.value===e(_).InitExecuted?(l(),u(A,{key:1,recoveryEnabledForUser:i.value,onUpdated:r},null,8,["recoveryEnabledForUser"])):e(a).recoveryEnabled&&e(a).privateKeySet?(l(),u(D,{key:2,modelValue:i.value,"onUpdate:modelValue":n[0]||(n[0]=y=>i.value=y)},null,8,["modelValue"])):k("",!0)]),_:1},8,["name"]))}}),H=z(G);H.mount("#encryption-settings-section"); +import{b,x,j as F,o as l,e as v,w as d,c as u,l as k,u as e,g as f,t as g,E as N,r as p,s as j,v as I,h as z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as w,i as U}from"./index-CPwHjAPR.chunk.mjs";import{a as S,c as B,b as K}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{l as R}from"./index-BgmsSgl5.chunk.mjs";import{t}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as E}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as V}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as C}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./index-Bk4hMpWo.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{w as T}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as q}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import{N as M}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";import{N as O,I as _,l as Y}from"./types-ND6tniN8.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as h}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const A=b({__name:"SettingsPersonalChangePrivateKey",props:{recoveryEnabledForUser:{type:Boolean}},emits:["updated"],setup(c,{emit:a}){const s=a,i=x("form"),r=p(!1),o=p(!1),n=p(""),y=p("");async function P(){if(!r.value){r.value=!0,o.value=!1;try{await w.post(E("/apps/encryption/ajax/updatePrivateKeyPassword"),{oldPassword:n.value,newPassword:y.value}),n.value=y.value="",i.value?.reset(),s("updated")}catch(m){U(m)&&m.response&&m.response.data?.data?.message&&S(m.response.data.data.message),o.value=!0}finally{r.value=!1}}}return(m,J)=>(l(),F("form",{ref:"form",onSubmit:N(P,["prevent"])},[v(e(O),{label:e(t)("encryption","Update private key password"),description:e(t)("encryption","Your private key password no longer matches your log-in password. Set your old private key password to your current log-in password.")},{default:d(()=>[c.recoveryEnabledForUser?(l(),u(e(V),{key:0},{default:d(()=>[f(g(e(t)("encryption","If you do not remember your old password you can ask your administrator to recover your files.")),1)]),_:1})):k("",!0),v(e(h),{label:e(t)("encryption","Old log-in password")},null,8,["label"]),v(e(h),{label:e(t)("encryption","Current log-in password")},null,8,["label"]),v(e(q),{type:"submit",variant:"primary"},{default:d(()=>[f(g(e(t)("encryption","Update")),1)]),_:1})]),_:1},8,["label","description"])],544))}}),D=b({__name:"SettingsPersonalEnableRecovery",props:{modelValue:{type:Boolean,required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(c){const a=j(c,"modelValue"),s=p(!1);return I(a,()=>{s.value=!0}),T([a],async([i],[r])=>{if(i===r){s.value=!1;return}const o=B(t("encryption","Updating recovery keys. This can take some time…"));try{await w.post(E("/apps/encryption/ajax/userSetRecovery"),{userEnableRecovery:a.value})}catch(n){a.value=r,U(n)&&n.response&&n.response.data?.data?.message&&S(n.response.data.data.message)}finally{o.hideToast(),s.value=!1}},{debounce:800}),(i,r)=>(l(),u(e(M),{modelValue:a.value,"onUpdate:modelValue":r[0]||(r[0]=o=>a.value=o),type:"switch",loading:s.value,description:e(t)("encryption","Enabling this option will allow you to reobtain access to your encrypted files in case of password loss")},{default:d(()=>[f(g(e(t)("encryption","Enable password recovery")),1)]),_:1},8,["modelValue","loading","description"]))}}),G=b({__name:"SettingsPersonal",setup(c){const a=R("encryption","personalSettings"),s=p(a.initialized),i=p(a.recoveryEnabledForUser);async function r(){try{const{data:o}=await w.get(E("/apps/encryption/ajax/getStatus"));s.value=o.initStatus,o.data.message&&K(o.data.message)}catch(o){Y.error("Failed to fetch current encryption status",{error:o})}}return(o,n)=>(l(),u(e(C),{name:e(t)("encryption","Basic encryption module")},{default:d(()=>[s.value===e(_).NotInitialized?(l(),u(e(V),{key:0,type:"warning"},{default:d(()=>[f(g(e(t)("encryption","Encryption app is enabled but your keys are not initialized, please log-out and log-in again")),1)]),_:1})):s.value===e(_).InitExecuted?(l(),u(A,{key:1,recoveryEnabledForUser:i.value,onUpdated:r},null,8,["recoveryEnabledForUser"])):e(a).recoveryEnabled&&e(a).privateKeySet?(l(),u(D,{key:2,modelValue:i.value,"onUpdate:modelValue":n[0]||(n[0]=y=>i.value=y)},null,8,["modelValue"])):k("",!0)]),_:1},8,["name"]))}}),H=z(G);H.mount("#encryption-settings-section"); //# sourceMappingURL=encryption-settings_personal.mjs.map diff --git a/dist/federatedfilesharing-init-files.mjs b/dist/federatedfilesharing-init-files.mjs index 1867f1c663284..fcc3b6c66145f 100644 --- a/dist/federatedfilesharing-init-files.mjs +++ b/dist/federatedfilesharing-init-files.mjs @@ -1,2 +1,2 @@ -import{c as d,i as _}from"./index-CPwHjAPR.chunk.mjs";import{b as y,a as f}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{s as b}from"./index-DqIuD5e7.chunk.mjs";import{a as R,l as v}from"./index-BgmsSgl5.chunk.mjs";import{t}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as m}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as D,s as S}from"./index-Bos-XXa5.chunk.mjs";import{N as O}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{b as k,c as u,o as h,w as F,k as C,l as P,t as q,u as i,n as x,r as N,p as E}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{l as M}from"./logger-BrxOELFp.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";const T=k({__name:"RemoteShareDialog",props:{name:{},owner:{},remote:{},passwordRequired:{type:Boolean}},emits:["close"],setup(e,{emit:r}){const s=e,a=r,o=N(""),n=E(()=>[{label:t("federatedfilesharing","Cancel"),callback:()=>a("close",!1)},{label:t("federatedfilesharing","Add remote share"),type:s.passwordRequired?"submit":void 0,variant:"primary",callback:()=>a("close",!0,o.value)}]);return(p,l)=>(h(),u(i(D),{buttons:n.value,isForm:e.passwordRequired,name:i(t)("federatedfilesharing","Remote share"),onSubmit:l[1]||(l[1]=w=>a("close",!0,o.value))},{default:F(()=>[C("p",null,q(i(t)("federatedfilesharing","Do you want to add the remote share {name} from {owner}@{remote}?",{name:e.name,owner:e.owner,remote:e.remote})),1),e.passwordRequired?(h(),u(i(O),{key:0,modelValue:o.value,"onUpdate:modelValue":l[0]||(l[0]=w=>o.value=w),class:x(p.$style.remoteShareDialog__password),label:i(t)("federatedfilesharing","Remote share password")},null,8,["modelValue","class","label"])):P("",!0)]),_:1},8,["buttons","isForm","name"]))}}),U="_remoteShareDialog__password_1ccpy_2",V={remoteShareDialog__password:U},$={$style:V},j=R(T,[["__cssModules",$]]);async function I(e,r,s,a=!1){const[o,n]=await S(j,{name:e,owner:r,remote:s,passwordRequired:a});if(a&&o)return n;if(!o)throw new Error("Dialog was cancelled")}window.addEventListener("DOMContentLoaded",()=>{L(),v("federatedfilesharing","notificationsEnabled",!0)!==!0&&A(),b("notifications:action:executed",({action:e,notification:r})=>{r.app==="files_sharing"&&r.object_type==="remote_share"&&e.type==="POST"&&c()})});function c(){if(!window?.OCP?.Files?.Router?.goToRoute){window.location.reload();return}window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:void 0},{...window.OCP.Files.Router.query,dir:"/",openfile:void 0})}function L(){const e=window.OC.Util.History.parseUrlQuery();if(e.remote&&e.token&&e.name){const r=(s,a)=>{s!==!1&&d.post(m("apps/federatedfilesharing/askForFederatedShare"),{remote:a.remote,token:a.token,owner:a.owner,ownerDisplayName:a.ownerDisplayName||a.owner,name:a.name,password:a.password||""}).then(({data:o})=>{Object.hasOwn(o,"legacyMount")?c():y(o.message)}).catch(o=>{M.error("Error while processing incoming share",{error:o}),_(o)&&o.response.data.message?f(o.response.data.message):f(t("federatedfilesharing","Incoming share could not be processed"))})};location.hash="",e.passwordProtected=parseInt(e.protected,10)===1,g(e,e.passwordProtected,r)}}async function A(){const{data:e}=await d.get(m("/apps/files_sharing/api/externalShares"));for(let r=0;rc())})}function g(e,r,s){const a=e.ownerDisplayName||e.owner,o=e.name,n=e.remote.replace(/^https?:\/\//,"").replace(/\/$/,"");I(o,a,n,r).then(p=>s(!0,{...e,password:p})).catch(()=>s(!1,e))} +import{c as d,i as _}from"./index-CPwHjAPR.chunk.mjs";import{b as y,a as f}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{s as b}from"./index-DqIuD5e7.chunk.mjs";import{a as R,l as v}from"./index-BgmsSgl5.chunk.mjs";import{t}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as m}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as D,s as S}from"./index-Bos-XXa5.chunk.mjs";import{N as O}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{b as k,c as u,o as h,w as F,k as C,l as P,t as q,u as i,n as x,r as N,p as E}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{l as M}from"./logger-BrxOELFp.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";const T=k({__name:"RemoteShareDialog",props:{name:{},owner:{},remote:{},passwordRequired:{type:Boolean}},emits:["close"],setup(e,{emit:r}){const s=e,a=r,o=N(""),n=E(()=>[{label:t("federatedfilesharing","Cancel"),callback:()=>a("close",!1)},{label:t("federatedfilesharing","Add remote share"),type:s.passwordRequired?"submit":void 0,variant:"primary",callback:()=>a("close",!0,o.value)}]);return(p,l)=>(h(),u(i(D),{buttons:n.value,isForm:e.passwordRequired,name:i(t)("federatedfilesharing","Remote share"),onSubmit:l[1]||(l[1]=w=>a("close",!0,o.value))},{default:F(()=>[C("p",null,q(i(t)("federatedfilesharing","Do you want to add the remote share {name} from {owner}@{remote}?",{name:e.name,owner:e.owner,remote:e.remote})),1),e.passwordRequired?(h(),u(i(O),{key:0,modelValue:o.value,"onUpdate:modelValue":l[0]||(l[0]=w=>o.value=w),class:x(p.$style.remoteShareDialog__password),label:i(t)("federatedfilesharing","Remote share password")},null,8,["modelValue","class","label"])):P("",!0)]),_:1},8,["buttons","isForm","name"]))}}),U="_remoteShareDialog__password_1ccpy_2",V={remoteShareDialog__password:U},$={$style:V},j=R(T,[["__cssModules",$]]);async function I(e,r,s,a=!1){const[o,n]=await S(j,{name:e,owner:r,remote:s,passwordRequired:a});if(a&&o)return n;if(!o)throw new Error("Dialog was cancelled")}window.addEventListener("DOMContentLoaded",()=>{L(),v("federatedfilesharing","notificationsEnabled",!0)!==!0&&A(),b("notifications:action:executed",({action:e,notification:r})=>{r.app==="files_sharing"&&r.object_type==="remote_share"&&e.type==="POST"&&c()})});function c(){if(!window?.OCP?.Files?.Router?.goToRoute){window.location.reload();return}window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:void 0},{...window.OCP.Files.Router.query,dir:"/",openfile:void 0})}function L(){const e=window.OC.Util.History.parseUrlQuery();if(e.remote&&e.token&&e.name){const r=(s,a)=>{s!==!1&&d.post(m("apps/federatedfilesharing/askForFederatedShare"),{remote:a.remote,token:a.token,owner:a.owner,ownerDisplayName:a.ownerDisplayName||a.owner,name:a.name,password:a.password||""}).then(({data:o})=>{Object.hasOwn(o,"legacyMount")?c():y(o.message)}).catch(o=>{M.error("Error while processing incoming share",{error:o}),_(o)&&o.response.data.message?f(o.response.data.message):f(t("federatedfilesharing","Incoming share could not be processed"))})};location.hash="",e.passwordProtected=parseInt(e.protected,10)===1,g(e,e.passwordProtected,r)}}async function A(){const{data:e}=await d.get(m("/apps/files_sharing/api/externalShares"));for(let r=0;rc())})}function g(e,r,s){const a=e.ownerDisplayName||e.owner,o=e.name,n=e.remote.replace(/^https?:\/\//,"").replace(/\/$/,"");I(o,a,n,r).then(p=>s(!0,{...e,password:p})).catch(()=>s(!1,e))} //# sourceMappingURL=federatedfilesharing-init-files.mjs.map diff --git a/dist/federatedfilesharing-settings-admin.mjs b/dist/federatedfilesharing-settings-admin.mjs index 42661e402b7b5..a29a38e70ac22 100644 --- a/dist/federatedfilesharing-settings-admin.mjs +++ b/dist/federatedfilesharing-settings-admin.mjs @@ -1,2 +1,2 @@ -import{l as s,a as A}from"./index-BgmsSgl5.chunk.mjs";import{b as U,c as g,o as c,w as i,e as f,l as m,k as h,u as a,I as G,g as p,t as l,h as T}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as x}from"./index-CPwHjAPR.chunk.mjs";import{a as v,e as b}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as C}from"./index-CXHO4UEV.chunk.mjs";import{b as D}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as u}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as I}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{l as S}from"./logger-BrxOELFp.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";const j={class:"settings-subsection"},q={class:"settings-subsection__name"},F=U({__name:"AdminSettings",setup(R){const E=s("federatedfilesharing","sharingFederatedDocUrl"),y=new Proxy({outgoingServer2serverShareEnabled:[s("federatedfilesharing","outgoingServer2serverShareEnabled"),"outgoing_server2server_share_enabled"],incomingServer2serverShareEnabled:[s("federatedfilesharing","incomingServer2serverShareEnabled"),"incoming_server2server_share_enabled"],outgoingServer2serverGroupShareEnabled:[s("federatedfilesharing","outgoingServer2serverGroupShareEnabled"),"outgoing_server2server_group_share_enabled"],incomingServer2serverGroupShareEnabled:[s("federatedfilesharing","incomingServer2serverGroupShareEnabled"),"incoming_server2server_group_share_enabled"],federatedGroupSharingSupported:[s("federatedfilesharing","federatedGroupSharingSupported"),"federated_group_sharing_supported"],federatedTrustedShareAutoAccept:[s("federatedfilesharing","federatedTrustedShareAutoAccept"),"federatedTrustedShareAutoAccept"],lookupServerEnabled:[s("federatedfilesharing","lookupServerEnabled"),"lookupServerEnabled"],lookupServerUploadEnabled:[s("federatedfilesharing","lookupServerUploadEnabled"),"lookupServerUploadEnabled"]},{get(d,o){return d[o]?.[0]},set(d,o,t){return o in d?(d[o][0]=t,k(d[o][1],t),!0):!1}}),r=G(y);async function _(d){if(d===!1)return r.lookupServerUploadEnabled=!1;await b({name:e("federatedfilesharing","Confirm data upload to lookup server"),text:e("federatedfilesharing",'When enabled, all account properties (e.g. email address) with scope visibility set to "published", will be automatically synced and transmitted to an external system and made available in a public, global address book.'),labelConfirm:e("federatedfilesharing","Enable data upload"),labelReject:e("federatedfilesharing","Disable upload"),severity:"warning"}).then(()=>{r.lookupServerUploadEnabled=!0}).catch(()=>{r.lookupServerUploadEnabled=!1})}async function w(d){if(d===!1)return r.lookupServerEnabled=!1;await b({name:e("federatedfilesharing","Confirm querying lookup server"),text:e("federatedfilesharing","When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.")+e("federatedfilesharing","This is used to retrieve the federated cloud ID to make federated sharing easier.")+e("federatedfilesharing","Moreover, email addresses of users might be sent to that system in order to verify them."),labelConfirm:e("federatedfilesharing","Enable querying"),labelReject:e("federatedfilesharing","Disable querying"),severity:"warning"}).then(()=>{r.lookupServerEnabled=!0}).catch(()=>{r.lookupServerEnabled=!1})}async function k(d,o){await C();const t=D("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"files_sharing",key:d}),V=o?"yes":"no";try{const{data:n}=await x.post(t,{value:V});if(n.ocs.meta.status!=="ok")if(n.ocs.meta.message)v(n.ocs.meta.message),S.error("Error updating federated files sharing config",{error:n.ocs});else throw new Error(`Failed to update federatedfilesharing config, ${n.ocs.meta.statuscode}`)}catch(n){S.error("Error updating federated files sharing config",{error:n}),v(e("federatedfilesharing","Unable to update federated files sharing config"))}}return(d,o)=>(c(),g(a(I),{name:a(e)("federatedfilesharing","Federated Cloud Sharing"),description:a(e)("federatedfilesharing","Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing."),docUrl:a(E)},{default:i(()=>[f(a(u),{modelValue:r.outgoingServer2serverShareEnabled,"onUpdate:modelValue":o[0]||(o[0]=t=>r.outgoingServer2serverShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)")),1)]),_:1},8,["modelValue"]),f(a(u),{modelValue:r.incomingServer2serverShareEnabled,"onUpdate:modelValue":o[1]||(o[1]=t=>r.incomingServer2serverShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to receive shares from other servers")),1)]),_:1},8,["modelValue"]),r.federatedGroupSharingSupported?(c(),g(a(u),{key:0,modelValue:r.outgoingServer2serverGroupShareEnabled,"onUpdate:modelValue":o[2]||(o[2]=t=>r.outgoingServer2serverGroupShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to send shares to groups on other servers")),1)]),_:1},8,["modelValue"])):m("",!0),r.federatedGroupSharingSupported?(c(),g(a(u),{key:1,modelValue:r.incomingServer2serverGroupShareEnabled,"onUpdate:modelValue":o[3]||(o[3]=t=>r.incomingServer2serverGroupShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to receive group shares from other servers")),1)]),_:1},8,["modelValue"])):m("",!0),h("fieldset",null,[h("legend",null,l(a(e)("federatedfilesharing","The lookup server is only available for global scale.")),1),f(a(u),{type:"switch",modelValue:r.lookupServerEnabled,disabled:"","onUpdate:modelValue":w},{default:i(()=>[p(l(a(e)("federatedfilesharing","Search global and public address book for people")),1)]),_:1},8,["modelValue"]),f(a(u),{type:"switch",modelValue:r.lookupServerUploadEnabled,disabled:"","onUpdate:modelValue":_},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people to publish their data to a global and public address book")),1)]),_:1},8,["modelValue"])]),h("div",j,[h("h3",q,l(a(e)("federatedfilesharing","Trusted federation")),1),f(a(u),{modelValue:r.federatedTrustedShareAutoAccept,"onUpdate:modelValue":o[4]||(o[4]=t=>r.federatedTrustedShareAutoAccept=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Automatically accept shares from trusted federated accounts and groups by default")),1)]),_:1},8,["modelValue"])])]),_:1},8,["name","description","docUrl"]))}}),W=A(F,[["__scopeId","data-v-71370f43"]]),N=s("federatedfilesharing","internalOnly",!1);N||T(W).mount("#vue-admin-federated"); +import{l as s,a as A}from"./index-BgmsSgl5.chunk.mjs";import{b as U,c as g,o as c,w as i,e as f,l as m,k as h,u as a,I as G,g as p,t as l,h as T}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as x}from"./index-CPwHjAPR.chunk.mjs";import{a as v,e as b}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as C}from"./index-CXHO4UEV.chunk.mjs";import{b as D}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as u}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as I}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{l as S}from"./logger-BrxOELFp.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";const j={class:"settings-subsection"},q={class:"settings-subsection__name"},F=U({__name:"AdminSettings",setup(R){const E=s("federatedfilesharing","sharingFederatedDocUrl"),y=new Proxy({outgoingServer2serverShareEnabled:[s("federatedfilesharing","outgoingServer2serverShareEnabled"),"outgoing_server2server_share_enabled"],incomingServer2serverShareEnabled:[s("federatedfilesharing","incomingServer2serverShareEnabled"),"incoming_server2server_share_enabled"],outgoingServer2serverGroupShareEnabled:[s("federatedfilesharing","outgoingServer2serverGroupShareEnabled"),"outgoing_server2server_group_share_enabled"],incomingServer2serverGroupShareEnabled:[s("federatedfilesharing","incomingServer2serverGroupShareEnabled"),"incoming_server2server_group_share_enabled"],federatedGroupSharingSupported:[s("federatedfilesharing","federatedGroupSharingSupported"),"federated_group_sharing_supported"],federatedTrustedShareAutoAccept:[s("federatedfilesharing","federatedTrustedShareAutoAccept"),"federatedTrustedShareAutoAccept"],lookupServerEnabled:[s("federatedfilesharing","lookupServerEnabled"),"lookupServerEnabled"],lookupServerUploadEnabled:[s("federatedfilesharing","lookupServerUploadEnabled"),"lookupServerUploadEnabled"]},{get(d,o){return d[o]?.[0]},set(d,o,t){return o in d?(d[o][0]=t,k(d[o][1],t),!0):!1}}),r=G(y);async function _(d){if(d===!1)return r.lookupServerUploadEnabled=!1;await b({name:e("federatedfilesharing","Confirm data upload to lookup server"),text:e("federatedfilesharing",'When enabled, all account properties (e.g. email address) with scope visibility set to "published", will be automatically synced and transmitted to an external system and made available in a public, global address book.'),labelConfirm:e("federatedfilesharing","Enable data upload"),labelReject:e("federatedfilesharing","Disable upload"),severity:"warning"}).then(()=>{r.lookupServerUploadEnabled=!0}).catch(()=>{r.lookupServerUploadEnabled=!1})}async function w(d){if(d===!1)return r.lookupServerEnabled=!1;await b({name:e("federatedfilesharing","Confirm querying lookup server"),text:e("federatedfilesharing","When enabled, the search input when creating shares will be sent to an external system that provides a public and global address book.")+e("federatedfilesharing","This is used to retrieve the federated cloud ID to make federated sharing easier.")+e("federatedfilesharing","Moreover, email addresses of users might be sent to that system in order to verify them."),labelConfirm:e("federatedfilesharing","Enable querying"),labelReject:e("federatedfilesharing","Disable querying"),severity:"warning"}).then(()=>{r.lookupServerEnabled=!0}).catch(()=>{r.lookupServerEnabled=!1})}async function k(d,o){await C();const t=D("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"files_sharing",key:d}),V=o?"yes":"no";try{const{data:n}=await x.post(t,{value:V});if(n.ocs.meta.status!=="ok")if(n.ocs.meta.message)v(n.ocs.meta.message),S.error("Error updating federated files sharing config",{error:n.ocs});else throw new Error(`Failed to update federatedfilesharing config, ${n.ocs.meta.statuscode}`)}catch(n){S.error("Error updating federated files sharing config",{error:n}),v(e("federatedfilesharing","Unable to update federated files sharing config"))}}return(d,o)=>(c(),g(a(I),{name:a(e)("federatedfilesharing","Federated Cloud Sharing"),description:a(e)("federatedfilesharing","Adjust how people can share between servers. This includes shares between people on this server as well if they are using federated sharing."),docUrl:a(E)},{default:i(()=>[f(a(u),{modelValue:r.outgoingServer2serverShareEnabled,"onUpdate:modelValue":o[0]||(o[0]=t=>r.outgoingServer2serverShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to send shares to other servers (this option also allows WebDAV access to public shares)")),1)]),_:1},8,["modelValue"]),f(a(u),{modelValue:r.incomingServer2serverShareEnabled,"onUpdate:modelValue":o[1]||(o[1]=t=>r.incomingServer2serverShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to receive shares from other servers")),1)]),_:1},8,["modelValue"]),r.federatedGroupSharingSupported?(c(),g(a(u),{key:0,modelValue:r.outgoingServer2serverGroupShareEnabled,"onUpdate:modelValue":o[2]||(o[2]=t=>r.outgoingServer2serverGroupShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to send shares to groups on other servers")),1)]),_:1},8,["modelValue"])):m("",!0),r.federatedGroupSharingSupported?(c(),g(a(u),{key:1,modelValue:r.incomingServer2serverGroupShareEnabled,"onUpdate:modelValue":o[3]||(o[3]=t=>r.incomingServer2serverGroupShareEnabled=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people on this server to receive group shares from other servers")),1)]),_:1},8,["modelValue"])):m("",!0),h("fieldset",null,[h("legend",null,l(a(e)("federatedfilesharing","The lookup server is only available for global scale.")),1),f(a(u),{type:"switch",modelValue:r.lookupServerEnabled,disabled:"","onUpdate:modelValue":w},{default:i(()=>[p(l(a(e)("federatedfilesharing","Search global and public address book for people")),1)]),_:1},8,["modelValue"]),f(a(u),{type:"switch",modelValue:r.lookupServerUploadEnabled,disabled:"","onUpdate:modelValue":_},{default:i(()=>[p(l(a(e)("federatedfilesharing","Allow people to publish their data to a global and public address book")),1)]),_:1},8,["modelValue"])]),h("div",j,[h("h3",q,l(a(e)("federatedfilesharing","Trusted federation")),1),f(a(u),{modelValue:r.federatedTrustedShareAutoAccept,"onUpdate:modelValue":o[4]||(o[4]=t=>r.federatedTrustedShareAutoAccept=t),type:"switch"},{default:i(()=>[p(l(a(e)("federatedfilesharing","Automatically accept shares from trusted federated accounts and groups by default")),1)]),_:1},8,["modelValue"])])]),_:1},8,["name","description","docUrl"]))}}),W=A(F,[["__scopeId","data-v-71370f43"]]),N=s("federatedfilesharing","internalOnly",!1);N||T(W).mount("#vue-admin-federated"); //# sourceMappingURL=federatedfilesharing-settings-admin.mjs.map diff --git a/dist/federatedfilesharing-settings-personal.mjs b/dist/federatedfilesharing-settings-personal.mjs index b3693fe2cea2d..69b745219a782 100644 --- a/dist/federatedfilesharing-settings-personal.mjs +++ b/dist/federatedfilesharing-settings-personal.mjs @@ -1,4 +1,4 @@ -import{j as s,o,k as i,l as I,t as l,z as L,b as Y,c as w,w as r,e as u,u as e,p as _,r as z,g as f,F as Z,D as J,h as W}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{d as H}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{a as M,l as h}from"./index-BgmsSgl5.chunk.mjs";import{t as a}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{j as x}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as b}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as q}from"./TrashCanOutline-COyEKQVc.chunk.mjs";import{I as E,N as G}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";const K={name:"CheckIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Q=["aria-hidden","aria-label"],X=["fill","width","height"],ee={d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"},ae={key:0};function te(d,n,t,k,p,y){return o(),s("span",L(d.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon check-icon",role:"img",onClick:n[0]||(n[0]=m=>d.$emit("click",m))}),[(o(),s("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[i("path",ee,[t.title?(o(),s("title",ae,l(t.title),1)):I("",!0)])],8,X))],16,Q)}const ie=M(K,[["render",te]]),re={name:"WebIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},le=["aria-hidden","aria-label"],oe=["fill","width","height"],ne={d:"M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},se={key:0};function de(d,n,t,k,p,y){return o(),s("span",L(d.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon web-icon",role:"img",onClick:n[0]||(n[0]=m=>d.$emit("click",m))}),[(o(),s("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[i("path",ne,[t.title?(o(),s("title",se,l(t.title),1)):I("",!0)])],8,oe))],16,le)}const ce=M(re,[["render",de]]),ue={class:"social-button"},fe=["src"],he=["src"],pe=["src"],me={style:{margin:"10px 0"}},ge=["href"],Ce=Y({__name:"PersonalSettings",setup(d){const n=window.OC.theme.productName,t=h("federatedfilesharing","color"),k=h("federatedfilesharing","textColor"),p=h("federatedfilesharing","cloudId"),y=h("federatedfilesharing","docUrlFederated"),m=h("federatedfilesharing","logoPath"),g=h("federatedfilesharing","reference"),S=x("core","facebook"),D=x("core","mastodon"),F=x("core","bluesky"),U=a("federatedfilesharing","Share with me through my #Nextcloud Federated Cloud ID, see {url}",{url:g}),B=a("federatedfilesharing","Share with me through my #Nextcloud Federated Cloud ID"),R=`https://mastodon.social/?text=${encodeURIComponent(B)}&url=${encodeURIComponent(g)}`,T=`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(g)}`,A=`https://bsky.app/intent/compose?text=${encodeURIComponent(U)}`,O=new URL(m,location.origin),v=z(!1),C=z(!1),$=_(()=>` +import{j as s,o,k as i,l as I,t as l,z as L,b as Y,c as w,w as r,e as u,u as e,p as _,r as z,g as f,F as Z,D as J,h as W}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{d as H}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{a as M,l as h}from"./index-BgmsSgl5.chunk.mjs";import{t as a}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{j as x}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as b}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as q}from"./TrashCanOutline-COyEKQVc.chunk.mjs";import{I as E,N as G}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";const K={name:"CheckIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Q=["aria-hidden","aria-label"],X=["fill","width","height"],ee={d:"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"},ae={key:0};function te(d,n,t,k,p,y){return o(),s("span",L(d.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon check-icon",role:"img",onClick:n[0]||(n[0]=m=>d.$emit("click",m))}),[(o(),s("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[i("path",ee,[t.title?(o(),s("title",ae,l(t.title),1)):I("",!0)])],8,X))],16,Q)}const ie=M(K,[["render",te]]),re={name:"WebIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},le=["aria-hidden","aria-label"],oe=["fill","width","height"],ne={d:"M16.36,14C16.44,13.34 16.5,12.68 16.5,12C16.5,11.32 16.44,10.66 16.36,10H19.74C19.9,10.64 20,11.31 20,12C20,12.69 19.9,13.36 19.74,14M14.59,19.56C15.19,18.45 15.65,17.25 15.97,16H18.92C17.96,17.65 16.43,18.93 14.59,19.56M14.34,14H9.66C9.56,13.34 9.5,12.68 9.5,12C9.5,11.32 9.56,10.65 9.66,10H14.34C14.43,10.65 14.5,11.32 14.5,12C14.5,12.68 14.43,13.34 14.34,14M12,19.96C11.17,18.76 10.5,17.43 10.09,16H13.91C13.5,17.43 12.83,18.76 12,19.96M8,8H5.08C6.03,6.34 7.57,5.06 9.4,4.44C8.8,5.55 8.35,6.75 8,8M5.08,16H8C8.35,17.25 8.8,18.45 9.4,19.56C7.57,18.93 6.03,17.65 5.08,16M4.26,14C4.1,13.36 4,12.69 4,12C4,11.31 4.1,10.64 4.26,10H7.64C7.56,10.66 7.5,11.32 7.5,12C7.5,12.68 7.56,13.34 7.64,14M12,4.03C12.83,5.23 13.5,6.57 13.91,8H10.09C10.5,6.57 11.17,5.23 12,4.03M18.92,8H15.97C15.65,6.75 15.19,5.55 14.59,4.44C16.43,5.07 17.96,6.34 18.92,8M12,2C6.47,2 2,6.5 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z"},se={key:0};function de(d,n,t,k,p,y){return o(),s("span",L(d.$attrs,{"aria-hidden":t.title?null:"true","aria-label":t.title,class:"material-design-icon web-icon",role:"img",onClick:n[0]||(n[0]=m=>d.$emit("click",m))}),[(o(),s("svg",{fill:t.fillColor,class:"material-design-icon__svg",width:t.size,height:t.size,viewBox:"0 0 24 24"},[i("path",ne,[t.title?(o(),s("title",se,l(t.title),1)):I("",!0)])],8,oe))],16,le)}const ce=M(re,[["render",de]]),ue={class:"social-button"},fe=["src"],he=["src"],pe=["src"],me={style:{margin:"10px 0"}},ge=["href"],Ce=Y({__name:"PersonalSettings",setup(d){const n=window.OC.theme.productName,t=h("federatedfilesharing","color"),k=h("federatedfilesharing","textColor"),p=h("federatedfilesharing","cloudId"),y=h("federatedfilesharing","docUrlFederated"),m=h("federatedfilesharing","logoPath"),g=h("federatedfilesharing","reference"),S=x("core","facebook"),D=x("core","mastodon"),F=x("core","bluesky"),U=a("federatedfilesharing","Share with me through my #Nextcloud Federated Cloud ID, see {url}",{url:g}),B=a("federatedfilesharing","Share with me through my #Nextcloud Federated Cloud ID"),R=`https://mastodon.social/?text=${encodeURIComponent(B)}&url=${encodeURIComponent(g)}`,T=`https://www.facebook.com/sharer/sharer.php?u=${encodeURIComponent(g)}`,A=`https://bsky.app/intent/compose?text=${encodeURIComponent(U)}`,O=new URL(m,location.origin),v=z(!1),C=z(!1),$=_(()=>` padding:10px; background-color:${t}; color:${k}; diff --git a/dist/federation-settings-admin.mjs b/dist/federation-settings-admin.mjs index 8fd63a6c5cdb8..3ace34d150e53 100644 --- a/dist/federation-settings-admin.mjs +++ b/dist/federation-settings-admin.mjs @@ -1,2 +1,2 @@ -import{b as g,x as D,j as U,o as l,k as h,t as E,u as t,n as u,e as _,r as w,w as T,E as L,J as k,p,c as f,l as O,T as P,F as R,C as K,h as V}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as F,l as q}from"./index-BgmsSgl5.chunk.mjs";import{t as r}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as z}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as G}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{e as B,N as M,f as j,a as J,b as W,d as H}from"./mdi-e8YUrhPH.chunk.mjs";import{d as Q,a as y}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{N as b}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{b as C,N as A}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{_ as X}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{c as N,i as Y}from"./index-CPwHjAPR.chunk.mjs";import{g as Z}from"./index-DqIuD5e7.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const n=Object.freeze({STATUS_OK:1,STATUS_PENDING:2,STATUS_FAILURE:3,STATUS_ACCESS_REVOKED:4});class $ extends Error{}async function ee(a){try{const{data:i}=await N.post(C("apps/federation/trusted-servers"),{url:a}),s=i.ocs.data;return{id:s.id,url:s.url,status:n.STATUS_PENDING}}catch(i){throw I(i)}}async function te(a){try{await N.delete(C(`apps/federation/trusted-servers/${a}`))}catch(i){throw I(i)}}function I(a){return Y(a)&&a.response?.data?.ocs?new $(a.response.data.ocs.meta.message,{cause:a}):a}const x=Z().setApp("federation").build(),re=g({__name:"AddTrustedServerForm",emits:["add"],setup(a,{emit:i}){const s=i,v=D("form"),d=w("");async function m(){try{const e=await ee(d.value);d.value="",s("add",e),k(()=>v.value?.reset()),Q(r("federation","Added to the list of trusted servers"))}catch(e){x.error("Failed to add trusted server",{error:e}),e instanceof $?y(e.message):y(r("federation","Could not add trusted server. Please try again later."))}}return(e,o)=>(l(),U("form",{ref:"form",onSubmit:L(m,["prevent"])},[h("h3",{class:u(e.$style.addTrustedServerForm__heading)},E(t(r)("federation","Add trusted server")),3),h("div",{class:u(e.$style.addTrustedServerForm__wrapper)},[_(t(X),{modelValue:d.value,"onUpdate:modelValue":o[0]||(o[0]=c=>d.value=c),label:t(r)("federation","Server url"),placeholder:"https://…",required:"",type:"url"},null,8,["modelValue","label"]),_(t(b),{class:u(e.$style.addTrustedServerForm__submitButton),"aria-label":t(r)("federation","Add"),title:t(r)("federation","Add"),type:"submit",variant:"primary"},{icon:T(()=>[_(t(A),{path:t(B)},null,8,["path"])]),_:1},8,["class","aria-label","title"])],2)],544))}}),se="_addTrustedServerForm__heading_14ngv_2",ae="_addTrustedServerForm__wrapper_14ngv_7",ie="_addTrustedServerForm__submitButton_14ngv_14",de={addTrustedServerForm__heading:se,addTrustedServerForm__wrapper:ae,addTrustedServerForm__submitButton:ie},ne={$style:de},oe=F(re,[["__cssModules",ne]]),le=["textContent"],ue=g({__name:"TrustedServer",props:{server:{}},emits:["delete"],setup(a,{emit:i}){const s=a,v=i,d=w(!1),m=p(()=>s.server.status===n.STATUS_FAILURE),e=p(()=>{switch(s.server.status){case n.STATUS_OK:return H;case n.STATUS_PENDING:case n.STATUS_ACCESS_REVOKED:return W;case n.STATUS_FAILURE:default:return J}}),o=p(()=>{switch(s.server.status){case n.STATUS_OK:return[r("federation","Server ok"),r("federation","User list was exchanged at least once successfully with the remote server.")];case n.STATUS_PENDING:return[r("federation","Server pending"),r("federation","Waiting for shared secret or initial user list exchange.")];case n.STATUS_ACCESS_REVOKED:return[r("federation","Server access revoked"),r("federation","Server access revoked")];case n.STATUS_FAILURE:default:return[r("federation","Server failure"),r("federation","Connection to the remote server failed or the remote server is misconfigured.")]}});async function c(){try{d.value=!0,await te(s.server.id),v("delete",s.server)}catch(S){d.value=!1,x.error("Failed to delete trusted server",{error:S}),y(r("federation","Failed to delete trusted server. Please try again later."))}}return(S,Ee)=>(l(),U("li",{class:u(S.$style.trustedServer)},[_(t(A),{class:u({[S.$style.trustedServer__icon_error]:m.value}),path:e.value,name:o.value[0],title:o.value[1]},null,8,["class","path","name","title"]),h("code",{class:u(S.$style.trustedServer__url),textContent:E(a.server.url)},null,10,le),_(t(b),{"aria-label":t(r)("federation","Delete"),title:t(r)("federation","Delete"),disabled:d.value,onClick:c},{icon:T(()=>[d.value?(l(),f(t(M),{key:0})):(l(),f(t(A),{key:1,path:t(j)},null,8,["path"]))]),_:1},8,["aria-label","title","disabled"])],2))}}),_e="_trustedServer_1wqey_2",ce="_trustedServer__icon_error_1wqey_15",ve="_trustedServer__url_1wqey_19",me={trustedServer:_e,trustedServer__icon_error:ce,trustedServer__url:ve},Se={$style:me},fe=F(ue,[["__cssModules",Se]]),pe=g({__name:"AdminSettings",setup(a){const i=q("federation","adminSettings"),s=w(i.trustedServers),v=p(()=>s.value.some(e=>e.status===n.STATUS_PENDING));async function d(e){s.value.unshift(e)}function m(e){s.value=s.value.filter(o=>o.id!==e.id)}return(e,o)=>(l(),f(t(G),{name:t(r)("federation","Trusted servers"),docUrl:t(i).docUrl,description:t(r)("federation","Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share.")},{default:T(()=>[v.value?(l(),f(t(z),{key:0,type:"info",text:t(r)("federation","Each server must validate the other. This process may require a few cron cycles.")},null,8,["text"])):O("",!0),_(P,{class:u(e.$style.federationAdminSettings__trustedServersList),"aria-label":t(r)("federation","Trusted servers"),tag:"ul",enterFromClass:e.$style.transition_hidden,enterActiveClass:e.$style.transition_active,leaveActiveClass:e.$style.transition_active,leaveToClass:e.$style.transition_hidden},{default:T(()=>[(l(!0),U(R,null,K(s.value,c=>(l(),f(fe,{key:c.id,class:u(e.$style.federationAdminSettings__trustedServersListItem),server:c,onDelete:m},null,8,["class","server"]))),128))]),_:1},8,["class","aria-label","enterFromClass","enterActiveClass","leaveActiveClass","leaveToClass"]),_(oe,{onAdd:d})]),_:1},8,["name","docUrl","description"]))}}),Te="_federationAdminSettings__trustedServersList_z3uvu_2",he="_federationAdminSettings__trustedServersListItem_z3uvu_9",ye="_transition_active_z3uvu_13",Ae="_transition_hidden_z3uvu_17",ge={federationAdminSettings__trustedServersList:Te,federationAdminSettings__trustedServersListItem:he,transition_active:ye,transition_hidden:Ae},Ue={$style:ge},we=F(pe,[["__cssModules",Ue]]),Fe=V(we);Fe.mount("#federation-admin-settings"); +import{b as g,x as D,j as U,o as l,k as h,t as E,u as t,n as u,e as _,r as w,w as T,E as L,J as k,p,c as f,l as O,T as P,F as R,C as K,h as V}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as F,l as q}from"./index-BgmsSgl5.chunk.mjs";import{t as r}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as z}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as G}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{e as B,N as M,f as j,a as J,b as W,d as H}from"./mdi-e8YUrhPH.chunk.mjs";import{d as Q,a as y}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{N as b}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{b as C,N as A}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{_ as X}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{c as N,i as Y}from"./index-CPwHjAPR.chunk.mjs";import{g as Z}from"./index-DqIuD5e7.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const n=Object.freeze({STATUS_OK:1,STATUS_PENDING:2,STATUS_FAILURE:3,STATUS_ACCESS_REVOKED:4});class $ extends Error{}async function ee(a){try{const{data:i}=await N.post(C("apps/federation/trusted-servers"),{url:a}),s=i.ocs.data;return{id:s.id,url:s.url,status:n.STATUS_PENDING}}catch(i){throw I(i)}}async function te(a){try{await N.delete(C(`apps/federation/trusted-servers/${a}`))}catch(i){throw I(i)}}function I(a){return Y(a)&&a.response?.data?.ocs?new $(a.response.data.ocs.meta.message,{cause:a}):a}const x=Z().setApp("federation").build(),re=g({__name:"AddTrustedServerForm",emits:["add"],setup(a,{emit:i}){const s=i,v=D("form"),d=w("");async function m(){try{const e=await ee(d.value);d.value="",s("add",e),k(()=>v.value?.reset()),Q(r("federation","Added to the list of trusted servers"))}catch(e){x.error("Failed to add trusted server",{error:e}),e instanceof $?y(e.message):y(r("federation","Could not add trusted server. Please try again later."))}}return(e,o)=>(l(),U("form",{ref:"form",onSubmit:L(m,["prevent"])},[h("h3",{class:u(e.$style.addTrustedServerForm__heading)},E(t(r)("federation","Add trusted server")),3),h("div",{class:u(e.$style.addTrustedServerForm__wrapper)},[_(t(X),{modelValue:d.value,"onUpdate:modelValue":o[0]||(o[0]=c=>d.value=c),label:t(r)("federation","Server url"),placeholder:"https://…",required:"",type:"url"},null,8,["modelValue","label"]),_(t(b),{class:u(e.$style.addTrustedServerForm__submitButton),"aria-label":t(r)("federation","Add"),title:t(r)("federation","Add"),type:"submit",variant:"primary"},{icon:T(()=>[_(t(A),{path:t(B)},null,8,["path"])]),_:1},8,["class","aria-label","title"])],2)],544))}}),se="_addTrustedServerForm__heading_14ngv_2",ae="_addTrustedServerForm__wrapper_14ngv_7",ie="_addTrustedServerForm__submitButton_14ngv_14",de={addTrustedServerForm__heading:se,addTrustedServerForm__wrapper:ae,addTrustedServerForm__submitButton:ie},ne={$style:de},oe=F(re,[["__cssModules",ne]]),le=["textContent"],ue=g({__name:"TrustedServer",props:{server:{}},emits:["delete"],setup(a,{emit:i}){const s=a,v=i,d=w(!1),m=p(()=>s.server.status===n.STATUS_FAILURE),e=p(()=>{switch(s.server.status){case n.STATUS_OK:return H;case n.STATUS_PENDING:case n.STATUS_ACCESS_REVOKED:return W;case n.STATUS_FAILURE:default:return J}}),o=p(()=>{switch(s.server.status){case n.STATUS_OK:return[r("federation","Server ok"),r("federation","User list was exchanged at least once successfully with the remote server.")];case n.STATUS_PENDING:return[r("federation","Server pending"),r("federation","Waiting for shared secret or initial user list exchange.")];case n.STATUS_ACCESS_REVOKED:return[r("federation","Server access revoked"),r("federation","Server access revoked")];case n.STATUS_FAILURE:default:return[r("federation","Server failure"),r("federation","Connection to the remote server failed or the remote server is misconfigured.")]}});async function c(){try{d.value=!0,await te(s.server.id),v("delete",s.server)}catch(S){d.value=!1,x.error("Failed to delete trusted server",{error:S}),y(r("federation","Failed to delete trusted server. Please try again later."))}}return(S,Ee)=>(l(),U("li",{class:u(S.$style.trustedServer)},[_(t(A),{class:u({[S.$style.trustedServer__icon_error]:m.value}),path:e.value,name:o.value[0],title:o.value[1]},null,8,["class","path","name","title"]),h("code",{class:u(S.$style.trustedServer__url),textContent:E(a.server.url)},null,10,le),_(t(b),{"aria-label":t(r)("federation","Delete"),title:t(r)("federation","Delete"),disabled:d.value,onClick:c},{icon:T(()=>[d.value?(l(),f(t(M),{key:0})):(l(),f(t(A),{key:1,path:t(j)},null,8,["path"]))]),_:1},8,["aria-label","title","disabled"])],2))}}),_e="_trustedServer_1wqey_2",ce="_trustedServer__icon_error_1wqey_15",ve="_trustedServer__url_1wqey_19",me={trustedServer:_e,trustedServer__icon_error:ce,trustedServer__url:ve},Se={$style:me},fe=F(ue,[["__cssModules",Se]]),pe=g({__name:"AdminSettings",setup(a){const i=q("federation","adminSettings"),s=w(i.trustedServers),v=p(()=>s.value.some(e=>e.status===n.STATUS_PENDING));async function d(e){s.value.unshift(e)}function m(e){s.value=s.value.filter(o=>o.id!==e.id)}return(e,o)=>(l(),f(t(G),{name:t(r)("federation","Trusted servers"),docUrl:t(i).docUrl,description:t(r)("federation","Federation allows you to connect with other trusted servers to exchange the account directory. For example this will be used to auto-complete external accounts for federated sharing. It is not necessary to add a server as trusted server in order to create a federated share.")},{default:T(()=>[v.value?(l(),f(t(z),{key:0,type:"info",text:t(r)("federation","Each server must validate the other. This process may require a few cron cycles.")},null,8,["text"])):O("",!0),_(P,{class:u(e.$style.federationAdminSettings__trustedServersList),"aria-label":t(r)("federation","Trusted servers"),tag:"ul",enterFromClass:e.$style.transition_hidden,enterActiveClass:e.$style.transition_active,leaveActiveClass:e.$style.transition_active,leaveToClass:e.$style.transition_hidden},{default:T(()=>[(l(!0),U(R,null,K(s.value,c=>(l(),f(fe,{key:c.id,class:u(e.$style.federationAdminSettings__trustedServersListItem),server:c,onDelete:m},null,8,["class","server"]))),128))]),_:1},8,["class","aria-label","enterFromClass","enterActiveClass","leaveActiveClass","leaveToClass"]),_(oe,{onAdd:d})]),_:1},8,["name","docUrl","description"]))}}),Te="_federationAdminSettings__trustedServersList_z3uvu_2",he="_federationAdminSettings__trustedServersListItem_z3uvu_9",ye="_transition_active_z3uvu_13",Ae="_transition_hidden_z3uvu_17",ge={federationAdminSettings__trustedServersList:Te,federationAdminSettings__trustedServersListItem:he,transition_active:ye,transition_hidden:Ae},Ue={$style:ge},we=F(pe,[["__cssModules",Ue]]),Fe=V(we);Fe.mount("#federation-admin-settings"); //# sourceMappingURL=federation-settings-admin.mjs.map diff --git a/dist/files-init.js b/dist/files-init.js index 17e30de17560c..5523ef808982c 100644 --- a/dist/files-init.js +++ b/dist/files-init.js @@ -1,2 +1,2 @@ -(()=>{var e,s,t,n={30312(e,s,t){"use strict";var n=t(35810),i=t(77815),a=t(32505),o=t(87485),l=t(53334),r=t(63814),d=t(19051),m=t(85168),g=t(61338),c=t(49264),u=t(84560),f=t(99201);const p=new c.Ay({concurrency:5});function h(e,s){return d.Ay.post((0,r.KT)("/apps/files/api/v1/convert"),{fileId:e,targetMimeType:s})}const w="convert";var v=t(81222),k=t(88140),b=t(21777),y=t(10810),x=t(85471);const T=(0,v.C)("files","config",{crop_image_previews:!0,default_view:"files",folder_tree:!0,grid_view:!1,show_files_extensions:!0,show_hidden:!1,show_mime_column:!0,sort_favorites_first:!0,sort_folders_first:!0,show_dialog_deletion:!1,show_dialog_file_extension:!0}),C=(0,y.nY)("userconfig",()=>{const e=(0,x.KR)({...T});return(0,g.B1)("files:config:updated",({key:s,value:t})=>function(s,t){(0,x.hZ)(e.value,s,t)}(s,t)),{userConfig:e,update:async function(e,s){null!==(0,b.HW)()&&await d.Ay.put((0,r.Jv)("/apps/files/api/v1/config/{key}",{key:e}),{value:s}),(0,g.Ic)("files:config:updated",{key:e,value:s})}}}),U=()=>!0===(0,o.F)()?.files?.undelete;function S(e){return e.every(e=>!0===e.attributes["is-mount-root"]&&"shared"===e.attributes["mount-type"])}function L(e){return e.every(e=>!0===e.attributes["is-mount-root"]&&"external"===e.attributes["mount-type"])}function F({nodes:e,view:s}){return S(e)?1===e.length?(0,l.t)("files","Leave this share"):(0,l.t)("files","Leave these shares"):L(e)?1===e.length?(0,l.t)("files","Disconnect storage"):(0,l.t)("files","Disconnect storages"):"trashbin"!==s.id&&U()?function(e){if(1===e.length)return!1;const s=e.some(e=>S([e])),t=e.some(e=>!S([e]));return s&&t}(e)?(0,l.t)("files","Delete and unshare"):function(e){return!e.some(e=>e.type!==n.pt.File)}(e)?1===e.length?(0,l.t)("files","Delete file"):(0,l.t)("files","Delete files"):function(e){return!e.some(e=>e.type!==n.pt.Folder)}(e)?1===e.length?(0,l.t)("files","Delete folder"):(0,l.t)("files","Delete folders"):(0,l.t)("files","Delete"):(0,l.t)("files","Delete permanently")}function N(){return!1!==C((0,k.u)()).userConfig.show_dialog_deletion}async function _(e,s){const t="trashbin"!==s.id&&U()?(0,l.n)("files","You are about to delete {count} item","You are about to delete {count} items",e.length,{count:e.length}):(0,l.n)("files","You are about to permanently delete {count} item","You are about to permanently delete {count} items",e.length,{count:e.length});return new Promise(n=>{window.OC.dialogs.confirmDestructive(t,(0,l.t)("files","Confirm deletion"),{type:window.OC.dialogs.YES_NO_BUTTONS,confirm:F({nodes:e,view:s}),confirmClasses:"error",cancel:(0,l.t)("files","Cancel")},e=>{n(e)})})}async function A(e){await d.Ay.delete(e.encodedSource),(0,g.Ic)("files:node:deleted",e)}const P=new c.Ay({concurrency:5}),z={id:"delete",displayName:F,iconSvgInline:({nodes:e})=>S(e)?'':L(e)?'':'',enabled:({nodes:e,view:s})=>("trashbin"!==s.id||!1!==(0,v.C)("files_trashbin","config",{allow_delete:!0}).allow_delete)&&(e.length>0&&e.map(e=>e.permissions).every(e=>0!==(e&n.aX.DELETE))),async exec({nodes:e,view:s}){try{let t=!0;const n=((new Error).stack||"").toLocaleLowerCase().includes("keydown");return(N()||n)&&(t=await _([e[0]],s)),!1===t?null:(await A(e[0]),!0)}catch(s){return u.A.error("Error while deleting a file",{error:s,source:e[0].source,node:e[0]}),!1}},async execBatch({nodes:e,view:s}){let t=!0;if((N()||e.length>=5&&!S(e)&&!L(e))&&(t=await _(e,s)),!1===t)return Promise.all(e.map(()=>null));const n=e.map(e=>new Promise(s=>{P.add(async()=>{try{await A(e),s(!0)}catch(t){u.A.error("Error while deleting a file",{error:t,source:e.source,node:e}),s(!1)}})}));return Promise.all(n)},destructive:!0,order:100,hotkey:{description:(0,l.t)("files","Delete"),key:"Delete"}};var j=t(88975),E=t(16488);function I(e){if(0===(e.permissions&n.aX.READ))return!1;if(!0===e.attributes["hide-download"]||"true"===e.attributes["hide-download"])return!1;if(e.attributes["share-attributes"]){const s=JSON.parse(e.attributes["share-attributes"]||"[]").find(({scope:e,key:s})=>"permissions"===e&&"download"===s);if(void 0!==s)return!0===s.value}return!0}const B={id:"download",default:n.m9.DEFAULT,displayName:()=>(0,l.t)("files","Download"),iconSvgInline:()=>'',enabled:({nodes:e,view:s})=>0!==e.length&&!e.some(e=>!e.isDavResource)&&!(e.length>1&&"trashbin"===s.id)&&e.every(I),async exec({nodes:e}){try{await O(e)}catch(s){(0,m.Qg)((0,l.t)("files","The requested file is not available.")),u.A.error("The requested file is not available.",{error:s}),(0,g.Ic)("files:node:deleted",e[0])}return null},async execBatch({nodes:e,view:s,folder:t}){try{await O(e)}catch(e){(0,m.Qg)((0,l.t)("files","The requested files are not available.")),u.A.error("The requested files are not available.",{error:e});const n=function(e,s){const t=(0,j._)((0,k.u)()),n=(0,E.B)((0,k.u)());if(!e?.id)return null;if("/"===s)return t.getRoot(e.id)||null;const i=n.getPath(e.id,s);return t.getNode(i)||null}(s,t.path);(0,g.Ic)("files:node:updated",n)}return new Array(e.length).fill(null)},order:30};async function R(e,s){await d.Ay.head(e);const t=document.createElement("a");t.download=s??"",t.href=e,t.click()}function W(e,s){const t=e.split("/").filter(Boolean),n=s.split("/").filter(Boolean);let i="";for(const[e,a]of t.entries()){if(e>=s.length)break;if(a!==n[e])break;i=`${i}${""===i?"":"/"}${a}`}return i}async function O(e){let s;if(!e[0])throw new Error("No nodes to download");if(1===e.length){if(e[0].type===n.pt.File)return void await R(e[0].encodedSource,e[0].displayname);s=new URL(e[0].encodedSource),s.searchParams.append("accept","zip")}else{s=new URL(e[0].encodedSource);let t=s.pathname;for(const s of e.slice(1))t=W(t,new URL(s.encodedSource).pathname);s.pathname=t;const n=e.map(e=>decodeURIComponent(e.encodedSource.slice(s.href.length+1)));s.searchParams.append("accept","zip"),s.searchParams.append("files",JSON.stringify(n))}"/"!==s.pathname.at(-1)&&(s.pathname=`${s.pathname}/`),await R(s.href)}const D='';var H=t(11459),M=t(71225);const V=new c.Ay({concurrency:5}),Y={id:"favorite",displayName:({nodes:e})=>$(e)?(0,l.t)("files","Add to favorites"):(0,l.t)("files","Remove from favorites"),iconSvgInline:({nodes:e})=>$(e)?D:H,enabled:({nodes:e})=>!(0,a.f)()&&e.every(e=>e.root?.startsWith?.("/files"))&&e.every(e=>e.permissions!==n.aX.NONE),async exec({nodes:e,view:s}){const t=$([e[0]]);return await q(e[0],s,t)},async execBatch({nodes:e,view:s}){const t=$(e),n=e.map(e=>new Promise(n=>{V.add(async()=>{try{await q(e,s,t),n(!0)}catch(s){u.A.error("Error while adding file to favorite",{error:s,source:e.source,node:e}),n(!1)}})}));return Promise.all(n)},order:-50,hotkey:{description:(0,l.t)("files","Add or remove favorite"),key:"S"}};async function q(e,s,t){try{const n=(0,r.Jv)("/apps/files/api/v1/files")+(0,M.O0)(e.path);return await d.Ay.post(n,{tags:t?[window.OC.TAG_FAVORITE]:[]}),"favorites"!==s.id||t||"/"!==e.dirname||(0,g.Ic)("files:node:deleted",e),x.Ay.set(e.attributes,"favorite",t?1:0),(0,g.Ic)("files:node:updated",e),t?(0,g.Ic)("files:favorites:added",e):(0,g.Ic)("files:favorites:removed",e),!0}catch(s){const n=t?"adding a file to favourites":"removing a file from favourites";return u.A.error("Error while "+n,{error:s,source:e.source,node:e}),!1}}function $(e){return e.some(e=>1!==e.attributes.favorite)}const K='';var G=t(21363),J=t(66860),Z=t(14668);const X=(0,v.C)("files_sharing","sharePermissions",n.aX.NONE);let Q;var ee;function se(e){const s=e.reduce((e,s)=>Math.min(e,s.permissions),n.aX.ALL);return Boolean(s&n.aX.DELETE)}function te(e){return!!function(e){return e.every(e=>!JSON.parse(e.attributes?.["share-attributes"]??"[]").some(e=>"permissions"===e.scope&&!1===e.value&&"download"===e.key))}(e)&&!e.some(e=>e.permissions===n.aX.NONE)&&(!(0,a.f)()||Boolean(X&n.aX.CREATE))}!function(e){e.MOVE="Move",e.COPY="Copy",e.MOVE_OR_COPY="move-or-copy"}(ee||(ee={}));class ne extends Error{}const ie={id:"move-copy",order:15,displayName({nodes:e}){switch(ae(e)){case ee.MOVE:return(0,l.t)("files","Move");case ee.COPY:return(0,l.t)("files","Copy");case ee.MOVE_OR_COPY:return(0,l.t)("files","Move or copy")}},iconSvgInline:()=>K,enabled:({nodes:e,view:s})=>"public-file-share"!==s.id&&!!e.every(e=>e.root?.startsWith("/files/"))&&e.length>0&&(se(e)||te(e)),async exec(e){return this.execBatch(e)[0]},async execBatch({nodes:e,folder:s}){const t=ae(e),a=await async function(e,s="/",t){const{resolve:i,reject:a,promise:o}=Promise.withResolvers(),r=t.map(e=>e.fileid).filter(Boolean),d=(0,m.a1)((0,l.t)("files","Choose destination")).allowDirectories(!0).setFilter(e=>!r.includes(e.fileid)).setCanPick(e=>(e.permissions&n.aX.CREATE)===n.aX.CREATE).setMimeTypeFilter([]).setMultiSelect(!1).startAt(s).setButtonFactory((s,a)=>{const o=[],r=(0,M.P8)(a),d=t.map(e=>e.dirname),m=t.map(e=>e.path);return e!==ee.COPY&&e!==ee.MOVE_OR_COPY||o.push({label:r?(0,l.t)("files","Copy to {target}",{target:r},{escape:!1,sanitize:!1}):(0,l.t)("files","Copy"),variant:"primary",icon:G,async callback(e){i({destination:e[0],action:ee.COPY})}}),d.includes(a)||m.includes(a)||s.some(e=>0===(e.permissions&n.aX.CREATE))||e!==ee.MOVE&&e!==ee.MOVE_OR_COPY||o.push({label:r?(0,l.t)("files","Move to {target}",{target:r},{escape:!1,sanitize:!1}):(0,l.t)("files","Move"),variant:e===ee.MOVE?"primary":"secondary",icon:K,async callback(e){i({destination:e[0],action:ee.MOVE})}}),o}).build();return d.pick().catch(e=>{u.A.debug(e),e instanceof m.vT?i(!1):a(new Error((0,l.t)("files","Move or copy operation failed")))}),o}(t,s.path,e);if(!1===a)return e.map(()=>null);try{const s=await Array.fromAsync(async function*(e,s,t,a=!1){if(!s)return;if(s.type!==n.pt.Folder)throw new Error((0,l.t)("files","Destination is not a folder"));if(t===ee.MOVE&&e.some(e=>e.dirname===s.path))throw new Error((0,l.t)("files","This file/folder is already in that directory"));if(e.some(e=>`${s.path}/`.startsWith(`${e.path}/`)))throw new Error((0,l.t)("files","You cannot move a file/folder onto itself or into a subfolder of itself"));const o=new Map;if(!a){const i=(await(0,Z.h)(s.path)).contents,a=(0,J.e)(e,i),l=[];if(a.length>0){if(t===ee.MOVE){const t=i.filter(e=>a.some(s=>s.basename===e.basename)),n=await(0,m.VA)(s.path,a,t);if(!n)return;e=e.filter(e=>!n.skipped.includes(e)),l.push(...n.renamed)}else l.push(...a);const r=[...i,...e.filter(e=>!a.includes(e))].map(e=>e.basename);for(const e of l){const s=(0,n.lJ)(e.basename,r,{ignoreFileExtension:e.type===n.pt.Folder});o.set(e.source,s),r.push(s)}}}const r=function(e,s,t){const n=e===ee.MOVE?1===s.length?(0,l.t)("files",'Moving "{source}" to "{destination}" …',{source:s[0],destination:t}):(0,l.n)("files",'Moving %n file to "{destination}" …','Moving %n files to "{destination}" …',s.length,{destination:t}):1===s.length?(0,l.t)("files",'Copying "{source}" to "{destination}" …',{source:s[0],destination:t}):(0,l.n)("files",'Copying %n file to "{destination}" …','Copying %n files to "{destination}" …',s.length,{destination:t}),i=(0,m.Cs)(n);return()=>i&&i.hideToast()}(t,e.map(e=>e.displayname),(0,M.fj)(s.dirname,s.displayname)),d=(Q||(Q=new c.Ay({concurrency:5})),Q);try{for(const a of e)x.Ay.set(a,"status",n.zI.LOADING),yield d.add(async()=>{try{const e=(0,i.KU)(),n=(0,M.fj)(i.VA,a.path),l=(0,M.fj)(i.VA,s.path,o.get(a.source)??a.basename);if(t===ee.COPY){if(await e.copyFile(n,l),a.dirname===s.path){const{data:s}=await e.stat(l,{details:!0,data:(0,i.aN)()});(0,g.Ic)("files:node:created",(0,i.pO)(s))}}else await e.moveFile(n,l),(0,g.Ic)("files:node:deleted",a)}catch(e){if(u.A.debug(`Error while trying to ${t===ee.COPY?"copy":"move"} node`,{node:a,error:e}),412===e.response?.status)throw new ne((0,l.t)("files","A file or folder with that name already exists in this folder"));if(423===e.response?.status)throw new ne((0,l.t)("files","The files are locked"));if(404===e.response?.status)throw new ne((0,l.t)("files","The file does not exist anymore"));if("response"in e&&e.response){const s=new DOMParser,t=await e.response.text(),n=s.parseFromString(t??"","text/xml").querySelector("message")?.textContent;if(n)throw new ne(n)}throw e}finally{x.Ay.set(a,"status",void 0)}})}finally{r()}}(e,a.destination,a.action));return s.map(()=>!0)}catch(s){return u.A.error(`Failed to ${a.action} node`,{nodes:e,error:s}),s instanceof ne&&s.message?((0,m.Qg)(s.message),e.map(()=>null)):e.map(()=>!1)}}};function ae(e){return se(e)?te(e)?ee.MOVE_OR_COPY:ee.MOVE:ee.COPY}const oe='',le={id:"open-folder",displayName({nodes:e}){if(1!==e.length||!e[0])return(0,l.t)("files","Open folder");const s=e[0].displayname;return(0,l.t)("files","Open folder {displayName}",{displayName:s})},iconSvgInline:()=>oe,enabled({nodes:e}){if(1!==e.length||!e[0])return!1;const s=e[0];return!!s.isDavResource&&s.type===n.pt.Folder&&0!==(s.permissions&n.aX.READ)},async exec({nodes:e,view:s}){const t=e[0];return!(!t||t.type!==n.pt.Folder)&&(window.OCP.Files.Router.goToRoute(null,{view:s.id,fileid:String(t.fileid)},{dir:t.path}),null)},default:n.m9.HIDDEN,order:-100};var re=t(37365);const de={id:"open-in-files",displayName:()=>(0,l.t)("files","Open in Files"),iconSvgInline:()=>"",enabled:({view:e})=>"recent"===e.id||e.id===re.w,async exec({nodes:e}){if(!e[0])return!1;let s=e[0].dirname;return e[0].type===n.pt.Folder&&(s=s+"/"+e[0].basename),window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:String(e[0].fileid)},{dir:s,openfile:"true"}),null},order:-1e3,default:n.m9.HIDDEN},me={id:"edit-locally",displayName:()=>(0,l.Tl)("files","Open locally"),iconSvgInline:()=>'',enabled({nodes:e}){return!(1!==e.length||!e[0])&&!(0,a.f)()&&!!(s=e[0]).isDavResource&&0!==(s.permissions&n.aX.WRITE)&&I(s);var s},exec:async({nodes:e})=>(await async function(e){await ge(e);const s=await async function(){let e=!1;const s=(new m.ik).setName((0,l.Tl)("files","Open file locally")).setText((0,l.Tl)("files","The file should now open on your device. If it doesn't, please check that you have the desktop app installed.")).setButtons([{label:(0,l.Tl)("files","Retry and close"),variant:"secondary",callback:()=>{e="local"}},{label:(0,l.Tl)("files","Open online"),icon:'',variant:"primary",callback:()=>{e="online"}}]).build();try{await s.show()}catch(e){u.A.debug("Open locally dialog closed",{error:e})}return e}();"local"===s?await ge(e):"online"===s&&window.OCA.Viewer.open({path:e})}(e[0].path),null),order:25};async function ge(e){const s=(0,r.KT)("apps/files/api/v1")+"/openlocaleditor?format=json";try{const t=await d.Ay.post(s,{path:e}),n=(0,b.HW)()?.uid;let i=`nc://open/${n}@`+window.location.host+(0,M.O0)(e);i+="?token="+t.data.ocs.data.token,window.open(i,"_self")}catch(e){(0,m.Qg)((0,l.Tl)("files","Failed to redirect to client")),u.A.error("Failed to redirect to client",{error:e})}}var ce=t(43627);const ue={id:"rename",displayName:()=>(0,l.Tl)("files","Rename"),iconSvgInline:()=>'',enabled:({nodes:e,view:s})=>{if(0===e.length||!e[0])return!1;if("public-file-share"===s.id)return!1;const t=e[0],i=(0,j._)((0,k.u)()),a="/"===t.dirname?i.getRoot(s.id):i.getNode((0,ce.dirname)(t.source)),o=a?.permissions||n.aX.NONE;return Boolean(t.permissions&n.aX.DELETE)&&Boolean(o&n.aX.CREATE)||Boolean(t.permissions&n.aX.UPDATE)},exec:async({nodes:e})=>((0,g.Ic)("files:node:rename",e[0]),null),order:10,hotkey:{description:(0,l.Tl)("files","Rename"),key:"F2"}},fe={id:"details",displayName:()=>(0,l.t)("files","Details"),iconSvgInline:()=>'',enabled:({nodes:e})=>{const s=e[0];return!(1!==e.length||!s)&&(!!(0,n.dC)().available&&!(0,a.f)()&&s.root.startsWith("/files/")&&s.permissions!==n.aX.NONE)},async exec({nodes:e}){const s=(0,n.dC)(),[t]=e;try{return s.node?.source===t.source?(u.A.debug("Sidebar already open for this file",{node:t}),null):(s.open(t,"sharing"),null)}catch(e){return u.A.error("Error while opening sidebar",{error:e}),!1}},order:-50,hotkey:{key:"D",description:(0,l.t)("files","Open the details sidebar")}},pe={id:"view-in-folder",displayName:()=>(0,l.t)("files","View in folder"),iconSvgInline:()=>K,enabled({nodes:e,view:s}){if((0,a.f)())return!1;if("files"===s.id)return!1;if(1!==e.length||!e[0])return!1;const t=e[0];return!!t.isDavResource&&!!t.root?.startsWith("/files")&&t.permissions!==n.aX.NONE&&t.type===n.pt.File},exec:async({nodes:e})=>!(!e[0]||e[0].type!==n.pt.File)&&(window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:String(e[0].fileid)},{dir:e[0].dirname}),null),order:80};var he=t(78246);class we extends n.L3{constructor(){var e,s,t;super("files:filename",5),e=this,t="",(s=function(e){var s=function(e){if("object"!=typeof e||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var t=s.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof s?s:s+""}(s="searchQuery"))in e?Object.defineProperty(e,s,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[s]=t,(0,g.B1)("files:search:updated",({query:e,scope:s})=>{"filter"===s&&this.updateQuery(e)})}filter(e){const s=this.searchQuery.toLocaleLowerCase().split(" ").filter(Boolean);return e.filter(e=>{const t=e.displayname.toLocaleLowerCase();return s.every(e=>t.includes(e))})}reset(){this.updateQuery("")}updateQuery(e){if((e=(e||"").trim())!==this.searchQuery){this.searchQuery=e,this.filterUpdated();const s=[];if(""!==e)s.push({text:e,onclick:()=>{this.updateQuery("")}});else{const e=(0,he.j)((0,k.u)());"filter"===e.scope&&(e.query="")}this.updateChips(s)}}}class ve extends n.L3{constructor(){var e,s,t;super("files:hidden",0),e=this,t=void 0,(s=function(e){var s=function(e){if("object"!=typeof e||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var t=s.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof s?s:s+""}(s="showHidden"))in e?Object.defineProperty(e,s,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[s]=t,this.showHidden=(0,v.C)("files","config",{show_hidden:!1}).show_hidden,(0,g.B1)("files:config:updated",({key:e,value:s})=>{"show_hidden"===e&&(this.showHidden=Boolean(s),this.filterUpdated())})}filter(e){return this.showHidden?e:e.filter(e=>!0!==e.attributes.hidden&&!e.basename.startsWith("."))}}const ke='';var be=t(26422),ye=t(24606),xe=t(32806),Te=t(61744),Ce=t(78928),Ue=t(62758),Se=t(68432),Le=t(64426),Fe=t(59915),Ne=t(17030),_e=t(15502),Ae=t(71711),Pe=t(95452),ze=t(88856),je=t(47611),Ee=t(10363),Ie=t(37222),Be=t(35119),Re=t(54048),We=t(9494),Oe=t(27345),De=t(76269),He=t(10431),Me=t(65617),Ve=t(36536),Ye=t(542),qe=t(71902),$e=t(93651),Ke=t(15807),Ge=t(40825),Je=t(50017),Ze=t(60258),Xe=t(43280),Qe=t(66865),es=t(17067),ss=t(99927),ts=t(52631),ns=t(66372),is=t(52198),as=t(11081),os=t(90286),ls=t(42380),rs=t(72723),ds=t(62733),ms=t(90429),gs=t(98706),cs=t(71153),us=t(44025),fs=t(60729),ps=t(48198),hs=t(30055),ws=t(57876),vs=t(83194),ks=t(15306),bs=t(42507),ys=t(91122),xs=t(85646),Ts=t(71565),Cs=t(11264),Us=t(17848),Ss=t(99925),Ls=t(66768),Fs=t(93939),Ns=t(69944),_s=t(51550),As=t(91624),Ps=t(6670),zs=t(48191),js=t(80723),Es=t(26482),Is=t(8740),Bs=t(88289),Rs=t(83947),Ws=t(371),Os=t(92511),Ds=t(71912),Hs=t(35290),Ms=t(1938),Vs=t(1357),Ys=t(71465),qs=t(26797),$s=t(35908),Ks=(t(56143),t(52781),t(3168),t(50188)),Gs=t(82684),Js=t(89878),Zs=t(71639),Xs=t(51569),Qs=t(15192),et=t(27971),st=t(25514),tt=t(50029),nt=t(88381),it=t(8256),at=t(974),ot=t(67964),lt=t(8818),rt=t(23610),dt=(t(55581),t(94205),t(95462),t(23020),t(53429),t(23739),t(71409),t(29928),t(64660),t(18547),t(20511)),mt=t(69885),gt=(t(59656),t(75105),t(92471),t(16406),t(2508));ye.N,xe.N,Te.A,Ce.N,Ue.N,Se.A,Le.N,Fe.A,_e.A,Ae.A,Pe.N,Ne.N,ze.N,je.A,Ee.A,Ie.N,Be.N,Re.A,We.N,Oe.A,De.N,He.N,Me.N,Ve.N,Ye.A,qe.N,$e.N,Ke.N,Ke.N,Ge.N,Je.N,Ze.A,Xe.N,Qe.A,es.N,$s.N,ss.N,ts.N,ns.N,is.N,as.N,os.N,ls.N,rs.N,ds.N,ms.N,gs.N,cs.N,us.N,fs.default,ps.A,hs.N,ws.N,vs.A,ks.N,bs.A,ys.N,xs.N,Ts.N,Cs.N,Us.N,Ss.N,Ls.A,Fs.N,Ns.N,_s.N,As.N,Ps.N,zs.N,js.N,Es.N,Is.N,Bs.A,qs.N,Rs.A,Ws.A,Os.N,Ds.N,Hs.N,Ms.N,Vs.N,Ys.N,$s.a,Ks.N,Zs.N,Gs.N,Xs.N,Qs.N,et.N,st.N,tt.N,nt.N,Js.N,it.N,at.N,ot.N,lt.N,rt.A,Symbol.toStringTag,dt.A,mt.A,gt.yw,Symbol.toStringTag;var ct=t(74095);const ut=()=>(new Date).setHours(0,0,0,0),ft=()=>ut()-6048e5,pt=[{id:"today",label:(0,l.t)("files","Today"),filter:e=>e>ut()},{id:"last-7",label:(0,l.t)("files","Last 7 days"),filter:e=>e>ft()},{id:"last-30",label:(0,l.t)("files","Last 30 days"),filter:e=>e>ut()-2592e6},{id:"this-year",label:(0,l.t)("files","This year ({year})",{year:(new Date).getFullYear()}),filter:e=>e>new Date(ut()).setMonth(0,1)},{id:"last-year",label:(0,l.t)("files","Last year ({year})",{year:(new Date).getFullYear()-1}),filter:e=>e>new Date(ut()).setFullYear((new Date).getFullYear()-1,0,1)&&e=this.timeRange[0].getTime()&&s<=this.timeRange[1].getTime()}}],ht=(0,x.pM)({__name:"FileListFilterModified",props:{filter:null},setup(e){const s=e,t=(0,x.KR)();(0,x.wB)(t,e=>{t.value?("custom"!==t.value.id||n.value||(n.value=[new Date(ft()),new Date(ut())],t.value.timeRange=[...n.value]),s.filter.setPreset(t.value)):s.filter.setPreset()});const n=(0,x.KR)();function i(){t.value=void 0,n.value=void 0}return(0,x.wB)(n,()=>{n.value&&(t.value.timeRange=[...n.value],s.filter.setPreset(t.value))}),(0,x.sV)(()=>{t.value=s.filter.preset&&pt.find(e=>e.id===s.filter.preset.id),s.filter.addEventListener("reset",i)}),(0,x.hi)(()=>{s.filter.removeEventListener("reset",i)}),{__sfc:!0,startOfToday:ut,startOfLastWeek:ft,timePresets:pt,props:s,selectedOption:t,timeRange:n,onReset:i,t:l.t,NcDateTimePicker:fs.default,NcButton:ct.A}}});var wt=t(85072),vt=t.n(wt),kt=t(97825),bt=t.n(kt),yt=t(77659),xt=t.n(yt),Tt=t(55056),Ct=t.n(Tt),Ut=t(10540),St=t.n(Ut),Lt=t(41113),Ft=t.n(Lt),Nt=t(75689),_t={};_t.styleTagTransform=Ft(),_t.setAttributes=Ct(),_t.insert=xt().bind(null,"head"),_t.domAPI=bt(),_t.insertStyleElement=St(),vt()(Nt.A,_t),Nt.A&&Nt.A.locals&&Nt.A.locals;var At=t(14486);const Pt=(0,At.A)(ht,function(){var e=this,s=e._self._c,t=e._self._setupProxy;return s("div",[e._l(t.timePresets,function(n){return s(t.NcButton,{key:n.id,attrs:{alignment:"start",pressed:n===t.selectedOption,variant:"tertiary",wide:""},on:{"update:pressed":function(e){e?t.selectedOption=n:t.onReset()}}},[e._v("\n\t\t"+e._s(n.label)+"\n\t")])}),e._v(" "),"custom"===t.selectedOption?.id?s(t.NcDateTimePicker,{attrs:{"append-to-body":"","aria-label":t.t("files","Custom date range"),type:"date-range"},model:{value:t.timeRange,callback:function(e){t.timeRange=e},expression:"timeRange"}}):e._e()],2)},[],!1,null,"2841ff92",null).exports;function zt(e,s,t){return(s=function(e){var s=function(e){if("object"!=typeof e||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var t=s.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof s?s:s+""}(s))in e?Object.defineProperty(e,s,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[s]=t,e}const jt="files-file-list-filter-modified";class Et extends n.L3{constructor(){super("files:modified",50),zt(this,"currentInstance",void 0),zt(this,"currentPreset",void 0),zt(this,"displayName",(0,l.t)("files","Modified")),zt(this,"iconSvgInline",ke),zt(this,"tagName",jt)}filter(e){return this.currentPreset?e.filter(e=>void 0===e.mtime||this.currentPreset.filter(e.mtime.getTime())):e}reset(){this.dispatchEvent(new CustomEvent("reset"))}get preset(){return this.currentPreset}setPreset(e){this.currentPreset=e,this.filterUpdated();const s=[];e?s.push({icon:ke,text:e.label,onclick:()=>this.reset()}):this.currentInstance?.resetFilter(),this.updateChips(s)}}var It=t(6695);const Bt=[{id:"document",label:(0,l.t)("files","Documents"),icon:Rt('',"#49abea"),mime:["x-office/document"]},{id:"spreadsheet",label:(0,l.t)("files","Spreadsheets"),icon:Rt('',"#9abd4e"),mime:["x-office/spreadsheet"]},{id:"presentation",label:(0,l.t)("files","Presentations"),icon:Rt('',"#f0965f"),mime:["x-office/presentation"]},{id:"pdf",label:(0,l.t)("files","PDFs"),icon:Rt('',"#dc5047"),mime:["application/pdf"]},{id:"folder",label:(0,l.t)("files","Folders"),icon:Rt(oe,window.getComputedStyle(document.body).getPropertyValue("--color-primary-element")),mime:["httpd/unix-directory"]},{id:"audio",label:(0,l.t)("files","Audio"),icon:'',mime:["audio"]},{id:"image",label:(0,l.t)("files","Images"),icon:'',mime:["image"]},{id:"video",label:(0,l.t)("files","Videos"),icon:'',mime:["video"]}];function Rt(e,s){return e.replace("s.id===e.detail);s&&a(s,!1)}function a(e,s){t.value=t.value.filter(s=>s.id!==e.id),s&&t.value.push(e)}return(0,x.wB)(t,()=>{s.filter.setPresets([...t.value])}),(0,x.sV)(()=>{s.filter.addEventListener("reset",n),s.filter.addEventListener("deselect",i),t.value=Bt.filter(({id:e})=>s.filter.presets.some(s=>s.id===e))}),(0,x.hi)(()=>{s.filter.removeEventListener("reset",n),s.filter.removeEventListener("deselect",i)}),{__sfc:!0,typePresets:Bt,colorize:Rt,props:s,selectedOptions:t,resetFilter:n,onDeselect:i,toggleOption:a,NcButton:ct.A,NcIconSvgWrapper:It.A}}});var Ot=t(35225),Dt={};Dt.styleTagTransform=Ft(),Dt.setAttributes=Ct(),Dt.insert=xt().bind(null,"head"),Dt.domAPI=bt(),Dt.insertStyleElement=St(),vt()(Ot.A,Dt);const Ht=Ot.A&&Ot.A.locals?Ot.A.locals:void 0,Mt=(0,At.A)(Wt,function(){var e=this,s=e._self._c,t=e._self._setupProxy;return s("div",{class:e.$style.fileListFilterType},e._l(t.typePresets,function(n){return s(t.NcButton,{key:n.id,attrs:{pressed:t.selectedOptions.includes(n),variant:"tertiary",alignment:"start",wide:""},on:{"update:pressed":function(e){return t.toggleOption(n,e)}},scopedSlots:e._u([{key:"icon",fn:function(){return[s(t.NcIconSvgWrapper,{attrs:{svg:n.icon}})]},proxy:!0}],null,!0)},[e._v("\n\t\t"+e._s(n.label)+"\n\t")])}),1)},[],!1,function(e){this.$style=Ht.locals||Ht},null,null).exports;function Vt(e,s,t){return(s=function(e){var s=function(e){if("object"!=typeof e||!e)return e;var s=e[Symbol.toPrimitive];if(void 0!==s){var t=s.call(e,"string");if("object"!=typeof t)return t;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof s?s:s+""}(s))in e?Object.defineProperty(e,s,{value:t,enumerable:!0,configurable:!0,writable:!0}):e[s]=t,e}const Yt="files-file-list-filter-type";class qt extends n.L3{constructor(){super("files:type",10),Vt(this,"currentInstance",void 0),Vt(this,"currentPresets",void 0),Vt(this,"displayName",(0,l.t)("files","Type")),Vt(this,"iconSvgInline",''),Vt(this,"tagName",Yt),this.currentPresets=[]}filter(e){if(!this.currentPresets||0===this.currentPresets.length)return e;const s=this.currentPresets.reduce((e,s)=>[...e,...s.mime],[]);return e.filter(e=>{if(!e.mime)return!1;const t=e.mime.toLowerCase();return!!s.includes(t)||!!s.includes(window.OC.MimeTypeList.aliases[t])||!!s.includes(t.split("/")[0])})}reset(){this.dispatchEvent(new CustomEvent("reset"))}get presets(){return this.currentPresets}setPresets(e){u.A.debug("TypeFilter: setting presets",{presets:e}),this.currentPresets=e??[],void 0!==this.currentInstance&&(this.currentInstance.$props.presets=e),this.filterUpdated();const s=[];if(e&&e.length>0)for(const t of e)s.push({icon:t.icon,text:t.label,onclick:()=>this.removeFilterPreset(t.id)});else this.currentInstance?.resetFilter();this.updateChips(s)}removeFilterPreset(e){const s=this.currentPresets.filter(({id:s})=>s!==e);this.dispatchEvent(new CustomEvent("deselect",{detail:e})),this.setPresets(s)}}var $t=t(98469),Kt=t(94219),Gt=t(82182);const Jt=(0,x.pM)({__name:"NewNodeDialog",props:{defaultName:{type:String,default:(0,l.t)("files","New folder")},otherNames:{type:Array,default:()=>[]},open:{type:Boolean,default:!0},name:{type:String,default:(0,l.t)("files","Create new folder")},label:{type:String,default:(0,l.t)("files","Folder name")}},emits:["close"],setup(e,{emit:s}){const t=e,i=(0,x.KR)(t.defaultName),a=(0,x.KR)(),o=(0,x.KR)(),r=(0,x.KR)(""),d=(0,x.EW)(()=>i.value.trim().startsWith("."));function m(){(0,x.dY)(()=>{const e=a.value?.$el.querySelector("input");if(!t.open||!e)return;const s=i.value.length-(0,ce.extname)(i.value).length;e.focus(),e.setSelectionRange(0,s)})}return(0,x.wB)(()=>[t.defaultName,t.otherNames],()=>{i.value=(0,n.lJ)(t.defaultName,t.otherNames).trim()}),(0,x.nT)(()=>{t.otherNames.includes(i.value.trim())?r.value=(0,l.t)("files","This name is already in use."):r.value=function(e,s=!1){if(""===e.trim())return(0,l.t)("files","Filename must not be empty.");try{return(0,n.KT)(e),""}catch(e){if(!(e instanceof n.di))throw e;switch(e.reason){case n.nF.Character:return(0,l.t)("files",'"{char}" is not allowed inside a filename.',{char:e.segment},void 0,{escape:s});case n.nF.ReservedName:return(0,l.t)("files",'"{segment}" is a reserved name and not allowed for filenames.',{segment:e.segment},void 0,{escape:!1});case n.nF.Extension:return e.segment.match(/\.[a-z]/i)?(0,l.t)("files",'"{extension}" is not an allowed filetype.',{extension:e.segment},void 0,{escape:!1}):(0,l.t)("files",'Filenames must not end with "{extension}".',{extension:e.segment},void 0,{escape:!1});default:return(0,l.t)("files","Invalid filename.")}}}(i.value.trim());const e=a.value?.$el.querySelector("input");e&&(e.setCustomValidity(r.value),e.reportValidity())}),(0,x.wB)(()=>t.open,()=>{(0,x.dY)(()=>{m()})}),(0,x.sV)(()=>{i.value=(0,n.lJ)(i.value,t.otherNames).trim(),(0,x.dY)(()=>m())}),{__sfc:!0,props:t,emit:s,localDefaultName:i,nameInput:a,formElement:o,validity:r,isHiddenFileName:d,focusInput:m,submit:function(){o.value?.requestSubmit()},t:l.t,NcButton:ct.A,NcDialog:Kt.A,NcNoteCard:Ws.A,NcTextField:Gt.A}}});var Zt=t(78224),Xt={};Xt.styleTagTransform=Ft(),Xt.setAttributes=Ct(),Xt.insert=xt().bind(null,"head"),Xt.domAPI=bt(),Xt.insertStyleElement=St(),vt()(Zt.A,Xt),Zt.A&&Zt.A.locals&&Zt.A.locals;const Qt=(0,At.A)(Jt,function(){var e=this,s=e._self._c,t=e._self._setupProxy;return s(t.NcDialog,{attrs:{"data-cy-files-new-node-dialog":"",name:e.name,open:e.open,"close-on-click-outside":"","out-transition":""},on:{"update:open":function(e){return t.emit("close",null)}},scopedSlots:e._u([{key:"actions",fn:function(){return[s(t.NcButton,{attrs:{"data-cy-files-new-node-dialog-submit":"",variant:"primary",disabled:""!==t.validity},on:{click:t.submit}},[e._v("\n\t\t\t"+e._s(t.t("files","Create"))+"\n\t\t")])]},proxy:!0}])},[e._v(" "),s("form",{ref:"formElement",staticClass:"new-node-dialog__form",on:{submit:function(e){return e.preventDefault(),t.emit("close",t.localDefaultName)}}},[s(t.NcTextField,{ref:"nameInput",attrs:{"data-cy-files-new-node-dialog-input":"",error:""!==t.validity,"helper-text":t.validity,label:e.label},model:{value:t.localDefaultName,callback:function(e){t.localDefaultName=e},expression:"localDefaultName"}}),e._v(" "),t.isHiddenFileName?s(t.NcNoteCard,{attrs:{type:"warning",text:t.t("files","Files starting with a dot are hidden by default")}}):e._e()],1)])},[],!1,null,"77bf0406",null).exports;function en(e,s,t={}){const n=s.map(e=>e.basename);return new Promise(s=>{(0,$t.S)(Qt,{...t,defaultName:e,otherNames:n},e=>{s(e)})})}const sn={id:"newFolder",order:0,displayName:(0,l.t)("files","New folder"),iconSvgInline:''.replace(/viewBox/gi,'style="color: var(--color-primary-element)" viewBox'),enabled:e=>Boolean(e.permissions&n.aX.CREATE)&&Boolean(e.permissions&n.aX.READ),async handler(e,s){const t=await en((0,l.t)("files","New folder"),s);if(null!==t)try{const{fileid:s,source:i}=await async function(e,s){const t=e.source+"/"+s,n=e.encodedSource+"/"+encodeURIComponent(s),i=await(0,d.Ay)({method:"MKCOL",url:n,headers:{Overwrite:"F"}});return{fileid:parseInt(i.headers["oc-fileid"]),source:t}}(e,t.trim()),a=new n.vd({source:i,id:s,mtime:new Date,owner:e.owner,permissions:n.aX.ALL,root:e?.root||"/files/"+(0,b.HW)()?.uid,attributes:{"mount-type":e.attributes?.["mount-type"],"owner-id":e.attributes?.["owner-id"],"owner-display-name":e.attributes?.["owner-display-name"]}});(0,g.Ic)("files:node:created",a),(0,m.Te)((0,l.t)("files",'Created new folder "{name}"',{name:(0,ce.basename)(i)})),u.A.debug("Created new folder",{folder:a,source:i}),window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:String(s)},{dir:e.path})}catch(e){u.A.error("Creating new folder failed",{error:e}),(0,m.Qg)("Creating new folder failed")}}},tn=(0,x.$V)(()=>Promise.all([t.e(4208),t.e(2915)]).then(t.bind(t,32915)));let nn=null;const an=(0,v.C)("files","templates_enabled",!0);let on=(0,v.C)("files","templates_path",!1);u.A.debug("Templates folder enabled",{templatesEnabled:an}),u.A.debug("Initial templates folder",{templatesPath:on});const ln={id:"template-picker",displayName:(0,l.Tl)("files","Create templates folder"),iconSvgInline:'',order:30,enabled:e=>!(!an||on)&&e.owner===(0,b.HW)()?.uid&&0!==(e.permissions&n.aX.CREATE),async handler(e,s){const t=await en((0,l.Tl)("files","Templates"),s,{name:(0,l.Tl)("files","New template folder")});null!==t&&(async function(e,s){const t=(0,ce.join)(e.path,s);try{u.A.debug("Initializing the templates directory",{templatePath:t});const{data:e}=await d.Ay.post((0,r.KT)("apps/files/api/v1/templates/path"),{templatePath:t,copySystemTemplates:!0});window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:void 0},{dir:t}),u.A.info("Created new templates folder",{...e.ocs.data}),on=e.ocs.data.templates_path}catch(e){u.A.error("Unable to initialize the templates directory",{error:e}),(0,m.Qg)((0,l.Tl)("files","Unable to initialize the templates directory"))}}(e,t),(0,n.gj)("template-picker"))}},rn=()=>{"serviceWorker"in navigator?window.addEventListener("load",async()=>{try{const e=(0,r.Jv)("/apps/files/preview-service-worker.js",{},{noRewrite:!0});let s=(0,r.aU)();""===s&&(s="/");const t=await navigator.serviceWorker.register(e,{scope:s});u.A.debug("SW registered: ",{registration:t})}catch(e){u.A.error("SW registration failed: ",{error:e})}}):u.A.debug("Service Worker is not enabled on this browser.")};(Object.getOwnPropertyDescriptor(rn,"name")||{}).writable||Object.defineProperty(rn,"name",{value:"default",configurable:!0});var dn=t(43690);async function mn(e="/",s){if(e&&"/"!==e)return(0,Z.h)(e,s);try{return{contents:await(0,i.Q$)({client:f.S,signal:s.signal}),folder:new n.vd({id:0,source:`${(0,i.EY)()}${(0,i.ei)()}`,root:(0,i.ei)(),owner:(0,b.HW)()?.uid||null,permissions:n.aX.READ})}}catch(e){if(s.signal.aborted)throw u.A.debug("Favorite nodes request was aborted"),new DOMException("Aborted","AbortError");throw u.A.error("Failed to load favorite nodes via WebDAV",{error:e}),e}}function gn(e,s=0){return new n.Ss({id:cn(e.path),name:e.displayname,icon:dn,order:s,params:{dir:e.path,fileid:String(e.fileid),view:"favorites"},parent:"favorites",columns:[],getContents:mn})}function cn(e){return`favorite-${function(e){let s=0;for(let t=0;t>>0}(e)}`}var un=t(66480);const fn="folders",pn=`${(0,i.EY)()}/files/${(0,b.HW)()?.uid}`,hn=Intl.Collator([(0,l.Z0)(),(0,l.lO)()],{numeric:!0,usage:"sort"}),wn=(e,s)=>hn.compare(e.displayName??e.basename,s.displayName??s.basename);function vn(e,s="/",t=[]){const n=e.toSorted(wn);for(const{id:e,basename:i,displayName:a,children:o}of n){const n=(0,M.fj)(s,i),l=`${pn}${n}`,r={source:l,encodedSource:yn(l),path:n,fileid:e,basename:i};a&&(r.displayName=a),t.push(r),o.length>0&&vn(o,n,t)}return t}async function kn(e="/",s=1,t=!1){const{data:n}=await d.Ay.get((0,r.KT)("/apps/files/api/v1/folder-tree"),{params:new URLSearchParams({path:e,depth:String(s),withParents:String(t)})});return vn(n,t?"/":e)}const bn=(e,s)=>(0,Z.h)(e,s);function yn(e){const{origin:s}=new URL(e);return s+(0,M.O0)(e.slice(s.length))}function xn(e){const s=(0,M.pD)(e);return s===pn?fn:`${fn}::${yn(s)}`}const Tn=(0,n.bh)(),Cn=new c.Ay({concurrency:5,intervalCap:5,interval:200}),Un=(0,v.C)("files","config",{folder_tree:!0}).folder_tree;let Sn=(0,v.C)("files","config",{show_hidden:!1}).show_hidden;const Ln=new n.Ss({id:fn,name:(0,l.t)("files","Folder tree"),caption:(0,l.t)("files","List of your files and folders."),icon:G,order:50,getContents:bn,async loadChildViews(e){const s=e;if(!s.loading&&!s.loaded){s.loading=!0;try{const e=new URLSearchParams(window.location.search).get("dir")??"/";Fn(await kn(e,1,!0),e),s.loaded=!0,(0,g.B1)("files:node:created",Pn),(0,g.B1)("files:node:deleted",zn),(0,g.B1)("files:node:moved",jn),(0,g.B1)("files:config:updated",En)}finally{s.loading=!1}}}});async function Fn(e,s){const t=[];for(const n of e){const e=Tn.views.some(e=>e.id===`${fn}::${n.encodedSource}`);Sn||!n.basename.startsWith(".")?e||t.push(Nn(n,!(s!==n.path&&!s?.startsWith(n.path+"/"))||void 0)):e&&Tn.remove(`${fn}::${n.encodedSource}`)}Tn.register(...t)}function Nn(e,s){return{id:`${fn}::${e.encodedSource}`,parent:xn(e.source),expanded:s,loaded:s,name:e.displayName??e.displayname??e.basename,icon:dn,getContents:bn,loadChildViews:_n(e),params:{view:fn,fileid:String(e.fileid),dir:e.path}}}function _n(e){return async s=>{const t=s;if(!t.loading&&!t.loaded){t.loading=!0;try{await An(e.path),t.loaded=!0}finally{t.loading=!1}}}}async function An(e="/"){await Cn.add(async()=>{const s=(0,j._)((0,k.u)()).getNodesByPath(Tn.active.id,e);s.length>0?Fn(s.filter(e=>e.type===n.pt.Folder),e):Fn(await kn(e,2))})}function Pn(e){e.type===n.pt.Folder&&Fn([e])}function zn(e){e.type===n.pt.Folder&&function(e){const s=e.encodedSource;Tn.remove(s)}(e)}function jn({node:e,oldSource:s}){if(e.type!==n.pt.Folder)return;var t;t=s,Tn.remove(t),Fn([e]);const i=e.source.replace(pn,""),a=s.replace(pn,""),o=Tn.views.filter(e=>!!e.params?.dir&&!(0,M.ys)(e.params.dir,a)&&e.params.dir.startsWith(a));for(const s of o)s.parent=xn(e.source),s.params.dir=s.params.dir.replace(a,i)}async function En({key:e,value:s}){"show_hidden"===e&&(Sn=s,await An())}const In=(0,b.HW)()?.uid;function Bn(e){const s=e.attributes["mount-type"];return In===e.owner&&!["group","shared"].includes(s)}function Rn(e="/",s){return(0,Z.h)(e,s).then(e=>(e.contents=e.contents.filter(Bn),e))}var Wn=t(92829);const On="personal",Dn=Math.round(Date.now()/1e3-1209600),Hn=(0,v.C)("files","recent_limit",100);async function Mn(e="/",s){const t=C((0,k.u)()),a=s=>"/"!==e||t.userConfig.show_hidden||!s.dirname.split("/").some(e=>e.startsWith("."));try{const e=(await f.S.search("/",{signal:s.signal,details:!0,data:(0,i.Yr)(Dn,Hn)})).data.results.map(e=>(e.filename=e.filename.replace("/remote.php/dav",""),(0,i.pO)(e))).filter(a);return{folder:new n.vd({id:0,source:`${(0,i.EY)()}${(0,i.ei)()}`,root:(0,i.ei)(),owner:(0,b.HW)()?.uid||null,permissions:n.aX.READ}),contents:e}}catch(e){if(s.signal.aborted)throw u.A.info("Fetching recent files aborted"),new DOMException("Aborted","AbortError");throw u.A.error("Failed to fetch recent files",{error:e}),e}}const Vn=()=>{(0,n.bh)().register(new n.Ss({id:"recent",name:(0,l.t)("files","Recent"),caption:(0,l.t)("files","List of recently modified files and folders."),emptyTitle:(0,l.t)("files","No recently modified files"),emptyCaption:(0,l.t)("files","Files and folders you recently modified will show up here."),icon:'',order:10,defaultSortKey:"mtime",getContents:Mn}))};(Object.getOwnPropertyDescriptor(Vn,"name")||{}).writable||Object.defineProperty(Vn,"name",{value:"default",configurable:!0}),function(){const e=((0,o.F)()?.files?.file_conversions??[]).map(({to:e,from:s,displayName:t})=>({id:`convert-${s}-${e}`,displayName:()=>(0,l.t)("files","Save as {displayName}",{displayName:t}),iconSvgInline:()=>{return s=e,`\n\t\t\n\t`;var s},enabled:({nodes:e,folder:t})=>!((0,a.f)()&&!(t.permissions&n.aX.CREATE))&&e.every(e=>s===e.mime),exec:async({nodes:s})=>!!s[0]&&(async function(e,s){const t=(0,m.Cs)((0,l.t)("files","Converting file …"));try{const t=await p.add(()=>h(e,s));(0,m.Te)((0,l.t)("files","File successfully converted"));const n=await(0,f.t)(t.data.ocs.data.path);(0,g.Ic)("files:node:created",n);const i=t.data.ocs.data.fileId;window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:i.toString()},window.OCP.Files.Router.query)}catch(t){if((0,d.F0)(t)&&t.response?.data?.ocs?.meta?.message)return void(0,m.Qg)((0,l.t)("files","Failed to convert file: {message}",{message:t.response.data.ocs.meta.message}));u.A.error("Failed to convert file",{fileId:e,targetMimeType:s,error:t}),(0,m.Qg)((0,l.t)("files","Failed to convert file"))}finally{t.hideToast()}}(s[0].fileid,e),null),execBatch:async({nodes:s})=>(async function(e,s){const t=e.map(e=>p.add(()=>h(e,s))),n=(0,m.Cs)((0,l.t)("files","Converting files …"));try{const n=await Promise.allSettled(t),i=n.filter(e=>"rejected"===e.status);if(i.length>0){const t=i.map(e=>e.reason?.response?.data?.ocs?.meta?.message);return u.A.error("Failed to convert files",{fileIds:e,targetMimeType:s,messages:t}),1===new Set(t).size&&"string"==typeof t[0]?void(0,m.Qg)((0,l.t)("files","Failed to convert files: {message}",{message:t[0]})):i.length===e.length?void(0,m.Qg)((0,l.t)("files","All files failed to be converted")):1===i.length&&t[0]?void(0,m.Qg)((0,l.t)("files","One file could not be converted: {message}",{message:t[0]})):((0,m.Qg)((0,l.n)("files","%n file could not be converted","%n files could not be converted",i.length)),void(0,m.Te)((0,l.n)("files","%n file converted","%n files converted",e.length-i.length)))}(0,m.Te)((0,l.t)("files","Files converted"));const a=window.OCP.Files.Router.query.dir,o=n.filter(e=>"fulfilled"===e.status).map(e=>e.value.data.ocs.data.path).filter(e=>e.startsWith(a));u.A.debug("Files to fetch",{newPaths:o});const r=await Promise.all(o.map(e=>(0,f.t)(e)));r.forEach(e=>(0,g.Ic)("files:node:created",e));const d=n[0].value.data.ocs.data.fileId;window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:d.toString()},window.OCP.Files.Router.query)}catch(t){(0,m.Qg)((0,l.t)("files","Failed to convert files")),u.A.error("Failed to convert files",{fileIds:e,targetMimeType:s,error:t})}finally{n.hideToast()}}(s.map(e=>e.fileid).filter(Boolean),e),Array(s.length).fill(null)),parent:w}));(0,n.Gg)({id:w,displayName:()=>(0,l.t)("files","Save as …"),iconSvgInline:()=>'',enabled:s=>e.some(e=>e.enabled(s)),exec:async()=>null,order:25}),e.forEach(n.Gg)}(),(0,n.Gg)(z),(0,n.Gg)(B),(0,n.Gg)(me),(0,n.Gg)(Y),(0,n.Gg)(ie),(0,n.Gg)(le),(0,n.Gg)(de),(0,n.Gg)(ue),(0,n.Gg)(fe),(0,n.Gg)(pe),(0,n.zj)(sn),(0,n.zj)(ln),function(){let e;e=(0,a.f)()?(0,v.C)("files_sharing","templates",[]):(0,v.C)("files","templates",[]),e.forEach((e,s)=>{(0,n.zj)({id:`template-new-${e.app}-${s}`,displayName:e.label,iconSvgInline:e.iconSvgInline,enabled:e=>!e.attributes["is-encrypted"]&&0!==(e.permissions&n.aX.READ)&&0!==(e.permissions&n.aX.CREATE),order:11,async handler(s,t){const n=async function(e){if(null===nn){const s=document.createElement("div");s.id="template-picker",document.body.appendChild(s),nn=new x.Ay({render:s=>s(tn,{ref:"picker",props:{parent:e}}),methods:{open(...e){this.$refs.picker.open(...e)}},el:s})}return nn}(s),i=await en(`${e.label}${e.extension}`,t,{label:(0,l.Tl)("files","Filename"),name:e.label});null!==i&&(await n).open(i.trim(),e)}})})}(),!1===(0,a.f)()&&(async function(){const e=(0,n.bh)();e.register(new n.Ss({id:"favorites",name:(0,l.t)("files","Favorites"),caption:(0,l.t)("files","List of favorite files and folders."),emptyTitle:(0,l.t)("files","No favorites yet"),emptyCaption:(0,l.t)("files","Files and folders you mark as favorite will show up here"),icon:D,order:15,columns:[],getContents:mn}));const s=new AbortController,t=(await mn("",{signal:s.signal})).contents.filter(e=>e.type===n.pt.Folder),i=t.map((e,s)=>gn(e,s));u.A.debug("Generating favorites view",{favoriteFolders:t}),i.forEach(s=>e.register(s)),(0,g.B1)("files:favorites:added",e=>{e.type===n.pt.Folder&&(null!==e.path&&e.root?.startsWith("/files")?o(e):u.A.error("Favorite folder is not within user files root",{node:e}))}),(0,g.B1)("files:favorites:removed",e=>{e.type===n.pt.Folder&&(null!==e.path&&e.root?.startsWith("/files")?r(e.path):u.A.error("Favorite folder is not within user files root",{node:e}))}),(0,g.B1)("files:node:renamed",e=>{e.type===n.pt.Folder&&1===e.attributes.favorite&&function(e){const s=t.find(s=>s.fileid===e.fileid);void 0!==s&&(r(s.path),o(e))}(e)});const a=function(){t.sort((e,s)=>e.basename.localeCompare(s.basename,[(0,l.Z0)(),(0,l.lO)()],{ignorePunctuation:!0,numeric:!0,usage:"sort"})),t.forEach((e,s)=>{const t=i.find(s=>s.id===cn(e.path));t&&(t.order=s)})};function o(s){const n=gn(s);t.find(e=>e.path===s.path)||(t.push(s),i.push(n),a(),e.register(n))}function r(s){const n=cn(s),o=t.findIndex(e=>e.path===s);-1!==o&&(t.splice(o,1),i.splice(o,1),e.remove(n),a())}a()}(),(0,un.g)(),(0,Wn.L)()&&(0,n.bh)().register(new n.Ss({id:On,name:(0,l.t)("files","Personal files"),caption:(0,l.t)("files","List of your files and folders that are not shared."),emptyTitle:(0,l.t)("files","No personal files found"),emptyCaption:(0,l.t)("files","Files that are not shared will show up here."),icon:'',order:(0,Wn.P)()===On?0:5,getContents:Rn})),Vn(),(0,re.d)(),async function(){Un&&Tn.register(Ln)}()),(0,n.cZ)(new ve),function(){const e=(0,be.A)(x.Ay,Mt);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),window.customElements.define(Yt,e),(0,n.cZ)(new qt)}(),function(){const e=(0,be.A)(x.Ay,Pt);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),customElements.define(jt,e),(0,n.cZ)(new Et)}(),(0,n.cZ)(new we),(0,n.SX)({id:"files-favorite",order:0,enabled:({node:e})=>e.isDavResource&&e.root.startsWith("/files/"),displayName:({node:e})=>e.attributes.favorite?(0,l.t)("files","Unfavorite"):(0,l.t)("files","Favorite"),iconSvgInline:({node:e})=>e.attributes.favorite?H:D,onClick({node:e,view:s}){q(e,s,!e.attributes.favorite)}}),rn(),(0,i.Yc)("nc:hidden",{nc:"http://nextcloud.org/ns"}),(0,i.Yc)("nc:is-mount-root",{nc:"http://nextcloud.org/ns"}),(0,i.Yc)("nc:metadata-blurhash",{nc:"http://nextcloud.org/ns"}),(0,i.Yc)("nc:metadata-files-live-photo",{nc:"http://nextcloud.org/ns"}),window._nc_newfilemenu=new Proxy((0,n.id)(),{get:(e,s)=>e[s],set:(e,s,t)=>(e[s]=t,!0)})},84560(e,s,t){"use strict";t.d(s,{A:()=>n});const n=(0,t(35947).YK)().setApp("files").detectUser().build()},14668(e,s,t){"use strict";t.d(s,{h:()=>g});var n=t(77815),i=t(43627),a=t(84560),o=t(88975),l=t(88140),r=t(78246),d=t(99201),m=t(46502);async function g(e="/",s){const t=(0,r.j)((0,l.u)());return t.query.length<3?await async function(e,s){e=(0,i.join)((0,n.ei)(),e);const t=(0,n.aN)(),o=await d.S.getDirectoryContents(e,{details:!0,data:t,includeSelf:!0,signal:s?.signal}),l=o.data[0],r=o.data.slice(1);if(l?.filename!==e&&`${l?.filename}/`!==e)throw a.A.debug(`Exepected "${e}" but got filename "${l.filename}" instead.`),new Error("Root node does not match requested path");return{folder:(0,n.pO)(l),contents:r.map(e=>{try{return(0,n.pO)(e)}catch(s){return a.A.error(`Invalid node detected '${e.basename}'`,{error:s}),null}}).filter(Boolean)}}(e,s):await async function(e,s,t){let a=(0,o._)((0,l.u)()).getDirectoryByPath("files",e);if(!a){const s=(0,i.join)((0,n.ei)(),e),t=await d.S.stat(s,{details:!0});a=(0,n.pO)(t.data)}return{folder:a,contents:await(0,m.E)(s,{dir:e,signal:t})}}(e,t.query,s?.signal)}},46502(e,s,t){"use strict";t.d(s,{E:()=>m});var n=t(21777),i=t(77815),a=t(63814),o=t(70580),l=t.n(o),r=t(84560),d=t(99201);async function m(e,{dir:s,signal:t}){const o=(0,n.HW)();if(!o)return[];if((e=e.trim()).length<3)return[];s&&!s.startsWith("/")&&(s=`/${s}`),r.A.debug("Searching for nodes",{query:e,dir:s});const{data:m}=await d.S.search("/",{details:!0,signal:t,data:`\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${(0,i.VX)()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${o.uid}${s?l()(s):""}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${e.replace("%","")}%\n\t\t\t \n\t\t \n\t\t \n\t\n`});return t?.aborted?[]:m.results.map(e=>(0,i.pO)(e,i.VA,(0,a.$_)()))}},99201(e,s,t){"use strict";t.d(s,{S:()=>i,t:()=>a});var n=t(77815);const i=(0,n.KU)();async function a(e){const s=(0,n.aN)(),t=await i.stat(`${(0,n.ei)()}${e}`,{details:!0,data:s});return(0,n.pO)(t.data)}},39992(e,s,t){"use strict";t.d(s,{F:()=>g});var n=t(21777),i=t(61338),a=t(35810),o=t(77815),l=t(10810),r=t(85471),d=t(84560);const m=new a.vd({id:0,source:(0,o.EY)()+(0,o.ei)(),root:(0,o.ei)(),owner:(0,n.HW)()?.uid||null,permissions:a.aX.NONE}),g=(0,l.nY)("active",()=>{const e=(0,r.IJ)(),s=(0,r.KR)(),t=(0,r.IJ)(),n=(0,r.KR)(m);function o(e){s.value&&s.value.source===e.source&&(s.value=void 0)}function l(e=null){d.A.debug("Setting active view",{view:e}),t.value=e??void 0,s.value=void 0}return(0,r.wB)(s,()=>{"number"==typeof s.value?.fileid&&s.value.fileid!==n.value?.fileid&&(d.A.debug("Updating active fileid in URL query",{fileid:s.value.fileid}),window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:String(s.value.fileid)},{...window.OCP.Files.Router.query},!0))}),function(){const e=(0,a.bh)();l(e.active),(0,i.B1)("files:node:deleted",o),e.addEventListener("updateActive",e=>{l(e.detail)})}(),{activeAction:e,activeFolder:n,activeNode:s,activeView:t}})},88975(e,s,t){"use strict";t.d(s,{_:()=>d});var n=t(61338),i=t(10810),a=t(85471),o=t(84560),l=t(99201),r=t(16488);const d=(0,i.nY)("files",()=>{const e=(0,a.KR)({}),s=(0,a.KR)({});function t(s){return e.value[s]}function i(s){return s.map(s=>e.value[s]).filter(Boolean)}function d(s){return Object.values(e.value).filter(e=>e.id===s)}function m(e){return s.value[e]}function g(e,s){const n=(0,r.B)();let i;if(s&&"/"!==s){const a=n.getPath(e,s);a&&(i=t(a))}else i=m(e);return i}function c(s){const t=s.reduce((s,t)=>e.value[t.source]?.id&&!t.id?(o.A.error("Trying to update/set a node without id",{node:t}),s):(s[t.source]=t,s),{});e.value={...e.value,...t}}function u(s){const t=Object.entries(e.value).filter(([,e])=>!s.some(s=>s.source===e.source));e.value=Object.fromEntries(t)}return(0,n.B1)("files:node:created",function(e){c([e])}),(0,n.B1)("files:node:deleted",function(e){u([e])}),(0,n.B1)("files:node:updated",async function(e){const s=e.id?d(e.id):i([e.source]);if(s.length>1)return await Promise.all(s.map(e=>(0,l.t)(e.path))).then(c),void o.A.debug(s.length+" nodes updated in store",{fileid:e.id,source:e.source});1!==s.length||e.source!==s[0].source?(0,l.t)(e.path).then(e=>c([e])):c([e])}),(0,n.B1)("files:node:moved",function({node:s,oldSource:t}){delete e.value[t],c([s])}),(0,n.B1)("files:favorites:added",function(e){const s=t(e.source);s&&a.Ay.set(s.attributes,"favorite",1)}),(0,n.B1)("files:favorites:removed",function(e){const s=t(e.source);s&&a.Ay.set(s.attributes,"favorite",0)}),{files:e,roots:s,deleteNodes:u,getDirectoryByPath:g,getNode:t,getNodes:i,getNodesById:d,getNodesByPath:function(e,s){const n=g(e,s);return(n?._children??[]).map(e=>t(e)).filter(Boolean)},getRoot:m,setRoot:function({service:e,root:t}){s.value={...s.value,[e]:t}},updateNodes:c}})},88140(e,s,t){"use strict";t.d(s,{u:()=>i});var n=t(10810);function i(){return window._nc_files_pinia||(window._nc_files_pinia=(0,n.Ey)()),window._nc_files_pinia}},16488(e,s,t){"use strict";t.d(s,{B:()=>m});var n=t(61338),i=t(35810),a=t(71225),o=t(10810),l=t(85471),r=t(84560),d=t(88975);function m(...e){const s=(0,d._)(...e),t=(0,o.nY)("paths",{state:()=>({paths:{}}),getters:{getPath:e=>(s,t)=>{if(e.paths[s])return e.paths[s][t]}},actions:{addPath(e){this.paths[e.service]||l.Ay.set(this.paths,e.service,{}),l.Ay.set(this.paths[e.service],e.path,e.source)},deletePath(e,s){this.paths[e]&&l.Ay.delete(this.paths[e],s)},onCreatedNode(e){const s=(0,i.bh)()?.active?.id||"files";e.fileid?(e.type===i.pt.Folder&&this.addPath({service:s,path:e.path,source:e.source}),this.addNodeToParentChildren(e)):r.A.error("Node has no fileid",{node:e})},onDeletedNode(e){const s=(0,i.bh)()?.active?.id||"files";e.type===i.pt.Folder&&this.deletePath(s,e.path),this.deleteNodeFromParentChildren(e)},onMovedNode({node:e,oldSource:s}){const t=(0,i.bh)()?.active?.id||"files";if(e.type===i.pt.Folder){const n=Object.entries(this.paths[t]).find(([,e])=>e===s);n?.[0]&&this.deletePath(t,n[0]),this.addPath({service:t,path:e.path,source:e.source})}const n=new i.ZH({source:s,owner:e.owner,mime:e.mime,root:e.root});this.deleteNodeFromParentChildren(n),this.addNodeToParentChildren(e)},deleteNodeFromParentChildren(e){const t=(0,i.bh)()?.active?.id||"files",n=(0,a.pD)(e.source),o="/"===e.dirname?s.getRoot(t):s.getNode(n);if(o){const s=new Set(o._children??[]);return s.delete(e.source),l.Ay.set(o,"_children",[...s.values()]),void r.A.debug("Children updated",{parent:o,node:e,children:o._children})}r.A.debug("Parent path does not exists, skipping children update",{node:e})},addNodeToParentChildren(e){const t=(0,i.bh)()?.active?.id||"files",n=(0,a.pD)(e.source),o="/"===e.dirname?s.getRoot(t):s.getNode(n);if(o){const s=new Set(o._children??[]);return s.add(e.source),l.Ay.set(o,"_children",[...s.values()]),void r.A.debug("Children updated",{parent:o,node:e,children:o._children})}r.A.debug("Parent path does not exists, skipping children update",{node:e})}}})(...e);return t._initialized||((0,n.B1)("files:node:created",t.onCreatedNode),(0,n.B1)("files:node:deleted",t.onDeletedNode),(0,n.B1)("files:node:moved",t.onMovedNode),t._initialized=!0),t}},78246(e,s,t){"use strict";t.d(s,{j:()=>d});var n=t(61338),i=t(46855),a=t(10810),o=t(85471),l=t(84560),r=t(37365);const d=(0,a.nY)("search",()=>{const e=(0,o.KR)(""),s=(0,o.KR)("filter");(0,o.wB)(s,a),(0,o.wB)(e,(e,s)=>{e.trim()!==s.trim()&&a()}),function(){(0,n.B1)("files:navigation:changed",d);const t=window.OCP.Files.Router;t.params.view===r.w&&(e.value=[t.query.query].flat()[0]??"",e.value?(s.value="globally",l.A.debug("Directly navigated to search view",{query:e.value})):(l.A.info("Directly navigated to search view without any query, redirect to files view."),t.goToRoute(void 0,{...t.params,view:"files"},{...t.query,query:void 0},!0)))}();const t=(0,i.A)(s=>{window.OCP.Files.Router.goToRoute(void 0,{view:r.w},{query:e.value},s)});function a(){(0,n.Ic)("files:search:updated",{query:e.value,scope:s.value});const i=window.OCP.Files.Router;if(i.params.view===r.w&&(""===e.value||"filter"===s.value))return s.value="filter",i.goToRoute(void 0,{view:"files"},{...i.query,query:void 0});if("filter"===s.value||!e.value)return;const a=i.params.view===r.w;l.A.debug("Update route for updated search query",{query:e.value,isSearch:a}),t(a)}function d(t){t.id!==r.w&&(e.value="",s.value="filter")}return{query:e,scope:s}})},92829(e,s,t){"use strict";t.d(s,{L:()=>i,P:()=>a});var n=t(81222);function i(){return 0!==(0,n.C)("files","storageStats",{quota:-1}).quota}function a(){const{default_view:e}=(0,n.C)("files","config",{default_view:"files"});return"personal"!==e||i()?e:"files"}},66480(e,s,t){"use strict";t.d(s,{g:()=>g,w:()=>m});var n=t(43690),i=t(61338),a=t(35810),o=t(53334),l=t(14668),r=t(39992),d=t(92829);const m="files";function g(){let e="";const s=(0,a.bh)();s.register(new a.Ss({id:m,name:(0,o.t)("files","All files"),caption:(0,o.t)("files","List of your files and folders."),icon:n,order:(0,d.P)()===m?0:5,getContents:l.h})),(0,i.B1)("files:search:updated",({scope:t,query:n})=>{if("globally"===t)return;if(s.active?.id!==m)return;if(e.length<3&&n.length<3)return;const a=(0,r.F)();a.activeFolder&&(e=n,(0,i.Ic)("files:node:updated",a.activeFolder))})}},37365(e,s,t){"use strict";t.d(s,{w:()=>f,d:()=>p});var n=t(35810),i=t(53334),a=t(85471),o=t(21777),l=t(77815),r=t(84560),d=t(88140),m=t(78246),g=t(46502);async function c(e,s){const t=(0,m.j)((0,d.u)());try{return{contents:await(0,g.E)(t.query,{signal:s.signal}),folder:new n.vd({id:0,source:`${l.Xn}${(0,l.ei)()}}#search`,owner:(0,o.HW)().uid,permissions:n.aX.READ,root:(0,l.ei)()})}}catch(e){if(s.signal.aborted)throw r.A.info("Fetching search results aborted"),new DOMException("Aborted","AbortError");throw r.A.error("Failed to fetch search results",{error:e}),e}}var u=t(66480);const f="search";function p(){let e,s;(0,n.bh)().register(new n.Ss({id:f,name:(0,i.t)("files","Search"),caption:(0,i.t)("files","Search results within your files."),async emptyView(n){s?e.$destroy():s=(await Promise.all([t.e(4208),t.e(1035)]).then(t.bind(t,91035))).default,e=new a.Ay(s),e.$mount(n)},icon:'',order:10,parent:u.w,expanded:!0,hidden:!0,getContents:c}))}},75689(e,s,t){"use strict";t.d(s,{A:()=>l});var n=t(71354),i=t.n(n),a=t(76314),o=t.n(a)()(i());o.push([e.id,".files-list-filter-time__clear-button[data-v-2841ff92] .action-button__text{color:var(--color-error-text)}","",{version:3,sources:["webpack://./apps/files/src/components/FileListFilter/FileListFilterModified.vue"],names:[],mappings:"AAEC,4EACC,6BAAA",sourcesContent:["\n.files-list-filter-time {\n\t&__clear-button :deep(.action-button__text) {\n\t\tcolor: var(--color-error-text);\n\t}\n}\n"],sourceRoot:""}]);const l=o},78224(e,s,t){"use strict";t.d(s,{A:()=>l});var n=t(71354),i=t.n(n),a=t(76314),o=t.n(a)()(i());o.push([e.id,"\n.new-node-dialog__form[data-v-77bf0406] {\n\t/* Ensure the dialog does not jump when there is a validity error */\n\tmin-height: calc(2 * var(--default-clickable-area));\n}\n","",{version:3,sources:["webpack://./apps/files/src/components/NewNodeDialog.vue"],names:[],mappings:";AAwKA;CACA,mEAAA;CACA,mDAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n\n\\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._fileListFilterType_Aeab3 {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--default-grid-baseline);\n\twidth: 100%;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilterType.vue\"],\"names\":[],\"mappings\":\";AA+JA;CACA,aAAA;CACA,sBAAA;CACA,iCAAA;CACA,WAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilterType\": `_fileListFilterType_Aeab3`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\")) {\n permissions |= Permission.WRITE;\n }\n if (permString.includes(\"CK\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"NV\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n}\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n if (scopedGlobals.davProperties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n scopedGlobals.davProperties.push(prop);\n scopedGlobals.davNamespaces = namespaces;\n return true;\n}\nfunction getDavProperties() {\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n}\nasync function getFavoriteNodes(options = {}) {\n const client = options.client ?? getClient();\n const path = options.path ?? \"/\";\n const davRoot = options.davRoot ?? defaultRootPath;\n const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n signal: options.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n defaultDavNamespaces,\n defaultDavProperties,\n defaultRemoteURL,\n defaultRootPath,\n getClient,\n getDavNameSpaces,\n getDavProperties,\n getDefaultPropfind,\n getFavoriteNodes,\n getFavoritesReport,\n getRecentSearch,\n getRemoteURL,\n getRootPath,\n parsePermissions,\n registerDavProperty,\n resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","import '../assets/index-BGmULkk-.css';\nimport { getSharingToken, isPublicShare } from \"@nextcloud/sharing/public\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport { formatFileSize, Folder, davRemoteURL, davRootPath, Permission, FileType, davGetClient, validateFilename, InvalidFilenameError, getUniqueName, getNewFileMenuEntries, NewMenuEntryCategory } from \"@nextcloud/files\";\nimport { basename, encodePath } from \"@nextcloud/paths\";\nimport { normalize } from \"path\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport axios, { isCancel } from \"@nextcloud/axios\";\nimport PCancelable from \"p-cancelable\";\nimport PQueue from \"p-queue\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getBaseUrl, generateRemoteUrl } from \"@nextcloud/router\";\nimport axiosRetry, { exponentialDelay, isNetworkOrIdempotentRequestError } from \"axios-retry\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport Vue, { defineAsyncComponent, defineComponent } from \"vue\";\nimport { showInfo, showWarning } from \"@nextcloud/dialogs\";\nimport { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { useHotKey } from \"@nextcloud/vue/dist/Composables/useHotKey.js\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport NcActionCaption from \"@nextcloud/vue/dist/Components/NcActionCaption.js\";\nimport NcActionSeparator from \"@nextcloud/vue/dist/Components/NcActionSeparator.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/dist/Components/NcIconSvgWrapper.js\";\nimport NcProgressBar from \"@nextcloud/vue/dist/Components/NcProgressBar.js\";\nconst gtBuilder = getGettextBuilder().detectLocale();\n[{ \"locale\": \"af\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"af\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: af\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ar\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Ali , 2025\", \"Language-Team\": \"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ar\", \"Plural-Forms\": \"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nabu.s3ud, 2024\\nAli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Ali , 2025\\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ar\\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" هو اسم ممنوع لملف أو مجلد.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" هو نوع ممنوع أن يكون لملف.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" هو غير مسموح به في اسم ملف أو مجلد.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ملف متعارض\", \"{count} ملف متعارض\", \"{count} ملفان متعارضان\", \"{count} ملف متعارض\", \"{count} ملفات متعارضة\", \"{count} ملفات متعارضة\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ملف متعارض في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفان متعارضان في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفات متعارضة في {dirname}\", \"{count} ملفات متعارضة في {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} متبقية\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"بضع ثوانٍ متبقية\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"تجميع\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"إلغاء\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"إلغِ العملية بالكامل\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"إلغاء عمليات رفع الملفات\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"إستمر\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"إنشاء جديد\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تقدير الوقت المتبقي\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"الإصدار الحالي\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"تعذّرت إعادة تجميع الكتل معاً \"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"تعذّر رفع الملف\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['غير مسموح ان ينتهي اسم الملف بـ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"اسم ملف غير صحيح\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"تاريخ آخر تعديل غير معروف\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"اسم ملف جديد\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخة جديدة\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مُجمَّد\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"معاينة الصورة\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغيير التسمية\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"حدِّد كل صناديق الخيارات\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"حدِّد كل الملفات الموجودة\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"حدِّد كل الملفات الجديدة\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"تخطِّي\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"حجم غير معلوم\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"رفع الملفات\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"رفع ملفات\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"رفع مجلدات\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"الرفع من جهاز \"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"تمّ إلغاء عملية رفع الملفات\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"تمّ تجاوز الرفع\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['رفع \"{folder}\" تمّ تجاوزه'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"تقدُّم الرفع \"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"أيُّ الملفات ترغب في الإبقاء عليها؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار.\"] } } } } }, { \"locale\": \"ast\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"enolp , 2023\", \"Language-Team\": \"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ast\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nenolp , 2023\\n\" }, \"msgstr\": [\"Last-Translator: enolp , 2023\\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ast\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ficheru en coflictu\", \"{count} ficheros en coflictu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ficheru en coflictu en {dirname}\", \"{count} ficheros en coflictu en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Tiempu que queda: {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden unos segundos\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Encaboxar les xubes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Siguir\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando'l tiempu que falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión esistente\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"La data de la última modificación ye desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en posa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar la imaxe\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar toles caxelles\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleicionar tolos ficheros esistentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleicionar tolos ficheros nuevos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar esti ficheru\", \"Saltar {count} ficheros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamañu desconocíu\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Encaboxóse la xuba\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Xubir ficheros\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Xuba en cursu\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué ficheros quies caltener?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Tienes de seleicionar polo menos una versión de cada ficheru pa siguir.\"] } } } } }, { \"locale\": \"az\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rashad Aliyev , 2023\", \"Language-Team\": \"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"az\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRashad Aliyev , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rashad Aliyev , 2023\\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: az\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniyə qalıb\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} qalıb\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir neçə saniyə qalıb\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Əlavə et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yükləməni imtina et\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Təxmini qalan vaxt\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauzadadır\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Faylları yüklə\"] } } } } }, { \"locale\": \"be\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"be\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: be\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bg\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bg_BG\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bg_BG\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bn_BD\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bn_BD\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bn_BD\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"br\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"br\", \"Plural-Forms\": \"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: br\\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bs\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bs\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ca\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Leandro Navarro , 2025\", \"Language-Team\": \"Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ca\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nv v , 2025\\nLeandro Navarro , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Leandro Navarro , 2025\\nLanguage-Team: Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ca\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" és un nom de fitxer o carpeta prohibit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" és un tipus de fitxer prohibit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no és permès dins del nom de fitxer o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fitxer en conflicte\", \"{count} fitxer en conflicte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicte de fitxers a {dirname}\", \"{count} conflictes de fitxers a {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segon restant\", \"{seconds} segons restants\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Queden {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden uns segons\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblatge\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar l'operació sencera\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel·la les pujades\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nou\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"s’està estimant el temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"No s'han pogut acoblar els trossos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"No s'ha pogut pujar el fitxer\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Els noms de fitxer no han d'acabar en \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fitxer no vàlid\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de la darrera modificació desconeguda\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nou nom de fitxer\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Imatge de vista prèvia\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Canviar el nom\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccioneu totes les caselles de selecció\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccioneu tots els fitxers existents\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccioneu tots el fitxers nous\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omet {count} fitxer\", \"Omet {count} fitxers\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Mida desconeguda\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Pujar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Puja els fitxers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Pujar les carpetes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Pujada des del dispositiu\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La pujada s'ha cancel·lat\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"S'ha omès la pujada\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [`S'ha omès la pujada de \"{folder}\"`] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Procés de pujada\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, també es sobreescriuran els fitxers en conflicte dins d'ella.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers vols conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Podeu canviar el nom del fitxer, saltar aquest fitxer o cancel·lar tota l'operació.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar almenys una versió de cada fitxer per continuar.\"] } } } } }, { \"locale\": \"cs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Pavel Borecki , 2025\", \"Language-Team\": \"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cs_CZ\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMichal Šmahel , 2024\\nMartin Hankovec, 2024\\nAppukonrad , 2024\\nPavel Borecki , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Pavel Borecki , 2025\\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs_CZ\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít jako název souboru či složky.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ není povoleného typu souboru.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít v rámci názvu souboru či složky.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} kolize souborů\", \"{count} kolize souborů\", \"{count} kolizí souborů\", \"{count} kolize souborů\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} kolize souboru v {dirname}\", \"{count} kolize souboru v {dirname}\", \"{count} kolizí souborů v {dirname}\", \"{count} kolize souboru v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"zbývá {seconds}\", \"zbývají {seconds}\", \"zbývá {seconds}\", \"zbývají {seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"zbývá {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zbývá několik sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sestavování\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušit\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušit nahrávání\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvořit nový\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhaduje se zbývající čas\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Shluky se nepodařilo dát dohromady\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Soubor se nepodařilo nahrát\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Názvy souborů nemohou končit na „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný název souboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Neznámé datum poslední úpravy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový název souboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastaveno\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhled obrázku\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Přejmenovat\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označit všechny zaškrtávací kolonky\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat veškeré stávající soubory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat veškeré nové soubory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Přeskočit\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Přeskočit {count} soubor\", \"Přeskočit {count} soubory\", \"Přeskočit {count} souborů\", \"Přeskočit {count} soubory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznámá velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrát\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrát soubory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrát složky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrát ze zařízení\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávání bylo zrušeno\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrání bylo přeskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Nahrání „{folder}“ bylo přeskočeno\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postup v nahrávání\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory si přejete ponechat?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] } } } } }, { \"locale\": \"cy_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cy_GB\", \"Plural-Forms\": \"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cy_GB\\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"da\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Finn Sommer , 2025\", \"Language-Team\": \"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"da\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRasmus Rosendahl-Kaa, 2024\\nMartin Bonde , 2025\\nFinn Sommer , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Finn Sommer , 2025\\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: da\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tilladt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fil konflikt\", \"{count} filer i konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fil konflikt i {dirname}\", \"{count} filer i konflikt i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{sekunder} sekunder tilbage\", \"{sekunder} sekunder tilbage\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tilbage\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"et par sekunder tilbage\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuller\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuller hele handlingen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuller uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opret ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimering af resterende tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Mislykkedes at samle stumperne sammen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunne ikke uploade filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavne må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldigt filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Sidste modifikationsdato ukendt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nyt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvisning af billede\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøb\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vælg alle felter\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Spring over\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Spring {count} fil over\", \"Spring {count} fil over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukendt størrelse\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload fra enhed\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload er blevet annulleret\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload er blevet sprunget over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload af \"{folder}\" er blevet sprunget over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload fremskridt\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer ønsker du at beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] } } } } }, { \"locale\": \"de\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (https://app.transifex.com/nextcloud/teams/64236/de/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndy Scherzinger , 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchtest du behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"de_DE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de_DE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de_DE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchten Sie behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"el\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Γιάννος, 2025\", \"Language-Team\": \"Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"el\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nEfstathios Iosifidis , 2025\\nΓιάννος, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Γιάννος, 2025\\nLanguage-Team: Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: el\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" είναι απαγορευμένο όνομα αρχείου ή φακέλου.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Το \"{segment}\" είναι απαγορευμένος τύπος αρχείου.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Το \"{segment}\" δεν επιτρέπεται μέσα στο όνομα ενός αρχείου ή φακέλου.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} αρχείο σε διένεξη\", \"{count} αρχεία σε διένεξη\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} αρχείο σε διένεξη στον φάκελο {dirname}\", \"{count} αρχεία σε διένεξη στον φάκελο {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Απομένει {seconds} δευτερόλεπτο\", \"Απομένουν {seconds} δευτερόλεπτα\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"απομένουν {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"απομένουν λίγα δευτερόλεπτα\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"συναρμολόγηση\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της λειτουργίας\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ακύρωση μεταφορτώσεων\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Δημιουργία νέου\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"εκτίμηση του χρόνου που απομένει\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Υπάρχουσα έκδοση\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Αποτυχία συναρμολόγησης των κομματιών\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Αποτυχία μεταφόρτωσης του αρχείου\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Τα ονόματα αρχείων δεν πρέπει να τελειώνουν με \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Αν επιλέξετε και τις δύο εκδόσεις, το εισερχόμενο αρχείο θα έχει έναν αριθμό προσαρτημένο στο όνομά του.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Μη έγκυρο όνομα αρχείου\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Νέο όνομα αρχείου\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"σε παύση\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Προεπισκόπηση εικόνας\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Μετονομασία\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλογή όλων των πλαισίων ελέγχου\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπαρχόντων αρχείων\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Παράλειψη\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Παράλειψη {count} αρχείου\", \"Παράλειψη {count} αρχείων\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παραλείψτε αυτό το αρχείο\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Άγνωστο μέγεθος\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Μεταφόρτωση\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Μεταφόρτωση αρχείων\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Μεταφόρτωση φακέλων\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Μεταφόρτωση από συσκευή\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Η μεταφόρτωση ακυρώθηκε\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Η μεταφόρτωση παραλείφθηκε\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Η μεταφόρτωση του \"{folder}\" παραλείφθηκε'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Πρόοδος μεταφόρτωσης\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, όλα τα αρχεία σε διένεξη μέσα σε αυτόν θα αντικατασταθούν.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, το περιεχόμενό του γράφεται στον υπάρχοντα φάκελο και εκτελείται αναδρομική επίλυση διενέξεων.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Μπορείτε είτε να μετονομάσετε το αρχείο, να παραλείψετε αυτό το αρχείο ή να ακυρώσετε όλη τη λειτουργία.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση κάθε αρχείου για να συνεχίσετε.\"] } } } } }, { \"locale\": \"en_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andi Chandler , 2025\", \"Language-Team\": \"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"en_GB\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndi Chandler , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Andi Chandler , 2025\\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: en_GB\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is a forbidden file or folder name.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is a forbidden file type.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is not allowed inside a file or folder name.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} files conflict\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} file conflicts in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconds left\", \"{seconds} seconds left\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} left\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"a few seconds left\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assembling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Create new\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimating time left\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Failed to assemble the chunks together\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Failed to upload the file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filenames must not end with \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Invalid filename\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"New filename\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"paused\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Preview image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rename\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Skip\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip {count} file\", \"Skip {count} files\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unknown size\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload files\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload folders\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload from device\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload has been cancelled\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload has been skipped\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload of \"{folder}\" has been skipped'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload progress\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"You can either rename the file, skip this file or cancel the whole operation.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] } } } } }, { \"locale\": \"eo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Julio C. Ortega, 2025\", \"Language-Team\": \"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFranciscoFJ , 2024\\nJulio C. Ortega, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Julio C. Ortega, 2025\\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" es un nombre de archivo o carpeta no permitido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" es un tipo de archivo no permitido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no está permitido dentro del nombre de un archivo o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"queda {seconds} segundo\", \"quedan {seconds} segundos\", \"quedan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Fallo al ensamblar todas las partes juntas\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fallo al cargar el archivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Los nombres de archivo no deben terminar en \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuevo nombre de archivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Cargar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"La carga fue omitida\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['La carga de \"{folder}\" ha sido omitida'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Puede o bien, renombrar el archivo, omitirlo, o, cancelar toda la operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_419\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ALEJANDRO CASTRO, 2022\", \"Language-Team\": \"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_419\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nALEJANDRO CASTRO, 2022\\n\" }, \"msgstr\": [\"Last-Translator: ALEJANDRO CASTRO, 2022\\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_419\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"agregar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] } } } } }, { \"locale\": \"es_AR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Matías Campo Hoet , 2024\", \"Language-Team\": \"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_AR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMatías Campo Hoet , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Matías Campo Hoet , 2024\\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_AR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa de imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Cargar archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Cargar carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Cargar desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Carga cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la carga\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_CL\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CL\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CL\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_DO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_DO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_DO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_EC\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_EC\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_EC\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_GT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_GT\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_GT\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_HN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_HN\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_HN\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_MX\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jehu Marcos Herrera Puentes, 2024\", \"Language-Team\": \"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_MX\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJehu Marcos Herrera Puentes, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Jehu Marcos Herrera Puentes, 2024\\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_MX\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿Cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} archivos en conflicto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} archivo en conflicto en {dirname}\", \"{count} archivos en conflicto en {dirname}\", \"{count} archivo en conflicto en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Cuáles archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_NI\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_NI\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_NI\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PA\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PA\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PA\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PE\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PE\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_SV\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_SV\", \"Plural-Forms\": \"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_SV\\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_UY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_UY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_UY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"et_EE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Priit Jõerüüt , 2025\", \"Language-Team\": \"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"et_EE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPriit Jõerüüt , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Priit Jõerüüt , 2025\\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: et_EE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ on keelatud faili- või kausta nimi.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ on keelatud failitüüp.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ pole faili- või kausta nimes lubatud.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fail on vastuolus\", \"{count} faili on vastuolus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail on vastuolus „{dirname}“ kaustas\", \"{count} faili on vastuolus „{dirname}“ kaustas\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"jäänud {seconds} sekund\", \"jäänud {seconds} sekundit\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"aega jäänud {time} \"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"jäänud mõni sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"koostamisel\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Katkesta üleslaadimine\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Loo uus\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hinnanguline järelejäänud aeg\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Tükkide koostamine üheks tervikuks ei õnnestunud\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Faili üleslaadimine ei õnnestunud\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Failinime lõpus ei tohi olla „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui sa valid mõlemad versioonid, lisatakse kopeeritud faili nimele number.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Vigane failinimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uus failinimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausil\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vaata pildi eelvaadet\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Muuda nime\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Jäta vahele\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Jäta vahele {count} fail\", \"Jäta vahele {count} faili\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta vahele see fail\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tundmatu suurus\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Laadi üles\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Laadi failid üles\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Laadi kaustad üles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Laadi üles seadmest\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Üleslaadimine on katkestatud\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Üleslaadimine on vahele jäetud\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}“ kausta üleslaadimine on vahele jäetud\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Üleslaadimise edenemine\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis seal asuvad vastuoluliste nimedega failid kirjutatakse samuti üle.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja käivitatakse rekursiivne vastuolude haldus.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Milliseid faile soovid säilitada?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sa võid kas faili nime muuta, ta vahele jätta või kogu tegevuse katkestada.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamiseks pead valima vähemalt ühe versiooni igast failist.\"] } } } } }, { \"locale\": \"eu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Unai Tolosa Pontesta , 2022\", \"Language-Team\": \"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eu\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nUnai Tolosa Pontesta , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Unai Tolosa Pontesta , 2022\\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eu\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo geratzen dira\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} geratzen da\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"segundo batzuk geratzen dira\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Gehitu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ezeztatu igoerak\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"kalkulatutako geratzen den denbora\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"geldituta\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Igo fitxategiak\"] } } } } }, { \"locale\": \"fa\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Alireza Rashidi, 2025\", \"Language-Team\": \"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fa\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nreza reza , 2024\\nAlireza Rashidi, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Alireza Rashidi, 2025\\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fa\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"{segment} یک نام فایل یا پوشه ممنوعه است.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"{segment} یک نوع فایل ممنوعه است.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"{segment} داخل نام فایل یا پوشه مجاز نیست.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} تداخل فایل\", \"{count} تداخل فایل‌ها\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} پرونده با {dirname} ناسازگاری داشت\", \"{count} پرونده با {dirname} ناسازگاری داشت\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} ثانیه مانده\", \"{seconds} ثانیه مانده\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} باقی مانده\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"چند ثانیه مانده\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"سرهم کردن\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"رد کردن\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"رد کردن کل عملیات\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"رد کردن بارگذاری\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ادامه\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ساخت جدید\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تخمین زمان باقی مانده\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"نگارش موجود\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"نتوانست تکه‌های را به سرهم کند\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"نتوانست پرونده را بارگذاری کند\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"نام پرونده نباید با {segment} پایان یابد.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"اگر هر دو نسخه را انتخاب کنید، یک عدد به نام پرونده ورودی اضافه خواهد شد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"نام پرونده نامعتبر\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"آخرین تاریخ تغییر نامشخص\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"نام فایل جدید\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخه جدید\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مکث کردن\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"پیش نمایش تصویر\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغییر نام\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"انتخاب همه چک‌باکس‌ها\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"انتخاب همه فایل‌های موجود\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"انتخاب همه فایل‌های جدید\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"رد شدن\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"رد شدن از \", \"رد شدن از {count} فایل\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"اندازه نامشخص\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"بارگذاری\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"بارگذاری پرونده‌ها\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"بارگذاری پوشه‌ها\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"بارگذاری از دستگاه\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"بارگذاری رد شده است\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"بارگذاری نادیده گرفته شده است\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"بارگذاری {folder} نادیده گرفته شده است\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"روند بارگذاری\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"هنگامی که یک پوشه ورودی انتخاب می‌شود، هر فایل متناقضی در آن نیز بازنویسی می‌شود.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"هنگامی که یک پوشه دریافتی انتخاب می شود ، محتوا در پوشه موجود نوشته می شود و حل ناسازگاری بازگشتی انجام می شود.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"کدام پرونده‌ها را می‌خواهید نگه دارید؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"می‌توانید نام پرونده را تغییر دهید، از این پرونده رد شوید یا کل عملیات را رد کنید.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"برای ادامه باید دست‌کم یک نگارش از هر پرونده را انتخاب کنید.\"] } } } } }, { \"locale\": \"fi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jiri Grönroos , 2025\", \"Language-Team\": \"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fi_FI\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nthingumy, 2024\\nteemue, 2024\\nJiri Grönroos , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Jiri Grönroos , 2025\\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fi_FI\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" on kielletty tiedoston tai hakemiston nimi.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" on kielletty tiedostotyyppi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ei ole sallittu tiedoston tai hakemiston nimessä.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tiedoston ristiriita\", \"{count} tiedoston ristiriita\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tiedoston ristiriita kansiossa {dirname}\", \"{count} tiedoston ristiriita kansiossa {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunti jäljellä\", \"{seconds} sekuntia jäljellä\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} jäljellä\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"muutama sekunti jäljellä\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"kootaan\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Peruuta koko toimenpide\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Peruuta lähetykset\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jatka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Luo uusi\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"arvioidaan jäljellä olevaa aikaa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemassa oleva versio\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Palojen kokoaminen yhteen epäonnistui\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tiedoston lähetys epäonnistui\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tiedoston nimi ei saa päättyä \"{segment}\"'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Kielletty/väärä tiedoston nimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimeisin muokkauspäivä on tuntematon\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uusi tiedostonimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uusi versio\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"keskeytetty\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Esikatsele kuva\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Nimeä uudelleen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Valitse kaikki valintaruudut\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Valitse kaikki olemassa olevat tiedostot\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Valitse kaikki uudet tiedostot\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ohita\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ohita tämä tiedosto\", \"Ohita {count} tiedostoa\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tuntematon koko\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Lähetä\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lähetä tiedostoja\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Lähetä kansioita\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Lähetä laitteelta\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Lähetys on peruttu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Lähetys on ohitettu\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Hakemiston \"{folder}\" lähetys on ohitettu'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Lähetyksen edistyminen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mitkä tiedostot haluat säilyttää?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi.\"] } } } } }, { \"locale\": \"fo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"fr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Caro Leviia, 2025\", \"Language-Team\": \"French (https://app.transifex.com/nextcloud/teams/64236/fr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fr\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nBenoit Pruneau, 2024\\nJEEEEEEEEEEEEEEEEEEEEEED, 2024\\nJérôme HERBINET, 2024\\nacazenave, 2024\\nLisa Cintosh, 2025\\nLdm Public , 2025\\nCaro Leviia, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Caro Leviia, 2025\\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fr\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" est un nom de fichier ou de dossier interdit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" est un type de fichier interdit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fichier en conflit\", \"{count} fichiers en conflit\", \"{count} fichiers en conflit\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fichier en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde restante\", \"{seconds} secondes restantes\", \"{seconds} secondes restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restant\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quelques secondes restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblage\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuler toute l'opération\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuler les téléversements\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Créer un nouveau\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimation du temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Version existante\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Échec de l'assemblage des morceaux\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Échec de téléversement du fichier\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Les noms des fichiers ne doivent pas terminer par \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous sélectionnez les deux versions, un numéro sera ajouté au nom du fichier entrant.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fichier invalide\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de la dernière modification inconnue\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nouveau nom de fichier\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pause\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Aperçu de l'image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renommer\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorer\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} fichier ignoré\", \"{count} fichiers ignorés\", \"{count} fichiers ignorés\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Taille inconnue\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Téléverser\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Téléverser des fichiers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Téléverser des dossiers\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Téléverser depuis l'appareil\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Le téléversement a été annulé\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Le téléversement a été ignoré\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Le téléversement de \"{folder}\" a été ignoré'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progression du téléversement\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Vous pouvez soit renommer le fichier, soit ignorer le fichier, soit annuler toute l'opération.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Vous devez sélectionner au moins une version de chaque fichier pour continuer.\"] } } } } }, { \"locale\": \"ga\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Aindriú Mac Giolla Eoin, 2025\", \"Language-Team\": \"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ga\", \"Plural-Forms\": \"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nAindriú Mac Giolla Eoin, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Aindriú Mac Giolla Eoin, 2025\\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ga\\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Is ainm toirmiscthe comhaid nó fillteáin é \"{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Is cineál comhaid toirmiscthe é \"{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`Ní cheadaítear \"{segment}\" taobh istigh d'ainm comhaid nó fillteáin.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} coimhlint comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} coimhlint comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} fágtha\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"cúpla soicind fágtha\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ag cur le chéile\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht iomlán\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cealaigh uaslódálacha\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Leanúint ar aghaidh\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Cruthaigh nua\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ag déanamh meastachán ar an am atá fágtha\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan láithreach \"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Theip ar na smután a chur le chéile le chéile\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Theip ar uaslódáil an chomhaid\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Níor cheart go gcríochnaíonn comhaid chomhad le \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ainm comhaid neamhbhailí\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta modhnaithe is déanaí anaithnid\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ainm comhaid nua\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"sos\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Íomhá réamhamharc\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Athainmnigh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh gach ticbhosca\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh gach comhad atá ann cheana féin\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Scipeáil\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Léim an comhad {count}\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Seachain an comhad seo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Méid anaithnid\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uaslódáil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Uaslódáil comhaid\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Uaslódáil fillteáin\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Íosluchtaigh ó ghléas\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Cuireadh an t-uaslódáil ar ceal\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Léiríodh an uaslódáil\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Léiríodh an uaslódáil \"{folder}\".'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uaslódáil dul chun cinn\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh.\"] } } } } }, { \"locale\": \"gd\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gd\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gd\\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"gl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Miguel Anxo Bouzada , 2025\", \"Language-Team\": \"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMiguel Anxo Bouzada , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Miguel Anxo Bouzada , 2025\\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» é un nome vedado para un ficheiro ou cartafol.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» é un tipo de ficheiro vedado.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflito de ficheiros\", \"{count} conflitos de ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiros en {dirname}\", \"{count} conflitos de ficheiros en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"falta {seconds} segundo\", \"faltan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"falta {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltan uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancela toda a operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envíos\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear un novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calculando canto tempo falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Produciuse un fallo ao ensamblar os anacos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Produciuse un fallo ao enviar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Os nomes de ficheiros non deben rematar con «{segment}».\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"O nome de ficheiro non é válido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nova\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"detido\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa da imaxe\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar todas as caixas de selección\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} ficheiro\", \"Omitir {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño descoñecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar cartafoles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Enviar dende o dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O envío foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O envío foi omitido\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"O envío de «{folder}» foi omitido\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso do envío\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar polo menos unha versión de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"he\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"he\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: he\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hi_IN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hi_IN\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hi_IN\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hr\", \"Plural-Forms\": \"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hr\\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hsb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hsb\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hsb\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gyuris Gellért , 2024\", \"Language-Team\": \"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hu_HU\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGyuris Gellért , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gyuris Gellért , 2024\\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hu_HU\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Tiltott fájl- vagy mappanév: „{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Tiltott fájltípus: „{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Nem megengedett egy fájl- vagy mappanévben: „{segment}\".'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fájlt érintő konfliktus\", \"{count} fájlt érintő konfliktus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fájlt érintő konfliktus a mappában: {dirname}\", \"{count}fájlt érintő konfliktus a mappában: {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{} másodperc van hátra\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} van hátra\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"pár másodperc van hátra\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Teljes művelet megszakítása\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Feltöltések megszakítása\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tovább\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Új létrehozása\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hátralévő idő becslése\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Jelenlegi változat\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Fájlnevek nem végződhetnek erre: „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Érvénytelen fájlnév\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Utolsó módosítás dátuma ismeretlen\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Új fájlnév\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"szüneteltetve\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Kép előnézete\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Átnevezés\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Minden jelölőnégyzet kijelölése\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Minden jelenlegi fájl kijelölése\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Minden új fájl kijelölése\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Kihagyás\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ezen fájl kihagyása\", \"{count}fájl kihagyása\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ismeretlen méret\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Feltöltés\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fájlok feltöltése\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappák feltöltése\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Feltöltés eszközről\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Feltöltés meg lett szakítva\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Feltöltés át lett ugorva\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}” feltöltése át lett ugorva\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Feltöltési folyamat\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat kívánja megtartani?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz minden fájlból legalább egy verziót ki kell választani.\"] } } } } }, { \"locale\": \"hy\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hy\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hy\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ia\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ia\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ia\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"id\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Linerly , 2023\", \"Language-Team\": \"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"id\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ , 2023\\nEmpty Slot Filler, 2023\\nLinerly , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Linerly , 2023\\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: id\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} berkas berkonflik\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} berkas berkonflik dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} detik tersisa\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tersisa\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"tinggal sebentar lagi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Batalkan unggahan\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"memperkirakan waktu yang tersisa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal perubahan terakhir tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"dijeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Gambar pratinjau\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua berkas yang ada\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua berkas baru\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Lewati {count} berkas\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukuran tidak diketahui\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Unggahan dibatalkan\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Unggah berkas\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Berkas mana yang Anda ingin tetap simpan?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan.\"] } } } } }, { \"locale\": \"ig\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ig\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ig\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"is\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Sveinn í Felli , 2025\", \"Language-Team\": \"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"is\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nSveinn í Felli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Sveinn í Felli , 2025\\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: is\\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er bannað sem heiti á skrá eða möppu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er bönnuð skráartegund.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ekki leyfilegt innan í heiti á skrá eða möppu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} árekstur skráa\", \"{count} árekstrar skráa\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} árekstur skráa í {dirname}\", \"{count} árekstrar skráa í {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekúnda eftir\", \"{seconds} sekúndur eftir\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} eftir\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"nokkrar sekúndur eftir\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"set saman\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Hætta við\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Hætta við alla aðgerðina\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hætta við innsendingar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Halda áfram\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Búa til nýtt\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"áætla tíma sem eftir er\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Fyrirliggjandi útgáfa\"] }, \"Failed assembling the chunks together\": { \"msgid\": \"Failed assembling the chunks together\", \"msgstr\": [\"Mistókst að setja saman bútana\"] }, \"Failed uploading the file\": { \"msgid\": \"Failed uploading the file\", \"msgstr\": [\"Mistókst að senda inn skrána\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Skráaheiti mega ekki enda á \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti innkomandi skrárinnar.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ógilt skráarheiti\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Síðasta breytingadagsetning er óþekkt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nýtt skráarheiti\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ný útgáfa\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"í bið\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forskoðun myndar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Endurnefna\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velja gátreiti\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velja allar fyrirliggjandi skrár\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velja allar nýjar skrár\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Sleppa\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sleppa þessari skrá\", \"Sleppa {count} skrám\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Óþekkt stærð\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Senda inn\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Senda inn skrár\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Senda inn möppur\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Senda inn frá tæki\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Hætt hefur verið við innsendingu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Innsendingu hefur verið sleppt\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Innsendingu á \"{folder}\" hefur verið sleppt'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Framvinda innsendingar\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður einnig skrifað yfir allar skrár í henni sem valda árekstrum.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður efnið skrifað inn í fyrirliggjandi möppu og farið í að leysa úr árekstrum.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvaða skrám vilt þú vilt halda eftir?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Þú getur annaðhvort endurnefnt skrána, sleppt þessari skrá eða hætt við alla þessa aðgerð.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram.\"] } } } } }, { \"locale\": \"it\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roberto Resoli, 2025\", \"Language-Team\": \"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"it\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFrancesco Sercia, 2024\\nalbanobattistella , 2024\\nLorenzo Taiocchi, 2025\\nesseti kappa, 2025\\nRoberto Resoli, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Roberto Resoli, 2025\\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: it\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" è un nome di file o cartella proibito.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"è un tipo di file proibito.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" non è consentito all'interno di un nome di file o cartella.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file in conflitto\", \"{count} file in conflitto\", \"{count} file in conflitto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondo rimanente \", \"{seconds} secondi rimanenti \", \"{seconds} secondi rimanenti \"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} rimanente\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alcuni secondi rimanenti\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblaggio\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annulla i caricamenti\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nuovo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calcolo il tempo rimanente\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Impossibile unire i pezzi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Impossibile caricare il file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['I nomi dei file non devono terminare con \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero \"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome file non valido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ultima modifica sconosciuta\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuovo nome file\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Anteprima immagine\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rinomina\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Salta\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sata {count} file\", \"Salta {count} file\", \"Salta {count} file\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Dimensione sconosciuta\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Caricamento\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Carica i file\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carica cartelle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carica dal dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Caricamento annullato\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Il caricamento è stato saltato\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Il caricamento di \"{folder}\" è stato saltato'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso del caricamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi mantenere?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"È possibile rinominare il file, ignorarlo o annullare l'intera operazione.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Devi selezionare almeno una versione di ogni file per continuare\"] } } } } }, { \"locale\": \"ja\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"kojima.imamura, 2025\", \"Language-Team\": \"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ja_JP\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nTakafumi AKAMATSU, 2024\\ndevi, 2024\\n貴宝, 2025\\nkshimohata, 2025\\nkojima.imamura, 2025\\n\" }, \"msgstr\": [\"Last-Translator: kojima.imamura, 2025\\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ja_JP\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" は禁止されているファイルまたはフォルダ名です。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" は禁止されているファイルタイプです。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ファイルまたはフォルダ名に \"{segment}\" を含めることはできません。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ファイル数の競合\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} で {count} 個のファイルが競合しています\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"残り{seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"残り {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"残り数秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"処理中\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセルする\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"アップロードをキャンセル\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"続ける\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新規作成\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"概算残り時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既存バージョン\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"チャンクの組み立てに失敗しました\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ファイルのアップロードに失敗しました\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ファイル名の末尾に \"{segment}\" を付けることはできません。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無効なファイル名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新しいファイル名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新しいバージョン\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"一時停止中\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"プレビュー画像\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"名前を変更\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべて選択\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"すべての既存ファイルを選択\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"スキップ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} 個のファイルをスキップする\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップする\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"サイズ不明\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"アップロード\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ファイルをアップロード\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"フォルダのアップロード\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"デバイスからのアップロード\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"アップロードはキャンセルされました\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"アップロードがスキップされました\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" のアップロードがスキップされました'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"アップロード進行状況\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを保持しますか?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。\"] } } } } }, { \"locale\": \"ka\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ka_GE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka_GE\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka_GE\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kab\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ZiriSut, 2023\", \"Language-Team\": \"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kab\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nZiriSut, 2023\\n\" }, \"msgstr\": [\"Last-Translator: ZiriSut, 2023\\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kab\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} tesdatin i d-yeqqimen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} i d-yeqqimen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"qqiment-d kra n tesdatin kan\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Rnu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Sefsex asali\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"asizel n wakud i d-yeqqimen\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"yeḥbes\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Sali-d ifuyla\"] } } } } }, { \"locale\": \"kk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kk\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kk\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"km\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"km\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: km\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kn\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kn\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ko\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"보헤민, 2025\", \"Language-Team\": \"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ko\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nshin2012 , 2025\\n이상오, 2025\\n보헤민, 2025\\n\" }, \"msgstr\": [\"Last-Translator: 보헤민, 2025\\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ko\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 및 폴더 이름입니다.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 형식입니다.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['파일이나 폴더 이름에 \"{segment}\"을(를) 사용할 수 없습니다.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}개의 파일이 충돌함\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 {count}개의 파일이 충돌함\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} 초 남음\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} 남음\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"곧 완료\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"취합 중\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업을 취소\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"업로드 취소\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"확인\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"새로 만들기\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"남은 시간 계산\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"현재 버전\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"조각을 취합하는 데 실패\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"파일을 업로드하는 데 실패\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['파일 이름은 \"{segment}\"(으)로 끝나야 합니다.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"잘못된 파일 이름\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"새 파일 이름\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"새 버전\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"일시정지됨\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"미리보기 이미지\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"이름 바꾸기\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일을 모두 선택\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"새로운 파일을 모두 선택\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"건너뛰기\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count}개 파일 건너뛰기\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뛰기\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"크기를 알 수 없음\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"업로드\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"파일 업로드\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"폴더 업로드\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"장치에서 업로드\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"업로드가 취소되었습니다.\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"업로드를 건너뛰었습니다.\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 업로드를 건너뛰었습니다.'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"업로드 진행도\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더가 선택되면, 그 안의 콘텐츠가 기존 폴더에 기록되고 재귀적 충돌 해결이 수행됩니다.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보존하시겠습니까?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"파일 이름을 바꾸거나, 이 파일을 건너뛰거나 모든 작업을 취소할 수 있습니다.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] } } } } }, { \"locale\": \"la\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"la\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: la\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lb\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lb\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"bone NI, 2025\", \"Language-Team\": \"Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lo\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nbone NI, 2025\\n\" }, \"msgstr\": [\"Last-Translator: bone NI, 2025\\nLanguage-Team: Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lo\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ແມ່ນປະເພດໄຟລ໌ທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{segment}\" ຢູ່​ໃນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີ.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ ໃນ {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"ເຫຼືອເວລາ {seconds} ວິນາທີ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"ເຫຼືອເວລາ {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ເຫຼືອເວລາອີກບໍ່ດົນ\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ກຳລັງຮວບຮວມ\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ຍົກເລີກການອັບໂຫຼດ\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ສ້າງໃໝ່\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ກຳລັງຄາດຄະເນເວລາທີ່ເຫຼືອ\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"ສະບັບທີ່ມີຢູ່ແລ້ວ\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"ການຮວບຮວມສ່ວນຕ່າງໆເຂົ້າກັນບໍ່ສຳເລັດ\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌ບໍ່ສຳເລັດ\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ຊື່ໄຟລ໌ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງສະບັບ, ໄຟລ໌ທີ່ເຂົ້າມາໃໝ່ຈະຖືກເພີ່ມຕົວເລກໃສ່ທ້າຍຊື່.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ບໍ່ຖືກຕ້ອງ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຊາບວັນທີແກ້ໄຂຫຼ້າສຸດ\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ໃໝ່\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"ສະບັບໃໝ່\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"ຢຸດຊົ່ວຄາວ\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"ເບິ່ງຕົວຢ່າງຮູບ\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"ປ່ຽນຊື່\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກທຸກຊ່ອງໝາຍຕິກ\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ແລ້ວທັງໝົດ\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"ຂ້າມ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"ຂ້າມ {count} ໄຟລ໌\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"ບໍ່ຊາບຂະໜາດ\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"ອັບໂຫຼດ\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"ອັບໂຫຼດໂຟລເດີ\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"ອັບໂຫຼດຈາກອຸປະກອນ\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຍົກເລີກແລ້ວ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຂ້າມໄປແລ້ວ\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['ການອັບໂຫຼດ \"{folder}\" ໄດ້ຖືກຂ້າມໄປແລ້ວ'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"ຄວາມຄືບໜ້າການອັບໂຫຼດ\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ໄຟລ໌ໃດໆທີ່ຊ້ຳກັນຢູ່ພາຍໃນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟລເດີທີ່ມີຢູ່ແລ້ວ ແລະ ຈະມີການແກ້ໄຂໄຟລ໌ທີ່ຊ້ຳກັນແບບຕໍ່ເນື່ອງໃນໂຟລເດີຍ່ອຍ.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ທ່ານສາມາດປ່ຽນຊື່ໄຟລ໌, ຂ້າມໄຟລ໌ນີ້ ຫຼື ຍົກເລີກການດຳເນີນການທັງໝົດ.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງສະບັບຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] } } } } }, { \"locale\": \"lt_LT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lt_LT\", \"Plural-Forms\": \"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lt_LT\\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Edgars Andersons, 2025\", \"Language-Team\": \"Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lv\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPapuass , 2024\\nArmīns Jeltajevs , 2024\\nEdgars Andersons, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Edgars Andersons, 2025\\nLanguage-Team: Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lv\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes vai mapes nosaukums.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes veids.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ir nav ļauts datnes vai mapes nosaukumā.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} nesaderīgu datņu\", \"{count} nesaderīga datne\", \"{count} nesaderīgas datnes\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} nesaderīgu datņu {dirname}\", \"{count} nesaderīga datne {dirname}\", \"{count} nesaderīgas datnes {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Atlikušas {seconds} sekundes\", \"Atlikusi {seconds} sekunde\", \"Atlikušas {seconds} sekundes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"atlicis {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"atlikušas dažas sekundes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sakopo\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Atcelt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Atcelt visu darbību\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Atcelt augšupielādes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Turpināt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Izveidot jaunu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"paredzamais atlikušais laiks\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Esošā versija\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Neizdevās apvienot gabalus\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Neizdevās augšupielādēt datni\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Datnes nosaukumi nedrīkst beigties ar \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ja atlasa abas versijas, ienākošās datnes nosaukumam tiks pievienots skaitlis.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nederīgs datnes nosaukums\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Pēdējais izmainīšanas datums nav zināms\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Jauns datnes nosaukums\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Jauna versija\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"apturēta\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Priekšskatīt attēlu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Pārdēvēt\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Atlasīt visas izvēles rūtiņas\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Atlasīt visas esošās datnes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Atlasīt visas jaunās datnes\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Izlaist\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Izlaist {count} datņu\", \"Izlaist {count} datni\", \"Izlaist {count} datnes\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Izlaist šo datni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nezināms izmērs\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Augšupielādēt\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Augšupielādēt datnes\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Augšupielādēt mapes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Augšupielādēt no ierīces\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Augšupielāde tika atcelta\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Augšupielāde tika izlaista\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" augšupielāde tika izlaista'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Augšupielādes virzība\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, tiks pārrakstītas arī jebkuras tajā esošās nesaderīgās datnes.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, saturs tiks rakstīts esošajā mapē, un tiks veikta rekursīva nesaderību novēršana.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Kuras datnes paturēt?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datni var vai nu pārdēvēt, vai izlaist vai atcelt visu darbību.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ir nepieciešams atlasīt vismaz vienu katras datnes versiju, lai turpinātu.\"] } } } } }, { \"locale\": \"mk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Сашко Тодоров , 2025\", \"Language-Team\": \"Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mk\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nСашко Тодоров , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Сашко Тодоров , 2025\\nLanguage-Team: Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mk\\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" е забрането име на датотека или име на папка.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" е забранет вид на датотека.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" не е дозволено во името датотека или папка.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфликт со датотека\", \"{count} конфликти со датотеки\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфликт со датотека во {dirname}\", \"{count} конфликти на датотеки во {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"уште {seconds} секунда\", \"уште {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"преостанува {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"уште неколку секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"склопување\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Откажи ја целата операција\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Прекини прикачување\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај нова\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"приближно преостанато време\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постоечка верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Неуспешно составување на парчињата заедно\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Неуспешно прикачување на датотека\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Имињата на датотеките не смеат да завршуваат со \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги изберете двете верзии, на новата датотека ќе ѝ биде додаден број на името.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Невалидно име на датотека\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Непознат датумот на последната измена\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име на датотека\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Преглед на слика\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Преименувај\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Означи ги сите полиња\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Избери ги сите постоечки датотеки\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Избери ги сите нови датотеки\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескокни\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескокни {count} датотека\", \"Прескокни {count} датотеки\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната големина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Прикачи\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Прикачување датотеки\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Прикачи папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Прикачи од уред\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Прикачувањето е откажано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Прикачувањето е прескокнато\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Прикачувањето на \"{folder}\" е прескокнато'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогрес на прикачување\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, сите конфликтни датотеки во неа исто така ќе бидат пребришани.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, содржината се запишува во постоечката папка и се извршува рекурзивно решавање на конфликтот.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакате да ги зачвате?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете да ја преименувате датотеката, да ја прескокнете датотека или да ја откажете целата операција.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да изберете барем една верзија од секоја датотека за да продолжите.\"] } } } } }, { \"locale\": \"mn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"BATKHUYAG Ganbold, 2023\", \"Language-Team\": \"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mn\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nBATKHUYAG Ganbold, 2023\\n\" }, \"msgstr\": [\"Last-Translator: BATKHUYAG Ganbold, 2023\\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mn\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунд үлдсэн\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} үлдсэн\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"хэдхэн секунд үлдсэн\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Нэмэх\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Илгээлтийг цуцлах\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Үлдсэн хугацааг тооцоолж байна\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"түр зогсоосон\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Файл илгээх\"] } } } } }, { \"locale\": \"mr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mr\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mr\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ms_MY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DT Navy, 2024\", \"Language-Team\": \"Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ms_MY\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nDT Navy, 2024\\n\" }, \"msgstr\": [\"Last-Translator: DT Navy, 2024\\nLanguage-Team: Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ms_MY\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" adalah fail dan nama folder yang dilarang'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" adalah jenis fail yang dilarang'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" adalah tidak dibenarkan dalam nama fail atau folder'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} files bertindih\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail bertindih dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saat tinggal\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tinggal\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"beberapa saat lagi\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"batal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batal keseluruhan operasi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"batal muat naik\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"teruskan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Buat baharu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"jangkaan masa tinggal\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"versi sedia ada\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nama fail tidak boleh berakhir dengan \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika dua versi dipilih, fail yang masuk akan ditambah bilangan pada namanya.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nama fail tidak sah\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tarikh terakhir diubah suai tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nama fail baharu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baharu\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Jeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pratonton gambar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Menamakan semula\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak pilihan\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua fail yang wujud\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"pilih semua fail baharu\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Langkau\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Langkau fail {count}\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Saiz tidak diketahui\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Muat naik\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Muat naik fail\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Muat naik folder\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Muat naik dari peranti\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Muat naik telah dibatalkan\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Muat naik telah dilangkau\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Muat naik \"{folder}\" telah dilangkau'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Kemajuan muat naik\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Apabila folder masuk dipilih, sebarang fail bertindih akan ditulis semula\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Apabila folder masuk dipilih, kandungan ditulis ke dalam folder sedia ada dan penyelesaian konflik rekursif dilakukan.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Fail yang mana ingin disimpan?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"And boleh menamakan semula fail, langkau fail tersebut atau membatalkan keseluruhan operasi\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih sekurangnya satu versi setiap fail untuk teruskan\"] } } } } }, { \"locale\": \"my\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"my\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: my\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roger Knutsen, 2024\", \"Language-Team\": \"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nb_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRoger Knutsen, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roger Knutsen, 2024\\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nb_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tillatt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder igjen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} igjen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"noen få sekunder igjen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hele operasjonen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt opplastninger\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsett\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opprett ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Estimerer tid igjen\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Gjeldende versjon\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavn må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldig filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Siste gang redigert ukjent\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny versjon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvis bilde\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøp\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velg alle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hopp over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Hopp over {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukjent størrelse\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Last opp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Last opp mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Last opp fra enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Opplastingen er kansellert\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Opplastingen er hoppet over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Opplasting av \"{folder}\" er hoppet over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fremdrift, opplasting\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du må velge minst en versjon av hver fil for å fortsette.\"] } } } } }, { \"locale\": \"ne\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ne\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ne\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Stephan Paternotte , 2025\", \"Language-Team\": \"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJoris deLeeuw, 2025\\nStephan Paternotte , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Stephan Paternotte , 2025\\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is een verboden bestands- of mapnaam.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is een verboden bestandstype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is niet toegestaan in een bestand of mapnaam.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} bestandsconflict\", \"{count} bestanden conflicteren\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} bestandsconflict in {dirname}\", \"{count} bestandenconflicten in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde resterend\", \"{seconds} seconden resterend\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} resterend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Nog een paar seconden over\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samenstellen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"De hele bewerking annuleren\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Uploaden annuleren\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Nieuw aanmaken\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"resterende tijd schatten\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Kon de stukken niet samenvoegen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Het uploaden van het bestand is mislukt\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Bestandsnamen mogen niet eindigen met \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als je beide versies selecteert, krijgt het binnenkomende bestand een nummer toegevoegd aan de naam.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ongeldige bestandsnaam\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatst gewijzigde datum onbekend\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nieuwe bestandsnaam\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"gepauzeerd\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Voorbeeldweergave\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Hernoemen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle opties selecteren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle bestanden selecteren\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle nieuwe bestanden selecteren\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Overslaan\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} bestand overslaan\", \"{count} bestanden overslaan\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Dit bestand overslaan\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Onbekende grootte\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uploaden\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload bestanden\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappen uploaden\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Uploaden vanaf apparaat\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload is geanulleerd\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload is overgeslagen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload van \"{folder}\" is overgeslagen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uploadvoortgang\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, worden alle conflicterende bestanden daarin ook overschreven.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, wordt de inhoud in de bestaande map geschreven en wordt er een recursieve conflictoplossing uitgevoerd.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wil je behouden?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Je kunt het bestand ofwel hernoemen, dit bestand overslaan of de hele bewerking annuleren.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Je moet minstens één versie van elk bestand selecteren om door te gaan.\"] } } } } }, { \"locale\": \"nn_NO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nn_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nn_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"oc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"oc\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: oc\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Valdnet, 2025\", \"Language-Team\": \"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pl\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPiotr Strebski , 2024\\nValdnet, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Valdnet, 2025\\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pl\\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" to zabroniona nazwa pliku lub katalogu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" jest zabronionym typem pliku.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Znak \"{segment}\" nie jest dozwolony w nazwie pliku lub katalogu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"konflikt 1 pliku\", \"{count} konfliktów plików\", \"{count} konfliktów plików\", \"{count} konfliktów plików\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} konfliktowy plik w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Pozostało {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Pozostało {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Pozostało kilka sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anuluj wysyłanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Utwórz nowe\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Szacowanie pozostałego czasu\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nazwy plików nie mogą kończyć się na \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nieprawidłowa nazwa pliku\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nieznana data ostatniej modyfikacji\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nowa nazwa pliku\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Wstrzymane\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Podgląd obrazu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Zmiana nazwy\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pomiń\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pomiń 1 plik\", \"Pomiń {count} plików\", \"Pomiń {count} plików\", \"Pomiń {count} plików\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nieznany rozmiar\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Wyślij\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Wyślij pliki\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Wyślij katalogi\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Wyślij z urządzenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Wysyłanie zostało anulowane\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Wysyłanie zostało pominięte\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Wysyłanie \"{folder}\" zostało pominięte'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postęp wysyłania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego zawartość jest zapisywana w istniejącym katalogu i przeprowadzane jest rekursywne rozwiązywanie konfliktów.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] } } } } }, { \"locale\": \"ps\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ps\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ps\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pt_BR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"F Bausch, 2025\", \"Language-Team\": \"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_BR\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nLeonardo Colman Lopes , 2024\\nRodrigo Sottomaior Macedo , 2024\\nF Bausch, 2025\\n\" }, \"msgstr\": [\"Last-Translator: F Bausch, 2025\\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_BR\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de arquivo proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido dentro de um nome de arquivo ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} arquivos em conflito\", \"{count} arquivos em conflito\", \"{count} arquivos em conflito\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo restante\", \"{seconds} segundos restantes\", \"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alguns segundos restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao montar os pedaços juntos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao fazer o upload do arquivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes dos arquivos não devem terminar com \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de arquivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de arquivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de seleção\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os arquivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os novos arquivos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pular\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pular {count} arquivo\", \"Pular {count} de arquivos\", \"Pular {count} arquivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pular este arquivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Fazer upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fazer upload de arquivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Fazer upload de pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Fazer upload do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O upload foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O upload foi pulado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O upload de \"{folder}\" foi pulado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso de upload\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, todos os arquivos conflitantes dentro dela também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] } } } } }, { \"locale\": \"pt_PT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"artur25 , 2025\", \"Language-Team\": \"Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_PT\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nguilherme ferreira, 2025\\nartur25 , 2025\\n\" }, \"msgstr\": [\"Last-Translator: artur25 , 2025\\nLanguage-Team: Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_PT\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um Nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de ficheiro proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido num nome de ficheiro ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"Conflito em {count} ficheiro\", \"Conflito em {count} ficheiros\", \"Conflito em {count} ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Falta {seconds} segundo\", \"Faltam {seconds} segundos\", \"Faltam {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"faltam {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltam uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montagem\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envios\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"tempo em falta estimado\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao juntar os fragmentos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao carregar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes de ficheiro não podem terminar em \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecionar ambas as versões, será adicionado um número ao nome do ficheiro recebido.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de ficheiro inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pré-visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de verificação\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorar {count} ficheiro\", \"Ignorar {count} ficheiros\", \"Ignorar {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Carregar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carregar pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carregar a partir do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O carregamento foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O carregamento foi ignorado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O carregamento da pasta \"{folder}\" foi ignorado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso do carregamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, quaisquer ficheiros em conflito no seu interior também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, o conteúdo é escrito na pasta existente e é efetuada uma resolução de conflitos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais ficheiros pretende manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode renomear o ficheiro, ignorá-lo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Precisa de selecionar pelo menos uma versão de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"ro\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mădălin Vasiliu , 2022\", \"Language-Team\": \"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ro\", \"Plural-Forms\": \"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMădălin Vasiliu , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Mădălin Vasiliu , 2022\\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ro\\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secunde rămase\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} rămas\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"câteva secunde rămase\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adaugă\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anulați încărcările\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimarea timpului rămas\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pus pe pauză\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Încarcă fișiere\"] } } } } }, { \"locale\": \"ru\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Igor Orlov, 2025\", \"Language-Team\": \"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ru\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nВлад, 2024\\nAlex , 2024\\nRoman Stepanov, 2024\\nMaksim Sukharev, 2024\\nАлександр, 2025\\nIgor Orlov, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Igor Orlov, 2025\\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ru\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» — это запрещенное имя файла или папки.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» — это запрещенный тип файла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» не допускается в имени файла или папки.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"конфликт {count} файла\", \"конфликт {count} файлов\", \"конфликт {count} файлов\", \"конфликт {count} файлов\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"конфликт {count} файла в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"осталась {seconds} секунда\", \"осталось {seconds} секунды\", \"осталось {seconds} секунд\", \"осталось {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"осталось {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"осталось несколько секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"сборка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Отменить\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отменить операцию целиком\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Отменить загрузки\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Создать новое\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оценка оставшегося времени\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не удалось собрать части вместе\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не удалось загрузить файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена файлов не должны заканчиваться на «{segment}»\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неверное имя файла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Новое имя файла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"приостановлено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Предварительный просмотр\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Переименовать\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Выбрать все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустить\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустить {count} файл\", \"Пропустить {count} файла\", \"Пропустить {count} файлов\", \"Пропустить {count} файлов\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустить этот файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Неизвестный размер\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Загрузить\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Загрузить файлы\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Загрузить папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Загрузить с устройства\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Загрузка была отменена\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Загрузка была пропущена\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Загрузка «{folder}» была пропущена\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогресс загрузки\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Вы можете переименовать файл, пропустить этот файл или отменить всю операцию.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла.\"] } } } } }, { \"locale\": \"sc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sc\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sc\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"si\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"si\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: si\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Anton Krajcik , 2025\", \"Language-Team\": \"Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sk_SK\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJozef Gaal , 2024\\nLinker Linker , 2024\\nAnton Krajcik , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Anton Krajcik , 2025\\nLanguage-Team: Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sk_SK\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ je zakázaný názov súboru alebo priečinka.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je zákazaný typ súboru.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}“ je zakázané v názve súboru alebo adresára.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} súbor má konflikt\", \"{count} súbory majú konflikt\", \"{count} súborov má konflikt\", \"{count} súborov má konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} súborový konflikt v {dirname}\", \"{count} súborové konflikty v {dirname}\", \"{count} súborových konfliktov v {dirname}\", \"{count} súborových konfliktov v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunda zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekundy zostávajú\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} zostáva\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zostáva niekoľko sekúnd\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zhromažďovanie\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušiť nahrávanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvoriť nové\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhadovanie zostávajúceho času\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Nepodarilo sa dať časti dohromady.\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Nepodarilo sa nahrať súbor\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Názvy súborov nesmú končiť znakom \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, k názvu prichádzajúceho súboru sa pridá číslo.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný názov súboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dátum poslednej úpravy neznámy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nový\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový názov súboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastavené\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhľad obrázka\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Premenovať\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označiť všetky výberové políčka\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskočiť\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskočiť {count} súbor\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súbory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznáma veľkosť\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrať\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrať súbory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrať priečinky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrať zo zariadenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávanie bolo zrušené\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrávanie bolo preskočené\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nahrávanie \"{folder}\" bolo preskočené'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Priebeh nahrávania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraný prichádzajúci priečinok, prepíšu sa aj všetky konfliktné súbory v ňom.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po výbere prichádzajúceho priečinka sa obsah zapíše do existujúceho priečinka a vykoná sa rekurzívne riešenie konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete ponechať?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Súbor môžete premenovať, preskočiť alebo zrušiť celú operáciu.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ak chcete pokračovať, musíte vybrať aspoň jednu verziu každého súboru.\"] } } } } }, { \"locale\": \"sl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Simon Bogina, 2024\", \"Language-Team\": \"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sl\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJan Kraljič , 2024\\nSimon Bogina, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Simon Bogina, 2024\\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sl\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" je prepovedano ime datoteka ali mape.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je prepovedan tip datoteke.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ni dovoljeno v imenu datoteke ali mape.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"1{count} datoteka je v konfliktu\", \"1{count} datoteki sta v konfiktu\", \"1{count} datotek je v konfliktu\", \"{count} datotek je v konfliktu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} datoteka je v konfiktu v {dirname}\", \"{count} datoteki sta v konfiktu v {dirname}\", \"{count} datotek je v konfiktu v {dirname}\", \"{count} konfliktov datotek v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"še {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"še {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"še nekaj sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Prekliči\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Prekliči celotni postopek\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Prekliči pošiljanje\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Nadaljuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Ustvari nov\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ocenjujem čas do konca\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Obstoječa različica\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Imena datotek se ne smejo končati s \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nepravilno ime datoteke\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum zadnje spremembe neznan\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo ime datoteke\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova različica\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"v premoru\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Predogled slike\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Preimenuj\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Izberi vsa potrditvena polja\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi vse obstoječe datoteke\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi vse nove datoteke\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskoči\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskoči datoteko\", \"Preskoči {count} datoteki\", \"Preskoči {count} datotek\", \"Preskoči {count} datotek\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznana velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Naloži\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Naloži datoteke\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Naloži mape\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Naloži iz naprave\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nalaganje je bilo preklicano\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nalaganje je bilo preskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nalaganje \"{folder}\" je bilo preskočeno'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Napredek nalaganja\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Katere datoteke želite obdržati?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Izbrati morate vsaj eno različico vsake datoteke da nadaljujete.\"] } } } } }, { \"locale\": \"sq\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sq\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sq\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Иван Пешић, 2025\", \"Language-Team\": \"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nИван Пешић, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Иван Пешић, 2025\\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” је забрањено име фајла или фолдера.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” је забрањен тип фајла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}” није дозвољено унутар имена фајла или фолдера.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} фајл конфликт\", \"{count} фајл конфликта\", \"{count} фајл конфликта\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} фајл конфликт у {dirname}\", \"{count} фајл конфликта у {dirname}\", \"{count} фајл конфликта у {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"преостало је {seconds} секунда\", \"преостало је {seconds} секунде\", \"преостало је {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} преостало\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"преостало је неколико секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"састављање\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отказује комплетну операцију\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Обустави отпремања\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Настави\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај ново\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"процена преосталог времена\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постојећа верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Није успело састављање делова\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Није успело отпремање фајла\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена фајлова не смеју да се завршавају на „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако изаберете обе верзије, на име долазног фајла ће се додати број.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неисправно име фајла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Није познат датум последње измене\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име фајла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Слика прегледа\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Промени име\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Штиклирај сва поља за штиклирање\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изабери све постојеће фајлове\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изабери све нове фајлове\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескочи\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескочи {count} фајл\", \"Прескочи {count} фајла\", \"Прескочи {count} фајлова\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескочи овај фајл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната величина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Отпреми\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Отпреми фајлове\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Отпреми фолдере\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Отпреми са уређаја\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Отпремање је отказано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Отпремање је прескочено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Отпремање „{folder}”је прескочено\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Напредак отпремања\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Које фајлове желите да задржите?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Морате да изаберете барем једну верзију сваког фајла да наставите.\"] } } } } }, { \"locale\": \"sr@latin\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr@latin\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr@latin\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Magnus Höglund, 2025\", \"Language-Team\": \"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sv\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMagnus Höglund, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Magnus Höglund, 2025\\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sv\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" är ett förbjudet fil- eller mappnamn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" är en förbjuden filtyp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" är inte tillåtet i ett fil- eller mappnamn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} filkonflikt\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} filkonflikt i {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder kvar\", \"{seconds} sekunder kvar\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kvarstår\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"några sekunder kvar\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"Sammanställer\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt uppladdningar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Skapa ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"uppskattar kvarstående tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Misslyckades med att sammanställa delarna\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunde inte ladda upp filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnamn får inte sluta med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ogiltigt filnamn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnamn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausad\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Förhandsgranska bild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Byt namn\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hoppa över\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Hoppa över {count} fil\", \"Hoppa över {count} filer\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över denna fil\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Okänd storlek\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Ladda upp\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Ladda upp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ladda upp mappar\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Ladda upp från enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Uppladdningen har avbrutits\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Uppladdningen har hoppats över\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Uppladdningen av \"{folder}\" har hoppats över'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uppladdningsförlopp\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs även alla konfliktande filer i den över.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] } } } } }, { \"locale\": \"sw\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sw\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sw\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ta\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ta\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ta\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"th\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Phongpanot Phairat , 2022\", \"Language-Team\": \"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"th_TH\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPhongpanot Phairat , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Phongpanot Phairat , 2022\\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: th_TH\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"เหลืออีก {seconds} วินาที\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"เหลืออีก {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"เหลืออีกไม่กี่วินาที\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"เพิ่ม\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ยกเลิกการอัปโหลด\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"กำลังคำนวณเวลาที่เหลือ\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"หยุดชั่วคราว\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"อัปโหลดไฟล์\"] } } } } }, { \"locale\": \"tk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tk\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tk\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"tr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Kaya Zeren , 2025\", \"Language-Team\": \"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tr\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nKaya Zeren , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Kaya Zeren , 2025\\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tr\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" dosya ya da klasör adına izin verilmiyor.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" dosya türüne izin verilmiyor.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Bir dosya ya da klasör adında \"{segment}\" ifadesine izin verilmiyor.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} dosya çakışması var\", \"{count} dosya çakışması var\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} klasöründe {count} dosya çakışması var\", \"{dirname} klasöründe {count} dosya çakışması var\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniye kaldı\", \"{seconds} saniye kaldı\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kaldı\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir kaç saniye kaldı\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"birleştiriliyor\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yüklemeleri iptal et\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yeni ekle\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"öngörülen kalan süre\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Parçalar birleştirilemedi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Dosya yüklenemedi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dosya adları \"{segment}\" ile bitmemeli.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Dosya adı geçersiz\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yeni dosya adı\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"duraklatıldı\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Görsel ön izlemesi\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Yeniden adlandır\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Atla\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} dosyayı atla\", \"{count} dosyayı atla\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Boyut bilinmiyor\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yükle\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dosyaları yükle\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Klasörleri yükle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Aygıttan yükle\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yükleme iptal edildi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yükleme atlandı\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" klasörünün yüklenmesi atlandı'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yükleme ilerlemesi\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz.\"] } } } } }, { \"locale\": \"ug\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ug\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ug\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"O St, 2025\", \"Language-Team\": \"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uk\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nO St, 2025\\n\" }, \"msgstr\": [\"Last-Translator: O St, 2025\\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uk\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [`\"{segment}\" недозволене ім'я файлу або каталогу.`] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" недозволений тип файлу.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" недозволене сполучення символів в назві файлу або каталогу.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфліктний файл\", \"{count} конфліктних файли\", \"{count} конфліктних файлів\", \"{count} конфліктних файлів\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфліктний файл у каталозі {dirname}\", \"{count} конфліктних файли у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунда залишилася\", \"{seconds} секунди залишилося\", \"{seconds} секунд залишилося\", \"{seconds} секунд залишилося\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Залишилося {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"залишилося кілька секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"збірка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати операцію повністю\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Скасувати завантаження\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Створити новий\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оцінка часу, що залишився\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Присутня версія\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не вдалося зібрати частинки докупи\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не вдалося завантажити файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Ім'я файлів не можуть закінчуватися на \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Недійсне ім'я файлу\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нове\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Нове ім'я файлу\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"призупинено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Попередній перегляд\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Перейменувати\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати усі присутні файли\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати усі нові файли\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустити\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустити {count} файл\", \"Пропустити {count} файли\", \"Пропустити {count} файлів\", \"Пропустити {count} файлів\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Невідомий розмір\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Завантажити\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Завантажити файли\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Завантажити каталоги\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Завантажити з пристрою\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Завантаження скасовано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Завантаження пропущено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Завантаження \"{folder}\" пропущено'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Поступ завантаження\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продовження потрібно вибрати принаймні одну версію для кожного файлу.\"] } } } } }, { \"locale\": \"ur_PK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ur_PK\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ur_PK\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uz\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Khurshid Ibatov , 2025\", \"Language-Team\": \"Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uz\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nKhurshid Ibatov , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Khurshid Ibatov , 2025\\nLanguage-Team: Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uz\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl yoki papka nomidir.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl turi hisoblanadi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" fayl yoki papka nomi ichida ruxsat berilmaydi.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fayllar ziddiyati\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count}fayl ziddiyatlari {dirname} da\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soniya qoldi\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} qoldi\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir necha soniya qoldi\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"yig'ish\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yuklashni bekor qilish\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yangi yaratish\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"qolgan vaqtni hisoblash\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Bo'laklarni birlashtirib bo'lmadi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fayl yuklanmadi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Fayl nomlari bilan tugamasligi kerak \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Fayl nomi noto‘g‘ri\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yangi nom faylga\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"tanaffus\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Rasmni oldindan ko'rish\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Qayta nomlash\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Oʻtkazib yuborish\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Oʻtkazib yuborish {count} fayllarini\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Oʻtkazib yuborish ushbu faylni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Noma'lum o'lcham\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yuklash\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fayllarni yuklash\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Jildlarni yuklash\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Qurilmadan yuklash\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yuklash bekor qilindi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yuklash oʻtkazib yuborildi\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [' \"{folder}\" ni yuklash bekor qilindi'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yuklash jarayoni\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Siz fayl nomini o'zgartirishingiz, ushbu faylni o'tkazib yuborishingiz yoki butun operatsiyani bekor qilishingiz mumkin.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] } } } } }, { \"locale\": \"vi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"nhatCreA, 2025\", \"Language-Team\": \"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"vi\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nnhatCreA, 2025\\n\" }, \"msgstr\": [\"Last-Translator: nhatCreA, 2025\\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: vi\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" là tên thư mục bị cấm đặt.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" là loại tệp bị cấm.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" không được phép đặt trong tên tệp hoặc thư mục.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tệp tin xung đột\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": ['\"{count}\" tệp tin lỗi ở thư mục \"{dirname}\"'] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} giây trước\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} trước\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"vài giây trước\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"đang cấu trúc\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Huỷ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Huỷ toàn bộ thao tác\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Huỷ tải lên\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tiếp Tục\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Tạo mới\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ước tính thời gian còn lại\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Phiên bản hiện tại\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Không thể assemble các chunks lại với nhau\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tải lên tệp tin thất bại\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tên tập tin không được kết thúc bằng \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Nếu bạn chọn cả hai, tệp tin đến sẽ có thêm một chữ số vào tên.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Tên tệp tin không hợp lệ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ngày sửa dổi lần cuối không xác định\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Tạo Mới\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Tên tệp tin mới\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Phiên bản mới\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"đã tạm dừng\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Xem trước ảnh\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Đổi tên\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Chọn tất cả\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Chọn tất cả các tập tin đang tồn tại\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Chọn tất cả các tập tin mới\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Bỏ qua\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bỏ qua {count} tệp\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bỏ qua tệp này\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Không rõ dung lượng\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Tải Lên\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Tải lên tệp tin\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Tải lên thư mục\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Tải lên từ thiết bị\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Tải lên đã bị huỷ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Tải lên đã bỏ qua\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Tải lên \"{folder}\" đã bị bỏ qua'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Tiến trình tải lên\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Khi bạn chọn một thư mục để đưa vào, bất kỳ tệp nào trong đó gây xung đột cũng sẽ bị ghi đè.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Khi chọn một thư mục để đưa vào, nội dung sẽ được ghi vào thư mục hiện có, và hệ thống sẽ tự động giải quyết các xung đột một cách chi tiết và cẩn thận.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Bạn muốn giữ tệp nào?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Bạn có thể đổi tên tệp, bỏ qua tệp này, hoặc hủy toàn bộ thao tác.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Bạn cần chọn ít nhất một phiên bản cho mỗi tệp để tiếp tục.\"] } } } } }, { \"locale\": \"zh_CN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DWXXX, 2025\", \"Language-Team\": \"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_CN\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\ngloryandel, 2024\\nDWXXX, 2025\\n\" }, \"msgstr\": [\"Last-Translator: DWXXX, 2025\\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_CN\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是被禁止的文件名或文件夹名。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是被禁止的文件类型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允许包含在文件名或文件夹名中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}文件冲突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"在{dirname}目录下有{count}个文件冲突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩余{seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩余 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"还剩几秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"聚合\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整个操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上传\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"继续\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新建\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估计剩余时间\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"服务端版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"组合区块失败\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"上传文件失败\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['文件名不得以 \"{segment}\" 结尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果同时选择两个版本,则上传文件的名称中将添加一个数字。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"无效文件名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"文件最后修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新文件名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"上传版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暂停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"图片预览\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"选择所有的选择框\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"保留所有服务端版本\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"保留所有上传版本\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳过\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"跳过 {count} 文件\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳过此文件\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"文件大小未知\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上传\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上传文件\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上传文件夹\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"从设备上传\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上传已取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上传已跳过\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['已跳过上传\"{folder}\"'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上传进度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你要保留哪些文件?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以重命名文件、跳过此文件或取消整个操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"每个文件至少选择保留一个版本\"] } } } } }, { \"locale\": \"zh_HK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Café Tango, 2025\", \"Language-Team\": \"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_HK\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nCafé Tango, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Café Tango, 2025\\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_HK\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案或資料夾名稱。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案類型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允許出現在檔案或資料夾名稱中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"組裝\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"創建新\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"無法組裝這些部分\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"無法上傳檔案\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['檔案名不得以 \"{segment}\" 結尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,傳入檔案的名稱將會新增編號。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無效的檔案名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期不詳\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新檔案名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本 \"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重新命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳過\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 個檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"略過這個檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"大小不詳\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上傳資料夾\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"從裝置上傳\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上傳已被取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上傳已被跳過\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 的上傳已被跳過'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以選擇重新命名檔案、跳過此檔案或取消整個操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }, { \"locale\": \"zh_TW\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"黃柏諺 , 2024\", \"Language-Team\": \"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_TW\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n黃柏諺 , 2024\\n\" }, \"msgstr\": [\"Last-Translator: 黃柏諺 , 2024\\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_TW\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,複製的檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"未知大小\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass UploadCancelledError extends Error {\n constructor(cause) {\n super(t(\"Upload has been cancelled\"), { cause });\n }\n}\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/upload\").detectUser().build();\naxiosRetry(axios, { retries: 0 });\nasync function uploadData(url, uploadData2, uploadOptions) {\n const options = {\n headers: {},\n onUploadProgress: () => {\n },\n onUploadRetry: () => {\n },\n retries: 5,\n ...uploadOptions\n };\n let data;\n if (uploadData2 instanceof Blob) {\n data = uploadData2;\n } else {\n data = await uploadData2();\n }\n if (options.destinationFile) {\n options.headers.Destination = options.destinationFile;\n }\n if (!options.headers[\"Content-Type\"]) {\n options.headers[\"Content-Type\"] = \"application/octet-stream\";\n }\n return await axios.request({\n method: \"PUT\",\n url,\n data,\n signal: options.signal,\n onUploadProgress: options.onUploadProgress,\n headers: options.headers,\n \"axios-retry\": {\n retries: options.retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3),\n retryCondition(error) {\n if (error.status === 507) {\n return false;\n }\n if (error.status === 423) {\n return true;\n }\n return isNetworkOrIdempotentRequestError(error);\n },\n onRetry: options.onUploadRetry\n }\n });\n}\nconst getChunk = function(file, start, length) {\n if (start === 0 && file.size <= length) {\n return Promise.resolve(new Blob([file], { type: file.type || \"application/octet-stream\" }));\n }\n return Promise.resolve(new Blob([file.slice(start, start + length)], { type: \"application/octet-stream\" }));\n};\nconst initChunkWorkspace = async function(destinationFile = void 0, retries = 5, isPublic = false, customHeaders = {}) {\n let chunksWorkspace;\n if (isPublic) {\n chunksWorkspace = `${getBaseUrl()}/public.php/dav/uploads/${getSharingToken()}`;\n } else {\n chunksWorkspace = generateRemoteUrl(`dav/uploads/${getCurrentUser()?.uid}`);\n }\n const hash = [...Array(16)].map(() => Math.floor(Math.random() * 16).toString(16)).join(\"\");\n const tempWorkspace = `web-file-upload-${hash}`;\n const url = `${chunksWorkspace}/${tempWorkspace}`;\n const headers = customHeaders;\n if (destinationFile) {\n headers.Destination = destinationFile;\n }\n await axios.request({\n method: \"MKCOL\",\n url,\n headers,\n \"axios-retry\": {\n retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n }\n });\n logger.debug(\"Created temporary upload workspace\", { url });\n return url;\n};\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst getMaxChunksSize = function(fileSize = void 0) {\n const maxChunkSize = window.OC?.appConfig?.files?.max_chunk_size;\n if (maxChunkSize <= 0) {\n return 0;\n }\n if (!Number(maxChunkSize)) {\n return 10 * 1024 * 1024;\n }\n const minimumChunkSize = Math.max(Number(maxChunkSize), 5 * 1024 * 1024);\n if (fileSize === void 0) {\n return minimumChunkSize;\n }\n return Math.max(minimumChunkSize, Math.ceil(fileSize / 1e4));\n};\nvar Status = /* @__PURE__ */ ((Status2) => {\n Status2[Status2[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n Status2[Status2[\"ASSEMBLING\"] = 2] = \"ASSEMBLING\";\n Status2[Status2[\"FINISHED\"] = 3] = \"FINISHED\";\n Status2[Status2[\"CANCELLED\"] = 4] = \"CANCELLED\";\n Status2[Status2[\"FAILED\"] = 5] = \"FAILED\";\n return Status2;\n})(Status || {});\nclass Upload {\n _source;\n _file;\n _isChunked;\n _chunks;\n _size;\n _uploaded = 0;\n _startTime = 0;\n _status = 0;\n _controller;\n _response = null;\n constructor(source, chunked = false, size, file) {\n const chunks = Math.min(getMaxChunksSize() > 0 ? Math.ceil(size / getMaxChunksSize()) : 1, 1e4);\n this._source = source;\n this._isChunked = chunked && getMaxChunksSize() > 0 && chunks > 1;\n this._chunks = this._isChunked ? chunks : 1;\n this._size = size;\n this._file = file;\n this._controller = new AbortController();\n }\n get source() {\n return this._source;\n }\n get file() {\n return this._file;\n }\n get isChunked() {\n return this._isChunked;\n }\n get chunks() {\n return this._chunks;\n }\n get size() {\n return this._size;\n }\n get startTime() {\n return this._startTime;\n }\n set response(response) {\n this._response = response;\n }\n get response() {\n return this._response;\n }\n get uploaded() {\n return this._uploaded;\n }\n /**\n * Update the uploaded bytes of this upload\n */\n set uploaded(length) {\n if (length >= this._size) {\n this._status = this._isChunked ? 2 : 3;\n this._uploaded = this._size;\n return;\n }\n this._status = 1;\n this._uploaded = length;\n if (this._startTime === 0) {\n this._startTime = (/* @__PURE__ */ new Date()).getTime();\n }\n }\n get status() {\n return this._status;\n }\n /**\n * Update this upload status\n */\n set status(status) {\n this._status = status;\n }\n /**\n * Returns the axios cancel token source\n */\n get signal() {\n return this._controller.signal;\n }\n /**\n * Cancel any ongoing requests linked to this upload\n */\n cancel() {\n this._controller.abort();\n this._status = 4;\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst isFileSystemDirectoryEntry = (o) => \"FileSystemDirectoryEntry\" in window && o instanceof FileSystemDirectoryEntry;\nconst isFileSystemFileEntry = (o) => \"FileSystemFileEntry\" in window && o instanceof FileSystemFileEntry;\nconst isFileSystemEntry = (o) => \"FileSystemEntry\" in window && o instanceof FileSystemEntry;\nclass Directory extends File {\n _originalName;\n _path;\n _children;\n constructor(path) {\n super([], basename(path), { type: \"httpd/unix-directory\", lastModified: 0 });\n this._children = /* @__PURE__ */ new Map();\n this._originalName = basename(path);\n this._path = path;\n }\n get size() {\n return this.children.reduce((sum, file) => sum + file.size, 0);\n }\n get lastModified() {\n return this.children.reduce((latest, file) => Math.max(latest, file.lastModified), 0);\n }\n // We need this to keep track of renamed files\n get originalName() {\n return this._originalName;\n }\n get children() {\n return Array.from(this._children.values());\n }\n get webkitRelativePath() {\n return this._path;\n }\n getChild(name) {\n return this._children.get(name) ?? null;\n }\n /**\n * Add multiple children at once\n * @param files The files to add\n */\n async addChildren(files) {\n for (const file of files) {\n await this.addChild(file);\n }\n }\n /**\n * Add a child to the directory.\n * If it is a nested child the parents will be created if not already exist.\n * @param file The child to add\n */\n async addChild(file) {\n const rootPath = this._path && `${this._path}/`;\n if (isFileSystemFileEntry(file)) {\n file = await new Promise((resolve, reject) => file.file(resolve, reject));\n } else if (isFileSystemDirectoryEntry(file)) {\n const reader = file.createReader();\n const entries = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));\n const child = new Directory(`${rootPath}${file.name}`);\n await child.addChildren(entries);\n this._children.set(file.name, child);\n return;\n }\n file = file;\n const filePath = file.webkitRelativePath ?? file.name;\n if (!filePath.includes(\"/\")) {\n this._children.set(file.name, file);\n } else {\n if (!filePath.startsWith(this._path)) {\n throw new Error(`File ${filePath} is not a child of ${this._path}`);\n }\n const relPath = filePath.slice(rootPath.length);\n const name = basename(relPath);\n if (name === relPath) {\n this._children.set(name, file);\n } else {\n const base = relPath.slice(0, relPath.indexOf(\"/\"));\n if (this._children.has(base)) {\n await this._children.get(base).addChild(file);\n } else {\n const child = new Directory(`${rootPath}${base}`);\n await child.addChild(file);\n this._children.set(base, child);\n }\n }\n }\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nvar EtaStatus = /* @__PURE__ */ ((EtaStatus2) => {\n EtaStatus2[EtaStatus2[\"Idle\"] = 0] = \"Idle\";\n EtaStatus2[EtaStatus2[\"Paused\"] = 1] = \"Paused\";\n EtaStatus2[EtaStatus2[\"Running\"] = 2] = \"Running\";\n return EtaStatus2;\n})(EtaStatus || {});\nclass Eta extends TypedEventTarget {\n /** Bytes done */\n _done = 0;\n /** Total bytes to do */\n _total = 0;\n /** Current progress (cached) as interval [0,1] */\n _progress = 0;\n /** Status of the ETA */\n _status = 0;\n /** Time of the last update */\n _startTime = -1;\n /** Total elapsed time for current ETA */\n _elapsedTime = 0;\n /** Current speed in bytes per second */\n _speed = -1;\n /** Expected duration to finish in seconds */\n _eta = Infinity;\n /**\n * Cutoff time for the low pass filter of the ETA.\n * A higher value will consider more history information for calculation,\n * and thus suppress spikes of the speed,\n * but will make the overall resposiveness slower.\n */\n _cutoffTime = 2.5;\n constructor(options = {}) {\n super();\n if (options.start) {\n this.resume();\n }\n if (options.total) {\n this.update(0, options.total);\n }\n this._cutoffTime = options.cutoffTime ?? 2.5;\n }\n /**\n * Add more transferred bytes.\n * @param done Additional bytes done.\n */\n add(done) {\n this.update(this._done + done);\n }\n /**\n * Update the transmission state.\n *\n * @param done The new value of transferred bytes.\n * @param total Optionally also update the total bytes we expect.\n */\n update(done, total) {\n if (this.status !== 2) {\n return;\n }\n if (total && total > 0) {\n this._total = total;\n }\n const deltaDone = done - this._done;\n const deltaTime = (Date.now() - this._startTime) / 1e3;\n this._startTime = Date.now();\n this._elapsedTime += deltaTime;\n this._done = done;\n this._progress = this._done / this._total;\n const historyNeeded = this._cutoffTime + deltaTime;\n if (this._elapsedTime > historyNeeded) {\n const alpha = deltaTime / (deltaTime + 1 / this._cutoffTime);\n const filtered = this._done - deltaDone + (1 - alpha) * deltaDone;\n this._speed = Math.round(filtered / this._elapsedTime);\n } else if (this._speed === -1 && this._elapsedTime > deltaTime) {\n const remaining = this._total - done;\n const eta = remaining / (done / this._elapsedTime);\n if (this._eta !== Infinity || eta <= 2 * this._cutoffTime) {\n this._eta = eta;\n }\n }\n if (this._speed > 0) {\n this._eta = Math.round((this._total - this._done) / this._speed);\n }\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\", { cancelable: false }));\n }\n reset() {\n this._done = 0;\n this._total = 0;\n this._progress = 0;\n this._elapsedTime = 0;\n this._eta = Infinity;\n this._speed = -1;\n this._startTime = -1;\n this._status = 0;\n this.dispatchTypedEvent(\"reset\", new CustomEvent(\"reset\"));\n }\n /**\n * Pause the ETA calculation.\n */\n pause() {\n if (this._status === 2) {\n this._status = 1;\n this._elapsedTime += (Date.now() - this._startTime) / 1e3;\n this.dispatchTypedEvent(\"pause\", new CustomEvent(\"pause\"));\n }\n }\n /**\n * Resume the ETA calculation.\n */\n resume() {\n if (this._status !== 2) {\n this._startTime = Date.now();\n this._status = 2;\n this.dispatchTypedEvent(\"resume\", new CustomEvent(\"resume\"));\n }\n }\n /**\n * Status of the Eta (paused, active, idle).\n */\n get status() {\n return this._status;\n }\n /**\n * Progress (percent done)\n */\n get progress() {\n return Math.round(this._progress * 1e4) / 100;\n }\n /**\n * Estimated time in seconds.\n */\n get time() {\n return this._eta;\n }\n /**\n * Human readable version of the estimated time.\n */\n get timeReadable() {\n if (this._eta === Infinity) {\n return t(\"estimating time left\");\n } else if (this._eta < 10) {\n return t(\"a few seconds left\");\n } else if (this._eta < 60) {\n return n(\"{seconds} seconds left\", \"{seconds} seconds left\", this._eta, { seconds: this._eta });\n }\n const hours = String(Math.floor(this._eta / 3600)).padStart(2, \"0\");\n const minutes = String(Math.floor(this._eta % 3600 / 60)).padStart(2, \"0\");\n const seconds = String(this._eta % 60).padStart(2, \"0\");\n return t(\"{time} left\", { time: `${hours}:${minutes}:${seconds}` });\n }\n /**\n * Transfer speed in bytes per second.\n * Returns `-1` if not yet estimated.\n */\n get speed() {\n return this._speed;\n }\n /**\n * Get the speed in human readable format using file sizes like 10KB/s.\n * Returns the empty string if not yet estimated.\n */\n get speedReadable() {\n return this._speed > 0 ? `${formatFileSize(this._speed, true)}∕s` : \"\";\n }\n}\nvar UploaderStatus = /* @__PURE__ */ ((UploaderStatus2) => {\n UploaderStatus2[UploaderStatus2[\"IDLE\"] = 0] = \"IDLE\";\n UploaderStatus2[UploaderStatus2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n UploaderStatus2[UploaderStatus2[\"PAUSED\"] = 2] = \"PAUSED\";\n return UploaderStatus2;\n})(UploaderStatus || {});\nclass Uploader {\n // Initialized via setter in the constructor\n _destinationFolder;\n _isPublic;\n _customHeaders;\n // Global upload queue\n _uploadQueue = [];\n _jobQueue = new PQueue({\n // Maximum number of concurrent uploads\n // @ts-expect-error TS2339 Object has no defined properties\n concurrency: getCapabilities().files?.chunked_upload?.max_parallel_count ?? 5\n });\n _queueSize = 0;\n _queueProgress = 0;\n _queueStatus = 0;\n _eta = new Eta();\n _notifiers = [];\n /**\n * Initialize uploader\n *\n * @param {boolean} isPublic are we in public mode ?\n * @param {Folder} destinationFolder the context folder to operate, relative to the root folder\n */\n constructor(isPublic = false, destinationFolder) {\n this._isPublic = isPublic;\n this._customHeaders = {};\n if (!destinationFolder) {\n const source = `${davRemoteURL}${davRootPath}`;\n let owner;\n if (isPublic) {\n owner = \"anonymous\";\n } else {\n const user = getCurrentUser()?.uid;\n if (!user) {\n throw new Error(\"User is not logged in\");\n }\n owner = user;\n }\n destinationFolder = new Folder({\n id: 0,\n owner,\n permissions: Permission.ALL,\n root: davRootPath,\n source\n });\n }\n this.destination = destinationFolder;\n logger.debug(\"Upload workspace initialized\", {\n destination: this.destination,\n root: this.root,\n isPublic,\n maxChunksSize: getMaxChunksSize()\n });\n }\n /**\n * Get the upload destination path relative to the root folder\n */\n get destination() {\n return this._destinationFolder;\n }\n /**\n * Set the upload destination path relative to the root folder\n */\n set destination(folder) {\n if (!folder || folder.type !== FileType.Folder || !folder.source) {\n throw new Error(\"Invalid destination folder\");\n }\n logger.debug(\"Destination set\", { folder });\n this._destinationFolder = folder;\n }\n /**\n * Get the root folder\n */\n get root() {\n return this._destinationFolder.source;\n }\n /**\n * Get registered custom headers for uploads\n */\n get customHeaders() {\n return structuredClone(this._customHeaders);\n }\n /**\n * Set a custom header\n * @param name The header to set\n * @param value The string value\n */\n setCustomHeader(name, value = \"\") {\n this._customHeaders[name] = value;\n }\n /**\n * Unset a custom header\n * @param name The header to unset\n */\n deleteCustomerHeader(name) {\n delete this._customHeaders[name];\n }\n /**\n * Get the upload queue\n */\n get queue() {\n return this._uploadQueue;\n }\n reset() {\n this._eta.reset();\n if (this._uploadQueue.length === 0 && this._jobQueue.size === 0) {\n return;\n }\n this._uploadQueue.splice(0, this._uploadQueue.length);\n this._jobQueue.clear();\n this._queueSize = 0;\n this._queueProgress = 0;\n this._queueStatus = 0;\n logger.debug(\"Uploader state reset\");\n }\n /**\n * Pause any ongoing upload(s)\n */\n pause() {\n this._eta.pause();\n this._jobQueue.pause();\n this._queueStatus = 2;\n this.updateStats();\n logger.debug(\"Uploader paused\");\n }\n /**\n * Resume any pending upload(s)\n */\n start() {\n this._eta.resume();\n this._jobQueue.start();\n this._queueStatus = 1;\n this.updateStats();\n logger.debug(\"Uploader resumed\");\n }\n /**\n * Get the estimation for the uploading time.\n */\n get eta() {\n return this._eta;\n }\n /**\n * Get the upload queue stats\n */\n get info() {\n return {\n size: this._queueSize,\n progress: this._queueProgress,\n status: this._queueStatus\n };\n }\n updateStats() {\n const size = this._uploadQueue.map((upload2) => upload2.size).reduce((partialSum, a) => partialSum + a, 0);\n const uploaded = this._uploadQueue.map((upload2) => upload2.uploaded).reduce((partialSum, a) => partialSum + a, 0);\n this._eta.update(uploaded, size);\n this._queueSize = size;\n this._queueProgress = uploaded;\n if (this._queueStatus !== 2) {\n const pending = this._uploadQueue.find(({ status }) => [Status.INITIALIZED, Status.UPLOADING, Status.ASSEMBLING].includes(status));\n if (this._jobQueue.size > 0 || pending) {\n this._queueStatus = 1;\n } else {\n this.eta.reset();\n this._queueStatus = 0;\n }\n }\n }\n addNotifier(notifier) {\n this._notifiers.push(notifier);\n }\n /**\n * Notify listeners of the upload completion\n * @param upload The upload that finished\n */\n _notifyAll(upload2) {\n for (const notifier of this._notifiers) {\n try {\n notifier(upload2);\n } catch (error) {\n logger.warn(\"Error in upload notifier\", { error, source: upload2.source });\n }\n }\n }\n /**\n * Uploads multiple files or folders while preserving the relative path (if available)\n * @param {string} destination The destination path relative to the root folder. e.g. /foo/bar (a file \"a.txt\" will be uploaded then to \"/foo/bar/a.txt\")\n * @param {Array} files The files and/or folders to upload\n * @param {Function} callback Callback that receives the nodes in the current folder and the current path to allow resolving conflicts, all nodes that are returned will be uploaded (if a folder does not exist it will be created)\n * @return Cancelable promise that resolves to an array of uploads\n *\n * @example\n * ```ts\n * // For example this is from handling the onchange event of an input[type=file]\n * async handleFiles(files: File[]) {\n * this.uploads = await this.uploader.batchUpload('uploads', files, this.handleConflicts)\n * }\n *\n * async handleConflicts(nodes: File[], currentPath: string) {\n * const conflicts = getConflicts(nodes, this.fetchContent(currentPath))\n * if (conflicts.length === 0) {\n * // No conflicts so upload all\n * return nodes\n * } else {\n * // Open the conflict picker to resolve conflicts\n * try {\n * const { selected, renamed } = await openConflictPicker(currentPath, conflicts, this.fetchContent(currentPath), { recursive: true })\n * return [...selected, ...renamed]\n * } catch (e) {\n * return false\n * }\n * }\n * }\n * ```\n */\n batchUpload(destination, files, callback) {\n if (!callback) {\n callback = async (files2) => files2;\n }\n return new PCancelable(async (resolve, reject, onCancel) => {\n const rootFolder = new Directory(\"\");\n await rootFolder.addChildren(files);\n const target = `${this.root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const upload2 = new Upload(target, false, 0, rootFolder);\n upload2.status = Status.UPLOADING;\n this._uploadQueue.push(upload2);\n logger.debug(\"Starting new batch upload\", { target });\n try {\n const client = davGetClient(this.root, this._customHeaders);\n const promise = this.uploadDirectory(destination, rootFolder, callback, client);\n onCancel(() => promise.cancel());\n const uploads = await promise;\n upload2.status = Status.FINISHED;\n resolve(uploads);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n logger.info(\"Upload cancelled by user\", { error });\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else {\n logger.error(\"Error in batch upload\", { error });\n upload2.status = Status.FAILED;\n reject(error);\n }\n } finally {\n this._uploadQueue.splice(this._uploadQueue.indexOf(upload2), 1);\n this._notifyAll(upload2);\n this.updateStats();\n }\n });\n }\n /**\n * Helper to create a directory wrapped inside an Upload class\n * @param destination Destination where to create the directory\n * @param directory The directory to create\n * @param client The cached WebDAV client\n */\n createDirectory(destination, directory, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n const rootPath = `${this.root.replace(/\\/$/, \"\")}/${folderPath.replace(/^\\//, \"\")}`;\n if (!directory.name) {\n throw new Error(\"Can not create empty directory\");\n }\n const currentUpload = new Upload(rootPath, false, 0, directory);\n this._uploadQueue.push(currentUpload);\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n currentUpload.signal.addEventListener(\"abort\", () => reject(t(\"Upload has been cancelled\")));\n await this._jobQueue.add(async () => {\n currentUpload.status = Status.UPLOADING;\n try {\n await client.createDirectory(folderPath, { signal: abort.signal });\n resolve(currentUpload);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n currentUpload.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else if (error && typeof error === \"object\" && \"status\" in error && error.status === 405) {\n logger.debug(\"Directory already exists, writing into it\", { directory: directory.name });\n currentUpload.status = Status.FINISHED;\n resolve(currentUpload);\n } else {\n currentUpload.status = Status.FAILED;\n reject(error);\n }\n } finally {\n this._notifyAll(currentUpload);\n this.updateStats();\n }\n });\n });\n }\n // Helper for uploading directories (recursively)\n uploadDirectory(destination, directory, callback, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n const selectedForUpload = await callback(directory.children, folderPath);\n if (selectedForUpload === false) {\n logger.debug(\"Upload canceled by user\", { directory });\n reject(new UploadCancelledError(\"Conflict resolution cancelled by user\"));\n return;\n } else if (selectedForUpload.length === 0 && directory.children.length > 0) {\n logger.debug(\"Skipping directory, as all files were skipped by user\", { directory });\n resolve([]);\n return;\n }\n const directories = [];\n const uploads = [];\n abort.signal.addEventListener(\"abort\", () => {\n directories.forEach((upload2) => upload2.cancel());\n uploads.forEach((upload2) => upload2.cancel());\n });\n logger.debug(\"Start directory upload\", { directory });\n try {\n if (directory.name) {\n uploads.push(this.createDirectory(destination, directory, client));\n await uploads.at(-1);\n }\n for (const node of selectedForUpload) {\n if (node instanceof Directory) {\n directories.push(this.uploadDirectory(folderPath, node, callback, client));\n } else {\n uploads.push(this.upload(`${folderPath}/${node.name}`, node));\n }\n }\n const resolvedUploads = await Promise.all(uploads);\n const resolvedDirectoryUploads = await Promise.all(directories);\n resolve([resolvedUploads, ...resolvedDirectoryUploads].flat());\n } catch (e) {\n abort.abort(e);\n reject(e);\n }\n });\n }\n /**\n * Upload a file to the given path\n * @param {string} destination the destination path relative to the root folder. e.g. /foo/bar.txt\n * @param {File|FileSystemFileEntry} fileHandle the file to upload\n * @param {string} root the root folder to upload to\n * @param retries number of retries\n */\n upload(destination, fileHandle, root, retries = 5) {\n root = root || this.root;\n const destinationPath = `${root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const { origin } = new URL(destinationPath);\n const encodedDestinationFile = origin + encodePath(destinationPath.slice(origin.length));\n this.eta.resume();\n logger.debug(`Uploading ${fileHandle.name} to ${encodedDestinationFile}`);\n const promise = new PCancelable(async (resolve, reject, onCancel) => {\n if (isFileSystemFileEntry(fileHandle)) {\n fileHandle = await new Promise((resolve2) => fileHandle.file(resolve2, reject));\n }\n const file = fileHandle;\n const supportsPublicChunking = getCapabilities().dav?.public_shares_chunking ?? false;\n const maxChunkSize = getMaxChunksSize(\"size\" in file ? file.size : void 0);\n const disabledChunkUpload = this._isPublic && !supportsPublicChunking || maxChunkSize === 0 || \"size\" in file && file.size < maxChunkSize;\n const upload2 = new Upload(destinationPath, !disabledChunkUpload, file.size, file);\n this._uploadQueue.push(upload2);\n this.updateStats();\n onCancel(upload2.cancel);\n if (!disabledChunkUpload) {\n logger.debug(\"Initializing chunked upload\", { file, upload: upload2 });\n const tempUrl = await initChunkWorkspace(encodedDestinationFile, retries, this._isPublic, this._customHeaders);\n const chunksQueue = [];\n for (let chunk = 0; chunk < upload2.chunks; chunk++) {\n const bufferStart = chunk * maxChunkSize;\n const bufferEnd = Math.min(bufferStart + maxChunkSize, upload2.size);\n const blob = () => getChunk(file, bufferStart, maxChunkSize);\n const request2 = () => {\n let chunkBytes = 0;\n return uploadData(\n `${tempUrl}/${chunk + 1}`,\n blob,\n {\n signal: upload2.signal,\n destinationFile: encodedDestinationFile,\n retries,\n onUploadProgress: ({ bytes }) => {\n const progressBytes = bytes * 0.9;\n chunkBytes += progressBytes;\n upload2.uploaded += progressBytes;\n this.updateStats();\n },\n onUploadRetry: () => {\n upload2.uploaded -= chunkBytes;\n chunkBytes = 0;\n this.updateStats();\n },\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"OC-Total-Length\": file.size,\n \"Content-Type\": \"application/octet-stream\"\n }\n }\n ).then(() => {\n upload2.uploaded += bufferEnd - bufferStart - chunkBytes;\n this.updateStats();\n }).catch((error) => {\n if (error?.response?.status === 507) {\n logger.error(\"Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks\", { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status.FAILED;\n throw error;\n }\n if (!isCancel(error)) {\n logger.error(`Chunk ${chunk + 1} ${bufferStart} - ${bufferEnd} uploading failed`, { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status.FAILED;\n }\n throw error;\n });\n };\n chunksQueue.push(this._jobQueue.add(request2));\n }\n const request = async () => {\n try {\n await Promise.all(chunksQueue);\n upload2.status = Status.ASSEMBLING;\n this.updateStats();\n upload2.response = await axios.request({\n method: \"MOVE\",\n url: `${tempUrl}/.file`,\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"OC-Total-Length\": file.size,\n Destination: encodedDestinationFile\n }\n });\n upload2.status = Status.FINISHED;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else {\n upload2.status = Status.FAILED;\n reject(t(\"Failed to assemble the chunks together\"));\n }\n axios.request({\n method: \"DELETE\",\n url: `${tempUrl}`\n });\n } finally {\n this._notifyAll(upload2);\n }\n };\n this._jobQueue.add(request);\n } else {\n logger.debug(\"Initializing regular upload\", { file, upload: upload2 });\n const blob = await getChunk(file, 0, upload2.size);\n const request = async () => {\n try {\n upload2.response = await uploadData(\n encodedDestinationFile,\n blob,\n {\n signal: upload2.signal,\n onUploadProgress: ({ bytes }) => {\n upload2.uploaded += bytes * 0.9;\n this.updateStats();\n },\n onUploadRetry: () => {\n upload2.uploaded = 0;\n this.updateStats();\n },\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"Content-Type\": file.type\n }\n }\n );\n upload2.uploaded = upload2.size;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n return;\n }\n if (error?.response) {\n upload2.response = error.response;\n }\n upload2.status = Status.FAILED;\n logger.error(`Failed uploading ${file.name}`, { error, file, upload: upload2 });\n reject(t(\"Failed to upload the file\"));\n }\n this._notifyAll(upload2);\n };\n this._jobQueue.add(request);\n this.updateStats();\n }\n this._jobQueue.onIdle().then(() => this.reset());\n return upload2;\n });\n return promise;\n }\n /**\n * Create modification time headers if valid value is available.\n * It can be invalid on Android devices if SD cards with NTFS / FAT are used,\n * as those files might use the NT epoch for time so the value will be negative.\n *\n * @param file The file to upload\n */\n _mtimeHeader(file) {\n const mtime = Math.floor(file.lastModified / 1e3);\n if (mtime > 0) {\n return { \"X-OC-Mtime\": mtime };\n }\n return {};\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction getUploader(isPublic = isPublicShare(), forceRecreate = false) {\n if (forceRecreate || window._nc_uploader === void 0) {\n window._nc_uploader = new Uploader(isPublic);\n }\n return window._nc_uploader;\n}\nfunction upload(destinationPath, file) {\n const uploader = getUploader();\n uploader.upload(destinationPath, file);\n return uploader;\n}\nfunction hasConflict(files, content) {\n return getConflicts(files, content).length > 0;\n}\nfunction getConflicts(files, content) {\n const contentNames = content.map((node) => node.basename);\n const conflicts = files.filter((node) => {\n const name = \"basename\" in node ? node.basename : node.name;\n return contentNames.indexOf(name) !== -1;\n });\n return conflicts;\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-DuPiUBHl.mjs\"));\n return new Promise((resolve, reject) => {\n const picker = new Vue({\n name: \"ConflictPickerRoot\",\n render: (h) => h(ConflictPicker, {\n props: {\n dirname,\n conflicts,\n content,\n recursiveUpload: options?.recursive === true\n },\n on: {\n submit(results) {\n resolve(results);\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n },\n cancel(error) {\n reject(error ?? new Error(\"Canceled\"));\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n }\n }\n })\n });\n picker.$mount();\n document.body.appendChild(picker.$el);\n });\n}\nfunction showInvalidFilenameDialog(error) {\n const InvalidFilenameDialog = defineAsyncComponent(() => import(\"./InvalidFilenameDialog-BM2VDeLo.mjs\"));\n const { promise, reject, resolve } = Promise.withResolvers();\n spawnDialog(\n InvalidFilenameDialog,\n {\n error,\n validateFilename\n },\n (...rest) => {\n const [{ skip, rename }] = rest;\n if (skip) {\n resolve(false);\n } else if (rename) {\n resolve(rename);\n } else {\n reject();\n }\n }\n );\n return promise;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction uploadConflictHandler(contentsCallback) {\n return async (nodes, path) => {\n try {\n const content = await contentsCallback(path).catch(() => []);\n const conflicts = getConflicts(nodes, content);\n if (conflicts.length > 0) {\n const { selected, renamed } = await openConflictPicker(path, conflicts, content, { recursive: true });\n nodes = [\n ...nodes.filter((node) => !conflicts.includes(node)),\n ...selected,\n ...renamed\n ];\n }\n const filesToUpload = [];\n for (const file of nodes) {\n try {\n validateFilename(file.name);\n filesToUpload.push(file);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n logger.error(`Unexpected error while validating ${file.name}`, { error });\n throw error;\n }\n let newName = await showInvalidFilenameDialog(error);\n if (newName !== false) {\n newName = getUniqueName(newName, nodes.map((node) => node.name));\n Object.defineProperty(file, \"name\", { value: newName });\n filesToUpload.push(file);\n }\n }\n }\n if (filesToUpload.length === 0 && nodes.length > 0) {\n const folder = basename(path);\n showInfo(\n folder ? t('Upload of \"{folder}\" has been skipped', { folder }) : t(\"Upload has been skipped\")\n );\n }\n return filesToUpload;\n } catch (error) {\n logger.debug(\"Upload has been cancelled\", { error });\n showWarning(t(\"Upload has been cancelled\"));\n return false;\n }\n };\n}\nfunction normalizeComponent(scriptExports, render6, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render6) {\n options.render = render6;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main$4 = {\n name: \"CancelIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon cancel-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst IconCancel = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconUpload = __component__$1.exports;\nconst _sfc_main = defineComponent({\n name: \"UploadPicker\",\n components: {\n IconCancel,\n IconFolderUpload,\n IconPlus,\n IconUpload,\n NcActionButton,\n NcActionCaption,\n NcActionSeparator,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcProgressBar\n },\n props: {\n accept: {\n type: Array,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the \"new\"-menu for this UploadPicker instance\n */\n noMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the button label\n */\n noLabel: {\n type: Boolean,\n default: false\n },\n /**\n * Make the \"New\"-button primary color.\n */\n primary: {\n type: Boolean,\n default: false\n },\n destination: {\n type: Folder,\n default: void 0\n },\n allowFolders: {\n type: Boolean,\n default: false\n },\n /**\n * List of file present in the destination folder\n * It is also possible to provide a function that takes a relative path to the current directory and returns the content of it\n * Note: If a function is passed it should return the current base directory when no path or an empty is passed\n */\n content: {\n type: [Array, Function],\n default: () => []\n },\n /**\n * Overwrite forbidden characters (by default the capabilities of the server are used)\n * @deprecated Deprecated and will be removed in the next major version\n */\n forbiddenCharacters: {\n type: Array,\n default: () => []\n }\n },\n setup() {\n return {\n t,\n // non reactive data / properties\n progressTimeId: `nc-uploader-progress-${Math.random().toString(36).slice(7)}`\n };\n },\n data() {\n return {\n newFileMenuEntries: [],\n openedMenu: false,\n uploadManager: getUploader()\n };\n },\n computed: {\n menuEntriesUpload() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.UploadFromDevice);\n },\n menuEntriesNew() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.CreateNew);\n },\n menuEntriesOther() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.Other);\n },\n /**\n * Check whether the current browser supports uploading directories\n * Hint: This does not check if the current connection supports this, as some browsers require a secure context!\n */\n canUploadFolders() {\n return this.allowFolders && \"webkitdirectory\" in document.createElement(\"input\");\n },\n queue() {\n return this.uploadManager.queue;\n },\n hasFailure() {\n return this.queue.some((upload2) => upload2.status === Status.FAILED);\n },\n isAssembling() {\n return this.queue.some((upload2) => upload2.status === Status.ASSEMBLING);\n },\n isUploading() {\n return this.queue.some((upload2) => upload2.status !== Status.CANCELLED);\n },\n isOnlyAssembling() {\n return this.isAssembling && this.queue.every((upload2) => (\n // ignore empty uploads or meta uploads\n upload2.size === 0 || upload2.status === Status.ASSEMBLING || upload2.status === Status.FINISHED\n ));\n },\n isPaused() {\n return this.uploadManager.info?.status === UploaderStatus.PAUSED;\n },\n buttonLabel() {\n return this.noMenu ? t(\"Upload\") : t(\"New\");\n },\n haveMenu() {\n return !((this.noMenu || this.newFileMenuEntries.length === 0) && !this.canUploadFolders);\n }\n },\n watch: {\n allowFolders: {\n immediate: true,\n handler() {\n if (typeof this.content !== \"function\" && this.allowFolders) {\n logger.error(\"[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function\");\n }\n }\n },\n destination(destination) {\n this.setDestination(destination);\n },\n isPaused(isPaused) {\n if (isPaused) {\n this.$emit(\"paused\", this.queue);\n } else {\n this.$emit(\"resumed\", this.queue);\n }\n }\n },\n beforeMount() {\n if (this.destination) {\n this.setDestination(this.destination);\n }\n this.uploadManager.addNotifier(this.onUploadCompletion);\n useHotKey(\"u\", this.onKeyDown, {\n stop: true,\n prevent: true,\n shift: true\n });\n useHotKey(\"Escape\", this.onKeyDown, {\n stop: true,\n prevent: true\n });\n logger.debug(\"UploadPicker initialised\");\n },\n methods: {\n etaTimeAndSpeed() {\n const speed = this.uploadManager.eta.speedReadable;\n if (speed) {\n return `${this.uploadManager.eta.timeReadable} (${speed})`;\n }\n return this.uploadManager.eta.timeReadable;\n },\n /**\n * Handle clicking a new-menu entry\n * @param entry The entry that was clicked\n */\n async onClick(entry) {\n entry.handler(\n this.destination,\n await this.getContent().catch(() => [])\n );\n },\n /**\n * Trigger file picker\n * @param uploadFolders Upload folders\n */\n onTriggerPick(uploadFolders = false) {\n const input = this.$refs.input;\n if (this.canUploadFolders) {\n input.webkitdirectory = uploadFolders;\n }\n this.$nextTick(() => input.click());\n },\n /**\n * Helper for backwards compatibility that queries the content of the current directory\n * @param path The current path\n */\n async getContent(path) {\n return Array.isArray(this.content) ? this.content : await this.content(path);\n },\n /**\n * Start uploading\n */\n async onPick() {\n const input = this.$refs.input;\n const files = input.files ? Array.from(input.files) : [];\n try {\n await this.uploadManager.batchUpload(\"\", files, uploadConflictHandler(this.getContent));\n } catch (error) {\n logger.debug(\"Error while uploading\", { error });\n } finally {\n this.resetForm();\n }\n },\n resetForm() {\n const form = this.$refs.form;\n form?.reset();\n },\n /**\n * Cancel ongoing queue\n */\n onCancel() {\n this.uploadManager.queue.forEach((upload2) => {\n upload2.cancel();\n });\n this.resetForm();\n },\n setDestination(destination) {\n if (!this.destination) {\n logger.debug(\"Invalid destination\");\n return;\n }\n this.uploadManager.destination = destination;\n this.newFileMenuEntries = getNewFileMenuEntries(destination);\n },\n onUploadCompletion(upload2) {\n if (upload2.status === Status.FAILED) {\n this.$emit(\"failed\", upload2);\n } else {\n this.$emit(\"uploaded\", upload2);\n }\n },\n onKeyDown(event) {\n if (event.key === \"u\") {\n if (this.haveMenu) {\n this.openedMenu = true;\n return;\n }\n this.onTriggerPick();\n }\n if (event.key === \"Escape\" && this.openedMenu) {\n this.openedMenu = false;\n }\n }\n }\n});\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _vm.destination ? _c(\"form\", { ref: \"form\", staticClass: \"upload-picker\", class: { \"upload-picker--uploading\": _vm.isUploading, \"upload-picker--paused\": _vm.isPaused }, attrs: { \"data-cy-upload-picker\": \"\" } }, [!_vm.haveMenu ? _c(\"NcButton\", { attrs: { \"aria-label\": _vm.buttonLabel, \"disabled\": _vm.disabled, \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }, !_vm.isUploading ? { key: \"default\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.buttonLabel) + \" \")];\n }, proxy: true } : null], null, true) }) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.buttonLabel, \"menu-name\": _vm.noLabel ? void 0 : _vm.buttonLabel, \"open\": _vm.openedMenu, \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"update:open\": function($event) {\n _vm.openedMenu = $event;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1991456921) }, [_c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Upload from device\") } }), _c(\"NcActionButton\", { attrs: { \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"close-after-click\": true }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 337456192) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload files\")) + \" \")]), _vm.canUploadFolders ? _c(\"NcActionButton\", { attrs: { \"close-after-click\": \"\", \"data-cy-upload-picker-add-folders\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-folder\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick(true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconFolderUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 931184598) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload folders\")) + \" \")]) : _vm._e(), !_vm.noMenu ? _vm._l(_vm.menuEntriesUpload, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n }) : _vm._e(), !_vm.noMenu && _vm.menuEntriesNew.length > 0 ? [_c(\"NcActionSeparator\"), _c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Create new\") } }), _vm._l(_vm.menuEntriesNew, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e(), !_vm.noMenu && _vm.menuEntriesOther.length > 0 ? [_c(\"NcActionSeparator\"), _vm._l(_vm.menuEntriesOther, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e()], 2), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.isUploading, expression: \"isUploading\" }], staticClass: \"upload-picker__progress\" }, [_c(\"NcProgressBar\", { attrs: { \"aria-label\": _vm.t(\"Upload progress\"), \"aria-describedby\": _vm.progressTimeId, \"data-cy-upload-picker-progress\": \"\", \"error\": _vm.hasFailure, \"value\": _vm.uploadManager.eta.progress, \"size\": \"medium\" } }), _c(\"p\", { attrs: { \"id\": _vm.progressTimeId, \"data-cy-upload-picker-progress-label\": \"\" } }, [_vm.isPaused ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"paused\")) + \" \")]) : _vm.isOnlyAssembling ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"assembling\")) + \" \")]) : _c(\"span\", { attrs: { \"title\": _vm.etaTimeAndSpeed() } }, [_vm._v(\" \" + _vm._s(_vm.uploadManager.eta.timeReadable) + \" \"), _vm.uploadManager.eta.speedReadable && _vm.uploadManager.eta.time >= 60 ? _c(\"span\", [_vm._v(\" (\" + _vm._s(_vm.uploadManager.eta.speedReadable) + \") \")]) : _vm._e()])])], 1), _vm.isUploading && !_vm.isOnlyAssembling ? _c(\"NcButton\", { staticClass: \"upload-picker__cancel\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.t(\"Cancel uploads\"), \"data-cy-upload-picker-cancel\": \"\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconCancel\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3076329829) }) : _vm._e(), _c(\"input\", { ref: \"input\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join?.(\", \"), \"multiple\": _vm.multiple, \"data-cy-upload-picker-input\": \"\", \"type\": \"file\" }, on: { \"change\": _vm.onPick } })], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a66c1264\"\n);\nconst UploadPicker = __component__.exports;\nexport {\n EtaStatus as E,\n Status as S,\n Upload as U,\n isFileSystemFileEntry as a,\n n as b,\n Uploader as c,\n UploaderStatus as d,\n getConflicts as e,\n uploadConflictHandler as f,\n getUploader as g,\n hasConflict as h,\n isFileSystemEntry as i,\n UploadPicker as j,\n logger as l,\n normalizeComponent as n,\n openConflictPicker as o,\n t,\n upload as u\n};\n//# sourceMappingURL=index-DPkUyJ8g.mjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1035\":\"da08d310d18692ca4e27\",\"1140\":\"dd55e1cf2dab9870eea9\",\"1764\":\"3654558a3474ec02b609\",\"2221\":\"5cdd551ed83d9a12c3ed\",\"2457\":\"ce6348bfa704a5bf56fb\",\"2915\":\"0ea964602d304dd64718\",\"4271\":\"101cdb0f1357424796fd\",\"5448\":\"71cfe268d6f1213c4735\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"8ac07126adf0759a3464\",\"6798\":\"55fb835b251fd3f7de19\",\"7471\":\"b4ac70873a3ab192efd0\",\"7859\":\"5bcb1bbacda3204063dd\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"0f63c2eb085d7b08be1b\",\"9281\":\"29ef7f217a0c6b239922\",\"9906\":\"24447948ddfe6cf1ef05\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1171;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t1171: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(30312)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","queue","PQueue","concurrency","requestConversion","fileId","targetMimeType","axios","post","generateOcsUrl","ACTION_CONVERT","initialUserConfig","loadState","crop_image_previews","default_view","folder_tree","grid_view","show_files_extensions","show_hidden","show_mime_column","sort_favorites_first","sort_folders_first","show_dialog_deletion","show_dialog_file_extension","useUserConfigStore","defineStore","userConfig","ref","subscribe","key","value","set","onUpdate","update","async","getCurrentUser","put","generateUrl","emit","isTrashbinEnabled","getCapabilities","files","undelete","canUnshareOnly","nodes","every","node","attributes","canDisconnectOnly","displayName","view","length","t","id","hasSharedItems","some","hasDeleteItems","isMixedUnshareAndDelete","type","FileType","File","isAllFiles","Folder","isAllFolders","shouldAskForConfirmation","getPinia","askConfirmation","message","n","count","Promise","resolve","window","OC","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","cancel","decision","deleteNode","delete","encodedSource","action","iconSvgInline","enabled","allow_delete","map","permissions","permission","Permission","DELETE","exec","isCalledFromEventListener","Error","stack","toLocaleLowerCase","includes","error","logger","source","execBatch","all","promises","add","destructive","order","hotkey","description","isDownloadable","READ","downloadAttribute","JSON","parse","find","scope","undefined","default","DefaultType","DEFAULT","isDavResource","downloadNodes","showError","folder","directory","filesStore","useFilesStore","pathsStore","usePathsStore","getRoot","getPath","getNode","getCurrentDirectory","path","Array","fill","triggerDownload","url","name","head","hiddenElement","document","createElement","download","href","click","longestCommonPath","first","second","firstSegments","split","filter","Boolean","secondSegments","base","index","segment","entries","displayname","URL","searchParams","append","pathname","slice","filenames","decodeURIComponent","stringify","at","shouldFavorite","StarOutlineSvg","StarSvg","isPublicShare","root","startsWith","NONE","willFavorite","favoriteNode","encodePath","tags","TAG_FAVORITE","dirname","Vue","favorite","sharePermissions","MoveCopyAction","canMove","minPermission","reduce","min","Math","ALL","canCopy","attribute","canDownload","CREATE","HintException","getActionForNodes","MOVE","COPY","MOVE_OR_COPY","FolderMoveSvg","context","this","target","dir","reject","promise","withResolvers","fileIDs","fileid","filePicker","getFilePickerBuilder","allowDirectories","setFilter","setCanPick","setMimeTypeFilter","setMultiSelect","startAt","setButtonFactory","selection","buttons","basename","dirnames","paths","push","label","escape","sanitize","variant","icon","CopyIconSvg","callback","destination","build","pick","catch","debug","FilePickerClosed","openFilePickerForAction","result","fromAsync","method","overwrite","nameMapping","Map","otherNodes","getContents","contents","conflicts","getConflicts","nodesToRename","content","c","openConflictPicker","skipped","renamed","usedNames","newName","getUniqueName","ignoreFileExtension","actionFinished","mode","sources","text","toast","showLoading","hideToast","createLoadingNotification","join","NodeStatus","LOADING","client","getClient","currentPath","defaultRootPath","destinationPath","get","copyFile","data","stat","details","getDefaultPropfind","resultToNode","moveFile","response","status","parser","DOMParser","parseFromString","querySelector","textContent","handleCopyMoveNodesTo","FolderSvg","OCP","Files","Router","goToRoute","String","HIDDEN","SEARCH_VIEW_ID","openfile","WRITE","openLocalClient","dialog","DialogBuilder","setName","setText","setButtons","show","confirmLocalEditDialog","OCA","Viewer","open","attemptOpenLocalClient","link","uid","location","host","ocs","token","parentNode","parentPermissions","UPDATE","getSidebar","available","sidebar","FilenameFilter","FileListFilter","constructor","super","query","updateQuery","queryParts","searchQuery","part","reset","trim","filterUpdated","chips","onclick","store","useSearchStore","updateChips","HiddenFilesFilter","showHidden","hidden","N","Symbol","toStringTag","startOfToday","Date","setHours","startOfLastWeek","timePresets","time","year","getFullYear","setMonth","setFullYear","timeRange","timeValue","getTime","_defineComponent","__name","props","setup","__props","selectedOption","watch","preset","setPreset","onReset","onMounted","f","addEventListener","onUnmounted","removeEventListener","__sfc","NcDateTimePicker","NcButton","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","_setup","_setupProxy","_l","attrs","on","$event","_v","_s","model","$$v","expression","_e","tagName","ModifiedFilter","_defineProperty","svgCalendarRangeOutline","currentPreset","mtime","dispatchEvent","CustomEvent","currentInstance","resetFilter","typePresets","colorize","mime","svgFolder","getComputedStyle","body","getPropertyValue","svg","color","replace","selectedOptions","onDeselect","event","option","detail","toggleOption","selected","o","setPresets","presets","NcIconSvgWrapper","class","$style","fileListFilterType","fileType","scopedSlots","_u","fn","proxy","TypeFilter","currentPresets","mimeList","previous","current","toLowerCase","MimeTypeList","aliases","$props","removeFilterPreset","presetId","filtered","defaultName","otherNames","emits","localDefaultName","nameInput","formElement","validity","isHiddenFileName","computed","focusInput","nextTick","input","$el","extname","focus","setSelectionRange","watchEffect","validateFilename","InvalidFilenameError","reason","InvalidFilenameErrorReason","Character","char","ReservedName","Extension","match","extension","getFilenameValidity","setCustomValidity","reportValidity","submit","requestSubmit","NcDialog","NcNoteCard","NcTextField","staticClass","preventDefault","newNodeName","folderContent","labels","contentNames","spawnDialog","NewNodeDialog","folderName","entry","handler","encodeURIComponent","headers","Overwrite","parseInt","createNewFolder","owner","showSuccess","TemplatePickerVue","defineAsyncComponent","TemplatePicker","templatesEnabled","templatesPath","templatePath","copySystemTemplates","info","templates_path","initTemplatesFolder","removeNewFileMenuEntry","navigator","noRewrite","getRootUrl","registration","serviceWorker","register","filesContents","getFavoriteNodes","signal","getRemoteURL","getRootPath","aborted","DOMException","generateFavoriteFolderView","View","generateIdFromPath","params","parent","columns","str","hash","i","charCodeAt","hashCode","folderTreeId","sourceRoot","collator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","compareNodes","a","b","compare","getTreeNodes","tree","sortedTree","toSorted","children","encodeSource","getFolderTreeNodes","depth","withParents","URLSearchParams","getFiles","origin","getSourceParent","Navigation","getNavigation","intervalCap","interval","isFolderTreeEnabled","showHiddenFiles","folderTreeView","caption","FolderMultipleSvg","loadChildViews","treeView","loading","loaded","search","registerNodeViews","onCreateNode","onDeleteNode","onMoveNode","onUserConfigUpdated","views","isRegistered","generateNodeView","remove","expanded","getLoadChildViews","updateTreeChildren","cachedNodes","getNodesByPath","active","viewId","removeFolderView","oldSource","newPath","oldPath","childViews","isSamePath","currentUserId","isPersonalFile","mountType","then","VIEW_ID","lastTwoWeeksTimestamp","round","now","recentLimit","filterHidden","getRecentSearch","results","filename","emptyTitle","emptyCaption","defaultSortKey","actions","file_conversions","to","from","generateIconSvg","newFile","fetchNode","newFileId","toString","isAxiosError","meta","convertFile","fileIds","conversions","allSettled","failed","messages","Set","size","currentDir","newPaths","newFiles","forEach","file","convertFiles","registerFileAction","registerConvertActions","deleteAction","downloadAction","editLocallyAction","favoriteAction","moveOrCopyAction","openFolderAction","openInFilesAction","renameAction","sidebarAction","viewInFolderAction","addNewFileMenuEntry","newFolderEntry","newTemplatesFolder","templates","provider","app","templatePicker","mountingPoint","appendChild","render","h","methods","args","$refs","picker","el","getTemplatePicker","registerTemplateEntries","controller","AbortController","favoriteFolders","favoriteFoldersViews","addToFavorites","removePathFromFavorites","favoriteFolder","updateNodeFromFavorites","updateAndSortViews","sort","localeCompare","ignorePunctuation","findIndex","splice","registerFavoritesView","registerFilesView","hasPersonalFilesView","defaultView","registerRecentView","registerSearchView","registerFolderTreeView","registerFileListFilter","WrappedComponent","wrap","FileListFilterType","Object","defineProperty","prototype","customElements","define","registerTypeFilter","FileListFilterModified","registerModifiedFilter","registerSidebarAction","starSvg","starOutlineSvg","onClick","registerPreviewServiceWorker","registerDavProperty","nc","_nc_newfilemenu","Proxy","getNewFileMenu","prop","getLoggerBuilder","setApp","detectUser","searchStore","propfindPayload","contentsResponse","getDirectoryContents","includeSelf","defaultGetContents","getDirectoryByPath","rootPath","searchNodes","getLocalSearch","user","getDavNameSpaces","getDavProperties","escapeHTML","getBaseUrl","dummyFolder","useActiveStore","activeAction","shallowRef","activeNode","activeView","activeFolder","onDeletedNode","onChangedView","navigation","initialize","roots","getNodes","getNodesById","values","service","updateNodes","newNodes","acc","deleteNodes","fromEntries","ourNode","_children","setRoot","_nc_files_pinia","createPinia","state","getters","addPath","payload","deletePath","onCreatedNode","addNodeToParentChildren","deleteNodeFromParentChildren","onMovedNode","oldNode","parentSource","_initialized","updateSearch","old","onViewChanged","router","flat","updateRouter","debounce","isSearch","quota","oldQuery","defaultRemoteURL","instance","emptyView","$destroy","$mount","FILES_VIEW_ID","___CSS_LOADER_EXPORT___","module","defaultDavProperties","defaultDavNamespaces","d","oc","namespace","s","davNamespaces","davProperties","namespaces","l","warn","keys","ns","lastModified","remoteURL","setHeaders","requesttoken","patch","headers2","fetch","davRoot","filesRoot","userId","permString","P","SHARE","parsePermissions","lastmod","crtime","creationdate","nodeData","isNaN","Number","getcontentlength","FAILED","hasPreview","gtBuilder","detectLocale","addTranslation","locale","json","gt","ngettext","bind","gettext","UploadCancelledError","cause","uploadData","uploadData2","uploadOptions","onUploadProgress","onUploadRetry","retries","Blob","destinationFile","Destination","request","retryDelay","retryCount","retryCondition","onRetry","getChunk","start","getMaxChunksSize","fileSize","maxChunkSize","appConfig","max_chunk_size","minimumChunkSize","max","ceil","Status","Status2","Upload","_source","_file","_isChunked","_chunks","_size","_uploaded","_startTime","_status","_controller","_response","chunked","chunks","isChunked","startTime","uploaded","abort","isFileSystemFileEntry","FileSystemFileEntry","isFileSystemEntry","FileSystemEntry","Directory","_originalName","_path","sum","latest","originalName","webkitRelativePath","getChild","addChildren","addChild","FileSystemDirectoryEntry","reader","createReader","readEntries","child","filePath","relPath","indexOf","has","Eta","_done","_total","_progress","_elapsedTime","_speed","_eta","Infinity","_cutoffTime","resume","total","cutoffTime","done","deltaDone","deltaTime","historyNeeded","alpha","eta","dispatchTypedEvent","cancelable","pause","progress","timeReadable","seconds","hours","floor","padStart","minutes","speed","speedReadable","UploaderStatus","UploaderStatus2","Uploader","_destinationFolder","_isPublic","_customHeaders","_uploadQueue","_jobQueue","chunked_upload","max_parallel_count","_queueSize","_queueProgress","_queueStatus","_notifiers","isPublic","destinationFolder","maxChunksSize","customHeaders","structuredClone","setCustomHeader","deleteCustomerHeader","clear","updateStats","upload2","partialSum","pending","INITIALIZED","UPLOADING","ASSEMBLING","addNotifier","notifier","_notifyAll","batchUpload","files2","onCancel","rootFolder","uploadDirectory","uploads","FINISHED","CANCELLED","createDirectory","folderPath","normalize","currentUpload","selectedForUpload","directories","upload","e","fileHandle","encodedDestinationFile","resolve2","supportsPublicChunking","dav","public_shares_chunking","disabledChunkUpload","blob","bytes","_mtimeHeader","tempUrl","chunksWorkspace","random","initChunkWorkspace","chunksQueue","chunk","bufferStart","bufferEnd","request2","chunkBytes","progressBytes","onIdle","getUploader","forceRecreate","_nc_uploader","showInvalidFilenameDialog","InvalidFilenameDialog","rest","skip","rename","normalizeComponent","scriptExports","render6","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","_compiled","_scopeId","exports","IconCancel","title","fillColor","_b","$emit","$attrs","IconFolderUpload","IconPlus","IconUpload","components","NcActionButton","NcActionCaption","NcActionSeparator","NcActions","NcProgressBar","accept","disabled","multiple","noMenu","noLabel","primary","allowFolders","Function","forbiddenCharacters","progressTimeId","newFileMenuEntries","openedMenu","uploadManager","menuEntriesUpload","category","UploadFromDevice","menuEntriesNew","CreateNew","menuEntriesOther","Other","canUploadFolders","hasFailure","isAssembling","isUploading","isOnlyAssembling","isPaused","PAUSED","buttonLabel","haveMenu","immediate","setDestination","beforeMount","onUploadCompletion","onKeyDown","stop","prevent","shift","etaTimeAndSpeed","getContent","onTriggerPick","uploadFolders","webkitdirectory","$nextTick","isArray","onPick","contentsCallback","ConflictPicker","recursiveUpload","recursive","removeChild","filesToUpload","resetForm","form","iconClass","directives","rawName","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","fulfilled","j","r","getter","__esModule","definition","enumerable","chunkId","u","obj","hasOwnProperty","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","timeout","doneFns","setTimeout","nmd","scriptUrl","globalThis","importScripts","currentScript","toUpperCase","test","p","baseURI","self","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files-init.js?v=c8a4c61235f960c1be75","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/actions/convertUtils.ts","webpack:///nextcloud/apps/files/src/actions/convertAction.ts","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/actions/deleteUtils.ts","webpack:///nextcloud/apps/files/src/actions/deleteAction.ts","webpack:///nextcloud/apps/files/src/utils/permissions.ts","webpack:///nextcloud/apps/files/src/actions/downloadAction.ts","webpack:///nextcloud/apps/files/src/actions/favoriteAction.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyActionUtils.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyAction.ts","webpack:///nextcloud/apps/files/src/actions/openFolderAction.ts","webpack:///nextcloud/apps/files/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files/src/actions/openLocallyAction.ts","webpack:///nextcloud/apps/files/src/actions/renameAction.ts","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/apps/files/src/actions/viewInFolderAction.ts","webpack:///nextcloud/apps/files/src/filters/FilenameFilter.ts","webpack:///nextcloud/apps/files/src/filters/HiddenFilesFilter.ts","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterModified.vue","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterModified.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterModified.vue?3927","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterModified.vue?2f02","webpack:///nextcloud/apps/files/src/filters/ModifiedFilter.ts","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterType.vue","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterType.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterType.vue?3413","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterType.vue?5187","webpack:///nextcloud/apps/files/src/filters/TypeFilter.ts","webpack:///nextcloud/apps/files/src/components/NewNodeDialog.vue","webpack:///nextcloud/apps/files/src/components/NewNodeDialog.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/utils/filenameValidity.ts","webpack://nextcloud/./apps/files/src/components/NewNodeDialog.vue?1721","webpack://nextcloud/./apps/files/src/components/NewNodeDialog.vue?1a36","webpack:///nextcloud/apps/files/src/utils/newNodeDialog.ts","webpack:///nextcloud/apps/files/src/newMenu/newFolder.ts","webpack:///nextcloud/apps/files/src/newMenu/newFromTemplate.ts","webpack:///nextcloud/apps/files/src/newMenu/newTemplatesFolder.ts","webpack:///nextcloud/apps/files/src/services/ServiceWorker.js","webpack:///nextcloud/apps/files/src/services/Favorites.ts","webpack:///nextcloud/apps/files/src/views/favorites.ts","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/files/src/services/FolderTree.ts","webpack:///nextcloud/apps/files/src/views/folderTree.ts","webpack:///nextcloud/apps/files/src/services/PersonalFiles.ts","webpack:///nextcloud/apps/files/src/views/personal-files.ts","webpack:///nextcloud/apps/files/src/services/Recent.ts","webpack:///nextcloud/apps/files/src/views/recent.ts","webpack:///nextcloud/apps/files/src/init.ts","webpack:///nextcloud/apps/files/src/actions/sidebarFavoriteAction.ts","webpack:///nextcloud/apps/files/src/services/LivePhotos.ts","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files/src/services/WebDavSearch.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/search.ts","webpack:///nextcloud/apps/files/src/utils/filesViews.ts","webpack:///nextcloud/apps/files/src/views/files.ts","webpack:///nextcloud/apps/files/src/services/Search.ts","webpack:///nextcloud/apps/files/src/views/search.ts","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterModified.vue?vue&type=style&index=0&id=2841ff92&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/NewNodeDialog.vue?vue&type=style&index=0&id=77bf0406&prod&scoped=true&lang=css","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterType.vue?vue&type=style&index=0&id=5140be48&prod&module=true&lang=css","webpack:///nextcloud/node_modules/@nextcloud/files/dist/dav.mjs","webpack:///nextcloud/node_modules/@nextcloud/upload/dist/chunks/index-DPkUyJ8g.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios, { isAxiosError } from '@nextcloud/axios';\nimport { showError, showLoading, showSuccess } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { n, t } from '@nextcloud/l10n';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport PQueue from 'p-queue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nconst queue = new PQueue({ concurrency: 5 });\n/**\n *\n * @param fileId\n * @param targetMimeType\n */\nfunction requestConversion(fileId, targetMimeType) {\n return axios.post(generateOcsUrl('/apps/files/api/v1/convert'), {\n fileId,\n targetMimeType,\n });\n}\n/**\n *\n * @param fileIds\n * @param targetMimeType\n */\nexport async function convertFiles(fileIds, targetMimeType) {\n const conversions = fileIds.map((fileId) => queue.add(() => requestConversion(fileId, targetMimeType)));\n // Start conversion\n const toast = showLoading(t('files', 'Converting files …'));\n // Handle results\n try {\n const results = await Promise.allSettled(conversions);\n const failed = results.filter((result) => result.status === 'rejected');\n if (failed.length > 0) {\n const messages = failed.map((result) => result.reason?.response?.data?.ocs?.meta?.message);\n logger.error('Failed to convert files', { fileIds, targetMimeType, messages });\n // If all failed files have the same error message, show it\n if (new Set(messages).size === 1 && typeof messages[0] === 'string') {\n showError(t('files', 'Failed to convert files: {message}', { message: messages[0] }));\n return;\n }\n if (failed.length === fileIds.length) {\n showError(t('files', 'All files failed to be converted'));\n return;\n }\n // A single file failed and if we have a message for the failed file, show it\n if (failed.length === 1 && messages[0]) {\n showError(t('files', 'One file could not be converted: {message}', { message: messages[0] }));\n return;\n }\n // We already check above when all files failed\n // if we're here, we have a mix of failed and successful files\n showError(n('files', '%n file could not be converted', '%n files could not be converted', failed.length));\n showSuccess(n('files', '%n file converted', '%n files converted', fileIds.length - failed.length));\n return;\n }\n // All files converted\n showSuccess(t('files', 'Files converted'));\n // Extract files that are within the current directory\n // in batch mode, you might have files from different directories\n // ⚠️, let's get the actual current dir, as the one from the action\n // might have changed as the user navigated away\n const currentDir = window.OCP.Files.Router.query.dir;\n const newPaths = results\n .filter((result) => result.status === 'fulfilled')\n .map((result) => result.value.data.ocs.data.path)\n .filter((path) => path.startsWith(currentDir));\n // Fetch the new files\n logger.debug('Files to fetch', { newPaths });\n const newFiles = await Promise.all(newPaths.map((path) => fetchNode(path)));\n // Inform the file list about the new files\n newFiles.forEach((file) => emit('files:node:created', file));\n // Switch to the new files\n const firstSuccess = results[0];\n const newFileId = firstSuccess.value.data.ocs.data.fileId;\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: newFileId.toString() }, window.OCP.Files.Router.query);\n }\n catch (error) {\n // Should not happen as we use allSettled and handle errors above\n showError(t('files', 'Failed to convert files'));\n logger.error('Failed to convert files', { fileIds, targetMimeType, error });\n }\n finally {\n // Hide loading toast\n toast.hideToast();\n }\n}\n/**\n *\n * @param fileId\n * @param targetMimeType\n */\nexport async function convertFile(fileId, targetMimeType) {\n const toast = showLoading(t('files', 'Converting file …'));\n try {\n const result = await queue.add(() => requestConversion(fileId, targetMimeType));\n showSuccess(t('files', 'File successfully converted'));\n // Inform the file list about the new file\n const newFile = await fetchNode(result.data.ocs.data.path);\n emit('files:node:created', newFile);\n // Switch to the new file\n const newFileId = result.data.ocs.data.fileId;\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: newFileId.toString() }, window.OCP.Files.Router.query);\n }\n catch (error) {\n // If the server returned an error message, show it\n if (isAxiosError(error) && error.response?.data?.ocs?.meta?.message) {\n showError(t('files', 'Failed to convert file: {message}', { message: error.response.data.ocs.meta.message }));\n return;\n }\n logger.error('Failed to convert file', { fileId, targetMimeType, error });\n showError(t('files', 'Failed to convert file'));\n }\n finally {\n // Hide loading toast\n toast.hideToast();\n }\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport AutoRenewSvg from '@mdi/svg/svg/autorenew.svg?raw';\nimport { getCapabilities } from '@nextcloud/capabilities';\nimport { Permission, registerFileAction } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { convertFile, convertFiles } from './convertUtils.ts';\nexport const ACTION_CONVERT = 'convert';\n/**\n * Registers the convert actions based on the capabilities provided by the server.\n */\nexport function registerConvertActions() {\n // Generate sub actions\n const convertProviders = getCapabilities()?.files?.file_conversions ?? [];\n const actions = convertProviders.map(({ to, from, displayName }) => ({\n id: `convert-${from}-${to}`,\n displayName: () => t('files', 'Save as {displayName}', { displayName }),\n iconSvgInline: () => generateIconSvg(to),\n enabled: ({ nodes, folder }) => {\n if (isPublicShare() && !(folder.permissions & Permission.CREATE)) {\n // cannot create the converted file in a public share if we don't have create permissions\n return false;\n }\n // Check that all nodes have the same mime type\n return nodes.every((node) => from === node.mime);\n },\n async exec({ nodes }) {\n if (!nodes[0]) {\n return false;\n }\n // If we're here, we know that the node has a fileid\n convertFile(nodes[0].fileid, to);\n // Silently terminate, we'll handle the UI in the background\n return null;\n },\n async execBatch({ nodes }) {\n const fileIds = nodes.map((node) => node.fileid).filter(Boolean);\n convertFiles(fileIds, to);\n // Silently terminate, we'll handle the UI in the background\n return Array(nodes.length).fill(null);\n },\n parent: ACTION_CONVERT,\n }));\n // Register main action\n registerFileAction({\n id: ACTION_CONVERT,\n displayName: () => t('files', 'Save as …'),\n iconSvgInline: () => AutoRenewSvg,\n enabled: (context) => {\n return actions.some((action) => action.enabled(context));\n },\n async exec() {\n return null;\n },\n order: 25,\n });\n // Register sub actions\n actions.forEach(registerFileAction);\n}\n/**\n * Generates an SVG icon for a given mime type by using the server's mime icon endpoint.\n *\n * @param mime - The mime type to generate the icon for\n */\nexport function generateIconSvg(mime) {\n // Generate icon based on mime type\n const url = generateUrl('/core/mimeicon?mime=' + encodeURIComponent(mime));\n return `\n\t\t\n\t`;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialUserConfig = loadState('files', 'config', {\n crop_image_previews: true,\n default_view: 'files',\n folder_tree: true,\n grid_view: false,\n show_files_extensions: true,\n show_hidden: false,\n show_mime_column: true,\n sort_favorites_first: true,\n sort_folders_first: true,\n show_dialog_deletion: false,\n show_dialog_file_extension: true,\n});\nexport const useUserConfigStore = defineStore('userconfig', () => {\n const userConfig = ref({ ...initialUserConfig });\n /**\n * Update the user config local store\n *\n * @param key The config key\n * @param value The new value\n */\n function onUpdate(key, value) {\n set(userConfig.value, key, value);\n }\n /**\n * Update the user config local store AND on server side\n *\n * @param key The config key\n * @param value The new value\n */\n async function update(key, value) {\n // only update if a user is logged in (not the case for public shares)\n if (getCurrentUser() !== null) {\n await axios.put(generateUrl('/apps/files/api/v1/config/{key}', { key }), {\n value,\n });\n }\n emit('files:config:updated', { key, value });\n }\n // Register the event listener\n subscribe('files:config:updated', ({ key, value }) => onUpdate(key, value));\n return {\n userConfig,\n update,\n };\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios from '@nextcloud/axios';\nimport { getCapabilities } from '@nextcloud/capabilities';\nimport { emit } from '@nextcloud/event-bus';\nimport { FileType } from '@nextcloud/files';\nimport { n, t } from '@nextcloud/l10n';\nimport { getPinia } from '../store/index.ts';\nimport { useUserConfigStore } from '../store/userconfig.ts';\nexport const isTrashbinEnabled = () => getCapabilities()?.files?.undelete === true;\n/**\n * @param nodes\n */\nexport function canUnshareOnly(nodes) {\n return nodes.every((node) => node.attributes['is-mount-root'] === true\n && node.attributes['mount-type'] === 'shared');\n}\n/**\n *\n * @param nodes\n */\nexport function canDisconnectOnly(nodes) {\n return nodes.every((node) => node.attributes['is-mount-root'] === true\n && node.attributes['mount-type'] === 'external');\n}\n/**\n *\n * @param nodes\n */\nexport function isMixedUnshareAndDelete(nodes) {\n if (nodes.length === 1) {\n return false;\n }\n const hasSharedItems = nodes.some((node) => canUnshareOnly([node]));\n const hasDeleteItems = nodes.some((node) => !canUnshareOnly([node]));\n return hasSharedItems && hasDeleteItems;\n}\n/**\n *\n * @param nodes\n */\nexport function isAllFiles(nodes) {\n return !nodes.some((node) => node.type !== FileType.File);\n}\n/**\n *\n * @param nodes\n */\nexport function isAllFolders(nodes) {\n return !nodes.some((node) => node.type !== FileType.Folder);\n}\n/**\n * Get the display name for the delete action\n *\n * @param context - The context\n * @param context.nodes - The nodes to delete\n * @param context.view - The current view\n */\nexport function displayName({ nodes, view }) {\n /**\n * If those nodes are all the root node of a\n * share, we can only unshare them.\n */\n if (canUnshareOnly(nodes)) {\n if (nodes.length === 1) {\n return t('files', 'Leave this share');\n }\n return t('files', 'Leave these shares');\n }\n /**\n * If those nodes are all the root node of an\n * external storage, we can only disconnect it.\n */\n if (canDisconnectOnly(nodes)) {\n if (nodes.length === 1) {\n return t('files', 'Disconnect storage');\n }\n return t('files', 'Disconnect storages');\n }\n /**\n * If we're in the trashbin, we can only delete permanently\n */\n if (view.id === 'trashbin' || !isTrashbinEnabled()) {\n return t('files', 'Delete permanently');\n }\n /**\n * If we're in the sharing view, we can only unshare\n */\n if (isMixedUnshareAndDelete(nodes)) {\n return t('files', 'Delete and unshare');\n }\n /**\n * If we're only selecting files, use proper wording\n */\n if (isAllFiles(nodes)) {\n if (nodes.length === 1) {\n return t('files', 'Delete file');\n }\n return t('files', 'Delete files');\n }\n /**\n * If we're only selecting folders, use proper wording\n */\n if (isAllFolders(nodes)) {\n if (nodes.length === 1) {\n return t('files', 'Delete folder');\n }\n return t('files', 'Delete folders');\n }\n return t('files', 'Delete');\n}\n/**\n *\n */\nexport function shouldAskForConfirmation() {\n const userConfig = useUserConfigStore(getPinia());\n return userConfig.userConfig.show_dialog_deletion !== false;\n}\n/**\n *\n * @param nodes\n * @param view\n */\nexport async function askConfirmation(nodes, view) {\n const message = view.id === 'trashbin' || !isTrashbinEnabled()\n ? n('files', 'You are about to permanently delete {count} item', 'You are about to permanently delete {count} items', nodes.length, { count: nodes.length })\n : n('files', 'You are about to delete {count} item', 'You are about to delete {count} items', nodes.length, { count: nodes.length });\n return new Promise((resolve) => {\n // TODO: Use the new dialog API\n window.OC.dialogs.confirmDestructive(message, t('files', 'Confirm deletion'), {\n type: window.OC.dialogs.YES_NO_BUTTONS,\n confirm: displayName({ nodes, view }),\n confirmClasses: 'error',\n cancel: t('files', 'Cancel'),\n }, (decision) => {\n resolve(decision);\n });\n });\n}\n/**\n *\n * @param node\n */\nexport async function deleteNode(node) {\n await axios.delete(node.encodedSource);\n // Let's delete even if it's moved to the trashbin\n // since it has been removed from the current view\n // and changing the view will trigger a reload anyway.\n emit('files:node:deleted', node);\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport CloseSvg from '@mdi/svg/svg/close.svg?raw';\nimport NetworkOffSvg from '@mdi/svg/svg/network-off.svg?raw';\nimport TrashCanSvg from '@mdi/svg/svg/trash-can-outline.svg?raw';\nimport { Permission } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { t } from '@nextcloud/l10n';\nimport PQueue from 'p-queue';\nimport logger from '../logger.ts';\nimport { askConfirmation, canDisconnectOnly, canUnshareOnly, deleteNode, displayName, shouldAskForConfirmation } from './deleteUtils.ts';\n// TODO: once the files app is migrated to the new frontend use the import instead:\n// import { TRASHBIN_VIEW_ID } from '../../../files_trashbin/src/files_views/trashbinView.ts'\nconst TRASHBIN_VIEW_ID = 'trashbin';\nconst queue = new PQueue({ concurrency: 5 });\nexport const ACTION_DELETE = 'delete';\nexport const action = {\n id: ACTION_DELETE,\n displayName,\n iconSvgInline: ({ nodes }) => {\n if (canUnshareOnly(nodes)) {\n return CloseSvg;\n }\n if (canDisconnectOnly(nodes)) {\n return NetworkOffSvg;\n }\n return TrashCanSvg;\n },\n enabled({ nodes, view }) {\n if (view.id === TRASHBIN_VIEW_ID) {\n const config = loadState('files_trashbin', 'config', { allow_delete: true });\n if (config.allow_delete === false) {\n return false;\n }\n }\n return nodes.length > 0 && nodes\n .map((node) => node.permissions)\n .every((permission) => (permission & Permission.DELETE) !== 0);\n },\n async exec({ nodes, view }) {\n try {\n let confirm = true;\n // Trick to detect if the action was called from a keyboard event\n // we need to make sure the method calling have its named containing 'keydown'\n // here we use `onKeydown` method from the FileEntryActions component\n const callStack = new Error().stack || '';\n const isCalledFromEventListener = callStack.toLocaleLowerCase().includes('keydown');\n if (shouldAskForConfirmation() || isCalledFromEventListener) {\n confirm = await askConfirmation([nodes[0]], view);\n }\n // If the user cancels the deletion, we don't want to do anything\n if (confirm === false) {\n return null;\n }\n await deleteNode(nodes[0]);\n return true;\n }\n catch (error) {\n logger.error('Error while deleting a file', { error, source: nodes[0].source, node: nodes[0] });\n return false;\n }\n },\n async execBatch({ nodes, view }) {\n let confirm = true;\n if (shouldAskForConfirmation()) {\n confirm = await askConfirmation(nodes, view);\n }\n else if (nodes.length >= 5 && !canUnshareOnly(nodes) && !canDisconnectOnly(nodes)) {\n confirm = await askConfirmation(nodes, view);\n }\n // If the user cancels the deletion, we don't want to do anything\n if (confirm === false) {\n return Promise.all(nodes.map(() => null));\n }\n // Map each node to a promise that resolves with the result of exec(node)\n const promises = nodes.map((node) => {\n // Create a promise that resolves with the result of exec(node)\n const promise = new Promise((resolve) => {\n queue.add(async () => {\n try {\n await deleteNode(node);\n resolve(true);\n }\n catch (error) {\n logger.error('Error while deleting a file', { error, source: node.source, node });\n resolve(false);\n }\n });\n });\n return promise;\n });\n return Promise.all(promises);\n },\n destructive: true,\n order: 100,\n hotkey: {\n description: t('files', 'Delete'),\n key: 'Delete',\n },\n};\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\n/**\n * Check permissions on the node if it can be downloaded\n *\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node) {\n if ((node.permissions & Permission.READ) === 0) {\n return false;\n }\n // check hide-download property of shares\n if (node.attributes['hide-download'] === true\n || node.attributes['hide-download'] === 'true') {\n return false;\n }\n // If the mount type is a share, ensure it got download permissions.\n if (node.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]');\n const downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download');\n if (downloadAttribute !== undefined) {\n return downloadAttribute.value === true;\n }\n }\n return true;\n}\n/**\n * Check permissions on the node if it can be synced/open locally\n *\n * @param node The node to check\n * @return True if syncable, false otherwise\n */\nexport function isSyncable(node) {\n if (!node.isDavResource) {\n return false;\n }\n if ((node.permissions & Permission.WRITE) === 0) {\n return false;\n }\n // Syncable has the same permissions as downloadable for now\n return isDownloadable(node);\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport ArrowDownSvg from '@mdi/svg/svg/arrow-down.svg?raw';\nimport axios from '@nextcloud/axios';\nimport { showError } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { DefaultType, FileType } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { usePathsStore } from '../store/paths.ts';\nimport { isDownloadable } from '../utils/permissions.ts';\nexport const action = {\n id: 'download',\n default: DefaultType.DEFAULT,\n displayName: () => t('files', 'Download'),\n iconSvgInline: () => ArrowDownSvg,\n enabled({ nodes, view }) {\n if (nodes.length === 0) {\n return false;\n }\n // We can only download dav files and folders.\n if (nodes.some((node) => !node.isDavResource)) {\n return false;\n }\n // Trashbin does not allow batch download\n if (nodes.length > 1 && view.id === 'trashbin') {\n return false;\n }\n return nodes.every(isDownloadable);\n },\n async exec({ nodes }) {\n try {\n await downloadNodes(nodes);\n }\n catch (error) {\n showError(t('files', 'The requested file is not available.'));\n logger.error('The requested file is not available.', { error });\n emit('files:node:deleted', nodes[0]);\n }\n return null;\n },\n async execBatch({ nodes, view, folder }) {\n try {\n await downloadNodes(nodes);\n }\n catch (error) {\n showError(t('files', 'The requested files are not available.'));\n logger.error('The requested files are not available.', { error });\n // Try to reload the current directory to update the view\n const directory = getCurrentDirectory(view, folder.path);\n emit('files:node:updated', directory);\n }\n return new Array(nodes.length).fill(null);\n },\n order: 30,\n};\n/**\n * Trigger downloading a file.\n *\n * @param url The url of the asset to download\n * @param name Optionally the recommended name of the download (browsers might ignore it)\n */\nasync function triggerDownload(url, name) {\n // try to see if the resource is still available\n await axios.head(url);\n const hiddenElement = document.createElement('a');\n hiddenElement.download = name ?? '';\n hiddenElement.href = url;\n hiddenElement.click();\n}\n/**\n * Find the longest common path prefix of both input paths\n *\n * @param first The first path\n * @param second The second path\n */\nfunction longestCommonPath(first, second) {\n const firstSegments = first.split('/').filter(Boolean);\n const secondSegments = second.split('/').filter(Boolean);\n let base = '';\n for (const [index, segment] of firstSegments.entries()) {\n if (index >= second.length) {\n break;\n }\n if (segment !== secondSegments[index]) {\n break;\n }\n const sep = base === '' ? '' : '/';\n base = `${base}${sep}${segment}`;\n }\n return base;\n}\n/**\n * Download the given nodes.\n *\n * If only one node is given, it will be downloaded directly.\n * If multiple nodes are given, they will be zipped and downloaded.\n *\n * @param nodes The node(s) to download\n */\nasync function downloadNodes(nodes) {\n let url;\n if (!nodes[0]) {\n throw new Error('No nodes to download');\n }\n if (nodes.length === 1) {\n if (nodes[0].type === FileType.File) {\n await triggerDownload(nodes[0].encodedSource, nodes[0].displayname);\n return;\n }\n else {\n url = new URL(nodes[0].encodedSource);\n url.searchParams.append('accept', 'zip');\n }\n }\n else {\n url = new URL(nodes[0].encodedSource);\n let base = url.pathname;\n for (const node of nodes.slice(1)) {\n base = longestCommonPath(base, (new URL(node.encodedSource).pathname));\n }\n url.pathname = base;\n // The URL contains the path encoded so we need to decode as the query.append will re-encode it\n const filenames = nodes.map((node) => decodeURIComponent(node.encodedSource.slice(url.href.length + 1)));\n url.searchParams.append('accept', 'zip');\n url.searchParams.append('files', JSON.stringify(filenames));\n }\n if (url.pathname.at(-1) !== '/') {\n url.pathname = `${url.pathname}/`;\n }\n await triggerDownload(url.href);\n}\n/**\n * Get the current directory node for the given view and path.\n * TODO: ideally the folder would directly be passed as exec params\n *\n * @param view The current view\n * @param directory The directory path\n * @return The current directory node or null if not found\n */\nfunction getCurrentDirectory(view, directory) {\n const filesStore = useFilesStore(getPinia());\n const pathsStore = usePathsStore(getPinia());\n if (!view?.id) {\n return null;\n }\n if (directory === '/') {\n return filesStore.getRoot(view.id) || null;\n }\n const fileId = pathsStore.getPath(view.id, directory);\n return filesStore.getNode(fileId) || null;\n}\n","/*\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport StarOutlineSvg from '@mdi/svg/svg/star-outline.svg?raw';\nimport StarSvg from '@mdi/svg/svg/star.svg?raw';\nimport axios from '@nextcloud/axios';\nimport { emit } from '@nextcloud/event-bus';\nimport { Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { encodePath } from '@nextcloud/paths';\nimport { generateUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport PQueue from 'p-queue';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nconst queue = new PQueue({ concurrency: 5 });\nexport const ACTION_FAVORITE = 'favorite';\nexport const action = {\n id: ACTION_FAVORITE,\n displayName({ nodes }) {\n return shouldFavorite(nodes)\n ? t('files', 'Add to favorites')\n : t('files', 'Remove from favorites');\n },\n iconSvgInline: ({ nodes }) => {\n return shouldFavorite(nodes)\n ? StarOutlineSvg\n : StarSvg;\n },\n enabled({ nodes }) {\n // Not enabled for public shares\n if (isPublicShare()) {\n return false;\n }\n // We can only favorite nodes if they are located in files\n return nodes.every((node) => node.root?.startsWith?.('/files'))\n // and we have permissions\n && nodes.every((node) => node.permissions !== Permission.NONE);\n },\n async exec({ nodes, view }) {\n const willFavorite = shouldFavorite([nodes[0]]);\n return await favoriteNode(nodes[0], view, willFavorite);\n },\n async execBatch({ nodes, view }) {\n const willFavorite = shouldFavorite(nodes);\n // Map each node to a promise that resolves with the result of exec(node)\n const promises = nodes.map((node) => {\n // Create a promise that resolves with the result of exec(node)\n const promise = new Promise((resolve) => {\n queue.add(async () => {\n try {\n await favoriteNode(node, view, willFavorite);\n resolve(true);\n }\n catch (error) {\n logger.error('Error while adding file to favorite', { error, source: node.source, node });\n resolve(false);\n }\n });\n });\n return promise;\n });\n return Promise.all(promises);\n },\n order: -50,\n hotkey: {\n description: t('files', 'Add or remove favorite'),\n key: 'S',\n },\n};\n/**\n * Favorite or unfavorite a node\n *\n * @param node - The node to favorite/unfavorite\n * @param view - The current view\n * @param willFavorite - Whether to favorite or unfavorite the node\n */\nexport async function favoriteNode(node, view, willFavorite) {\n try {\n // TODO: migrate to webdav tags plugin\n const url = generateUrl('/apps/files/api/v1/files') + encodePath(node.path);\n await axios.post(url, {\n tags: willFavorite\n ? [window.OC.TAG_FAVORITE]\n : [],\n });\n // Let's delete if we are in the favourites view\n // AND if it is removed from the user favorites\n // AND it's in the root of the favorites view\n if (view.id === 'favorites' && !willFavorite && node.dirname === '/') {\n emit('files:node:deleted', node);\n }\n // Update the node webdav attribute\n Vue.set(node.attributes, 'favorite', willFavorite ? 1 : 0);\n emit('files:node:updated', node);\n // Dispatch event to whoever is interested\n if (willFavorite) {\n emit('files:favorites:added', node);\n }\n else {\n emit('files:favorites:removed', node);\n }\n return true;\n }\n catch (error) {\n const action = willFavorite ? 'adding a file to favourites' : 'removing a file from favourites';\n logger.error('Error while ' + action, { error, source: node.source, node });\n return false;\n }\n}\n/**\n * If any of the nodes is not favored, we display the favorite action.\n *\n * @param nodes - The nodes to check\n */\nfunction shouldFavorite(nodes) {\n return nodes.some((node) => node.attributes.favorite !== 1);\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport PQueue from 'p-queue';\nconst sharePermissions = loadState('files_sharing', 'sharePermissions', Permission.NONE);\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n// Maximum number of concurrent operations\nconst MAX_CONCURRENCY = 5;\n/**\n * Get the processing queue\n */\nexport function getQueue() {\n if (!queue) {\n queue = new PQueue({ concurrency: MAX_CONCURRENCY });\n }\n return queue;\n}\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n MoveCopyAction[\"MOVE\"] = \"Move\";\n MoveCopyAction[\"COPY\"] = \"Copy\";\n MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\n/**\n * Check if the given nodes can be moved\n *\n * @param nodes - The nodes to check\n */\nexport function canMove(nodes) {\n const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n return Boolean(minPermission & Permission.DELETE);\n}\n/**\n * Check if the given nodes can be downloaded\n *\n * @param nodes - The nodes to check\n */\nexport function canDownload(nodes) {\n return nodes.every((node) => {\n const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n return !shareAttributes.some((attribute) => attribute.scope === 'permissions' && attribute.value === false && attribute.key === 'download');\n });\n}\n/**\n * Check if the given nodes can be copied\n *\n * @param nodes - The nodes to check\n */\nexport function canCopy(nodes) {\n // a shared file cannot be copied if the download is disabled\n if (!canDownload(nodes)) {\n return false;\n }\n // it cannot be copied if the user has only view permissions\n if (nodes.some((node) => node.permissions === Permission.NONE)) {\n return false;\n }\n // on public shares all files have the same permission so copy is only possible if write permission is granted\n if (isPublicShare()) {\n return Boolean(sharePermissions & Permission.CREATE);\n }\n // otherwise permission is granted\n return true;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move-outline.svg?raw';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple-outline.svg?raw';\nimport { FilePickerClosed, getFilePickerBuilder, openConflictPicker, showError, showLoading } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { FileType, getUniqueName, NodeStatus, Permission } from '@nextcloud/files';\nimport { defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { n, t } from '@nextcloud/l10n';\nimport { basename, join } from '@nextcloud/paths';\nimport { getConflicts } from '@nextcloud/upload';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { getContents } from '../services/Files.ts';\nimport { canCopy, canMove, getQueue, MoveCopyAction } from './moveOrCopyActionUtils.ts';\n/**\n * Exception to hint the user about something.\n * The message is intended to be shown to the user.\n */\nexport class HintException extends Error {\n}\nexport const ACTION_COPY_MOVE = 'move-copy';\nexport const action = {\n id: ACTION_COPY_MOVE,\n order: 15,\n displayName({ nodes }) {\n switch (getActionForNodes(nodes)) {\n case MoveCopyAction.MOVE:\n return t('files', 'Move');\n case MoveCopyAction.COPY:\n return t('files', 'Copy');\n case MoveCopyAction.MOVE_OR_COPY:\n return t('files', 'Move or copy');\n }\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled({ nodes, view }) {\n // We can not copy or move in single file shares\n if (view.id === 'public-file-share') {\n return false;\n }\n // We only support moving/copying files within the user folder\n if (!nodes.every((node) => node.root?.startsWith('/files/'))) {\n return false;\n }\n return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n },\n async exec(context) {\n return this.execBatch(context)[0];\n },\n async execBatch({ nodes, folder }) {\n const action = getActionForNodes(nodes);\n const target = await openFilePickerForAction(action, folder.path, nodes);\n // Handle cancellation silently\n if (target === false) {\n return nodes.map(() => null);\n }\n try {\n const result = await Array.fromAsync(handleCopyMoveNodesTo(nodes, target.destination, target.action));\n return result.map(() => true);\n }\n catch (error) {\n logger.error(`Failed to ${target.action} node`, { nodes, error });\n if (error instanceof HintException && !!error.message) {\n showError(error.message);\n // Silent action as we handle the toast\n return nodes.map(() => null);\n }\n // We need to keep the selection on error!\n // So we do not return null, and for batch action\n return nodes.map(() => false);\n }\n },\n};\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n *\n * @param nodes The nodes to copy/move\n * @param destination The destination to copy/move the nodes to\n * @param method The method to use for the copy/move\n * @param overwrite Whether to overwrite the destination if it exists\n * @yields {AsyncGenerator} A promise that resolves when the copy/move is done\n */\nexport async function* handleCopyMoveNodesTo(nodes, destination, method, overwrite = false) {\n if (!destination) {\n return;\n }\n if (destination.type !== FileType.Folder) {\n throw new Error(t('files', 'Destination is not a folder'));\n }\n // Do not allow to MOVE a node to the same folder it is already located\n if (method === MoveCopyAction.MOVE && nodes.some((node) => node.dirname === destination.path)) {\n throw new Error(t('files', 'This file/folder is already in that directory'));\n }\n /**\n * Example:\n * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n * Allow move of /foo does not start with /foo/bar/file.txt so allow\n * - node: /foo , destination: /foo/bar\n * Do not allow as it would copy foo within itself\n * - node: /foo/bar.txt, destination: /foo\n * Allow copy a file to the same directory\n * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n * Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n */\n if (nodes.some((node) => `${destination.path}/`.startsWith(`${node.path}/`))) {\n throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n }\n const nameMapping = new Map();\n // Check for conflicts if we do not want to overwrite\n if (!overwrite) {\n const otherNodes = (await getContents(destination.path)).contents;\n const conflicts = getConflicts(nodes, otherNodes);\n const nodesToRename = [];\n if (conflicts.length > 0) {\n if (method === MoveCopyAction.MOVE) {\n // Let the user choose what to do with the conflicting files\n const content = otherNodes.filter((n) => conflicts.some((c) => c.basename === n.basename));\n const result = await openConflictPicker(destination.path, conflicts, content);\n if (!result) {\n // User cancelled\n return;\n }\n nodes = nodes.filter((n) => !result.skipped.includes(n));\n nodesToRename.push(...result.renamed);\n }\n else {\n // for COPY we always rename conflicting files\n nodesToRename.push(...conflicts);\n }\n const usedNames = [...otherNodes, ...nodes.filter((n) => !conflicts.includes(n))].map((n) => n.basename);\n for (const node of nodesToRename) {\n const newName = getUniqueName(node.basename, usedNames, { ignoreFileExtension: node.type === FileType.Folder });\n nameMapping.set(node.source, newName);\n usedNames.push(newName); // add the new name to avoid duplicates for following re-namimgs\n }\n }\n }\n const actionFinished = createLoadingNotification(method, nodes.map((node) => node.displayname), join(destination.dirname, destination.displayname));\n const queue = getQueue();\n try {\n for (const node of nodes) {\n // Set loading state\n Vue.set(node, 'status', NodeStatus.LOADING);\n yield queue.add(async () => {\n try {\n const client = getClient();\n const currentPath = join(defaultRootPath, node.path);\n const destinationPath = join(defaultRootPath, destination.path, nameMapping.get(node.source) ?? node.basename);\n if (method === MoveCopyAction.COPY) {\n await client.copyFile(currentPath, destinationPath);\n // If the node is copied into current directory the view needs to be updated\n if (node.dirname === destination.path) {\n const { data } = await client.stat(destinationPath, {\n details: true,\n data: getDefaultPropfind(),\n });\n emit('files:node:created', resultToNode(data));\n }\n }\n else {\n await client.moveFile(currentPath, destinationPath);\n // Delete the node as it will be fetched again\n // when navigating to the destination folder\n emit('files:node:deleted', node);\n }\n }\n catch (error) {\n logger.debug(`Error while trying to ${method === MoveCopyAction.COPY ? 'copy' : 'move'} node`, { node, error });\n if (error.response?.status === 412) {\n throw new HintException(t('files', 'A file or folder with that name already exists in this folder'));\n }\n else if (error.response?.status === 423) {\n throw new HintException(t('files', 'The files are locked'));\n }\n else if (error.response?.status === 404) {\n throw new HintException(t('files', 'The file does not exist anymore'));\n }\n else if ('response' in error && error.response) {\n const parser = new DOMParser();\n const text = await error.response.text();\n const message = parser.parseFromString(text ?? '', 'text/xml')\n .querySelector('message')?.textContent;\n if (message) {\n throw new HintException(message);\n }\n }\n throw error;\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n });\n }\n }\n finally {\n actionFinished();\n }\n}\n/**\n * Return the action that is possible for the given nodes\n *\n * @param nodes The nodes to check against\n * @return The action that is possible for the given nodes\n */\nfunction getActionForNodes(nodes) {\n if (canMove(nodes)) {\n if (canCopy(nodes)) {\n return MoveCopyAction.MOVE_OR_COPY;\n }\n return MoveCopyAction.MOVE;\n }\n // Assuming we can copy as the enabled checks for copy permissions\n return MoveCopyAction.COPY;\n}\n/**\n * Create a loading notification toast\n *\n * @param mode The move or copy mode\n * @param sources Names of the nodes that are copied / moved\n * @param destination Destination path\n * @return Function to hide the notification\n */\nfunction createLoadingNotification(mode, sources, destination) {\n const text = mode === MoveCopyAction.MOVE\n ? (sources.length === 1\n ? t('files', 'Moving \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n : n('files', 'Moving %n file to \"{destination}\" …', 'Moving %n files to \"{destination}\" …', sources.length, { destination }))\n : (sources.length === 1\n ? t('files', 'Copying \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n : n('files', 'Copying %n file to \"{destination}\" …', 'Copying %n files to \"{destination}\" …', sources.length, { destination }));\n const toast = showLoading(text);\n return () => toast && toast.hideToast();\n}\n/**\n * Open a file picker for the given action\n *\n * @param action The action to open the file picker for\n * @param dir The directory to start the file picker in\n * @param nodes The nodes to move/copy\n * @return The picked destination or false if cancelled by user\n */\nasync function openFilePickerForAction(action, dir = '/', nodes) {\n const { resolve, reject, promise } = Promise.withResolvers();\n const fileIDs = nodes.map((node) => node.fileid).filter(Boolean);\n const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n .allowDirectories(true)\n .setFilter((n) => {\n // We don't want to show the current nodes in the file picker\n return !fileIDs.includes(n.fileid);\n })\n .setCanPick((n) => {\n const hasCreatePermissions = (n.permissions & Permission.CREATE) === Permission.CREATE;\n return hasCreatePermissions;\n })\n .setMimeTypeFilter([])\n .setMultiSelect(false)\n .startAt(dir)\n .setButtonFactory((selection, path) => {\n const buttons = [];\n const target = basename(path);\n const dirnames = nodes.map((node) => node.dirname);\n const paths = nodes.map((node) => node.path);\n if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Copy to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Copy'),\n variant: 'primary',\n icon: CopyIconSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.COPY,\n });\n },\n });\n }\n // Invalid MOVE targets (but valid copy targets)\n if (dirnames.includes(path)) {\n // This file/folder is already in that directory\n return buttons;\n }\n if (paths.includes(path)) {\n // You cannot move a file/folder onto itself\n return buttons;\n }\n if (selection.some((node) => (node.permissions & Permission.CREATE) === 0)) {\n // Missing 'CREATE' permissions for selected destination\n return buttons;\n }\n if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Move to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Move'),\n variant: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n icon: FolderMoveSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.MOVE,\n });\n },\n });\n }\n return buttons;\n })\n .build();\n filePicker.pick()\n .catch((error) => {\n logger.debug(error);\n if (error instanceof FilePickerClosed) {\n resolve(false);\n }\n else {\n reject(new Error(t('files', 'Move or copy operation failed')));\n }\n });\n return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderSvg from '@mdi/svg/svg/folder.svg?raw';\nimport { DefaultType, FileType, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nexport const action = {\n id: 'open-folder',\n displayName({ nodes }) {\n if (nodes.length !== 1 || !nodes[0]) {\n return t('files', 'Open folder');\n }\n // Only works on single node\n const displayName = nodes[0].displayname;\n return t('files', 'Open folder {displayName}', { displayName });\n },\n iconSvgInline: () => FolderSvg,\n enabled({ nodes }) {\n // Only works on single node\n if (nodes.length !== 1 || !nodes[0]) {\n return false;\n }\n const node = nodes[0];\n if (!node.isDavResource) {\n return false;\n }\n return node.type === FileType.Folder\n && (node.permissions & Permission.READ) !== 0;\n },\n async exec({ nodes, view }) {\n const node = nodes[0];\n if (!node || node.type !== FileType.Folder) {\n return false;\n }\n window.OCP.Files.Router.goToRoute(null, { view: view.id, fileid: String(node.fileid) }, { dir: node.path });\n return null;\n },\n // Main action if enabled, meaning folders only\n default: DefaultType.HIDDEN,\n order: -100,\n};\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { DefaultType, FileType } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { VIEW_ID as SEARCH_VIEW_ID } from '../views/search.ts';\nexport const action = {\n id: 'open-in-files',\n displayName: () => t('files', 'Open in Files'),\n iconSvgInline: () => '',\n enabled({ view }) {\n return view.id === 'recent' || view.id === SEARCH_VIEW_ID;\n },\n async exec({ nodes }) {\n if (!nodes[0]) {\n return false;\n }\n let dir = nodes[0].dirname;\n if (nodes[0].type === FileType.Folder) {\n dir = dir + '/' + nodes[0].basename;\n }\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files', fileid: String(nodes[0].fileid) }, { dir, openfile: 'true' });\n return null;\n },\n // Before openFolderAction\n order: -1000,\n default: DefaultType.HIDDEN,\n};\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport LaptopSvg from '@mdi/svg/svg/laptop.svg?raw';\nimport IconWeb from '@mdi/svg/svg/web.svg?raw';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { DialogBuilder, showError } from '@nextcloud/dialogs';\nimport { translate as t } from '@nextcloud/l10n';\nimport { encodePath } from '@nextcloud/paths';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport logger from '../logger.ts';\nimport { isSyncable } from '../utils/permissions.ts';\nexport const action = {\n id: 'edit-locally',\n displayName: () => t('files', 'Open locally'),\n iconSvgInline: () => LaptopSvg,\n // Only works on single files\n enabled({ nodes }) {\n // Only works on single node\n if (nodes.length !== 1 || !nodes[0]) {\n return false;\n }\n // does not work with shares\n if (isPublicShare()) {\n return false;\n }\n return isSyncable(nodes[0]);\n },\n async exec({ nodes }) {\n await attemptOpenLocalClient(nodes[0].path);\n return null;\n },\n order: 25,\n};\n/**\n * Try to open the path in the Nextcloud client.\n *\n * If this fails a dialog is shown with 3 options:\n * 1. Retry: If it fails no further dialog is shown.\n * 2. Open online: The viewer is used to open the file.\n * 3. Close the dialog and nothing happens (abort).\n *\n * @param path - The path to open\n */\nasync function attemptOpenLocalClient(path) {\n await openLocalClient(path);\n const result = await confirmLocalEditDialog();\n if (result === 'local') {\n await openLocalClient(path);\n }\n else if (result === 'online') {\n window.OCA.Viewer.open({ path });\n }\n}\n/**\n * Try to open a file in the Nextcloud client.\n * There is no way to get notified if this action was successful.\n *\n * @param path - Path to open\n */\nasync function openLocalClient(path) {\n const link = generateOcsUrl('apps/files/api/v1') + '/openlocaleditor?format=json';\n try {\n const result = await axios.post(link, { path });\n const uid = getCurrentUser()?.uid;\n let url = `nc://open/${uid}@` + window.location.host + encodePath(path);\n url += '?token=' + result.data.ocs.data.token;\n window.open(url, '_self');\n }\n catch (error) {\n showError(t('files', 'Failed to redirect to client'));\n logger.error('Failed to redirect to client', { error });\n }\n}\n/**\n * Open the confirmation dialog.\n */\nasync function confirmLocalEditDialog() {\n let result = false;\n const dialog = (new DialogBuilder())\n .setName(t('files', 'Open file locally'))\n .setText(t('files', 'The file should now open on your device. If it doesn\\'t, please check that you have the desktop app installed.'))\n .setButtons([\n {\n label: t('files', 'Retry and close'),\n variant: 'secondary',\n callback: () => {\n result = 'local';\n },\n },\n {\n label: t('files', 'Open online'),\n icon: IconWeb,\n variant: 'primary',\n callback: () => {\n result = 'online';\n },\n },\n ])\n .build();\n try {\n await dialog.show();\n }\n catch (error) {\n logger.debug('Open locally dialog closed', { error });\n }\n return result;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport PencilSvg from '@mdi/svg/svg/pencil-outline.svg?raw';\nimport { emit } from '@nextcloud/event-bus';\nimport { Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { dirname } from 'path';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nexport const ACTION_RENAME = 'rename';\nexport const action = {\n id: ACTION_RENAME,\n displayName: () => t('files', 'Rename'),\n iconSvgInline: () => PencilSvg,\n enabled: ({ nodes, view }) => {\n if (nodes.length === 0 || !nodes[0]) {\n return false;\n }\n // Disable for single file shares\n if (view.id === 'public-file-share') {\n return false;\n }\n const node = nodes[0];\n const filesStore = useFilesStore(getPinia());\n const parentNode = node.dirname === '/'\n ? filesStore.getRoot(view.id)\n : filesStore.getNode(dirname(node.source));\n const parentPermissions = parentNode?.permissions || Permission.NONE;\n // Enable if the node has update permissions or the node\n // has delete permission and the parent folder allows creating files\n return ((Boolean(node.permissions & Permission.DELETE)\n && Boolean(parentPermissions & Permission.CREATE))\n || Boolean(node.permissions & Permission.UPDATE));\n },\n async exec({ nodes }) {\n // Renaming is a built-in feature of the files app\n emit('files:node:rename', nodes[0]);\n return null;\n },\n order: 10,\n hotkey: {\n description: t('files', 'Rename'),\n key: 'F2',\n },\n};\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport InformationSvg from '@mdi/svg/svg/information-outline.svg?raw';\nimport { getSidebar, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport logger from '../logger.ts';\nexport const ACTION_DETAILS = 'details';\nexport const action = {\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: ({ nodes }) => {\n const node = nodes[0];\n if (nodes.length !== 1 || !node) {\n return false;\n }\n const sidebar = getSidebar();\n if (!sidebar.available) {\n return false;\n }\n if (isPublicShare()) {\n return false;\n }\n return node.root.startsWith('/files/') && node.permissions !== Permission.NONE;\n },\n async exec({ nodes }) {\n const sidebar = getSidebar();\n const [node] = nodes;\n try {\n // If the sidebar is already open for the current file, do nothing\n if (sidebar.node?.source === node.source) {\n logger.debug('Sidebar already open for this file', { node });\n return null;\n }\n sidebar.open(node, 'sharing');\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n hotkey: {\n key: 'D',\n description: t('files', 'Open the details sidebar'),\n },\n};\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move-outline.svg?raw';\nimport { FileType, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nexport const action = {\n id: 'view-in-folder',\n displayName() {\n return t('files', 'View in folder');\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled({ nodes, view }) {\n // Not enabled for public shares\n if (isPublicShare()) {\n return false;\n }\n // Only works outside of the main files view\n if (view.id === 'files') {\n return false;\n }\n // Only works on single node\n if (nodes.length !== 1 || !nodes[0]) {\n return false;\n }\n const node = nodes[0];\n if (!node.isDavResource) {\n return false;\n }\n // Can only view files that are in the user root folder\n if (!node.root?.startsWith('/files')) {\n return false;\n }\n if (node.permissions === Permission.NONE) {\n return false;\n }\n return node.type === FileType.File;\n },\n async exec({ nodes }) {\n if (!nodes[0] || nodes[0].type !== FileType.File) {\n return false;\n }\n window.OCP.Files.Router.goToRoute(null, { view: 'files', fileid: String(nodes[0].fileid) }, { dir: nodes[0].dirname });\n return null;\n },\n order: 80,\n};\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { FileListFilter, registerFileListFilter } from '@nextcloud/files';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\n/**\n * Simple file list filter controlled by the Navigation search box\n */\nclass FilenameFilter extends FileListFilter {\n searchQuery = '';\n constructor() {\n super('files:filename', 5);\n subscribe('files:search:updated', ({ query, scope }) => {\n if (scope === 'filter') {\n this.updateQuery(query);\n }\n });\n }\n filter(nodes) {\n const queryParts = this.searchQuery.toLocaleLowerCase().split(' ').filter(Boolean);\n return nodes.filter((node) => {\n const displayname = node.displayname.toLocaleLowerCase();\n return queryParts.every((part) => displayname.includes(part));\n });\n }\n reset() {\n this.updateQuery('');\n }\n updateQuery(query) {\n query = (query || '').trim();\n // Only if the query is different we update the filter to prevent re-computing all nodes\n if (query !== this.searchQuery) {\n this.searchQuery = query;\n this.filterUpdated();\n const chips = [];\n if (query !== '') {\n chips.push({\n text: query,\n onclick: () => {\n this.updateQuery('');\n },\n });\n }\n else {\n // make sure to also reset the search store when pressing the \"X\" on the filter chip\n const store = useSearchStore(getPinia());\n if (store.scope === 'filter') {\n store.query = '';\n }\n }\n this.updateChips(chips);\n }\n }\n}\n/**\n * Register the filename filter\n */\nexport function registerFilenameFilter() {\n registerFileListFilter(new FilenameFilter());\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { FileListFilter, registerFileListFilter } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nclass HiddenFilesFilter extends FileListFilter {\n showHidden;\n constructor() {\n super('files:hidden', 0);\n this.showHidden = loadState('files', 'config', { show_hidden: false }).show_hidden;\n subscribe('files:config:updated', ({ key, value }) => {\n if (key === 'show_hidden') {\n this.showHidden = Boolean(value);\n this.filterUpdated();\n }\n });\n }\n filter(nodes) {\n if (this.showHidden) {\n return nodes;\n }\n return nodes.filter((node) => (node.attributes.hidden !== true && !node.basename.startsWith('.')));\n }\n}\n/**\n * Register a file list filter to only show hidden files if enabled by user config\n */\nexport function registerHiddenFilesFilter() {\n registerFileListFilter(new HiddenFilesFilter());\n}\n","import { N as NcActionButton } from \"./chunks/NcActionButton-K4jUGMlW.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-B95wg_Q6.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-23CmleUh.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-B_9GOTi6.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-Dd3CsuiD.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-Ca_2vj8f.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-YqvZGY07.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-HZ-Lp090.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-BPqJExo6.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-Bt51pgle.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-DcKt7SjF.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationNew } from \"./chunks/NcAppNavigationNew-B5ikLvxM.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-BqhwbJsJ.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-B6u1Ln1_.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-BfysBg80.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-D0M18YFD.mjs\";\nimport { N as NcAppSettingsSection } from \"./chunks/NcAppSettingsSection-BjQllLEA.mjs\";\nimport { N as NcAppSettingsShortcutsSection } from \"./chunks/NcAppSettingsShortcutsSection-DblUBaWP.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-Bljse39J.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAssistantButton } from \"./chunks/NcAssistantButton-BdUkhzq1.mjs\";\nimport NcAssistantContent from \"./Components/NcAssistantContent.mjs\";\nimport { N as NcAssistantIcon } from \"./chunks/NcAssistantIcon-DCx6AaSW.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-CGnqUtoy.mjs\";\nimport { u } from \"./chunks/NcAvatar-CGnqUtoy.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-KSj0HXbX.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-DH2FV6QI.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-DrYYSHAS.mjs\";\nimport { N as NcButton } from \"./chunks/NcButton-BgppWSl9.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-D4IV4zWy.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-BbmBJ4ET.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-Bzzw1uKu.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-DpGM2KRx.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-oxV8oMlX.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-NOuL4APU.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-CBW263ij.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-enXYuwj8.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-BCCBuI6f.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-DpA4mqr-.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-C4jCrwQY.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport { N as NcFilePicker } from \"./chunks/NcFilePicker-DCPi6JGg.mjs\";\nimport { N as NcFormBox } from \"./chunks/NcFormBox-DtoCXLMx.mjs\";\nimport { N as NcFormBoxButton } from \"./chunks/NcFormBoxButton-BQi11xQX.mjs\";\nimport { N as NcFormBoxCopyButton } from \"./chunks/NcFormBoxCopyButton-BkunQ3me.mjs\";\nimport { N as NcFormBoxSwitch } from \"./chunks/NcFormBoxSwitch-E6sxPL4n.mjs\";\nimport { N as NcFormGroup } from \"./chunks/NcFormGroup-DblLoFMf.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport { N as NcHeaderButton } from \"./chunks/NcHeaderButton-DXdY8gct.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-BZnnbLTo.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-CxTT94_h.mjs\";\nimport { N as NcHotkey } from \"./chunks/NcHotkey-CLLtt9LG.mjs\";\nimport { N as NcHotkeyList } from \"./chunks/NcHotkeyList-Co7MBL5U.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-j5EyU7QH.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-D0JDzXkL.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-D35XZDGI.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-HQK5d_nv.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-UAg26Qdd.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-D7zYeXBH.mjs\";\nimport { N as NcRadioGroup } from \"./chunks/NcRadioGroup-BbBX9X2J.mjs\";\nimport { N as NcRadioGroupButton } from \"./chunks/NcRadioGroupButton-BkxlxjIA.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-BdmY-Mly.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-BCqXu_og.mjs\";\nimport { r } from \"./chunks/index-BCqXu_og.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-BcTSkyeW.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a, g, b, c, s, d } from \"./chunks/referencePickerModal-BQExd0w6.mjs\";\nimport { N, h, c as c2, i, e, r as r2, f, a as a2 } from \"./chunks/customPickerElements-DLFtgReB.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit-parents\";\nimport \"./chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-DZgAb6-3.mjs\";\nimport { N as NcSelect } from \"./chunks/NcSelect-FwcxH76q.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-ByDOTNvC.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-U7AIamCl.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-yZfa_z_z.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-5r-vvEVy.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-BwnkZzWL.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-Dz_b9rcq.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-CUM0vkbN.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-fGUiK7p2.mjs\";\nimport { N as NcThemeProvider } from \"./chunks/NcThemeProvider-BA_zMjAf.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-Cok_NaVd.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-Csw7PXyG.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-Cq1RnTfF.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useFormatDateTime, useFormatRelativeTime, useFormatTime } from \"./Composables/useFormatDateTime.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e as e2, g as g2, s as s2 } from \"./chunks/emoji-Dtn2mDf7.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { usernameToColor } from \"./Functions/usernameToColor.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport directive$1 from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsSectionShortcuts: NcAppSettingsShortcutsSection,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsShortcutsSection as NcAppSettingsSectionShortcuts,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e2 as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b as getProvider,\n c as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n c2 as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n e as registerCustomPickerElement,\n r2 as registerWidget,\n f as renderCustomPickerElement,\n a2 as renderWidget,\n r as richEditor,\n s as searchProvider,\n s2 as setCurrentSkinTone,\n d as sortProviders,\n spawnDialog,\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',[_vm._l((_setup.timePresets),function(preset){return _c(_setup.NcButton,{key:preset.id,attrs:{\"alignment\":\"start\",\"pressed\":preset === _setup.selectedOption,\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"update:pressed\":function($event){$event ? (_setup.selectedOption = preset) : _setup.onReset()}}},[_vm._v(\"\\n\\t\\t\"+_vm._s(preset.label)+\"\\n\\t\")])}),_vm._v(\" \"),(_setup.selectedOption?.id === 'custom')?_c(_setup.NcDateTimePicker,{attrs:{\"append-to-body\":\"\",\"aria-label\":_setup.t('files', 'Custom date range'),\"type\":\"date-range\"},model:{value:(_setup.timeRange),callback:function ($$v) {_setup.timeRange=$$v},expression:\"timeRange\"}}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterModified.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterModified.vue?vue&type=script&setup=true&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!./FileListFilterModified.vue?vue&type=style&index=0&id=2841ff92&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FileListFilterModified.vue?vue&type=style&index=0&id=2841ff92&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilterModified.vue?vue&type=template&id=2841ff92&scoped=true\"\nimport script from \"./FileListFilterModified.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterModified.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilterModified.vue?vue&type=style&index=0&id=2841ff92&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 \"2841ff92\",\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport svgCalendarRangeOutline from '@mdi/svg/svg/calendar-range-outline.svg?raw';\nimport { FileListFilter, registerFileListFilter } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport Vue from 'vue';\nimport FileListFilterModified from '../components/FileListFilter/FileListFilterModified.vue';\nconst tagName = 'files-file-list-filter-modified';\nclass ModifiedFilter extends FileListFilter {\n currentInstance;\n currentPreset;\n displayName = t('files', 'Modified');\n iconSvgInline = svgCalendarRangeOutline;\n tagName = tagName;\n constructor() {\n super('files:modified', 50);\n }\n filter(nodes) {\n if (!this.currentPreset) {\n return nodes;\n }\n return nodes.filter((node) => node.mtime === undefined || this.currentPreset.filter(node.mtime.getTime()));\n }\n reset() {\n this.dispatchEvent(new CustomEvent('reset'));\n }\n get preset() {\n return this.currentPreset;\n }\n setPreset(preset) {\n this.currentPreset = preset;\n this.filterUpdated();\n const chips = [];\n if (preset) {\n chips.push({\n icon: svgCalendarRangeOutline,\n text: preset.label,\n onclick: () => this.reset(),\n });\n }\n else {\n this.currentInstance?.resetFilter();\n }\n this.updateChips(chips);\n }\n}\n/**\n * Register the file list filter by modification date\n */\nexport function registerModifiedFilter() {\n const WrappedComponent = wrap(Vue, FileListFilterModified);\n // In Vue 2, wrap doesn't support disabling shadow :(\n // Disable with a hack\n Object.defineProperty(WrappedComponent.prototype, 'attachShadow', {\n value() {\n return this;\n },\n });\n Object.defineProperty(WrappedComponent.prototype, 'shadowRoot', {\n get() {\n return this;\n },\n });\n customElements.define(tagName, WrappedComponent);\n registerFileListFilter(new ModifiedFilter());\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.$style.fileListFilterType},_vm._l((_setup.typePresets),function(fileType){return _c(_setup.NcButton,{key:fileType.id,attrs:{\"pressed\":_setup.selectedOptions.includes(fileType),\"variant\":\"tertiary\",\"alignment\":\"start\",\"wide\":\"\"},on:{\"update:pressed\":function($event){return _setup.toggleOption(fileType, $event)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":fileType.icon}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\"+_vm._s(fileType.label)+\"\\n\\t\")])}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterType.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterType.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterType.vue?vue&type=style&index=0&id=5140be48&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterType.vue?vue&type=style&index=0&id=5140be48&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilterType.vue?vue&type=template&id=5140be48\"\nimport script from \"./FileListFilterType.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterType.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilterType.vue?vue&type=style&index=0&id=5140be48&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\n null,\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport svgFileOutline from '@mdi/svg/svg/file-outline.svg?raw';\nimport { FileListFilter, registerFileListFilter } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport wrap from '@vue/web-component-wrapper';\nimport Vue from 'vue';\nimport FileListFilterType from '../components/FileListFilter/FileListFilterType.vue';\nimport logger from '../logger.ts';\nconst tagName = 'files-file-list-filter-type';\nclass TypeFilter extends FileListFilter {\n currentInstance;\n currentPresets;\n displayName = t('files', 'Type');\n iconSvgInline = svgFileOutline;\n tagName = tagName;\n constructor() {\n super('files:type', 10);\n this.currentPresets = [];\n }\n filter(nodes) {\n if (!this.currentPresets || this.currentPresets.length === 0) {\n return nodes;\n }\n const mimeList = this.currentPresets.reduce((previous, current) => [...previous, ...current.mime], []);\n return nodes.filter((node) => {\n if (!node.mime) {\n return false;\n }\n const mime = node.mime.toLowerCase();\n if (mimeList.includes(mime)) {\n return true;\n }\n else if (mimeList.includes(window.OC.MimeTypeList.aliases[mime])) {\n return true;\n }\n else if (mimeList.includes(mime.split('/')[0])) {\n return true;\n }\n return false;\n });\n }\n reset() {\n // to be listener by the component\n this.dispatchEvent(new CustomEvent('reset'));\n }\n get presets() {\n return this.currentPresets;\n }\n setPresets(presets) {\n logger.debug('TypeFilter: setting presets', { presets });\n this.currentPresets = presets ?? [];\n if (this.currentInstance !== undefined) {\n // could be called before the instance was created\n // (meaning the files list is not mounted yet)\n this.currentInstance.$props.presets = presets;\n }\n this.filterUpdated();\n const chips = [];\n if (presets && presets.length > 0) {\n for (const preset of presets) {\n chips.push({\n icon: preset.icon,\n text: preset.label,\n onclick: () => this.removeFilterPreset(preset.id),\n });\n }\n }\n else {\n this.currentInstance?.resetFilter();\n }\n this.updateChips(chips);\n }\n /**\n * Helper callback that removed a preset from selected.\n * This is used when clicking on \"remove\" on a filter-chip.\n *\n * @param presetId Id of preset to remove\n */\n removeFilterPreset(presetId) {\n const filtered = this.currentPresets.filter(({ id }) => id !== presetId);\n this.dispatchEvent(new CustomEvent('deselect', { detail: presetId }));\n this.setPresets(filtered);\n }\n}\n/**\n * Register the file list filter by file type\n */\nexport function registerTypeFilter() {\n const WrappedComponent = wrap(Vue, FileListFilterType);\n // In Vue 2, wrap doesn't support disabling shadow :(\n // Disable with a hack\n Object.defineProperty(WrappedComponent.prototype, 'attachShadow', {\n value() {\n return this;\n },\n });\n Object.defineProperty(WrappedComponent.prototype, 'shadowRoot', {\n get() {\n return this;\n },\n });\n window.customElements.define(tagName, WrappedComponent);\n registerFileListFilter(new TypeFilter());\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcDialog,{attrs:{\"data-cy-files-new-node-dialog\":\"\",\"name\":_vm.name,\"open\":_vm.open,\"close-on-click-outside\":\"\",\"out-transition\":\"\"},on:{\"update:open\":function($event){return _setup.emit('close', null)}},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"data-cy-files-new-node-dialog-submit\":\"\",\"variant\":\"primary\",\"disabled\":_setup.validity !== ''},on:{\"click\":_setup.submit}},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_setup.t('files', 'Create'))+\"\\n\\t\\t\")])]},proxy:true}])},[_vm._v(\" \"),_c('form',{ref:\"formElement\",staticClass:\"new-node-dialog__form\",on:{\"submit\":function($event){$event.preventDefault();return _setup.emit('close', _setup.localDefaultName)}}},[_c(_setup.NcTextField,{ref:\"nameInput\",attrs:{\"data-cy-files-new-node-dialog-input\":\"\",\"error\":_setup.validity !== '',\"helper-text\":_setup.validity,\"label\":_vm.label},model:{value:(_setup.localDefaultName),callback:function ($$v) {_setup.localDefaultName=$$v},expression:\"localDefaultName\"}}),_vm._v(\" \"),(_setup.isHiddenFileName)?_c(_setup.NcNoteCard,{attrs:{\"type\":\"warning\",\"text\":_setup.t('files', 'Files starting with a dot are hidden by default')}}):_vm._e()],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewNodeDialog.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NewNodeDialog.vue?vue&type=script&setup=true&lang=ts\"","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { InvalidFilenameError, InvalidFilenameErrorReason, validateFilename } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\n/**\n * Get the validity of a filename (empty if valid).\n * This can be used for `setCustomValidity` on input elements\n *\n * @param name The filename\n * @param escape Escape the matched string in the error (only set when used in HTML)\n */\nexport function getFilenameValidity(name, escape = false) {\n if (name.trim() === '') {\n return t('files', 'Filename must not be empty.');\n }\n try {\n validateFilename(name);\n return '';\n }\n catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n return t('files', '\"{char}\" is not allowed inside a filename.', { char: error.segment }, undefined, { escape });\n case InvalidFilenameErrorReason.ReservedName:\n return t('files', '\"{segment}\" is a reserved name and not allowed for filenames.', { segment: error.segment }, undefined, { escape: false });\n case InvalidFilenameErrorReason.Extension:\n if (error.segment.match(/\\.[a-z]/i)) {\n return t('files', '\"{extension}\" is not an allowed filetype.', { extension: error.segment }, undefined, { escape: false });\n }\n return t('files', 'Filenames must not end with \"{extension}\".', { extension: error.segment }, undefined, { escape: false });\n default:\n return t('files', 'Invalid filename.');\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/vue-loader/lib/index.js??vue-loader-options!./NewNodeDialog.vue?vue&type=style&index=0&id=77bf0406&prod&scoped=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./NewNodeDialog.vue?vue&type=style&index=0&id=77bf0406&prod&scoped=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./NewNodeDialog.vue?vue&type=template&id=77bf0406&scoped=true\"\nimport script from \"./NewNodeDialog.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./NewNodeDialog.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./NewNodeDialog.vue?vue&type=style&index=0&id=77bf0406&prod&scoped=true&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 \"77bf0406\",\n null\n \n)\n\nexport default component.exports","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog';\nimport NewNodeDialog from '../components/NewNodeDialog.vue';\n/**\n * Ask user for file or folder name\n *\n * @param defaultName Default name to use\n * @param folderContent Nodes with in the current folder to check for unique name\n * @param labels Labels to set on the dialog\n * @return string if successful otherwise null if aborted\n */\nexport function newNodeName(defaultName, folderContent, labels = {}) {\n const contentNames = folderContent.map((node) => node.basename);\n return new Promise((resolve) => {\n spawnDialog(NewNodeDialog, {\n ...labels,\n defaultName,\n otherNames: contentNames,\n }, (folderName) => {\n resolve(folderName);\n });\n });\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderPlusSvg from '@mdi/svg/svg/folder-plus-outline.svg?raw';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { showError, showSuccess } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { Folder, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { basename } from 'path';\nimport logger from '../logger.ts';\nimport { newNodeName } from '../utils/newNodeDialog.ts';\nexport const entry = {\n id: 'newFolder',\n order: 0,\n displayName: t('files', 'New folder'),\n // Make the svg icon color match the primary element color\n iconSvgInline: FolderPlusSvg.replace(/viewBox/gi, 'style=\"color: var(--color-primary-element)\" viewBox'),\n enabled(context) {\n return Boolean(context.permissions & Permission.CREATE)\n && Boolean(context.permissions & Permission.READ);\n },\n async handler(context, content) {\n const name = await newNodeName(t('files', 'New folder'), content);\n if (name === null) {\n return;\n }\n try {\n const { fileid, source } = await createNewFolder(context, name.trim());\n // Create the folder in the store\n const folder = new Folder({\n source,\n id: fileid,\n mtime: new Date(),\n owner: context.owner,\n permissions: Permission.ALL,\n root: context?.root || '/files/' + getCurrentUser()?.uid,\n // Include mount-type from parent folder as this is inherited\n attributes: {\n 'mount-type': context.attributes?.['mount-type'],\n 'owner-id': context.attributes?.['owner-id'],\n 'owner-display-name': context.attributes?.['owner-display-name'],\n },\n });\n // Show success\n emit('files:node:created', folder);\n showSuccess(t('files', 'Created new folder \"{name}\"', { name: basename(source) }));\n logger.debug('Created new folder', { folder, source });\n // Navigate to the new folder\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files', fileid: String(fileid) }, { dir: context.path });\n }\n catch (error) {\n logger.error('Creating new folder failed', { error });\n showError('Creating new folder failed');\n }\n },\n};\n/**\n * Create a new folder in the given root with the given name\n *\n * @param root - The folder in which the new folder should be created\n * @param name - The name of the new folder\n */\nasync function createNewFolder(root, name) {\n const source = root.source + '/' + name;\n const encodedSource = root.encodedSource + '/' + encodeURIComponent(name);\n const response = await axios({\n method: 'MKCOL',\n url: encodedSource,\n headers: {\n Overwrite: 'F',\n },\n });\n return {\n fileid: parseInt(response.headers['oc-fileid']),\n source,\n };\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { addNewFileMenuEntry, Permission } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport Vue, { defineAsyncComponent } from 'vue';\nimport { newNodeName } from '../utils/newNodeDialog.ts';\n// async to reduce bundle size\nconst TemplatePickerVue = defineAsyncComponent(() => import('../views/TemplatePicker.vue'));\nlet TemplatePicker = null;\n/**\n *\n * @param context\n */\nasync function getTemplatePicker(context) {\n if (TemplatePicker === null) {\n // Create document root\n const mountingPoint = document.createElement('div');\n mountingPoint.id = 'template-picker';\n document.body.appendChild(mountingPoint);\n // Init vue app\n TemplatePicker = new Vue({\n render: (h) => h(TemplatePickerVue, {\n ref: 'picker',\n props: {\n parent: context,\n },\n }),\n methods: { open(...args) { this.$refs.picker.open(...args); } },\n el: mountingPoint,\n });\n }\n return TemplatePicker;\n}\n/**\n * Register all new-file-menu entries for all template providers\n */\nexport function registerTemplateEntries() {\n let templates;\n if (isPublicShare()) {\n templates = loadState('files_sharing', 'templates', []);\n }\n else {\n templates = loadState('files', 'templates', []);\n }\n // Init template files menu\n templates.forEach((provider, index) => {\n addNewFileMenuEntry({\n id: `template-new-${provider.app}-${index}`,\n displayName: provider.label,\n iconSvgInline: provider.iconSvgInline,\n enabled(context) {\n if (context.attributes['is-encrypted']) {\n return false;\n }\n // templates are only supported in folders where the user has read and create permissions\n return (context.permissions & Permission.READ) !== 0\n && (context.permissions & Permission.CREATE) !== 0;\n },\n order: 11,\n async handler(context, content) {\n const templatePicker = getTemplatePicker(context);\n const name = await newNodeName(`${provider.label}${provider.extension}`, content, {\n label: t('files', 'Filename'),\n name: provider.label,\n });\n if (name !== null) {\n // Create the file\n const picker = await templatePicker;\n picker.open(name.trim(), provider);\n }\n },\n });\n });\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport PlusSvg from '@mdi/svg/svg/plus.svg?raw';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { showError } from '@nextcloud/dialogs';\nimport { Permission, removeNewFileMenuEntry } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { join } from 'path';\nimport logger from '../logger.ts';\nimport { newNodeName } from '../utils/newNodeDialog.ts';\nconst templatesEnabled = loadState('files', 'templates_enabled', true);\nlet templatesPath = loadState('files', 'templates_path', false);\nlogger.debug('Templates folder enabled', { templatesEnabled });\nlogger.debug('Initial templates folder', { templatesPath });\n/**\n * Init template folder\n *\n * @param directory Folder where to create the templates folder\n * @param name Name to use or the templates folder\n */\nasync function initTemplatesFolder(directory, name) {\n const templatePath = join(directory.path, name);\n try {\n logger.debug('Initializing the templates directory', { templatePath });\n const { data } = await axios.post(generateOcsUrl('apps/files/api/v1/templates/path'), {\n templatePath,\n copySystemTemplates: true,\n });\n // Go to template directory\n window.OCP.Files.Router.goToRoute(null, // use default route\n { view: 'files', fileid: undefined }, { dir: templatePath });\n logger.info('Created new templates folder', {\n ...data.ocs.data,\n });\n templatesPath = data.ocs.data.templates_path;\n }\n catch (error) {\n logger.error('Unable to initialize the templates directory', { error });\n showError(t('files', 'Unable to initialize the templates directory'));\n }\n}\nexport const entry = {\n id: 'template-picker',\n displayName: t('files', 'Create templates folder'),\n iconSvgInline: PlusSvg,\n order: 30,\n enabled(context) {\n // Templates disabled or templates folder already initialized\n if (!templatesEnabled || templatesPath) {\n return false;\n }\n // Allow creation on your own folders only\n if (context.owner !== getCurrentUser()?.uid) {\n return false;\n }\n return (context.permissions & Permission.CREATE) !== 0;\n },\n async handler(context, content) {\n const name = await newNodeName(t('files', 'Templates'), content, { name: t('files', 'New template folder') });\n if (name !== null) {\n // Create the template folder\n initTemplatesFolder(context, name);\n // Remove the menu entry\n removeNewFileMenuEntry('template-picker');\n }\n },\n};\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { generateUrl, getRootUrl } from '@nextcloud/router'\nimport logger from '../logger.ts'\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\tlet scope = getRootUrl()\n\t\t\t\t// If the instance is not in a subfolder an empty string will be returned.\n\t\t\t\t// The service worker registration will use the current path if it receives an empty string,\n\t\t\t\t// which will result in a service worker registration for every single path the user visits.\n\t\t\t\tif (scope === '') {\n\t\t\t\t\tscope = '/'\n\t\t\t\t}\n\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 * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { Folder, Permission } from '@nextcloud/files';\nimport { getFavoriteNodes, getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport logger from '../logger.ts';\nimport { getContents as filesContents } from './Files.ts';\nimport { client } from './WebdavClient.ts';\n/**\n * Get the contents for the favorites view\n *\n * @param path - The path to get the contents for\n * @param options - Additional options\n * @param options.signal - Optional AbortSignal to cancel the request\n * @return A promise resolving to the contents with root folder\n */\nexport async function getContents(path = '/', options) {\n // We only filter root files for favorites, for subfolders we can simply reuse the files contents\n if (path && path !== '/') {\n return filesContents(path, options);\n }\n try {\n const contents = await getFavoriteNodes({ client, signal: options.signal });\n return {\n contents,\n folder: new Folder({\n id: 0,\n source: `${getRemoteURL()}${getRootPath()}`,\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.READ,\n }),\n };\n }\n catch (error) {\n if (options.signal.aborted) {\n logger.debug('Favorite nodes request was aborted');\n throw new DOMException('Aborted', 'AbortError');\n }\n logger.error('Failed to load favorite nodes via WebDAV', { error });\n throw error;\n }\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderSvg from '@mdi/svg/svg/folder-outline.svg?raw';\nimport StarSvg from '@mdi/svg/svg/star-outline.svg?raw';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { FileType, getNavigation, View } from '@nextcloud/files';\nimport { getCanonicalLocale, getLanguage, t } from '@nextcloud/l10n';\nimport logger from '../logger.ts';\nimport { getContents } from '../services/Favorites.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\n/**\n * Generate a favorite folder view\n *\n * @param folder - The folder to generate the view for\n * @param index - The order index\n */\nfunction generateFavoriteFolderView(folder, index = 0) {\n return new View({\n id: generateIdFromPath(folder.path),\n name: folder.displayname,\n icon: FolderSvg,\n order: index,\n params: {\n dir: folder.path,\n fileid: String(folder.fileid),\n view: 'favorites',\n },\n parent: 'favorites',\n columns: [],\n getContents,\n });\n}\n/**\n * Generate a unique id from the folder path\n *\n * @param path - The folder path\n */\nfunction generateIdFromPath(path) {\n return `favorite-${hashCode(path)}`;\n}\n/**\n * Register the favorites view and setup event listeners to update it\n */\nexport async function registerFavoritesView() {\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: 'favorites',\n name: t('files', 'Favorites'),\n caption: t('files', 'List of favorite files and folders.'),\n emptyTitle: t('files', 'No favorites yet'),\n emptyCaption: t('files', 'Files and folders you mark as favorite will show up here'),\n icon: StarSvg,\n order: 15,\n columns: [],\n getContents,\n }));\n const controller = new AbortController();\n const favoriteFolders = (await getContents('', { signal: controller.signal })).contents\n .filter((node) => node.type === FileType.Folder);\n const favoriteFoldersViews = favoriteFolders\n .map((folder, index) => generateFavoriteFolderView(folder, index));\n logger.debug('Generating favorites view', { favoriteFolders });\n favoriteFoldersViews.forEach((view) => Navigation.register(view));\n /**\n * Update favorites navigation when a new folder is added\n */\n subscribe('files:favorites:added', (node) => {\n if (node.type !== FileType.Folder) {\n return;\n }\n // Sanity check\n if (node.path === null || !node.root?.startsWith('/files')) {\n logger.error('Favorite folder is not within user files root', { node });\n return;\n }\n addToFavorites(node);\n });\n /**\n * Remove favorites navigation when a folder is removed\n */\n subscribe('files:favorites:removed', (node) => {\n if (node.type !== FileType.Folder) {\n return;\n }\n // Sanity check\n if (node.path === null || !node.root?.startsWith('/files')) {\n logger.error('Favorite folder is not within user files root', { node });\n return;\n }\n removePathFromFavorites(node.path);\n });\n /**\n * Update favorites navigation when a folder is renamed\n */\n subscribe('files:node:renamed', (node) => {\n if (node.type !== FileType.Folder) {\n return;\n }\n if (node.attributes.favorite !== 1) {\n return;\n }\n updateNodeFromFavorites(node);\n });\n /**\n * Sort the favorites paths array and\n * update the order property of the existing views\n */\n const updateAndSortViews = function () {\n favoriteFolders.sort((a, b) => a.basename.localeCompare(b.basename, [getLanguage(), getCanonicalLocale()], { ignorePunctuation: true, numeric: true, usage: 'sort' }));\n favoriteFolders.forEach((folder, index) => {\n const view = favoriteFoldersViews.find((view) => view.id === generateIdFromPath(folder.path));\n if (view) {\n view.order = index;\n }\n });\n };\n /**\n * Add a folder to the favorites paths array and update the views\n *\n * @param node - The folder node\n */\n function addToFavorites(node) {\n const view = generateFavoriteFolderView(node);\n // Skip if already exists\n if (favoriteFolders.find((folder) => folder.path === node.path)) {\n return;\n }\n // Update arrays\n favoriteFolders.push(node);\n favoriteFoldersViews.push(view);\n // Update and sort views\n updateAndSortViews();\n Navigation.register(view);\n }\n /**\n * Remove a folder from the favorites paths array and update the views\n *\n * @param path - The folder path\n */\n function removePathFromFavorites(path) {\n const id = generateIdFromPath(path);\n const index = favoriteFolders.findIndex((folder) => folder.path === path);\n // Skip if not exists\n if (index === -1) {\n return;\n }\n // Update arrays\n favoriteFolders.splice(index, 1);\n favoriteFoldersViews.splice(index, 1);\n // Update and sort views\n Navigation.remove(id);\n updateAndSortViews();\n }\n /**\n * Update a folder from the favorites paths array and update the views\n *\n * @param node - The updated folder node\n */\n function updateNodeFromFavorites(node) {\n const favoriteFolder = favoriteFolders.find((folder) => folder.fileid === node.fileid);\n // Skip if it does not exists\n if (favoriteFolder === undefined) {\n return;\n }\n removePathFromFavorites(favoriteFolder.path);\n addToFavorites(node);\n }\n updateAndSortViews();\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Simple non-secure hashing function similar to Java's `hashCode`\n *\n * @param str The string to hash\n * @return a non secure hash of the string\n */\nexport function hashCode(str) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;\n }\n return (hash >>> 0);\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { getRemoteURL } from '@nextcloud/files/dav';\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nimport { dirname, encodePath, join } from '@nextcloud/paths';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { getContents as getFiles } from './Files.ts';\nexport const folderTreeId = 'folders';\nexport const sourceRoot = `${getRemoteURL()}/files/${getCurrentUser()?.uid}`;\nconst collator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\nconst compareNodes = (a, b) => collator.compare(a.displayName ?? a.basename, b.displayName ?? b.basename);\n/**\n * Get all tree nodes recursively\n *\n * @param tree - The tree to process\n * @param currentPath - The current path\n * @param nodes - The nodes collected so far\n */\nfunction getTreeNodes(tree, currentPath = '/', nodes = []) {\n const sortedTree = tree.toSorted(compareNodes);\n for (const { id, basename, displayName, children } of sortedTree) {\n const path = join(currentPath, basename);\n const source = `${sourceRoot}${path}`;\n const node = {\n source,\n encodedSource: encodeSource(source),\n path,\n fileid: id,\n basename,\n };\n if (displayName) {\n node.displayName = displayName;\n }\n nodes.push(node);\n if (children.length > 0) {\n getTreeNodes(children, path, nodes);\n }\n }\n return nodes;\n}\n/**\n * Get folder tree nodes\n *\n * @param path - The path to get the tree from\n * @param depth - The depth to fetch\n * @param withParents - Whether to include parent folders in the response\n */\nexport async function getFolderTreeNodes(path = '/', depth = 1, withParents = false) {\n const { data: tree } = await axios.get(generateOcsUrl('/apps/files/api/v1/folder-tree'), {\n params: new URLSearchParams({ path, depth: String(depth), withParents: String(withParents) }),\n });\n const nodes = getTreeNodes(tree, withParents ? '/' : path);\n return nodes;\n}\nexport const getContents = (path, options) => getFiles(path, options);\n/**\n * Encode source URL\n *\n * @param source - The source URL\n */\nexport function encodeSource(source) {\n const { origin } = new URL(source);\n return origin + encodePath(source.slice(origin.length));\n}\n/**\n * Get parent source URL\n *\n * @param source - The source URL\n */\nexport function getSourceParent(source) {\n const parent = dirname(source);\n if (parent === sourceRoot) {\n return folderTreeId;\n }\n return `${folderTreeId}::${encodeSource(parent)}`;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderMultipleSvg from '@mdi/svg/svg/folder-multiple-outline.svg?raw';\nimport FolderSvg from '@mdi/svg/svg/folder-outline.svg?raw';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { FileType, getNavigation, View } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { t } from '@nextcloud/l10n';\nimport { isSamePath } from '@nextcloud/paths';\nimport PQueue from 'p-queue';\nimport { folderTreeId, getContents, getFolderTreeNodes, getSourceParent, sourceRoot, } from '../services/FolderTree.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nconst Navigation = getNavigation();\nconst queue = new PQueue({ concurrency: 5, intervalCap: 5, interval: 200 });\nconst isFolderTreeEnabled = loadState('files', 'config', { folder_tree: true }).folder_tree;\nlet showHiddenFiles = loadState('files', 'config', { show_hidden: false }).show_hidden;\nconst folderTreeView = new View({\n id: folderTreeId,\n name: t('files', 'Folder tree'),\n caption: t('files', 'List of your files and folders.'),\n icon: FolderMultipleSvg,\n order: 50, // Below all other views\n getContents,\n async loadChildViews(view) {\n const treeView = view;\n if (treeView.loading || treeView.loaded) {\n return;\n }\n treeView.loading = true;\n try {\n const dir = new URLSearchParams(window.location.search).get('dir') ?? '/';\n const tree = await getFolderTreeNodes(dir, 1, true);\n registerNodeViews(tree, dir);\n treeView.loaded = true;\n subscribe('files:node:created', onCreateNode);\n subscribe('files:node:deleted', onDeleteNode);\n subscribe('files:node:moved', onMoveNode);\n subscribe('files:config:updated', onUserConfigUpdated);\n }\n finally {\n treeView.loading = false;\n }\n },\n});\n/**\n * Register the folder tree feature\n */\nexport async function registerFolderTreeView() {\n if (!isFolderTreeEnabled) {\n return;\n }\n Navigation.register(folderTreeView);\n}\n/**\n * Helper to register node views in the navigation.\n *\n * @param nodes - The nodes to register\n * @param path - The path to expand by default, if any\n */\nasync function registerNodeViews(nodes, path) {\n const views = [];\n for (const node of nodes) {\n const isRegistered = Navigation.views.some((view) => view.id === `${folderTreeId}::${node.encodedSource}`);\n // skip hidden files if the setting is disabled\n if (!showHiddenFiles && node.basename.startsWith('.')) {\n if (isRegistered) {\n // and also remove any existing views for hidden files if the setting was toggled\n Navigation.remove(`${folderTreeId}::${node.encodedSource}`);\n }\n continue;\n }\n // skip already registered views to avoid duplicates when loading multiple levels\n if (isRegistered) {\n continue;\n }\n views.push(generateNodeView(node, path === node.path || path?.startsWith(node.path + '/') ? true : undefined));\n }\n Navigation.register(...views);\n}\n/**\n * Generates a navigation view for a given folder tree node or folder.\n *\n * @param node - The folder tree node or folder for which to generate the view.\n * @param expanded - Whether the view should be expanded by default.\n */\nfunction generateNodeView(node, expanded) {\n return {\n id: `${folderTreeId}::${node.encodedSource}`,\n parent: getSourceParent(node.source),\n expanded,\n loaded: expanded,\n // @ts-expect-error Casing differences\n name: node.displayName ?? node.displayname ?? node.basename,\n icon: FolderSvg,\n getContents,\n loadChildViews: getLoadChildViews(node),\n params: {\n view: folderTreeId,\n fileid: String(node.fileid), // Needed for matching exact routes\n dir: node.path,\n },\n };\n}\n/**\n * Generates a function to load child views for a given folder tree node or folder.\n * This function is used as the `loadChildViews` callback in the navigation view.\n *\n * @param node - The folder tree node or folder for which to generate the child view loader function.\n */\nfunction getLoadChildViews(node) {\n return async (view) => {\n const treeView = view;\n if (treeView.loading || treeView.loaded) {\n return;\n }\n treeView.loading = true;\n try {\n await updateTreeChildren(node.path);\n treeView.loaded = true;\n }\n finally {\n treeView.loading = false;\n }\n };\n}\n/**\n * Registers child views for the given path. If no path is provided, it registers the root nodes.\n *\n * @param path - The path for which to register child views. Defaults to '/' for root nodes.\n */\nasync function updateTreeChildren(path = '/') {\n await queue.add(async () => {\n const filesStore = useFilesStore(getPinia());\n const cachedNodes = filesStore.getNodesByPath(Navigation.active.id, path);\n if (cachedNodes.length > 0) {\n // if there are nodes loaded in the path we dont need to fetch from API\n const folders = cachedNodes.filter((node) => node.type === FileType.Folder);\n registerNodeViews(folders, path);\n }\n else {\n // otherwise we need to fetch the tree nodes for the path\n const nodes = await getFolderTreeNodes(path, 2);\n registerNodeViews(nodes);\n }\n });\n}\n/**\n * Remove a folder view from the navigation.\n *\n * @param folder - The folder for which to remove the view\n */\nfunction removeFolderView(folder) {\n const viewId = folder.encodedSource;\n Navigation.remove(viewId);\n}\n/**\n * Remove a folder view from the navigation by its source URL.\n *\n * @param source - The source URL of the folder for which to remove the view\n */\nfunction removeFolderViewSource(source) {\n Navigation.remove(source);\n}\n/**\n * Handle node creation events to add new folder tree views to the navigation.\n *\n * @param node - The node that was created\n */\nfunction onCreateNode(node) {\n if (node.type !== FileType.Folder) {\n return;\n }\n registerNodeViews([node]);\n}\n/**\n * Handle node deletion events to remove the corresponding folder tree views from the navigation.\n *\n * @param node - The node that was deleted\n */\nfunction onDeleteNode(node) {\n if (node.type !== FileType.Folder) {\n return;\n }\n removeFolderView(node);\n}\n/**\n * Handle node move events to update the folder tree views accordingly.\n *\n * @param context - the event context\n * @param context.node - The node that was moved\n * @param context.oldSource - the old source URL of the moved node\n */\nfunction onMoveNode({ node, oldSource }) {\n if (node.type !== FileType.Folder) {\n return;\n }\n removeFolderViewSource(oldSource);\n registerNodeViews([node]);\n const newPath = node.source.replace(sourceRoot, '');\n const oldPath = oldSource.replace(sourceRoot, '');\n const childViews = Navigation.views.filter((view) => {\n if (!view.params?.dir) {\n return false;\n }\n if (isSamePath(view.params.dir, oldPath)) {\n return false;\n }\n return view.params.dir.startsWith(oldPath);\n });\n for (const view of childViews) {\n view.parent = getSourceParent(node.source);\n view.params.dir = view.params.dir.replace(oldPath, newPath);\n }\n}\n/**\n * Handle user config updates, specifically for the \"show hidden files\" setting,\n * to show hidden folders in the folder tree when enabled and hide them when disabled.\n *\n * @param context - the event context\n * @param context.key - the key of the updated config\n * @param context.value - the new value of the updated config\n */\nasync function onUserConfigUpdated({ key, value }) {\n if (key === 'show_hidden') {\n showHiddenFiles = value;\n await updateTreeChildren();\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { getContents as getFiles } from './Files.ts';\nconst currentUserId = getCurrentUser()?.uid;\n/**\n * Filters each file/folder on its shared status\n *\n * A personal file is considered a file that has all of the following properties:\n * 1. the current user owns\n * 2. the file is not shared with anyone\n * 3. the file is not a group folder\n *\n * @todo Move to `@nextcloud/files`\n * @param node The node to check\n */\nexport function isPersonalFile(node) {\n // the type of mounts that determine whether the file is shared\n const sharedMountTypes = ['group', 'shared'];\n const mountType = node.attributes['mount-type'];\n return currentUserId === node.owner && !sharedMountTypes.includes(mountType);\n}\n/**\n * Get personal files from a given path\n *\n * @param path - The path to get the personal files from\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n * @return A promise that resolves to the personal files\n */\nexport function getContents(path = '/', options) {\n // get all the files from the current path as a cancellable promise\n // then filter the files that the user does not own, or has shared / is a group folder\n return getFiles(path, options)\n .then((content) => {\n content.contents = content.contents.filter(isPersonalFile);\n return content;\n });\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport AccountIcon from '@mdi/svg/svg/account-outline.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { getContents } from '../services/PersonalFiles.ts';\nimport { defaultView, hasPersonalFilesView } from '../utils/filesViews.ts';\nexport const VIEW_ID = 'personal';\n/**\n * Register the personal files view if allowed\n */\nexport function registerPersonalFilesView() {\n if (!hasPersonalFilesView()) {\n return;\n }\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: VIEW_ID,\n name: t('files', 'Personal files'),\n caption: t('files', 'List of your files and folders that are not shared.'),\n emptyTitle: t('files', 'No personal files found'),\n emptyCaption: t('files', 'Files that are not shared will show up here.'),\n icon: AccountIcon,\n // if this is the default view we set it at the top of the list - otherwise default position of fifth\n order: defaultView() === VIEW_ID ? 0 : 5,\n getContents,\n }));\n}\n","import { getCurrentUser } from '@nextcloud/auth';\nimport { Folder, Permission } from '@nextcloud/files';\nimport { getRecentSearch, getRemoteURL, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { loadState } from '@nextcloud/initial-state';\nimport logger from '../logger.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useUserConfigStore } from '../store/userconfig.ts';\nimport { client } from './WebdavClient.ts';\nconst lastTwoWeeksTimestamp = Math.round((Date.now() / 1000) - (60 * 60 * 24 * 14));\nconst recentLimit = loadState('files', 'recent_limit', 100);\n/**\n * Get recently changed nodes\n *\n * This takes the users preference about hidden files into account.\n * If hidden files are not shown, then also recently changed files *in* hidden directories are filtered.\n *\n * @param path Path to search for recent changes\n * @param options Options including abort signal\n * @param options.signal Abort signal to cancel the request\n */\nexport async function getContents(path = '/', options) {\n const store = useUserConfigStore(getPinia());\n /**\n * Filter function that returns only the visible nodes - or hidden if explicitly configured\n *\n * @param node The node to check\n */\n const filterHidden = (node) => path !== '/' // We need to hide files from hidden directories in the root if not configured to show\n || store.userConfig.show_hidden // If configured to show hidden files we can early return\n || !node.dirname.split('/').some((dir) => dir.startsWith('.')); // otherwise only include the file if non of the parent directories is hidden\n try {\n const contentsResponse = await client.search('/', {\n signal: options.signal,\n details: true,\n data: getRecentSearch(lastTwoWeeksTimestamp, recentLimit),\n });\n const contents = contentsResponse.data.results\n .map((stat) => {\n // The search endpoint already includes the dav remote URL so we must not include it in the source\n stat.filename = stat.filename.replace('/remote.php/dav', '');\n return resultToNode(stat);\n })\n .filter(filterHidden);\n return {\n folder: new Folder({\n id: 0,\n source: `${getRemoteURL()}${getRootPath()}`,\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.READ,\n }),\n contents,\n };\n }\n catch (error) {\n if (options.signal.aborted) {\n logger.info('Fetching recent files aborted');\n throw new DOMException('Aborted', 'AbortError');\n }\n logger.error('Failed to fetch recent files', { error });\n throw error;\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport HistorySvg from '@mdi/svg/svg/history.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { getContents } from '../services/Recent.ts';\nexport default () => {\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: 'recent',\n name: t('files', 'Recent'),\n caption: t('files', 'List of recently modified files and folders.'),\n emptyTitle: t('files', 'No recently modified files'),\n emptyCaption: t('files', 'Files and folders you recently modified will show up here.'),\n icon: HistorySvg,\n order: 10,\n defaultSortKey: 'mtime',\n getContents,\n }));\n};\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { addNewFileMenuEntry, getNewFileMenu, registerFileAction } from '@nextcloud/files';\nimport { registerDavProperty } from '@nextcloud/files/dav';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { registerConvertActions } from './actions/convertAction.ts';\nimport { action as deleteAction } from './actions/deleteAction.ts';\nimport { action as downloadAction } from './actions/downloadAction.ts';\nimport { action as favoriteAction } from './actions/favoriteAction.ts';\nimport { action as moveOrCopyAction } from './actions/moveOrCopyAction.ts';\nimport { action as openFolderAction } from './actions/openFolderAction.ts';\nimport { action as openInFilesAction } from './actions/openInFilesAction.ts';\nimport { action as editLocallyAction } from './actions/openLocallyAction.ts';\nimport { action as renameAction } from './actions/renameAction.ts';\nimport { action as sidebarAction } from './actions/sidebarAction.ts';\nimport { registerSidebarFavoriteAction } from './actions/sidebarFavoriteAction.ts';\nimport { action as viewInFolderAction } from './actions/viewInFolderAction.ts';\nimport { registerFilenameFilter } from './filters/FilenameFilter.ts';\nimport { registerHiddenFilesFilter } from './filters/HiddenFilesFilter.ts';\nimport { registerModifiedFilter } from './filters/ModifiedFilter.ts';\nimport { registerTypeFilter } from './filters/TypeFilter.ts';\nimport { entry as newFolderEntry } from './newMenu/newFolder.ts';\nimport { registerTemplateEntries } from './newMenu/newFromTemplate.ts';\nimport { entry as newTemplatesFolder } from './newMenu/newTemplatesFolder.ts';\nimport { initLivePhotos } from './services/LivePhotos.ts';\nimport registerPreviewServiceWorker from './services/ServiceWorker.js';\nimport { registerFavoritesView } from './views/favorites.ts';\nimport { registerFilesView } from './views/files.ts';\nimport { registerFolderTreeView } from './views/folderTree.ts';\nimport { registerPersonalFilesView } from './views/personal-files.ts';\nimport registerRecentView from './views/recent.ts';\nimport { registerSearchView } from './views/search.ts';\n// Register file actions\nregisterConvertActions();\nregisterFileAction(deleteAction);\nregisterFileAction(downloadAction);\nregisterFileAction(editLocallyAction);\nregisterFileAction(favoriteAction);\nregisterFileAction(moveOrCopyAction);\nregisterFileAction(openFolderAction);\nregisterFileAction(openInFilesAction);\nregisterFileAction(renameAction);\nregisterFileAction(sidebarAction);\nregisterFileAction(viewInFolderAction);\n// Register new menu entry\naddNewFileMenuEntry(newFolderEntry);\naddNewFileMenuEntry(newTemplatesFolder);\nregisterTemplateEntries();\n// Register files views when not on public share\nif (isPublicShare() === false) {\n registerFavoritesView();\n registerFilesView();\n registerPersonalFilesView();\n registerRecentView();\n registerSearchView();\n registerFolderTreeView();\n}\n// Register file list filters\nregisterHiddenFilesFilter();\nregisterTypeFilter();\nregisterModifiedFilter();\nregisterFilenameFilter();\n// Register sidebar action\nregisterSidebarFavoriteAction();\n// Register preview service worker\nregisterPreviewServiceWorker();\nregisterDavProperty('nc:hidden', { nc: 'http://nextcloud.org/ns' });\nregisterDavProperty('nc:is-mount-root', { nc: 'http://nextcloud.org/ns' });\nregisterDavProperty('nc:metadata-blurhash', { nc: 'http://nextcloud.org/ns' });\ninitLivePhotos();\n// TODO: REMOVE THIS ONCE THE UPLOAD LIBRARY IS MIGRATED TO THE NEW FILES LIBRARY\nwindow._nc_newfilemenu = new Proxy(getNewFileMenu(), {\n get(target, prop) {\n return target[prop];\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n});\n","/*\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport starOutlineSvg from '@mdi/svg/svg/star-outline.svg?raw';\nimport starSvg from '@mdi/svg/svg/star.svg?raw';\nimport { registerSidebarAction } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { favoriteNode } from './favoriteAction.ts';\n/**\n * Register the favorite/unfavorite action in the sidebar\n */\nexport function registerSidebarFavoriteAction() {\n registerSidebarAction({\n id: 'files-favorite',\n order: 0,\n enabled({ node }) {\n return node.isDavResource && node.root.startsWith('/files/');\n },\n displayName({ node }) {\n if (node.attributes.favorite) {\n return t('files', 'Unfavorite');\n }\n return t('files', 'Favorite');\n },\n iconSvgInline({ node }) {\n if (node.attributes.favorite) {\n return starSvg;\n }\n return starOutlineSvg;\n },\n onClick({ node, view }) {\n favoriteNode(node, view, !node.attributes.favorite);\n },\n });\n}\n","import { registerDavProperty } from '@nextcloud/files/dav';\n/**\n *\n */\nexport function initLivePhotos() {\n registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param node - The node\n */\nexport function isLivePhoto(node) {\n return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import { getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { join } from 'path';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\nimport { client } from './WebdavClient.ts';\nimport { searchNodes } from './WebDavSearch.ts';\n/**\n * Get contents implementation for the files view.\n * This also allows to fetch local search results when the user is currently filtering.\n *\n * @param path - The path to query\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function getContents(path = '/', options) {\n const searchStore = useSearchStore(getPinia());\n if (searchStore.query.length < 3) {\n return await defaultGetContents(path, options);\n }\n return await getLocalSearch(path, searchStore.query, options?.signal);\n}\n/**\n * Generic `getContents` implementation for the users files.\n *\n * @param path - The path to get the contents\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function defaultGetContents(path, options) {\n path = join(getRootPath(), path);\n const propfindPayload = getDefaultPropfind();\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: options?.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root?.filename !== path && `${root?.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n return {\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n };\n}\n/**\n * Get the local search results for the current folder.\n *\n * @param path - The path\n * @param query - The current search query\n * @param signal - The aboort signal\n */\nasync function getLocalSearch(path, query, signal) {\n const filesStore = useFilesStore(getPinia());\n let folder = filesStore.getDirectoryByPath('files', path);\n if (!folder) {\n const rootPath = join(getRootPath(), path);\n const stat = await client.stat(rootPath, { details: true });\n folder = resultToNode(stat.data);\n }\n const contents = await searchNodes(query, { dir: path, signal });\n return {\n folder,\n contents,\n };\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { defaultRootPath, getDavNameSpaces, getDavProperties, resultToNode } from '@nextcloud/files/dav';\nimport { getBaseUrl } from '@nextcloud/router';\nimport escapeHTML from 'escape-html';\nimport logger from '../logger.ts';\nimport { client } from './WebdavClient.ts';\n/**\n * Search for nodes matching the given query.\n *\n * @param query - Search query\n * @param options - Options\n * @param options.dir - The base directory to scope the search to\n * @param options.signal - Abort signal for the request\n */\nexport async function searchNodes(query, { dir, signal }) {\n const user = getCurrentUser();\n if (!user) {\n // the search plugin only works for user roots\n return [];\n }\n query = query.trim();\n if (query.length < 3) {\n // the search plugin only works with queries of at least 3 characters\n return [];\n }\n if (dir && !dir.startsWith('/')) {\n dir = `/${dir}`;\n }\n logger.debug('Searching for nodes', { query, dir });\n const { data } = await client.search('/', {\n details: true,\n signal,\n data: `\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${getDavProperties()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${user.uid}${dir ? escapeHTML(dir) : ''}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${query.replace('%', '')}%\n\t\t\t \n\t\t \n\t\t \n\t\n`,\n });\n // check if the request was aborted\n if (signal?.aborted) {\n return [];\n }\n // otherwise return the result mapped to Nextcloud nodes\n return data.results.map((result) => resultToNode(result, defaultRootPath, getBaseUrl()));\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n id: 0,\n source: getRemoteURL() + getRootPath(),\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n /**\n * The currently active action\n */\n const activeAction = shallowRef();\n /**\n * The current active node within the folder\n */\n const activeNode = ref();\n /**\n * The current active view\n */\n const activeView = shallowRef();\n /**\n * The currently active folder\n */\n const activeFolder = ref(dummyFolder);\n // Set the active node on the router params\n watch(activeNode, () => {\n if (typeof activeNode.value?.fileid !== 'number' || activeNode.value.fileid === activeFolder.value?.fileid) {\n return;\n }\n logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.fileid });\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: String(activeNode.value.fileid) }, { ...window.OCP.Files.Router.query }, true);\n });\n initialize();\n /**\n * Unset the active node if deleted\n *\n * @param node - The node thats deleted\n */\n function onDeletedNode(node) {\n if (activeNode.value && activeNode.value.source === node.source) {\n activeNode.value = undefined;\n }\n }\n /**\n * Callback to update the current active view\n *\n * @param view - The new active view\n */\n function onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n activeView.value = view ?? undefined;\n activeNode.value = undefined;\n }\n /**\n * Initalize the store - connect all event listeners.\n *\n */\n function initialize() {\n const navigation = getNavigation();\n onChangedView(navigation.active);\n // Make sure we only register the listeners once\n subscribe('files:node:deleted', onDeletedNode);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n onChangedView(event.detail);\n });\n }\n return {\n activeAction,\n activeFolder,\n activeNode,\n activeView,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue, { ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useActiveStore } from './active.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n * Store for files and folders in the files app.\n */\nexport const useFilesStore = defineStore('files', () => {\n const files = ref({});\n const roots = ref({});\n // initialize the store once its used first time\n initalizeStore();\n /**\n * Get a file or folder by its source\n *\n * @param source - The file source\n */\n function getNode(source) {\n return files.value[source];\n }\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n *\n * @param sources - The file sources\n */\n function getNodes(sources) {\n return sources\n .map((source) => files.value[source])\n .filter(Boolean);\n }\n /**\n * Get files or folders by their ID\n * Multiple nodes can have the same ID but different sources\n * (e.g. in a shared context)\n *\n * @param id - The file ID\n */\n function getNodesById(id) {\n return Object.values(files.value)\n .filter((node) => node.id === id);\n }\n /**\n * Get the root folder of a service\n *\n * @param service - The service (files view)\n * @return The root folder if set\n */\n function getRoot(service) {\n return roots.value[service];\n }\n /**\n * Get cached directory matching a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return The folder if found\n */\n function getDirectoryByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = getNode(source);\n }\n }\n return folder;\n }\n /**\n * Get cached child nodes within a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return Array of cached nodes within the path\n */\n function getNodesByPath(service, path) {\n const folder = getDirectoryByPath(service, path);\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => getNode(source))\n .filter(Boolean);\n }\n /**\n * Update or set nodes in the store\n *\n * @param nodes - The nodes to update or set\n */\n function updateNodes(nodes) {\n // Update the store all at once\n const newNodes = nodes.reduce((acc, node) => {\n if (files.value[node.source]?.id && !node.id) {\n logger.error('Trying to update/set a node without id', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n files.value = { ...files.value, ...newNodes };\n // handle updating the active node\n const activeStore = useActiveStore();\n if (activeStore.activeNode && activeStore.activeNode.source in newNodes) {\n activeStore.activeNode = files.value[activeStore.activeNode.source];\n }\n }\n /**\n * Delete nodes from the store\n *\n * @param nodes - The nodes to delete\n */\n function deleteNodes(nodes) {\n const entries = Object.entries(files.value)\n .filter(([, node]) => !nodes.some((n) => n.source === node.source));\n files.value = Object.fromEntries(entries);\n }\n /**\n * Set the root folder for a service\n *\n * @param options - The options for setting the root\n * @param options.service - The service (files view)\n * @param options.root - The root folder\n */\n function setRoot({ service, root }) {\n roots.value = { ...roots.value, [service]: root };\n }\n return {\n files,\n roots,\n deleteNodes,\n getDirectoryByPath,\n getNode,\n getNodes,\n getNodesById,\n getNodesByPath,\n getRoot,\n setRoot,\n updateNodes,\n };\n // Internal helper functions\n /**\n * Initialize the store by subscribing to events\n */\n function initalizeStore() {\n subscribe('files:node:created', onCreatedNode);\n subscribe('files:node:deleted', onDeletedNode);\n subscribe('files:node:updated', onUpdatedNode);\n subscribe('files:node:moved', onMovedNode);\n // legacy sidebar\n subscribe('files:favorites:added', onAddFavorite);\n subscribe('files:favorites:removed', onRemoveFavorite);\n }\n /**\n * Called when a node is deleted, removes the node from the store\n *\n * @param node - The deleted node\n */\n function onDeletedNode(node) {\n deleteNodes([node]);\n }\n /**\n * Handler for when a node is created\n *\n * @param node - The created node\n */\n function onCreatedNode(node) {\n updateNodes([node]);\n }\n /**\n * Handler for when a node is moved, updates the path of the node in the store\n *\n * @param context - The context of the moved node\n * @param context.node - The moved node\n * @param context.oldSource - The old source of the node before it was moved\n */\n function onMovedNode({ node, oldSource }) {\n // Update the path of the node\n delete files.value[oldSource];\n updateNodes([node]);\n }\n /**\n * Handler for when a node is updated, updates the node in the store\n *\n * @param node - The updated node\n */\n async function onUpdatedNode(node) {\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = node.id\n ? getNodesById(node.id)\n : getNodes([node.source]);\n if (nodes.length > 1) {\n await Promise.all(nodes.map((node) => fetchNode(node.path))).then(updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.id, source: node.source });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (nodes.length === 1 && node.source === nodes[0].source) {\n updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n const newNode = await fetchNode(node.path);\n updateNodes([newNode]);\n }\n /**\n * Handlers for legacy sidebar (no real nodes support)\n *\n * @param node - The node that was added to favorites\n */\n function onAddFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 1);\n }\n }\n /**\n * Handler for when a node is removed from favorites\n *\n * @param node - The removed favorite\n */\n function onRemoveFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 0);\n }\n }\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({\n source: oldSource,\n owner: node.owner,\n mime: node.mime,\n root: node.root,\n });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport debounce from 'debounce';\nimport { defineStore } from 'pinia';\nimport { ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { VIEW_ID } from '../views/search.ts';\nexport const useSearchStore = defineStore('search', () => {\n /**\n * The current search query\n */\n const query = ref('');\n /**\n * Scope of the search.\n * Scopes:\n * - filter: only filter current file list\n * - globally: search everywhere\n */\n const scope = ref('filter');\n // reset the base if query is cleared\n watch(scope, updateSearch);\n watch(query, (old, current) => {\n // skip if only whitespaces changed\n if (old.trim() === current.trim()) {\n return;\n }\n updateSearch();\n });\n // initialize the search store\n initialize();\n /**\n * Debounced update of the current route\n *\n */\n const updateRouter = debounce((isSearch) => {\n const router = window.OCP.Files.Router;\n router.goToRoute(undefined, {\n view: VIEW_ID,\n }, {\n query: query.value,\n }, isSearch);\n });\n /**\n * Handle updating the filter if needed.\n * Also update the search view by updating the current route if needed.\n *\n */\n function updateSearch() {\n // emit the search event to update the filter\n emit('files:search:updated', { query: query.value, scope: scope.value });\n const router = window.OCP.Files.Router;\n // if we are on the search view and the query was unset or scope was set to 'filter' we need to move back to the files view\n if (router.params.view === VIEW_ID && (query.value === '' || scope.value === 'filter')) {\n scope.value = 'filter';\n return router.goToRoute(undefined, {\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n });\n }\n // for the filter scope we do not need to adjust the current route anymore\n // also if the query is empty we do not need to do anything\n if (scope.value === 'filter' || !query.value) {\n return;\n }\n const isSearch = router.params.view === VIEW_ID;\n logger.debug('Update route for updated search query', { query: query.value, isSearch });\n updateRouter(isSearch);\n }\n /**\n * Event handler that resets the store if the file list view was changed.\n *\n * @param view - The new view that is active\n */\n function onViewChanged(view) {\n if (view.id !== VIEW_ID) {\n query.value = '';\n scope.value = 'filter';\n }\n }\n /**\n * Initialize the store from the router if needed\n */\n function initialize() {\n subscribe('files:navigation:changed', onViewChanged);\n const router = window.OCP.Files.Router;\n // if we initially load the search view (e.g. hard page refresh)\n // then we need to initialize the store from the router\n if (router.params.view === VIEW_ID) {\n query.value = [router.query.query].flat()[0] ?? '';\n if (query.value) {\n scope.value = 'globally';\n logger.debug('Directly navigated to search view', { query: query.value });\n }\n else {\n // we do not have any query so we need to move to the files list\n logger.info('Directly navigated to search view without any query, redirect to files view.');\n router.goToRoute(undefined, {\n ...router.params,\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n }, true);\n }\n }\n }\n return {\n query,\n scope,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check whether the personal files view can be shown\n */\nexport function hasPersonalFilesView() {\n const storageStats = loadState('files', 'storageStats', { quota: -1 });\n // Don't show this view if the user has no storage quota\n return storageStats.quota !== 0;\n}\n/**\n * Get the default files view\n */\nexport function defaultView() {\n const { default_view: defaultView } = loadState('files', 'config', { default_view: 'files' });\n // the default view - only use the personal one if it is enabled\n if (defaultView !== 'personal' || hasPersonalFilesView()) {\n return defaultView;\n }\n return 'files';\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderSvg from '@mdi/svg/svg/folder-outline.svg?raw';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { getContents } from '../services/Files.ts';\nimport { useActiveStore } from '../store/active.ts';\nimport { defaultView } from '../utils/filesViews.ts';\nexport const VIEW_ID = 'files';\n/**\n * Register the files view to the navigation\n */\nexport function registerFilesView() {\n // we cache the query to allow more performant search (see below in event listener)\n let oldQuery = '';\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: VIEW_ID,\n name: t('files', 'All files'),\n caption: t('files', 'List of your files and folders.'),\n icon: FolderSvg,\n // if this is the default view we set it at the top of the list - otherwise below it\n order: defaultView() === VIEW_ID ? 0 : 5,\n getContents,\n }));\n // when the search is updated\n // and we are in the files view\n // and there is already a folder fetched\n // then we \"update\" it to trigger a new `getContents` call to search for the query while the filelist is filtered\n subscribe('files:search:updated', ({ scope, query }) => {\n if (scope === 'globally') {\n return;\n }\n if (Navigation.active?.id !== VIEW_ID) {\n return;\n }\n // If neither the old query nor the new query is longer than the search minimum\n // then we do not need to trigger a new PROPFIND / SEARCH\n // so we skip unneccessary requests here\n if (oldQuery.length < 3 && query.length < 3) {\n return;\n }\n const store = useActiveStore();\n if (!store.activeFolder) {\n return;\n }\n oldQuery = query;\n emit('files:node:updated', store.activeFolder);\n });\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { Folder, Permission } from '@nextcloud/files';\nimport { defaultRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport logger from '../logger.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\nimport { searchNodes } from './WebDavSearch.ts';\n/**\n * Get the contents for a search view\n *\n * @param path - (not used)\n * @param options - Options including abort signal\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function getContents(path, options) {\n const searchStore = useSearchStore(getPinia());\n try {\n const contents = await searchNodes(searchStore.query, { signal: options.signal });\n return {\n contents,\n folder: new Folder({\n id: 0,\n source: `${defaultRemoteURL}${getRootPath()}}#search`,\n owner: getCurrentUser().uid,\n permissions: Permission.READ,\n root: getRootPath(),\n }),\n };\n }\n catch (error) {\n if (options.signal.aborted) {\n logger.info('Fetching search results aborted');\n throw new DOMException('Aborted', 'AbortError');\n }\n logger.error('Failed to fetch search results', { error });\n throw error;\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MagnifySvg from '@mdi/svg/svg/magnify.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getContents } from '../services/Search.ts';\nimport { VIEW_ID as FILES_VIEW_ID } from './files.ts';\nexport const VIEW_ID = 'search';\n/**\n * Register the search-in-files view\n */\nexport function registerSearchView() {\n let instance;\n let view;\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: VIEW_ID,\n name: t('files', 'Search'),\n caption: t('files', 'Search results within your files.'),\n async emptyView(el) {\n if (!view) {\n view = (await import('./SearchEmptyView.vue')).default;\n }\n else {\n instance.$destroy();\n }\n instance = new Vue(view);\n instance.$mount(el);\n },\n icon: MagnifySvg,\n order: 10,\n parent: FILES_VIEW_ID,\n // it should be shown expanded\n expanded: true,\n // this view is hidden by default and only shown when active\n hidden: true,\n getContents,\n }));\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../../node_modules/css-loader/dist/runtime/api.js\";\nvar ___CSS_LOADER_EXPORT___ = ___CSS_LOADER_API_IMPORT___(___CSS_LOADER_API_SOURCEMAP_IMPORT___);\n// Module\n___CSS_LOADER_EXPORT___.push([module.id, `.files-list-filter-time__clear-button[data-v-2841ff92] .action-button__text{color:var(--color-error-text)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilterModified.vue\"],\"names\":[],\"mappings\":\"AAEC,4EACC,6BAAA\",\"sourcesContent\":[\"\\n.files-list-filter-time {\\n\\t&__clear-button :deep(.action-button__text) {\\n\\t\\tcolor: var(--color-error-text);\\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, `\n.new-node-dialog__form[data-v-77bf0406] {\n\t/* Ensure the dialog does not jump when there is a validity error */\n\tmin-height: calc(2 * var(--default-clickable-area));\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NewNodeDialog.vue\"],\"names\":[],\"mappings\":\";AAwKA;CACA,mEAAA;CACA,mDAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\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._fileListFilterType_Aeab3 {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--default-grid-baseline);\n\twidth: 100%;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilterType.vue\"],\"names\":[],\"mappings\":\";AA+JA;CACA,aAAA;CACA,sBAAA;CACA,iCAAA;CACA,WAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilterType\": `_fileListFilterType_Aeab3`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\")) {\n permissions |= Permission.WRITE;\n }\n if (permString.includes(\"CK\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"NV\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n}\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n if (scopedGlobals.davProperties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n scopedGlobals.davProperties.push(prop);\n scopedGlobals.davNamespaces = namespaces;\n return true;\n}\nfunction getDavProperties() {\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n}\nasync function getFavoriteNodes(options = {}) {\n const client = options.client ?? getClient();\n const path = options.path ?? \"/\";\n const davRoot = options.davRoot ?? defaultRootPath;\n const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n signal: options.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n defaultDavNamespaces,\n defaultDavProperties,\n defaultRemoteURL,\n defaultRootPath,\n getClient,\n getDavNameSpaces,\n getDavProperties,\n getDefaultPropfind,\n getFavoriteNodes,\n getFavoritesReport,\n getRecentSearch,\n getRemoteURL,\n getRootPath,\n parsePermissions,\n registerDavProperty,\n resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","import '../assets/index-BGmULkk-.css';\nimport { getSharingToken, isPublicShare } from \"@nextcloud/sharing/public\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport { formatFileSize, Folder, davRemoteURL, davRootPath, Permission, FileType, davGetClient, validateFilename, InvalidFilenameError, getUniqueName, getNewFileMenuEntries, NewMenuEntryCategory } from \"@nextcloud/files\";\nimport { basename, encodePath } from \"@nextcloud/paths\";\nimport { normalize } from \"path\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport axios, { isCancel } from \"@nextcloud/axios\";\nimport PCancelable from \"p-cancelable\";\nimport PQueue from \"p-queue\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getBaseUrl, generateRemoteUrl } from \"@nextcloud/router\";\nimport axiosRetry, { exponentialDelay, isNetworkOrIdempotentRequestError } from \"axios-retry\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport Vue, { defineAsyncComponent, defineComponent } from \"vue\";\nimport { showInfo, showWarning } from \"@nextcloud/dialogs\";\nimport { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { useHotKey } from \"@nextcloud/vue/dist/Composables/useHotKey.js\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport NcActionCaption from \"@nextcloud/vue/dist/Components/NcActionCaption.js\";\nimport NcActionSeparator from \"@nextcloud/vue/dist/Components/NcActionSeparator.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/dist/Components/NcIconSvgWrapper.js\";\nimport NcProgressBar from \"@nextcloud/vue/dist/Components/NcProgressBar.js\";\nconst gtBuilder = getGettextBuilder().detectLocale();\n[{ \"locale\": \"af\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"af\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: af\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ar\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Ali , 2025\", \"Language-Team\": \"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ar\", \"Plural-Forms\": \"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nabu.s3ud, 2024\\nAli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Ali , 2025\\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ar\\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" هو اسم ممنوع لملف أو مجلد.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" هو نوع ممنوع أن يكون لملف.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" هو غير مسموح به في اسم ملف أو مجلد.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ملف متعارض\", \"{count} ملف متعارض\", \"{count} ملفان متعارضان\", \"{count} ملف متعارض\", \"{count} ملفات متعارضة\", \"{count} ملفات متعارضة\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ملف متعارض في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفان متعارضان في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفات متعارضة في {dirname}\", \"{count} ملفات متعارضة في {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} متبقية\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"بضع ثوانٍ متبقية\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"تجميع\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"إلغاء\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"إلغِ العملية بالكامل\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"إلغاء عمليات رفع الملفات\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"إستمر\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"إنشاء جديد\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تقدير الوقت المتبقي\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"الإصدار الحالي\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"تعذّرت إعادة تجميع الكتل معاً \"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"تعذّر رفع الملف\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['غير مسموح ان ينتهي اسم الملف بـ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"اسم ملف غير صحيح\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"تاريخ آخر تعديل غير معروف\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"اسم ملف جديد\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخة جديدة\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مُجمَّد\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"معاينة الصورة\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغيير التسمية\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"حدِّد كل صناديق الخيارات\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"حدِّد كل الملفات الموجودة\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"حدِّد كل الملفات الجديدة\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"تخطِّي\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"حجم غير معلوم\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"رفع الملفات\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"رفع ملفات\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"رفع مجلدات\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"الرفع من جهاز \"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"تمّ إلغاء عملية رفع الملفات\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"تمّ تجاوز الرفع\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['رفع \"{folder}\" تمّ تجاوزه'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"تقدُّم الرفع \"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"أيُّ الملفات ترغب في الإبقاء عليها؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار.\"] } } } } }, { \"locale\": \"ast\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"enolp , 2023\", \"Language-Team\": \"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ast\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nenolp , 2023\\n\" }, \"msgstr\": [\"Last-Translator: enolp , 2023\\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ast\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ficheru en coflictu\", \"{count} ficheros en coflictu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ficheru en coflictu en {dirname}\", \"{count} ficheros en coflictu en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Tiempu que queda: {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden unos segundos\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Encaboxar les xubes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Siguir\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando'l tiempu que falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión esistente\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"La data de la última modificación ye desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en posa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar la imaxe\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar toles caxelles\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleicionar tolos ficheros esistentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleicionar tolos ficheros nuevos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar esti ficheru\", \"Saltar {count} ficheros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamañu desconocíu\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Encaboxóse la xuba\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Xubir ficheros\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Xuba en cursu\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué ficheros quies caltener?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Tienes de seleicionar polo menos una versión de cada ficheru pa siguir.\"] } } } } }, { \"locale\": \"az\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rashad Aliyev , 2023\", \"Language-Team\": \"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"az\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRashad Aliyev , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rashad Aliyev , 2023\\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: az\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniyə qalıb\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} qalıb\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir neçə saniyə qalıb\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Əlavə et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yükləməni imtina et\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Təxmini qalan vaxt\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauzadadır\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Faylları yüklə\"] } } } } }, { \"locale\": \"be\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"be\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: be\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bg\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bg_BG\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bg_BG\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bn_BD\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bn_BD\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bn_BD\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"br\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"br\", \"Plural-Forms\": \"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: br\\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bs\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bs\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ca\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Leandro Navarro , 2025\", \"Language-Team\": \"Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ca\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nv v , 2025\\nLeandro Navarro , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Leandro Navarro , 2025\\nLanguage-Team: Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ca\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" és un nom de fitxer o carpeta prohibit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" és un tipus de fitxer prohibit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no és permès dins del nom de fitxer o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fitxer en conflicte\", \"{count} fitxer en conflicte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicte de fitxers a {dirname}\", \"{count} conflictes de fitxers a {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segon restant\", \"{seconds} segons restants\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Queden {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden uns segons\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblatge\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar l'operació sencera\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel·la les pujades\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nou\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"s’està estimant el temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"No s'han pogut acoblar els trossos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"No s'ha pogut pujar el fitxer\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Els noms de fitxer no han d'acabar en \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fitxer no vàlid\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de la darrera modificació desconeguda\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nou nom de fitxer\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Imatge de vista prèvia\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Canviar el nom\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccioneu totes les caselles de selecció\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccioneu tots els fitxers existents\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccioneu tots el fitxers nous\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omet {count} fitxer\", \"Omet {count} fitxers\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Mida desconeguda\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Pujar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Puja els fitxers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Pujar les carpetes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Pujada des del dispositiu\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La pujada s'ha cancel·lat\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"S'ha omès la pujada\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [`S'ha omès la pujada de \"{folder}\"`] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Procés de pujada\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, també es sobreescriuran els fitxers en conflicte dins d'ella.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers vols conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Podeu canviar el nom del fitxer, saltar aquest fitxer o cancel·lar tota l'operació.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar almenys una versió de cada fitxer per continuar.\"] } } } } }, { \"locale\": \"cs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Pavel Borecki , 2025\", \"Language-Team\": \"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cs_CZ\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMichal Šmahel , 2024\\nMartin Hankovec, 2024\\nAppukonrad , 2024\\nPavel Borecki , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Pavel Borecki , 2025\\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs_CZ\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít jako název souboru či složky.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ není povoleného typu souboru.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít v rámci názvu souboru či složky.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} kolize souborů\", \"{count} kolize souborů\", \"{count} kolizí souborů\", \"{count} kolize souborů\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} kolize souboru v {dirname}\", \"{count} kolize souboru v {dirname}\", \"{count} kolizí souborů v {dirname}\", \"{count} kolize souboru v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"zbývá {seconds}\", \"zbývají {seconds}\", \"zbývá {seconds}\", \"zbývají {seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"zbývá {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zbývá několik sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sestavování\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušit\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušit nahrávání\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvořit nový\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhaduje se zbývající čas\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Shluky se nepodařilo dát dohromady\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Soubor se nepodařilo nahrát\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Názvy souborů nemohou končit na „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný název souboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Neznámé datum poslední úpravy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový název souboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastaveno\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhled obrázku\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Přejmenovat\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označit všechny zaškrtávací kolonky\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat veškeré stávající soubory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat veškeré nové soubory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Přeskočit\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Přeskočit {count} soubor\", \"Přeskočit {count} soubory\", \"Přeskočit {count} souborů\", \"Přeskočit {count} soubory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznámá velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrát\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrát soubory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrát složky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrát ze zařízení\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávání bylo zrušeno\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrání bylo přeskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Nahrání „{folder}“ bylo přeskočeno\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postup v nahrávání\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory si přejete ponechat?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] } } } } }, { \"locale\": \"cy_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cy_GB\", \"Plural-Forms\": \"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cy_GB\\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"da\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Finn Sommer , 2025\", \"Language-Team\": \"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"da\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRasmus Rosendahl-Kaa, 2024\\nMartin Bonde , 2025\\nFinn Sommer , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Finn Sommer , 2025\\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: da\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tilladt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fil konflikt\", \"{count} filer i konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fil konflikt i {dirname}\", \"{count} filer i konflikt i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{sekunder} sekunder tilbage\", \"{sekunder} sekunder tilbage\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tilbage\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"et par sekunder tilbage\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuller\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuller hele handlingen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuller uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opret ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimering af resterende tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Mislykkedes at samle stumperne sammen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunne ikke uploade filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavne må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldigt filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Sidste modifikationsdato ukendt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nyt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvisning af billede\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøb\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vælg alle felter\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Spring over\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Spring {count} fil over\", \"Spring {count} fil over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukendt størrelse\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload fra enhed\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload er blevet annulleret\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload er blevet sprunget over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload af \"{folder}\" er blevet sprunget over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload fremskridt\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer ønsker du at beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] } } } } }, { \"locale\": \"de\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (https://app.transifex.com/nextcloud/teams/64236/de/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndy Scherzinger , 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchtest du behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"de_DE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de_DE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de_DE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchten Sie behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"el\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Γιάννος, 2025\", \"Language-Team\": \"Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"el\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nEfstathios Iosifidis , 2025\\nΓιάννος, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Γιάννος, 2025\\nLanguage-Team: Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: el\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" είναι απαγορευμένο όνομα αρχείου ή φακέλου.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Το \"{segment}\" είναι απαγορευμένος τύπος αρχείου.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Το \"{segment}\" δεν επιτρέπεται μέσα στο όνομα ενός αρχείου ή φακέλου.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} αρχείο σε διένεξη\", \"{count} αρχεία σε διένεξη\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} αρχείο σε διένεξη στον φάκελο {dirname}\", \"{count} αρχεία σε διένεξη στον φάκελο {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Απομένει {seconds} δευτερόλεπτο\", \"Απομένουν {seconds} δευτερόλεπτα\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"απομένουν {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"απομένουν λίγα δευτερόλεπτα\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"συναρμολόγηση\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της λειτουργίας\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ακύρωση μεταφορτώσεων\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Δημιουργία νέου\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"εκτίμηση του χρόνου που απομένει\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Υπάρχουσα έκδοση\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Αποτυχία συναρμολόγησης των κομματιών\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Αποτυχία μεταφόρτωσης του αρχείου\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Τα ονόματα αρχείων δεν πρέπει να τελειώνουν με \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Αν επιλέξετε και τις δύο εκδόσεις, το εισερχόμενο αρχείο θα έχει έναν αριθμό προσαρτημένο στο όνομά του.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Μη έγκυρο όνομα αρχείου\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Νέο όνομα αρχείου\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"σε παύση\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Προεπισκόπηση εικόνας\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Μετονομασία\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλογή όλων των πλαισίων ελέγχου\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπαρχόντων αρχείων\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Παράλειψη\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Παράλειψη {count} αρχείου\", \"Παράλειψη {count} αρχείων\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παραλείψτε αυτό το αρχείο\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Άγνωστο μέγεθος\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Μεταφόρτωση\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Μεταφόρτωση αρχείων\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Μεταφόρτωση φακέλων\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Μεταφόρτωση από συσκευή\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Η μεταφόρτωση ακυρώθηκε\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Η μεταφόρτωση παραλείφθηκε\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Η μεταφόρτωση του \"{folder}\" παραλείφθηκε'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Πρόοδος μεταφόρτωσης\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, όλα τα αρχεία σε διένεξη μέσα σε αυτόν θα αντικατασταθούν.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, το περιεχόμενό του γράφεται στον υπάρχοντα φάκελο και εκτελείται αναδρομική επίλυση διενέξεων.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Μπορείτε είτε να μετονομάσετε το αρχείο, να παραλείψετε αυτό το αρχείο ή να ακυρώσετε όλη τη λειτουργία.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση κάθε αρχείου για να συνεχίσετε.\"] } } } } }, { \"locale\": \"en_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andi Chandler , 2025\", \"Language-Team\": \"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"en_GB\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndi Chandler , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Andi Chandler , 2025\\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: en_GB\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is a forbidden file or folder name.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is a forbidden file type.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is not allowed inside a file or folder name.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} files conflict\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} file conflicts in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconds left\", \"{seconds} seconds left\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} left\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"a few seconds left\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assembling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Create new\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimating time left\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Failed to assemble the chunks together\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Failed to upload the file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filenames must not end with \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Invalid filename\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"New filename\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"paused\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Preview image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rename\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Skip\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip {count} file\", \"Skip {count} files\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unknown size\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload files\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload folders\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload from device\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload has been cancelled\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload has been skipped\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload of \"{folder}\" has been skipped'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload progress\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"You can either rename the file, skip this file or cancel the whole operation.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] } } } } }, { \"locale\": \"eo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Julio C. Ortega, 2025\", \"Language-Team\": \"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFranciscoFJ , 2024\\nJulio C. Ortega, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Julio C. Ortega, 2025\\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" es un nombre de archivo o carpeta no permitido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" es un tipo de archivo no permitido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no está permitido dentro del nombre de un archivo o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"queda {seconds} segundo\", \"quedan {seconds} segundos\", \"quedan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Fallo al ensamblar todas las partes juntas\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fallo al cargar el archivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Los nombres de archivo no deben terminar en \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuevo nombre de archivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Cargar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"La carga fue omitida\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['La carga de \"{folder}\" ha sido omitida'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Puede o bien, renombrar el archivo, omitirlo, o, cancelar toda la operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_419\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ALEJANDRO CASTRO, 2022\", \"Language-Team\": \"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_419\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nALEJANDRO CASTRO, 2022\\n\" }, \"msgstr\": [\"Last-Translator: ALEJANDRO CASTRO, 2022\\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_419\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"agregar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] } } } } }, { \"locale\": \"es_AR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Matías Campo Hoet , 2024\", \"Language-Team\": \"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_AR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMatías Campo Hoet , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Matías Campo Hoet , 2024\\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_AR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa de imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Cargar archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Cargar carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Cargar desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Carga cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la carga\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_CL\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CL\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CL\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_DO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_DO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_DO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_EC\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_EC\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_EC\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_GT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_GT\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_GT\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_HN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_HN\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_HN\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_MX\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jehu Marcos Herrera Puentes, 2024\", \"Language-Team\": \"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_MX\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJehu Marcos Herrera Puentes, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Jehu Marcos Herrera Puentes, 2024\\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_MX\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿Cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} archivos en conflicto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} archivo en conflicto en {dirname}\", \"{count} archivos en conflicto en {dirname}\", \"{count} archivo en conflicto en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Cuáles archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_NI\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_NI\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_NI\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PA\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PA\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PA\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PE\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PE\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_SV\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_SV\", \"Plural-Forms\": \"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_SV\\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_UY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_UY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_UY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"et_EE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Priit Jõerüüt , 2025\", \"Language-Team\": \"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"et_EE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPriit Jõerüüt , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Priit Jõerüüt , 2025\\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: et_EE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ on keelatud faili- või kausta nimi.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ on keelatud failitüüp.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ pole faili- või kausta nimes lubatud.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fail on vastuolus\", \"{count} faili on vastuolus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail on vastuolus „{dirname}“ kaustas\", \"{count} faili on vastuolus „{dirname}“ kaustas\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"jäänud {seconds} sekund\", \"jäänud {seconds} sekundit\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"aega jäänud {time} \"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"jäänud mõni sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"koostamisel\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Katkesta üleslaadimine\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Loo uus\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hinnanguline järelejäänud aeg\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Tükkide koostamine üheks tervikuks ei õnnestunud\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Faili üleslaadimine ei õnnestunud\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Failinime lõpus ei tohi olla „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui sa valid mõlemad versioonid, lisatakse kopeeritud faili nimele number.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Vigane failinimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uus failinimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausil\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vaata pildi eelvaadet\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Muuda nime\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Jäta vahele\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Jäta vahele {count} fail\", \"Jäta vahele {count} faili\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta vahele see fail\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tundmatu suurus\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Laadi üles\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Laadi failid üles\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Laadi kaustad üles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Laadi üles seadmest\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Üleslaadimine on katkestatud\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Üleslaadimine on vahele jäetud\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}“ kausta üleslaadimine on vahele jäetud\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Üleslaadimise edenemine\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis seal asuvad vastuoluliste nimedega failid kirjutatakse samuti üle.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja käivitatakse rekursiivne vastuolude haldus.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Milliseid faile soovid säilitada?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sa võid kas faili nime muuta, ta vahele jätta või kogu tegevuse katkestada.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamiseks pead valima vähemalt ühe versiooni igast failist.\"] } } } } }, { \"locale\": \"eu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Unai Tolosa Pontesta , 2022\", \"Language-Team\": \"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eu\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nUnai Tolosa Pontesta , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Unai Tolosa Pontesta , 2022\\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eu\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo geratzen dira\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} geratzen da\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"segundo batzuk geratzen dira\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Gehitu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ezeztatu igoerak\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"kalkulatutako geratzen den denbora\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"geldituta\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Igo fitxategiak\"] } } } } }, { \"locale\": \"fa\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Alireza Rashidi, 2025\", \"Language-Team\": \"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fa\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nreza reza , 2024\\nAlireza Rashidi, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Alireza Rashidi, 2025\\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fa\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"{segment} یک نام فایل یا پوشه ممنوعه است.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"{segment} یک نوع فایل ممنوعه است.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"{segment} داخل نام فایل یا پوشه مجاز نیست.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} تداخل فایل\", \"{count} تداخل فایل‌ها\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} پرونده با {dirname} ناسازگاری داشت\", \"{count} پرونده با {dirname} ناسازگاری داشت\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} ثانیه مانده\", \"{seconds} ثانیه مانده\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} باقی مانده\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"چند ثانیه مانده\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"سرهم کردن\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"رد کردن\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"رد کردن کل عملیات\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"رد کردن بارگذاری\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ادامه\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ساخت جدید\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تخمین زمان باقی مانده\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"نگارش موجود\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"نتوانست تکه‌های را به سرهم کند\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"نتوانست پرونده را بارگذاری کند\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"نام پرونده نباید با {segment} پایان یابد.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"اگر هر دو نسخه را انتخاب کنید، یک عدد به نام پرونده ورودی اضافه خواهد شد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"نام پرونده نامعتبر\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"آخرین تاریخ تغییر نامشخص\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"نام فایل جدید\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخه جدید\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مکث کردن\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"پیش نمایش تصویر\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغییر نام\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"انتخاب همه چک‌باکس‌ها\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"انتخاب همه فایل‌های موجود\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"انتخاب همه فایل‌های جدید\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"رد شدن\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"رد شدن از \", \"رد شدن از {count} فایل\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"اندازه نامشخص\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"بارگذاری\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"بارگذاری پرونده‌ها\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"بارگذاری پوشه‌ها\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"بارگذاری از دستگاه\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"بارگذاری رد شده است\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"بارگذاری نادیده گرفته شده است\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"بارگذاری {folder} نادیده گرفته شده است\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"روند بارگذاری\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"هنگامی که یک پوشه ورودی انتخاب می‌شود، هر فایل متناقضی در آن نیز بازنویسی می‌شود.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"هنگامی که یک پوشه دریافتی انتخاب می شود ، محتوا در پوشه موجود نوشته می شود و حل ناسازگاری بازگشتی انجام می شود.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"کدام پرونده‌ها را می‌خواهید نگه دارید؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"می‌توانید نام پرونده را تغییر دهید، از این پرونده رد شوید یا کل عملیات را رد کنید.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"برای ادامه باید دست‌کم یک نگارش از هر پرونده را انتخاب کنید.\"] } } } } }, { \"locale\": \"fi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jiri Grönroos , 2025\", \"Language-Team\": \"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fi_FI\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nthingumy, 2024\\nteemue, 2024\\nJiri Grönroos , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Jiri Grönroos , 2025\\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fi_FI\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" on kielletty tiedoston tai hakemiston nimi.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" on kielletty tiedostotyyppi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ei ole sallittu tiedoston tai hakemiston nimessä.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tiedoston ristiriita\", \"{count} tiedoston ristiriita\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tiedoston ristiriita kansiossa {dirname}\", \"{count} tiedoston ristiriita kansiossa {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunti jäljellä\", \"{seconds} sekuntia jäljellä\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} jäljellä\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"muutama sekunti jäljellä\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"kootaan\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Peruuta koko toimenpide\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Peruuta lähetykset\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jatka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Luo uusi\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"arvioidaan jäljellä olevaa aikaa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemassa oleva versio\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Palojen kokoaminen yhteen epäonnistui\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tiedoston lähetys epäonnistui\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tiedoston nimi ei saa päättyä \"{segment}\"'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Kielletty/väärä tiedoston nimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimeisin muokkauspäivä on tuntematon\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uusi tiedostonimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uusi versio\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"keskeytetty\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Esikatsele kuva\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Nimeä uudelleen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Valitse kaikki valintaruudut\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Valitse kaikki olemassa olevat tiedostot\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Valitse kaikki uudet tiedostot\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ohita\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ohita tämä tiedosto\", \"Ohita {count} tiedostoa\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tuntematon koko\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Lähetä\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lähetä tiedostoja\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Lähetä kansioita\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Lähetä laitteelta\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Lähetys on peruttu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Lähetys on ohitettu\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Hakemiston \"{folder}\" lähetys on ohitettu'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Lähetyksen edistyminen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mitkä tiedostot haluat säilyttää?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi.\"] } } } } }, { \"locale\": \"fo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"fr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Caro Leviia, 2025\", \"Language-Team\": \"French (https://app.transifex.com/nextcloud/teams/64236/fr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fr\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nBenoit Pruneau, 2024\\nJEEEEEEEEEEEEEEEEEEEEEED, 2024\\nJérôme HERBINET, 2024\\nacazenave, 2024\\nLisa Cintosh, 2025\\nLdm Public , 2025\\nCaro Leviia, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Caro Leviia, 2025\\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fr\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" est un nom de fichier ou de dossier interdit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" est un type de fichier interdit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fichier en conflit\", \"{count} fichiers en conflit\", \"{count} fichiers en conflit\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fichier en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde restante\", \"{seconds} secondes restantes\", \"{seconds} secondes restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restant\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quelques secondes restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblage\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuler toute l'opération\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuler les téléversements\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Créer un nouveau\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimation du temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Version existante\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Échec de l'assemblage des morceaux\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Échec de téléversement du fichier\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Les noms des fichiers ne doivent pas terminer par \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous sélectionnez les deux versions, un numéro sera ajouté au nom du fichier entrant.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fichier invalide\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de la dernière modification inconnue\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nouveau nom de fichier\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pause\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Aperçu de l'image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renommer\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorer\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} fichier ignoré\", \"{count} fichiers ignorés\", \"{count} fichiers ignorés\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Taille inconnue\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Téléverser\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Téléverser des fichiers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Téléverser des dossiers\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Téléverser depuis l'appareil\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Le téléversement a été annulé\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Le téléversement a été ignoré\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Le téléversement de \"{folder}\" a été ignoré'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progression du téléversement\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Vous pouvez soit renommer le fichier, soit ignorer le fichier, soit annuler toute l'opération.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Vous devez sélectionner au moins une version de chaque fichier pour continuer.\"] } } } } }, { \"locale\": \"ga\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Aindriú Mac Giolla Eoin, 2025\", \"Language-Team\": \"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ga\", \"Plural-Forms\": \"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nAindriú Mac Giolla Eoin, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Aindriú Mac Giolla Eoin, 2025\\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ga\\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Is ainm toirmiscthe comhaid nó fillteáin é \"{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Is cineál comhaid toirmiscthe é \"{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`Ní cheadaítear \"{segment}\" taobh istigh d'ainm comhaid nó fillteáin.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} coimhlint comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} coimhlint comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} fágtha\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"cúpla soicind fágtha\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ag cur le chéile\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht iomlán\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cealaigh uaslódálacha\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Leanúint ar aghaidh\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Cruthaigh nua\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ag déanamh meastachán ar an am atá fágtha\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan láithreach \"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Theip ar na smután a chur le chéile le chéile\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Theip ar uaslódáil an chomhaid\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Níor cheart go gcríochnaíonn comhaid chomhad le \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ainm comhaid neamhbhailí\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta modhnaithe is déanaí anaithnid\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ainm comhaid nua\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"sos\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Íomhá réamhamharc\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Athainmnigh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh gach ticbhosca\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh gach comhad atá ann cheana féin\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Scipeáil\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Léim an comhad {count}\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Seachain an comhad seo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Méid anaithnid\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uaslódáil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Uaslódáil comhaid\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Uaslódáil fillteáin\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Íosluchtaigh ó ghléas\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Cuireadh an t-uaslódáil ar ceal\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Léiríodh an uaslódáil\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Léiríodh an uaslódáil \"{folder}\".'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uaslódáil dul chun cinn\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh.\"] } } } } }, { \"locale\": \"gd\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gd\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gd\\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"gl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Miguel Anxo Bouzada , 2025\", \"Language-Team\": \"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMiguel Anxo Bouzada , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Miguel Anxo Bouzada , 2025\\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» é un nome vedado para un ficheiro ou cartafol.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» é un tipo de ficheiro vedado.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflito de ficheiros\", \"{count} conflitos de ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiros en {dirname}\", \"{count} conflitos de ficheiros en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"falta {seconds} segundo\", \"faltan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"falta {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltan uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancela toda a operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envíos\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear un novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calculando canto tempo falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Produciuse un fallo ao ensamblar os anacos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Produciuse un fallo ao enviar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Os nomes de ficheiros non deben rematar con «{segment}».\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"O nome de ficheiro non é válido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nova\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"detido\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa da imaxe\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar todas as caixas de selección\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} ficheiro\", \"Omitir {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño descoñecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar cartafoles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Enviar dende o dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O envío foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O envío foi omitido\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"O envío de «{folder}» foi omitido\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso do envío\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar polo menos unha versión de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"he\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"he\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: he\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hi_IN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hi_IN\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hi_IN\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hr\", \"Plural-Forms\": \"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hr\\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hsb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hsb\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hsb\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gyuris Gellért , 2024\", \"Language-Team\": \"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hu_HU\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGyuris Gellért , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gyuris Gellért , 2024\\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hu_HU\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Tiltott fájl- vagy mappanév: „{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Tiltott fájltípus: „{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Nem megengedett egy fájl- vagy mappanévben: „{segment}\".'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fájlt érintő konfliktus\", \"{count} fájlt érintő konfliktus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fájlt érintő konfliktus a mappában: {dirname}\", \"{count}fájlt érintő konfliktus a mappában: {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{} másodperc van hátra\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} van hátra\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"pár másodperc van hátra\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Teljes művelet megszakítása\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Feltöltések megszakítása\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tovább\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Új létrehozása\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hátralévő idő becslése\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Jelenlegi változat\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Fájlnevek nem végződhetnek erre: „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Érvénytelen fájlnév\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Utolsó módosítás dátuma ismeretlen\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Új fájlnév\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"szüneteltetve\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Kép előnézete\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Átnevezés\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Minden jelölőnégyzet kijelölése\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Minden jelenlegi fájl kijelölése\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Minden új fájl kijelölése\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Kihagyás\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ezen fájl kihagyása\", \"{count}fájl kihagyása\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ismeretlen méret\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Feltöltés\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fájlok feltöltése\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappák feltöltése\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Feltöltés eszközről\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Feltöltés meg lett szakítva\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Feltöltés át lett ugorva\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}” feltöltése át lett ugorva\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Feltöltési folyamat\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat kívánja megtartani?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz minden fájlból legalább egy verziót ki kell választani.\"] } } } } }, { \"locale\": \"hy\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hy\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hy\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ia\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ia\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ia\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"id\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Linerly , 2023\", \"Language-Team\": \"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"id\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ , 2023\\nEmpty Slot Filler, 2023\\nLinerly , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Linerly , 2023\\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: id\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} berkas berkonflik\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} berkas berkonflik dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} detik tersisa\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tersisa\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"tinggal sebentar lagi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Batalkan unggahan\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"memperkirakan waktu yang tersisa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal perubahan terakhir tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"dijeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Gambar pratinjau\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua berkas yang ada\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua berkas baru\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Lewati {count} berkas\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukuran tidak diketahui\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Unggahan dibatalkan\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Unggah berkas\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Berkas mana yang Anda ingin tetap simpan?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan.\"] } } } } }, { \"locale\": \"ig\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ig\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ig\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"is\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Sveinn í Felli , 2025\", \"Language-Team\": \"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"is\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nSveinn í Felli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Sveinn í Felli , 2025\\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: is\\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er bannað sem heiti á skrá eða möppu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er bönnuð skráartegund.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ekki leyfilegt innan í heiti á skrá eða möppu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} árekstur skráa\", \"{count} árekstrar skráa\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} árekstur skráa í {dirname}\", \"{count} árekstrar skráa í {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekúnda eftir\", \"{seconds} sekúndur eftir\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} eftir\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"nokkrar sekúndur eftir\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"set saman\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Hætta við\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Hætta við alla aðgerðina\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hætta við innsendingar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Halda áfram\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Búa til nýtt\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"áætla tíma sem eftir er\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Fyrirliggjandi útgáfa\"] }, \"Failed assembling the chunks together\": { \"msgid\": \"Failed assembling the chunks together\", \"msgstr\": [\"Mistókst að setja saman bútana\"] }, \"Failed uploading the file\": { \"msgid\": \"Failed uploading the file\", \"msgstr\": [\"Mistókst að senda inn skrána\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Skráaheiti mega ekki enda á \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti innkomandi skrárinnar.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ógilt skráarheiti\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Síðasta breytingadagsetning er óþekkt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nýtt skráarheiti\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ný útgáfa\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"í bið\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forskoðun myndar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Endurnefna\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velja gátreiti\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velja allar fyrirliggjandi skrár\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velja allar nýjar skrár\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Sleppa\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sleppa þessari skrá\", \"Sleppa {count} skrám\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Óþekkt stærð\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Senda inn\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Senda inn skrár\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Senda inn möppur\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Senda inn frá tæki\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Hætt hefur verið við innsendingu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Innsendingu hefur verið sleppt\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Innsendingu á \"{folder}\" hefur verið sleppt'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Framvinda innsendingar\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður einnig skrifað yfir allar skrár í henni sem valda árekstrum.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður efnið skrifað inn í fyrirliggjandi möppu og farið í að leysa úr árekstrum.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvaða skrám vilt þú vilt halda eftir?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Þú getur annaðhvort endurnefnt skrána, sleppt þessari skrá eða hætt við alla þessa aðgerð.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram.\"] } } } } }, { \"locale\": \"it\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roberto Resoli, 2025\", \"Language-Team\": \"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"it\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFrancesco Sercia, 2024\\nalbanobattistella , 2024\\nLorenzo Taiocchi, 2025\\nesseti kappa, 2025\\nRoberto Resoli, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Roberto Resoli, 2025\\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: it\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" è un nome di file o cartella proibito.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"è un tipo di file proibito.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" non è consentito all'interno di un nome di file o cartella.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file in conflitto\", \"{count} file in conflitto\", \"{count} file in conflitto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondo rimanente \", \"{seconds} secondi rimanenti \", \"{seconds} secondi rimanenti \"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} rimanente\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alcuni secondi rimanenti\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblaggio\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annulla i caricamenti\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nuovo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calcolo il tempo rimanente\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Impossibile unire i pezzi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Impossibile caricare il file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['I nomi dei file non devono terminare con \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero \"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome file non valido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ultima modifica sconosciuta\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuovo nome file\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Anteprima immagine\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rinomina\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Salta\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sata {count} file\", \"Salta {count} file\", \"Salta {count} file\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Dimensione sconosciuta\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Caricamento\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Carica i file\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carica cartelle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carica dal dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Caricamento annullato\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Il caricamento è stato saltato\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Il caricamento di \"{folder}\" è stato saltato'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso del caricamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi mantenere?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"È possibile rinominare il file, ignorarlo o annullare l'intera operazione.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Devi selezionare almeno una versione di ogni file per continuare\"] } } } } }, { \"locale\": \"ja\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"kojima.imamura, 2025\", \"Language-Team\": \"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ja_JP\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nTakafumi AKAMATSU, 2024\\ndevi, 2024\\n貴宝, 2025\\nkshimohata, 2025\\nkojima.imamura, 2025\\n\" }, \"msgstr\": [\"Last-Translator: kojima.imamura, 2025\\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ja_JP\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" は禁止されているファイルまたはフォルダ名です。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" は禁止されているファイルタイプです。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ファイルまたはフォルダ名に \"{segment}\" を含めることはできません。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ファイル数の競合\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} で {count} 個のファイルが競合しています\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"残り{seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"残り {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"残り数秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"処理中\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセルする\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"アップロードをキャンセル\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"続ける\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新規作成\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"概算残り時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既存バージョン\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"チャンクの組み立てに失敗しました\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ファイルのアップロードに失敗しました\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ファイル名の末尾に \"{segment}\" を付けることはできません。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無効なファイル名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新しいファイル名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新しいバージョン\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"一時停止中\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"プレビュー画像\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"名前を変更\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべて選択\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"すべての既存ファイルを選択\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"スキップ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} 個のファイルをスキップする\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップする\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"サイズ不明\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"アップロード\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ファイルをアップロード\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"フォルダのアップロード\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"デバイスからのアップロード\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"アップロードはキャンセルされました\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"アップロードがスキップされました\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" のアップロードがスキップされました'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"アップロード進行状況\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを保持しますか?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。\"] } } } } }, { \"locale\": \"ka\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ka_GE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka_GE\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka_GE\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kab\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ZiriSut, 2023\", \"Language-Team\": \"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kab\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nZiriSut, 2023\\n\" }, \"msgstr\": [\"Last-Translator: ZiriSut, 2023\\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kab\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} tesdatin i d-yeqqimen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} i d-yeqqimen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"qqiment-d kra n tesdatin kan\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Rnu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Sefsex asali\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"asizel n wakud i d-yeqqimen\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"yeḥbes\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Sali-d ifuyla\"] } } } } }, { \"locale\": \"kk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kk\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kk\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"km\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"km\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: km\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kn\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kn\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ko\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"보헤민, 2025\", \"Language-Team\": \"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ko\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nshin2012 , 2025\\n이상오, 2025\\n보헤민, 2025\\n\" }, \"msgstr\": [\"Last-Translator: 보헤민, 2025\\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ko\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 및 폴더 이름입니다.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 형식입니다.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['파일이나 폴더 이름에 \"{segment}\"을(를) 사용할 수 없습니다.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}개의 파일이 충돌함\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 {count}개의 파일이 충돌함\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} 초 남음\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} 남음\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"곧 완료\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"취합 중\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업을 취소\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"업로드 취소\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"확인\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"새로 만들기\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"남은 시간 계산\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"현재 버전\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"조각을 취합하는 데 실패\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"파일을 업로드하는 데 실패\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['파일 이름은 \"{segment}\"(으)로 끝나야 합니다.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"잘못된 파일 이름\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"새 파일 이름\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"새 버전\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"일시정지됨\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"미리보기 이미지\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"이름 바꾸기\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일을 모두 선택\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"새로운 파일을 모두 선택\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"건너뛰기\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count}개 파일 건너뛰기\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뛰기\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"크기를 알 수 없음\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"업로드\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"파일 업로드\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"폴더 업로드\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"장치에서 업로드\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"업로드가 취소되었습니다.\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"업로드를 건너뛰었습니다.\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 업로드를 건너뛰었습니다.'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"업로드 진행도\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더가 선택되면, 그 안의 콘텐츠가 기존 폴더에 기록되고 재귀적 충돌 해결이 수행됩니다.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보존하시겠습니까?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"파일 이름을 바꾸거나, 이 파일을 건너뛰거나 모든 작업을 취소할 수 있습니다.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] } } } } }, { \"locale\": \"la\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"la\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: la\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lb\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lb\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"bone NI, 2025\", \"Language-Team\": \"Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lo\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nbone NI, 2025\\n\" }, \"msgstr\": [\"Last-Translator: bone NI, 2025\\nLanguage-Team: Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lo\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ແມ່ນປະເພດໄຟລ໌ທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{segment}\" ຢູ່​ໃນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີ.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ ໃນ {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"ເຫຼືອເວລາ {seconds} ວິນາທີ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"ເຫຼືອເວລາ {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ເຫຼືອເວລາອີກບໍ່ດົນ\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ກຳລັງຮວບຮວມ\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ຍົກເລີກການອັບໂຫຼດ\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ສ້າງໃໝ່\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ກຳລັງຄາດຄະເນເວລາທີ່ເຫຼືອ\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"ສະບັບທີ່ມີຢູ່ແລ້ວ\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"ການຮວບຮວມສ່ວນຕ່າງໆເຂົ້າກັນບໍ່ສຳເລັດ\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌ບໍ່ສຳເລັດ\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ຊື່ໄຟລ໌ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງສະບັບ, ໄຟລ໌ທີ່ເຂົ້າມາໃໝ່ຈະຖືກເພີ່ມຕົວເລກໃສ່ທ້າຍຊື່.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ບໍ່ຖືກຕ້ອງ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຊາບວັນທີແກ້ໄຂຫຼ້າສຸດ\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ໃໝ່\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"ສະບັບໃໝ່\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"ຢຸດຊົ່ວຄາວ\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"ເບິ່ງຕົວຢ່າງຮູບ\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"ປ່ຽນຊື່\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກທຸກຊ່ອງໝາຍຕິກ\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ແລ້ວທັງໝົດ\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"ຂ້າມ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"ຂ້າມ {count} ໄຟລ໌\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"ບໍ່ຊາບຂະໜາດ\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"ອັບໂຫຼດ\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"ອັບໂຫຼດໂຟລເດີ\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"ອັບໂຫຼດຈາກອຸປະກອນ\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຍົກເລີກແລ້ວ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຂ້າມໄປແລ້ວ\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['ການອັບໂຫຼດ \"{folder}\" ໄດ້ຖືກຂ້າມໄປແລ້ວ'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"ຄວາມຄືບໜ້າການອັບໂຫຼດ\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ໄຟລ໌ໃດໆທີ່ຊ້ຳກັນຢູ່ພາຍໃນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟລເດີທີ່ມີຢູ່ແລ້ວ ແລະ ຈະມີການແກ້ໄຂໄຟລ໌ທີ່ຊ້ຳກັນແບບຕໍ່ເນື່ອງໃນໂຟລເດີຍ່ອຍ.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ທ່ານສາມາດປ່ຽນຊື່ໄຟລ໌, ຂ້າມໄຟລ໌ນີ້ ຫຼື ຍົກເລີກການດຳເນີນການທັງໝົດ.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງສະບັບຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] } } } } }, { \"locale\": \"lt_LT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lt_LT\", \"Plural-Forms\": \"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lt_LT\\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Edgars Andersons, 2025\", \"Language-Team\": \"Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lv\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPapuass , 2024\\nArmīns Jeltajevs , 2024\\nEdgars Andersons, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Edgars Andersons, 2025\\nLanguage-Team: Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lv\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes vai mapes nosaukums.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes veids.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ir nav ļauts datnes vai mapes nosaukumā.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} nesaderīgu datņu\", \"{count} nesaderīga datne\", \"{count} nesaderīgas datnes\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} nesaderīgu datņu {dirname}\", \"{count} nesaderīga datne {dirname}\", \"{count} nesaderīgas datnes {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Atlikušas {seconds} sekundes\", \"Atlikusi {seconds} sekunde\", \"Atlikušas {seconds} sekundes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"atlicis {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"atlikušas dažas sekundes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sakopo\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Atcelt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Atcelt visu darbību\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Atcelt augšupielādes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Turpināt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Izveidot jaunu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"paredzamais atlikušais laiks\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Esošā versija\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Neizdevās apvienot gabalus\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Neizdevās augšupielādēt datni\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Datnes nosaukumi nedrīkst beigties ar \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ja atlasa abas versijas, ienākošās datnes nosaukumam tiks pievienots skaitlis.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nederīgs datnes nosaukums\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Pēdējais izmainīšanas datums nav zināms\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Jauns datnes nosaukums\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Jauna versija\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"apturēta\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Priekšskatīt attēlu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Pārdēvēt\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Atlasīt visas izvēles rūtiņas\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Atlasīt visas esošās datnes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Atlasīt visas jaunās datnes\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Izlaist\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Izlaist {count} datņu\", \"Izlaist {count} datni\", \"Izlaist {count} datnes\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Izlaist šo datni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nezināms izmērs\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Augšupielādēt\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Augšupielādēt datnes\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Augšupielādēt mapes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Augšupielādēt no ierīces\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Augšupielāde tika atcelta\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Augšupielāde tika izlaista\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" augšupielāde tika izlaista'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Augšupielādes virzība\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, tiks pārrakstītas arī jebkuras tajā esošās nesaderīgās datnes.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, saturs tiks rakstīts esošajā mapē, un tiks veikta rekursīva nesaderību novēršana.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Kuras datnes paturēt?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datni var vai nu pārdēvēt, vai izlaist vai atcelt visu darbību.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ir nepieciešams atlasīt vismaz vienu katras datnes versiju, lai turpinātu.\"] } } } } }, { \"locale\": \"mk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Сашко Тодоров , 2025\", \"Language-Team\": \"Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mk\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nСашко Тодоров , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Сашко Тодоров , 2025\\nLanguage-Team: Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mk\\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" е забрането име на датотека или име на папка.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" е забранет вид на датотека.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" не е дозволено во името датотека или папка.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфликт со датотека\", \"{count} конфликти со датотеки\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфликт со датотека во {dirname}\", \"{count} конфликти на датотеки во {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"уште {seconds} секунда\", \"уште {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"преостанува {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"уште неколку секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"склопување\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Откажи ја целата операција\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Прекини прикачување\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај нова\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"приближно преостанато време\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постоечка верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Неуспешно составување на парчињата заедно\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Неуспешно прикачување на датотека\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Имињата на датотеките не смеат да завршуваат со \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги изберете двете верзии, на новата датотека ќе ѝ биде додаден број на името.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Невалидно име на датотека\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Непознат датумот на последната измена\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име на датотека\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Преглед на слика\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Преименувај\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Означи ги сите полиња\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Избери ги сите постоечки датотеки\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Избери ги сите нови датотеки\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескокни\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескокни {count} датотека\", \"Прескокни {count} датотеки\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната големина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Прикачи\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Прикачување датотеки\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Прикачи папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Прикачи од уред\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Прикачувањето е откажано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Прикачувањето е прескокнато\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Прикачувањето на \"{folder}\" е прескокнато'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогрес на прикачување\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, сите конфликтни датотеки во неа исто така ќе бидат пребришани.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, содржината се запишува во постоечката папка и се извршува рекурзивно решавање на конфликтот.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакате да ги зачвате?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете да ја преименувате датотеката, да ја прескокнете датотека или да ја откажете целата операција.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да изберете барем една верзија од секоја датотека за да продолжите.\"] } } } } }, { \"locale\": \"mn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"BATKHUYAG Ganbold, 2023\", \"Language-Team\": \"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mn\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nBATKHUYAG Ganbold, 2023\\n\" }, \"msgstr\": [\"Last-Translator: BATKHUYAG Ganbold, 2023\\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mn\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунд үлдсэн\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} үлдсэн\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"хэдхэн секунд үлдсэн\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Нэмэх\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Илгээлтийг цуцлах\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Үлдсэн хугацааг тооцоолж байна\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"түр зогсоосон\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Файл илгээх\"] } } } } }, { \"locale\": \"mr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mr\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mr\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ms_MY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DT Navy, 2024\", \"Language-Team\": \"Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ms_MY\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nDT Navy, 2024\\n\" }, \"msgstr\": [\"Last-Translator: DT Navy, 2024\\nLanguage-Team: Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ms_MY\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" adalah fail dan nama folder yang dilarang'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" adalah jenis fail yang dilarang'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" adalah tidak dibenarkan dalam nama fail atau folder'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} files bertindih\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail bertindih dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saat tinggal\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tinggal\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"beberapa saat lagi\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"batal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batal keseluruhan operasi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"batal muat naik\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"teruskan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Buat baharu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"jangkaan masa tinggal\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"versi sedia ada\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nama fail tidak boleh berakhir dengan \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika dua versi dipilih, fail yang masuk akan ditambah bilangan pada namanya.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nama fail tidak sah\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tarikh terakhir diubah suai tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nama fail baharu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baharu\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Jeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pratonton gambar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Menamakan semula\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak pilihan\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua fail yang wujud\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"pilih semua fail baharu\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Langkau\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Langkau fail {count}\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Saiz tidak diketahui\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Muat naik\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Muat naik fail\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Muat naik folder\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Muat naik dari peranti\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Muat naik telah dibatalkan\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Muat naik telah dilangkau\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Muat naik \"{folder}\" telah dilangkau'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Kemajuan muat naik\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Apabila folder masuk dipilih, sebarang fail bertindih akan ditulis semula\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Apabila folder masuk dipilih, kandungan ditulis ke dalam folder sedia ada dan penyelesaian konflik rekursif dilakukan.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Fail yang mana ingin disimpan?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"And boleh menamakan semula fail, langkau fail tersebut atau membatalkan keseluruhan operasi\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih sekurangnya satu versi setiap fail untuk teruskan\"] } } } } }, { \"locale\": \"my\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"my\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: my\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roger Knutsen, 2024\", \"Language-Team\": \"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nb_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRoger Knutsen, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roger Knutsen, 2024\\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nb_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tillatt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder igjen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} igjen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"noen få sekunder igjen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hele operasjonen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt opplastninger\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsett\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opprett ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Estimerer tid igjen\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Gjeldende versjon\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavn må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldig filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Siste gang redigert ukjent\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny versjon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvis bilde\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøp\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velg alle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hopp over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Hopp over {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukjent størrelse\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Last opp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Last opp mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Last opp fra enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Opplastingen er kansellert\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Opplastingen er hoppet over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Opplasting av \"{folder}\" er hoppet over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fremdrift, opplasting\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du må velge minst en versjon av hver fil for å fortsette.\"] } } } } }, { \"locale\": \"ne\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ne\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ne\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Stephan Paternotte , 2025\", \"Language-Team\": \"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJoris deLeeuw, 2025\\nStephan Paternotte , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Stephan Paternotte , 2025\\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is een verboden bestands- of mapnaam.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is een verboden bestandstype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is niet toegestaan in een bestand of mapnaam.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} bestandsconflict\", \"{count} bestanden conflicteren\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} bestandsconflict in {dirname}\", \"{count} bestandenconflicten in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde resterend\", \"{seconds} seconden resterend\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} resterend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Nog een paar seconden over\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samenstellen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"De hele bewerking annuleren\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Uploaden annuleren\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Nieuw aanmaken\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"resterende tijd schatten\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Kon de stukken niet samenvoegen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Het uploaden van het bestand is mislukt\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Bestandsnamen mogen niet eindigen met \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als je beide versies selecteert, krijgt het binnenkomende bestand een nummer toegevoegd aan de naam.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ongeldige bestandsnaam\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatst gewijzigde datum onbekend\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nieuwe bestandsnaam\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"gepauzeerd\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Voorbeeldweergave\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Hernoemen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle opties selecteren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle bestanden selecteren\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle nieuwe bestanden selecteren\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Overslaan\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} bestand overslaan\", \"{count} bestanden overslaan\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Dit bestand overslaan\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Onbekende grootte\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uploaden\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload bestanden\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappen uploaden\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Uploaden vanaf apparaat\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload is geanulleerd\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload is overgeslagen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload van \"{folder}\" is overgeslagen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uploadvoortgang\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, worden alle conflicterende bestanden daarin ook overschreven.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, wordt de inhoud in de bestaande map geschreven en wordt er een recursieve conflictoplossing uitgevoerd.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wil je behouden?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Je kunt het bestand ofwel hernoemen, dit bestand overslaan of de hele bewerking annuleren.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Je moet minstens één versie van elk bestand selecteren om door te gaan.\"] } } } } }, { \"locale\": \"nn_NO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nn_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nn_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"oc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"oc\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: oc\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Valdnet, 2025\", \"Language-Team\": \"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pl\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPiotr Strebski , 2024\\nValdnet, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Valdnet, 2025\\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pl\\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" to zabroniona nazwa pliku lub katalogu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" jest zabronionym typem pliku.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Znak \"{segment}\" nie jest dozwolony w nazwie pliku lub katalogu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"konflikt 1 pliku\", \"{count} konfliktów plików\", \"{count} konfliktów plików\", \"{count} konfliktów plików\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} konfliktowy plik w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Pozostało {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Pozostało {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Pozostało kilka sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anuluj wysyłanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Utwórz nowe\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Szacowanie pozostałego czasu\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nazwy plików nie mogą kończyć się na \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nieprawidłowa nazwa pliku\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nieznana data ostatniej modyfikacji\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nowa nazwa pliku\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Wstrzymane\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Podgląd obrazu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Zmiana nazwy\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pomiń\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pomiń 1 plik\", \"Pomiń {count} plików\", \"Pomiń {count} plików\", \"Pomiń {count} plików\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nieznany rozmiar\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Wyślij\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Wyślij pliki\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Wyślij katalogi\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Wyślij z urządzenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Wysyłanie zostało anulowane\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Wysyłanie zostało pominięte\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Wysyłanie \"{folder}\" zostało pominięte'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postęp wysyłania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego zawartość jest zapisywana w istniejącym katalogu i przeprowadzane jest rekursywne rozwiązywanie konfliktów.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] } } } } }, { \"locale\": \"ps\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ps\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ps\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pt_BR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"F Bausch, 2025\", \"Language-Team\": \"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_BR\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nLeonardo Colman Lopes , 2024\\nRodrigo Sottomaior Macedo , 2024\\nF Bausch, 2025\\n\" }, \"msgstr\": [\"Last-Translator: F Bausch, 2025\\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_BR\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de arquivo proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido dentro de um nome de arquivo ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} arquivos em conflito\", \"{count} arquivos em conflito\", \"{count} arquivos em conflito\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo restante\", \"{seconds} segundos restantes\", \"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alguns segundos restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao montar os pedaços juntos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao fazer o upload do arquivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes dos arquivos não devem terminar com \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de arquivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de arquivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de seleção\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os arquivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os novos arquivos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pular\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pular {count} arquivo\", \"Pular {count} de arquivos\", \"Pular {count} arquivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pular este arquivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Fazer upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fazer upload de arquivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Fazer upload de pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Fazer upload do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O upload foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O upload foi pulado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O upload de \"{folder}\" foi pulado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso de upload\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, todos os arquivos conflitantes dentro dela também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] } } } } }, { \"locale\": \"pt_PT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"artur25 , 2025\", \"Language-Team\": \"Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_PT\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nguilherme ferreira, 2025\\nartur25 , 2025\\n\" }, \"msgstr\": [\"Last-Translator: artur25 , 2025\\nLanguage-Team: Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_PT\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um Nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de ficheiro proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido num nome de ficheiro ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"Conflito em {count} ficheiro\", \"Conflito em {count} ficheiros\", \"Conflito em {count} ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Falta {seconds} segundo\", \"Faltam {seconds} segundos\", \"Faltam {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"faltam {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltam uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montagem\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envios\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"tempo em falta estimado\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao juntar os fragmentos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao carregar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes de ficheiro não podem terminar em \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecionar ambas as versões, será adicionado um número ao nome do ficheiro recebido.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de ficheiro inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pré-visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de verificação\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorar {count} ficheiro\", \"Ignorar {count} ficheiros\", \"Ignorar {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Carregar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carregar pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carregar a partir do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O carregamento foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O carregamento foi ignorado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O carregamento da pasta \"{folder}\" foi ignorado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso do carregamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, quaisquer ficheiros em conflito no seu interior também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, o conteúdo é escrito na pasta existente e é efetuada uma resolução de conflitos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais ficheiros pretende manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode renomear o ficheiro, ignorá-lo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Precisa de selecionar pelo menos uma versão de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"ro\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mădălin Vasiliu , 2022\", \"Language-Team\": \"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ro\", \"Plural-Forms\": \"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMădălin Vasiliu , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Mădălin Vasiliu , 2022\\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ro\\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secunde rămase\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} rămas\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"câteva secunde rămase\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adaugă\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anulați încărcările\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimarea timpului rămas\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pus pe pauză\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Încarcă fișiere\"] } } } } }, { \"locale\": \"ru\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Igor Orlov, 2025\", \"Language-Team\": \"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ru\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nВлад, 2024\\nAlex , 2024\\nRoman Stepanov, 2024\\nMaksim Sukharev, 2024\\nАлександр, 2025\\nIgor Orlov, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Igor Orlov, 2025\\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ru\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» — это запрещенное имя файла или папки.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» — это запрещенный тип файла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» не допускается в имени файла или папки.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"конфликт {count} файла\", \"конфликт {count} файлов\", \"конфликт {count} файлов\", \"конфликт {count} файлов\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"конфликт {count} файла в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"осталась {seconds} секунда\", \"осталось {seconds} секунды\", \"осталось {seconds} секунд\", \"осталось {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"осталось {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"осталось несколько секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"сборка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Отменить\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отменить операцию целиком\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Отменить загрузки\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Создать новое\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оценка оставшегося времени\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не удалось собрать части вместе\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не удалось загрузить файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена файлов не должны заканчиваться на «{segment}»\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неверное имя файла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Новое имя файла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"приостановлено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Предварительный просмотр\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Переименовать\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Выбрать все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустить\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустить {count} файл\", \"Пропустить {count} файла\", \"Пропустить {count} файлов\", \"Пропустить {count} файлов\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустить этот файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Неизвестный размер\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Загрузить\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Загрузить файлы\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Загрузить папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Загрузить с устройства\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Загрузка была отменена\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Загрузка была пропущена\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Загрузка «{folder}» была пропущена\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогресс загрузки\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Вы можете переименовать файл, пропустить этот файл или отменить всю операцию.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла.\"] } } } } }, { \"locale\": \"sc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sc\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sc\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"si\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"si\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: si\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Anton Krajcik , 2025\", \"Language-Team\": \"Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sk_SK\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJozef Gaal , 2024\\nLinker Linker , 2024\\nAnton Krajcik , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Anton Krajcik , 2025\\nLanguage-Team: Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sk_SK\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ je zakázaný názov súboru alebo priečinka.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je zákazaný typ súboru.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}“ je zakázané v názve súboru alebo adresára.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} súbor má konflikt\", \"{count} súbory majú konflikt\", \"{count} súborov má konflikt\", \"{count} súborov má konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} súborový konflikt v {dirname}\", \"{count} súborové konflikty v {dirname}\", \"{count} súborových konfliktov v {dirname}\", \"{count} súborových konfliktov v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunda zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekundy zostávajú\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} zostáva\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zostáva niekoľko sekúnd\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zhromažďovanie\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušiť nahrávanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvoriť nové\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhadovanie zostávajúceho času\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Nepodarilo sa dať časti dohromady.\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Nepodarilo sa nahrať súbor\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Názvy súborov nesmú končiť znakom \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, k názvu prichádzajúceho súboru sa pridá číslo.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný názov súboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dátum poslednej úpravy neznámy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nový\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový názov súboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastavené\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhľad obrázka\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Premenovať\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označiť všetky výberové políčka\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskočiť\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskočiť {count} súbor\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súbory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznáma veľkosť\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrať\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrať súbory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrať priečinky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrať zo zariadenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávanie bolo zrušené\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrávanie bolo preskočené\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nahrávanie \"{folder}\" bolo preskočené'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Priebeh nahrávania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraný prichádzajúci priečinok, prepíšu sa aj všetky konfliktné súbory v ňom.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po výbere prichádzajúceho priečinka sa obsah zapíše do existujúceho priečinka a vykoná sa rekurzívne riešenie konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete ponechať?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Súbor môžete premenovať, preskočiť alebo zrušiť celú operáciu.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ak chcete pokračovať, musíte vybrať aspoň jednu verziu každého súboru.\"] } } } } }, { \"locale\": \"sl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Simon Bogina, 2024\", \"Language-Team\": \"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sl\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJan Kraljič , 2024\\nSimon Bogina, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Simon Bogina, 2024\\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sl\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" je prepovedano ime datoteka ali mape.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je prepovedan tip datoteke.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ni dovoljeno v imenu datoteke ali mape.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"1{count} datoteka je v konfliktu\", \"1{count} datoteki sta v konfiktu\", \"1{count} datotek je v konfliktu\", \"{count} datotek je v konfliktu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} datoteka je v konfiktu v {dirname}\", \"{count} datoteki sta v konfiktu v {dirname}\", \"{count} datotek je v konfiktu v {dirname}\", \"{count} konfliktov datotek v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"še {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"še {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"še nekaj sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Prekliči\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Prekliči celotni postopek\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Prekliči pošiljanje\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Nadaljuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Ustvari nov\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ocenjujem čas do konca\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Obstoječa različica\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Imena datotek se ne smejo končati s \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nepravilno ime datoteke\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum zadnje spremembe neznan\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo ime datoteke\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova različica\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"v premoru\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Predogled slike\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Preimenuj\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Izberi vsa potrditvena polja\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi vse obstoječe datoteke\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi vse nove datoteke\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskoči\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskoči datoteko\", \"Preskoči {count} datoteki\", \"Preskoči {count} datotek\", \"Preskoči {count} datotek\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznana velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Naloži\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Naloži datoteke\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Naloži mape\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Naloži iz naprave\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nalaganje je bilo preklicano\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nalaganje je bilo preskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nalaganje \"{folder}\" je bilo preskočeno'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Napredek nalaganja\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Katere datoteke želite obdržati?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Izbrati morate vsaj eno različico vsake datoteke da nadaljujete.\"] } } } } }, { \"locale\": \"sq\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sq\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sq\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Иван Пешић, 2025\", \"Language-Team\": \"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nИван Пешић, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Иван Пешић, 2025\\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” је забрањено име фајла или фолдера.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” је забрањен тип фајла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}” није дозвољено унутар имена фајла или фолдера.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} фајл конфликт\", \"{count} фајл конфликта\", \"{count} фајл конфликта\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} фајл конфликт у {dirname}\", \"{count} фајл конфликта у {dirname}\", \"{count} фајл конфликта у {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"преостало је {seconds} секунда\", \"преостало је {seconds} секунде\", \"преостало је {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} преостало\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"преостало је неколико секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"састављање\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отказује комплетну операцију\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Обустави отпремања\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Настави\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај ново\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"процена преосталог времена\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постојећа верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Није успело састављање делова\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Није успело отпремање фајла\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена фајлова не смеју да се завршавају на „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако изаберете обе верзије, на име долазног фајла ће се додати број.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неисправно име фајла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Није познат датум последње измене\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име фајла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Слика прегледа\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Промени име\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Штиклирај сва поља за штиклирање\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изабери све постојеће фајлове\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изабери све нове фајлове\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескочи\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескочи {count} фајл\", \"Прескочи {count} фајла\", \"Прескочи {count} фајлова\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескочи овај фајл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната величина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Отпреми\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Отпреми фајлове\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Отпреми фолдере\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Отпреми са уређаја\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Отпремање је отказано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Отпремање је прескочено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Отпремање „{folder}”је прескочено\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Напредак отпремања\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Које фајлове желите да задржите?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Морате да изаберете барем једну верзију сваког фајла да наставите.\"] } } } } }, { \"locale\": \"sr@latin\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr@latin\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr@latin\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Magnus Höglund, 2025\", \"Language-Team\": \"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sv\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMagnus Höglund, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Magnus Höglund, 2025\\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sv\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" är ett förbjudet fil- eller mappnamn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" är en förbjuden filtyp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" är inte tillåtet i ett fil- eller mappnamn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} filkonflikt\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} filkonflikt i {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder kvar\", \"{seconds} sekunder kvar\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kvarstår\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"några sekunder kvar\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"Sammanställer\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt uppladdningar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Skapa ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"uppskattar kvarstående tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Misslyckades med att sammanställa delarna\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunde inte ladda upp filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnamn får inte sluta med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ogiltigt filnamn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnamn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausad\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Förhandsgranska bild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Byt namn\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hoppa över\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Hoppa över {count} fil\", \"Hoppa över {count} filer\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över denna fil\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Okänd storlek\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Ladda upp\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Ladda upp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ladda upp mappar\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Ladda upp från enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Uppladdningen har avbrutits\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Uppladdningen har hoppats över\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Uppladdningen av \"{folder}\" har hoppats över'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uppladdningsförlopp\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs även alla konfliktande filer i den över.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] } } } } }, { \"locale\": \"sw\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sw\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sw\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ta\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ta\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ta\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"th\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Phongpanot Phairat , 2022\", \"Language-Team\": \"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"th_TH\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPhongpanot Phairat , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Phongpanot Phairat , 2022\\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: th_TH\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"เหลืออีก {seconds} วินาที\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"เหลืออีก {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"เหลืออีกไม่กี่วินาที\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"เพิ่ม\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ยกเลิกการอัปโหลด\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"กำลังคำนวณเวลาที่เหลือ\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"หยุดชั่วคราว\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"อัปโหลดไฟล์\"] } } } } }, { \"locale\": \"tk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tk\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tk\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"tr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Kaya Zeren , 2025\", \"Language-Team\": \"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tr\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nKaya Zeren , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Kaya Zeren , 2025\\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tr\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" dosya ya da klasör adına izin verilmiyor.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" dosya türüne izin verilmiyor.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Bir dosya ya da klasör adında \"{segment}\" ifadesine izin verilmiyor.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} dosya çakışması var\", \"{count} dosya çakışması var\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} klasöründe {count} dosya çakışması var\", \"{dirname} klasöründe {count} dosya çakışması var\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniye kaldı\", \"{seconds} saniye kaldı\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kaldı\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir kaç saniye kaldı\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"birleştiriliyor\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yüklemeleri iptal et\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yeni ekle\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"öngörülen kalan süre\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Parçalar birleştirilemedi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Dosya yüklenemedi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dosya adları \"{segment}\" ile bitmemeli.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Dosya adı geçersiz\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yeni dosya adı\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"duraklatıldı\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Görsel ön izlemesi\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Yeniden adlandır\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Atla\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} dosyayı atla\", \"{count} dosyayı atla\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Boyut bilinmiyor\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yükle\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dosyaları yükle\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Klasörleri yükle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Aygıttan yükle\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yükleme iptal edildi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yükleme atlandı\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" klasörünün yüklenmesi atlandı'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yükleme ilerlemesi\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz.\"] } } } } }, { \"locale\": \"ug\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ug\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ug\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"O St, 2025\", \"Language-Team\": \"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uk\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nO St, 2025\\n\" }, \"msgstr\": [\"Last-Translator: O St, 2025\\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uk\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [`\"{segment}\" недозволене ім'я файлу або каталогу.`] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" недозволений тип файлу.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" недозволене сполучення символів в назві файлу або каталогу.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфліктний файл\", \"{count} конфліктних файли\", \"{count} конфліктних файлів\", \"{count} конфліктних файлів\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфліктний файл у каталозі {dirname}\", \"{count} конфліктних файли у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунда залишилася\", \"{seconds} секунди залишилося\", \"{seconds} секунд залишилося\", \"{seconds} секунд залишилося\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Залишилося {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"залишилося кілька секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"збірка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати операцію повністю\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Скасувати завантаження\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Створити новий\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оцінка часу, що залишився\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Присутня версія\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не вдалося зібрати частинки докупи\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не вдалося завантажити файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Ім'я файлів не можуть закінчуватися на \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Недійсне ім'я файлу\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нове\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Нове ім'я файлу\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"призупинено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Попередній перегляд\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Перейменувати\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати усі присутні файли\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати усі нові файли\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустити\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустити {count} файл\", \"Пропустити {count} файли\", \"Пропустити {count} файлів\", \"Пропустити {count} файлів\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Невідомий розмір\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Завантажити\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Завантажити файли\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Завантажити каталоги\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Завантажити з пристрою\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Завантаження скасовано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Завантаження пропущено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Завантаження \"{folder}\" пропущено'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Поступ завантаження\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продовження потрібно вибрати принаймні одну версію для кожного файлу.\"] } } } } }, { \"locale\": \"ur_PK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ur_PK\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ur_PK\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uz\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Khurshid Ibatov , 2025\", \"Language-Team\": \"Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uz\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nKhurshid Ibatov , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Khurshid Ibatov , 2025\\nLanguage-Team: Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uz\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl yoki papka nomidir.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl turi hisoblanadi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" fayl yoki papka nomi ichida ruxsat berilmaydi.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fayllar ziddiyati\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count}fayl ziddiyatlari {dirname} da\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soniya qoldi\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} qoldi\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir necha soniya qoldi\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"yig'ish\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yuklashni bekor qilish\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yangi yaratish\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"qolgan vaqtni hisoblash\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Bo'laklarni birlashtirib bo'lmadi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fayl yuklanmadi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Fayl nomlari bilan tugamasligi kerak \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Fayl nomi noto‘g‘ri\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yangi nom faylga\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"tanaffus\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Rasmni oldindan ko'rish\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Qayta nomlash\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Oʻtkazib yuborish\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Oʻtkazib yuborish {count} fayllarini\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Oʻtkazib yuborish ushbu faylni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Noma'lum o'lcham\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yuklash\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fayllarni yuklash\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Jildlarni yuklash\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Qurilmadan yuklash\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yuklash bekor qilindi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yuklash oʻtkazib yuborildi\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [' \"{folder}\" ni yuklash bekor qilindi'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yuklash jarayoni\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Siz fayl nomini o'zgartirishingiz, ushbu faylni o'tkazib yuborishingiz yoki butun operatsiyani bekor qilishingiz mumkin.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] } } } } }, { \"locale\": \"vi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"nhatCreA, 2025\", \"Language-Team\": \"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"vi\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nnhatCreA, 2025\\n\" }, \"msgstr\": [\"Last-Translator: nhatCreA, 2025\\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: vi\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" là tên thư mục bị cấm đặt.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" là loại tệp bị cấm.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" không được phép đặt trong tên tệp hoặc thư mục.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tệp tin xung đột\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": ['\"{count}\" tệp tin lỗi ở thư mục \"{dirname}\"'] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} giây trước\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} trước\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"vài giây trước\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"đang cấu trúc\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Huỷ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Huỷ toàn bộ thao tác\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Huỷ tải lên\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tiếp Tục\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Tạo mới\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ước tính thời gian còn lại\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Phiên bản hiện tại\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Không thể assemble các chunks lại với nhau\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tải lên tệp tin thất bại\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tên tập tin không được kết thúc bằng \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Nếu bạn chọn cả hai, tệp tin đến sẽ có thêm một chữ số vào tên.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Tên tệp tin không hợp lệ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ngày sửa dổi lần cuối không xác định\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Tạo Mới\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Tên tệp tin mới\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Phiên bản mới\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"đã tạm dừng\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Xem trước ảnh\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Đổi tên\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Chọn tất cả\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Chọn tất cả các tập tin đang tồn tại\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Chọn tất cả các tập tin mới\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Bỏ qua\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bỏ qua {count} tệp\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bỏ qua tệp này\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Không rõ dung lượng\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Tải Lên\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Tải lên tệp tin\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Tải lên thư mục\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Tải lên từ thiết bị\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Tải lên đã bị huỷ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Tải lên đã bỏ qua\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Tải lên \"{folder}\" đã bị bỏ qua'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Tiến trình tải lên\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Khi bạn chọn một thư mục để đưa vào, bất kỳ tệp nào trong đó gây xung đột cũng sẽ bị ghi đè.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Khi chọn một thư mục để đưa vào, nội dung sẽ được ghi vào thư mục hiện có, và hệ thống sẽ tự động giải quyết các xung đột một cách chi tiết và cẩn thận.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Bạn muốn giữ tệp nào?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Bạn có thể đổi tên tệp, bỏ qua tệp này, hoặc hủy toàn bộ thao tác.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Bạn cần chọn ít nhất một phiên bản cho mỗi tệp để tiếp tục.\"] } } } } }, { \"locale\": \"zh_CN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DWXXX, 2025\", \"Language-Team\": \"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_CN\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\ngloryandel, 2024\\nDWXXX, 2025\\n\" }, \"msgstr\": [\"Last-Translator: DWXXX, 2025\\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_CN\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是被禁止的文件名或文件夹名。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是被禁止的文件类型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允许包含在文件名或文件夹名中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}文件冲突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"在{dirname}目录下有{count}个文件冲突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩余{seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩余 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"还剩几秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"聚合\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整个操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上传\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"继续\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新建\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估计剩余时间\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"服务端版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"组合区块失败\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"上传文件失败\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['文件名不得以 \"{segment}\" 结尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果同时选择两个版本,则上传文件的名称中将添加一个数字。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"无效文件名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"文件最后修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新文件名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"上传版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暂停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"图片预览\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"选择所有的选择框\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"保留所有服务端版本\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"保留所有上传版本\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳过\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"跳过 {count} 文件\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳过此文件\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"文件大小未知\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上传\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上传文件\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上传文件夹\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"从设备上传\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上传已取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上传已跳过\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['已跳过上传\"{folder}\"'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上传进度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你要保留哪些文件?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以重命名文件、跳过此文件或取消整个操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"每个文件至少选择保留一个版本\"] } } } } }, { \"locale\": \"zh_HK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Café Tango, 2025\", \"Language-Team\": \"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_HK\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nCafé Tango, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Café Tango, 2025\\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_HK\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案或資料夾名稱。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案類型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允許出現在檔案或資料夾名稱中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"組裝\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"創建新\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"無法組裝這些部分\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"無法上傳檔案\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['檔案名不得以 \"{segment}\" 結尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,傳入檔案的名稱將會新增編號。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無效的檔案名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期不詳\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新檔案名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本 \"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重新命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳過\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 個檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"略過這個檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"大小不詳\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上傳資料夾\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"從裝置上傳\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上傳已被取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上傳已被跳過\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 的上傳已被跳過'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以選擇重新命名檔案、跳過此檔案或取消整個操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }, { \"locale\": \"zh_TW\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"黃柏諺 , 2024\", \"Language-Team\": \"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_TW\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n黃柏諺 , 2024\\n\" }, \"msgstr\": [\"Last-Translator: 黃柏諺 , 2024\\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_TW\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,複製的檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"未知大小\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass UploadCancelledError extends Error {\n constructor(cause) {\n super(t(\"Upload has been cancelled\"), { cause });\n }\n}\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/upload\").detectUser().build();\naxiosRetry(axios, { retries: 0 });\nasync function uploadData(url, uploadData2, uploadOptions) {\n const options = {\n headers: {},\n onUploadProgress: () => {\n },\n onUploadRetry: () => {\n },\n retries: 5,\n ...uploadOptions\n };\n let data;\n if (uploadData2 instanceof Blob) {\n data = uploadData2;\n } else {\n data = await uploadData2();\n }\n if (options.destinationFile) {\n options.headers.Destination = options.destinationFile;\n }\n if (!options.headers[\"Content-Type\"]) {\n options.headers[\"Content-Type\"] = \"application/octet-stream\";\n }\n return await axios.request({\n method: \"PUT\",\n url,\n data,\n signal: options.signal,\n onUploadProgress: options.onUploadProgress,\n headers: options.headers,\n \"axios-retry\": {\n retries: options.retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3),\n retryCondition(error) {\n if (error.status === 507) {\n return false;\n }\n if (error.status === 423) {\n return true;\n }\n return isNetworkOrIdempotentRequestError(error);\n },\n onRetry: options.onUploadRetry\n }\n });\n}\nconst getChunk = function(file, start, length) {\n if (start === 0 && file.size <= length) {\n return Promise.resolve(new Blob([file], { type: file.type || \"application/octet-stream\" }));\n }\n return Promise.resolve(new Blob([file.slice(start, start + length)], { type: \"application/octet-stream\" }));\n};\nconst initChunkWorkspace = async function(destinationFile = void 0, retries = 5, isPublic = false, customHeaders = {}) {\n let chunksWorkspace;\n if (isPublic) {\n chunksWorkspace = `${getBaseUrl()}/public.php/dav/uploads/${getSharingToken()}`;\n } else {\n chunksWorkspace = generateRemoteUrl(`dav/uploads/${getCurrentUser()?.uid}`);\n }\n const hash = [...Array(16)].map(() => Math.floor(Math.random() * 16).toString(16)).join(\"\");\n const tempWorkspace = `web-file-upload-${hash}`;\n const url = `${chunksWorkspace}/${tempWorkspace}`;\n const headers = customHeaders;\n if (destinationFile) {\n headers.Destination = destinationFile;\n }\n await axios.request({\n method: \"MKCOL\",\n url,\n headers,\n \"axios-retry\": {\n retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n }\n });\n logger.debug(\"Created temporary upload workspace\", { url });\n return url;\n};\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst getMaxChunksSize = function(fileSize = void 0) {\n const maxChunkSize = window.OC?.appConfig?.files?.max_chunk_size;\n if (maxChunkSize <= 0) {\n return 0;\n }\n if (!Number(maxChunkSize)) {\n return 10 * 1024 * 1024;\n }\n const minimumChunkSize = Math.max(Number(maxChunkSize), 5 * 1024 * 1024);\n if (fileSize === void 0) {\n return minimumChunkSize;\n }\n return Math.max(minimumChunkSize, Math.ceil(fileSize / 1e4));\n};\nvar Status = /* @__PURE__ */ ((Status2) => {\n Status2[Status2[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n Status2[Status2[\"ASSEMBLING\"] = 2] = \"ASSEMBLING\";\n Status2[Status2[\"FINISHED\"] = 3] = \"FINISHED\";\n Status2[Status2[\"CANCELLED\"] = 4] = \"CANCELLED\";\n Status2[Status2[\"FAILED\"] = 5] = \"FAILED\";\n return Status2;\n})(Status || {});\nclass Upload {\n _source;\n _file;\n _isChunked;\n _chunks;\n _size;\n _uploaded = 0;\n _startTime = 0;\n _status = 0;\n _controller;\n _response = null;\n constructor(source, chunked = false, size, file) {\n const chunks = Math.min(getMaxChunksSize() > 0 ? Math.ceil(size / getMaxChunksSize()) : 1, 1e4);\n this._source = source;\n this._isChunked = chunked && getMaxChunksSize() > 0 && chunks > 1;\n this._chunks = this._isChunked ? chunks : 1;\n this._size = size;\n this._file = file;\n this._controller = new AbortController();\n }\n get source() {\n return this._source;\n }\n get file() {\n return this._file;\n }\n get isChunked() {\n return this._isChunked;\n }\n get chunks() {\n return this._chunks;\n }\n get size() {\n return this._size;\n }\n get startTime() {\n return this._startTime;\n }\n set response(response) {\n this._response = response;\n }\n get response() {\n return this._response;\n }\n get uploaded() {\n return this._uploaded;\n }\n /**\n * Update the uploaded bytes of this upload\n */\n set uploaded(length) {\n if (length >= this._size) {\n this._status = this._isChunked ? 2 : 3;\n this._uploaded = this._size;\n return;\n }\n this._status = 1;\n this._uploaded = length;\n if (this._startTime === 0) {\n this._startTime = (/* @__PURE__ */ new Date()).getTime();\n }\n }\n get status() {\n return this._status;\n }\n /**\n * Update this upload status\n */\n set status(status) {\n this._status = status;\n }\n /**\n * Returns the axios cancel token source\n */\n get signal() {\n return this._controller.signal;\n }\n /**\n * Cancel any ongoing requests linked to this upload\n */\n cancel() {\n this._controller.abort();\n this._status = 4;\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst isFileSystemDirectoryEntry = (o) => \"FileSystemDirectoryEntry\" in window && o instanceof FileSystemDirectoryEntry;\nconst isFileSystemFileEntry = (o) => \"FileSystemFileEntry\" in window && o instanceof FileSystemFileEntry;\nconst isFileSystemEntry = (o) => \"FileSystemEntry\" in window && o instanceof FileSystemEntry;\nclass Directory extends File {\n _originalName;\n _path;\n _children;\n constructor(path) {\n super([], basename(path), { type: \"httpd/unix-directory\", lastModified: 0 });\n this._children = /* @__PURE__ */ new Map();\n this._originalName = basename(path);\n this._path = path;\n }\n get size() {\n return this.children.reduce((sum, file) => sum + file.size, 0);\n }\n get lastModified() {\n return this.children.reduce((latest, file) => Math.max(latest, file.lastModified), 0);\n }\n // We need this to keep track of renamed files\n get originalName() {\n return this._originalName;\n }\n get children() {\n return Array.from(this._children.values());\n }\n get webkitRelativePath() {\n return this._path;\n }\n getChild(name) {\n return this._children.get(name) ?? null;\n }\n /**\n * Add multiple children at once\n * @param files The files to add\n */\n async addChildren(files) {\n for (const file of files) {\n await this.addChild(file);\n }\n }\n /**\n * Add a child to the directory.\n * If it is a nested child the parents will be created if not already exist.\n * @param file The child to add\n */\n async addChild(file) {\n const rootPath = this._path && `${this._path}/`;\n if (isFileSystemFileEntry(file)) {\n file = await new Promise((resolve, reject) => file.file(resolve, reject));\n } else if (isFileSystemDirectoryEntry(file)) {\n const reader = file.createReader();\n const entries = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));\n const child = new Directory(`${rootPath}${file.name}`);\n await child.addChildren(entries);\n this._children.set(file.name, child);\n return;\n }\n file = file;\n const filePath = file.webkitRelativePath ?? file.name;\n if (!filePath.includes(\"/\")) {\n this._children.set(file.name, file);\n } else {\n if (!filePath.startsWith(this._path)) {\n throw new Error(`File ${filePath} is not a child of ${this._path}`);\n }\n const relPath = filePath.slice(rootPath.length);\n const name = basename(relPath);\n if (name === relPath) {\n this._children.set(name, file);\n } else {\n const base = relPath.slice(0, relPath.indexOf(\"/\"));\n if (this._children.has(base)) {\n await this._children.get(base).addChild(file);\n } else {\n const child = new Directory(`${rootPath}${base}`);\n await child.addChild(file);\n this._children.set(base, child);\n }\n }\n }\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nvar EtaStatus = /* @__PURE__ */ ((EtaStatus2) => {\n EtaStatus2[EtaStatus2[\"Idle\"] = 0] = \"Idle\";\n EtaStatus2[EtaStatus2[\"Paused\"] = 1] = \"Paused\";\n EtaStatus2[EtaStatus2[\"Running\"] = 2] = \"Running\";\n return EtaStatus2;\n})(EtaStatus || {});\nclass Eta extends TypedEventTarget {\n /** Bytes done */\n _done = 0;\n /** Total bytes to do */\n _total = 0;\n /** Current progress (cached) as interval [0,1] */\n _progress = 0;\n /** Status of the ETA */\n _status = 0;\n /** Time of the last update */\n _startTime = -1;\n /** Total elapsed time for current ETA */\n _elapsedTime = 0;\n /** Current speed in bytes per second */\n _speed = -1;\n /** Expected duration to finish in seconds */\n _eta = Infinity;\n /**\n * Cutoff time for the low pass filter of the ETA.\n * A higher value will consider more history information for calculation,\n * and thus suppress spikes of the speed,\n * but will make the overall resposiveness slower.\n */\n _cutoffTime = 2.5;\n constructor(options = {}) {\n super();\n if (options.start) {\n this.resume();\n }\n if (options.total) {\n this.update(0, options.total);\n }\n this._cutoffTime = options.cutoffTime ?? 2.5;\n }\n /**\n * Add more transferred bytes.\n * @param done Additional bytes done.\n */\n add(done) {\n this.update(this._done + done);\n }\n /**\n * Update the transmission state.\n *\n * @param done The new value of transferred bytes.\n * @param total Optionally also update the total bytes we expect.\n */\n update(done, total) {\n if (this.status !== 2) {\n return;\n }\n if (total && total > 0) {\n this._total = total;\n }\n const deltaDone = done - this._done;\n const deltaTime = (Date.now() - this._startTime) / 1e3;\n this._startTime = Date.now();\n this._elapsedTime += deltaTime;\n this._done = done;\n this._progress = this._done / this._total;\n const historyNeeded = this._cutoffTime + deltaTime;\n if (this._elapsedTime > historyNeeded) {\n const alpha = deltaTime / (deltaTime + 1 / this._cutoffTime);\n const filtered = this._done - deltaDone + (1 - alpha) * deltaDone;\n this._speed = Math.round(filtered / this._elapsedTime);\n } else if (this._speed === -1 && this._elapsedTime > deltaTime) {\n const remaining = this._total - done;\n const eta = remaining / (done / this._elapsedTime);\n if (this._eta !== Infinity || eta <= 2 * this._cutoffTime) {\n this._eta = eta;\n }\n }\n if (this._speed > 0) {\n this._eta = Math.round((this._total - this._done) / this._speed);\n }\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\", { cancelable: false }));\n }\n reset() {\n this._done = 0;\n this._total = 0;\n this._progress = 0;\n this._elapsedTime = 0;\n this._eta = Infinity;\n this._speed = -1;\n this._startTime = -1;\n this._status = 0;\n this.dispatchTypedEvent(\"reset\", new CustomEvent(\"reset\"));\n }\n /**\n * Pause the ETA calculation.\n */\n pause() {\n if (this._status === 2) {\n this._status = 1;\n this._elapsedTime += (Date.now() - this._startTime) / 1e3;\n this.dispatchTypedEvent(\"pause\", new CustomEvent(\"pause\"));\n }\n }\n /**\n * Resume the ETA calculation.\n */\n resume() {\n if (this._status !== 2) {\n this._startTime = Date.now();\n this._status = 2;\n this.dispatchTypedEvent(\"resume\", new CustomEvent(\"resume\"));\n }\n }\n /**\n * Status of the Eta (paused, active, idle).\n */\n get status() {\n return this._status;\n }\n /**\n * Progress (percent done)\n */\n get progress() {\n return Math.round(this._progress * 1e4) / 100;\n }\n /**\n * Estimated time in seconds.\n */\n get time() {\n return this._eta;\n }\n /**\n * Human readable version of the estimated time.\n */\n get timeReadable() {\n if (this._eta === Infinity) {\n return t(\"estimating time left\");\n } else if (this._eta < 10) {\n return t(\"a few seconds left\");\n } else if (this._eta < 60) {\n return n(\"{seconds} seconds left\", \"{seconds} seconds left\", this._eta, { seconds: this._eta });\n }\n const hours = String(Math.floor(this._eta / 3600)).padStart(2, \"0\");\n const minutes = String(Math.floor(this._eta % 3600 / 60)).padStart(2, \"0\");\n const seconds = String(this._eta % 60).padStart(2, \"0\");\n return t(\"{time} left\", { time: `${hours}:${minutes}:${seconds}` });\n }\n /**\n * Transfer speed in bytes per second.\n * Returns `-1` if not yet estimated.\n */\n get speed() {\n return this._speed;\n }\n /**\n * Get the speed in human readable format using file sizes like 10KB/s.\n * Returns the empty string if not yet estimated.\n */\n get speedReadable() {\n return this._speed > 0 ? `${formatFileSize(this._speed, true)}∕s` : \"\";\n }\n}\nvar UploaderStatus = /* @__PURE__ */ ((UploaderStatus2) => {\n UploaderStatus2[UploaderStatus2[\"IDLE\"] = 0] = \"IDLE\";\n UploaderStatus2[UploaderStatus2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n UploaderStatus2[UploaderStatus2[\"PAUSED\"] = 2] = \"PAUSED\";\n return UploaderStatus2;\n})(UploaderStatus || {});\nclass Uploader {\n // Initialized via setter in the constructor\n _destinationFolder;\n _isPublic;\n _customHeaders;\n // Global upload queue\n _uploadQueue = [];\n _jobQueue = new PQueue({\n // Maximum number of concurrent uploads\n // @ts-expect-error TS2339 Object has no defined properties\n concurrency: getCapabilities().files?.chunked_upload?.max_parallel_count ?? 5\n });\n _queueSize = 0;\n _queueProgress = 0;\n _queueStatus = 0;\n _eta = new Eta();\n _notifiers = [];\n /**\n * Initialize uploader\n *\n * @param {boolean} isPublic are we in public mode ?\n * @param {Folder} destinationFolder the context folder to operate, relative to the root folder\n */\n constructor(isPublic = false, destinationFolder) {\n this._isPublic = isPublic;\n this._customHeaders = {};\n if (!destinationFolder) {\n const source = `${davRemoteURL}${davRootPath}`;\n let owner;\n if (isPublic) {\n owner = \"anonymous\";\n } else {\n const user = getCurrentUser()?.uid;\n if (!user) {\n throw new Error(\"User is not logged in\");\n }\n owner = user;\n }\n destinationFolder = new Folder({\n id: 0,\n owner,\n permissions: Permission.ALL,\n root: davRootPath,\n source\n });\n }\n this.destination = destinationFolder;\n logger.debug(\"Upload workspace initialized\", {\n destination: this.destination,\n root: this.root,\n isPublic,\n maxChunksSize: getMaxChunksSize()\n });\n }\n /**\n * Get the upload destination path relative to the root folder\n */\n get destination() {\n return this._destinationFolder;\n }\n /**\n * Set the upload destination path relative to the root folder\n */\n set destination(folder) {\n if (!folder || folder.type !== FileType.Folder || !folder.source) {\n throw new Error(\"Invalid destination folder\");\n }\n logger.debug(\"Destination set\", { folder });\n this._destinationFolder = folder;\n }\n /**\n * Get the root folder\n */\n get root() {\n return this._destinationFolder.source;\n }\n /**\n * Get registered custom headers for uploads\n */\n get customHeaders() {\n return structuredClone(this._customHeaders);\n }\n /**\n * Set a custom header\n * @param name The header to set\n * @param value The string value\n */\n setCustomHeader(name, value = \"\") {\n this._customHeaders[name] = value;\n }\n /**\n * Unset a custom header\n * @param name The header to unset\n */\n deleteCustomerHeader(name) {\n delete this._customHeaders[name];\n }\n /**\n * Get the upload queue\n */\n get queue() {\n return this._uploadQueue;\n }\n reset() {\n this._eta.reset();\n if (this._uploadQueue.length === 0 && this._jobQueue.size === 0) {\n return;\n }\n this._uploadQueue.splice(0, this._uploadQueue.length);\n this._jobQueue.clear();\n this._queueSize = 0;\n this._queueProgress = 0;\n this._queueStatus = 0;\n logger.debug(\"Uploader state reset\");\n }\n /**\n * Pause any ongoing upload(s)\n */\n pause() {\n this._eta.pause();\n this._jobQueue.pause();\n this._queueStatus = 2;\n this.updateStats();\n logger.debug(\"Uploader paused\");\n }\n /**\n * Resume any pending upload(s)\n */\n start() {\n this._eta.resume();\n this._jobQueue.start();\n this._queueStatus = 1;\n this.updateStats();\n logger.debug(\"Uploader resumed\");\n }\n /**\n * Get the estimation for the uploading time.\n */\n get eta() {\n return this._eta;\n }\n /**\n * Get the upload queue stats\n */\n get info() {\n return {\n size: this._queueSize,\n progress: this._queueProgress,\n status: this._queueStatus\n };\n }\n updateStats() {\n const size = this._uploadQueue.map((upload2) => upload2.size).reduce((partialSum, a) => partialSum + a, 0);\n const uploaded = this._uploadQueue.map((upload2) => upload2.uploaded).reduce((partialSum, a) => partialSum + a, 0);\n this._eta.update(uploaded, size);\n this._queueSize = size;\n this._queueProgress = uploaded;\n if (this._queueStatus !== 2) {\n const pending = this._uploadQueue.find(({ status }) => [Status.INITIALIZED, Status.UPLOADING, Status.ASSEMBLING].includes(status));\n if (this._jobQueue.size > 0 || pending) {\n this._queueStatus = 1;\n } else {\n this.eta.reset();\n this._queueStatus = 0;\n }\n }\n }\n addNotifier(notifier) {\n this._notifiers.push(notifier);\n }\n /**\n * Notify listeners of the upload completion\n * @param upload The upload that finished\n */\n _notifyAll(upload2) {\n for (const notifier of this._notifiers) {\n try {\n notifier(upload2);\n } catch (error) {\n logger.warn(\"Error in upload notifier\", { error, source: upload2.source });\n }\n }\n }\n /**\n * Uploads multiple files or folders while preserving the relative path (if available)\n * @param {string} destination The destination path relative to the root folder. e.g. /foo/bar (a file \"a.txt\" will be uploaded then to \"/foo/bar/a.txt\")\n * @param {Array} files The files and/or folders to upload\n * @param {Function} callback Callback that receives the nodes in the current folder and the current path to allow resolving conflicts, all nodes that are returned will be uploaded (if a folder does not exist it will be created)\n * @return Cancelable promise that resolves to an array of uploads\n *\n * @example\n * ```ts\n * // For example this is from handling the onchange event of an input[type=file]\n * async handleFiles(files: File[]) {\n * this.uploads = await this.uploader.batchUpload('uploads', files, this.handleConflicts)\n * }\n *\n * async handleConflicts(nodes: File[], currentPath: string) {\n * const conflicts = getConflicts(nodes, this.fetchContent(currentPath))\n * if (conflicts.length === 0) {\n * // No conflicts so upload all\n * return nodes\n * } else {\n * // Open the conflict picker to resolve conflicts\n * try {\n * const { selected, renamed } = await openConflictPicker(currentPath, conflicts, this.fetchContent(currentPath), { recursive: true })\n * return [...selected, ...renamed]\n * } catch (e) {\n * return false\n * }\n * }\n * }\n * ```\n */\n batchUpload(destination, files, callback) {\n if (!callback) {\n callback = async (files2) => files2;\n }\n return new PCancelable(async (resolve, reject, onCancel) => {\n const rootFolder = new Directory(\"\");\n await rootFolder.addChildren(files);\n const target = `${this.root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const upload2 = new Upload(target, false, 0, rootFolder);\n upload2.status = Status.UPLOADING;\n this._uploadQueue.push(upload2);\n logger.debug(\"Starting new batch upload\", { target });\n try {\n const client = davGetClient(this.root, this._customHeaders);\n const promise = this.uploadDirectory(destination, rootFolder, callback, client);\n onCancel(() => promise.cancel());\n const uploads = await promise;\n upload2.status = Status.FINISHED;\n resolve(uploads);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n logger.info(\"Upload cancelled by user\", { error });\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else {\n logger.error(\"Error in batch upload\", { error });\n upload2.status = Status.FAILED;\n reject(error);\n }\n } finally {\n this._uploadQueue.splice(this._uploadQueue.indexOf(upload2), 1);\n this._notifyAll(upload2);\n this.updateStats();\n }\n });\n }\n /**\n * Helper to create a directory wrapped inside an Upload class\n * @param destination Destination where to create the directory\n * @param directory The directory to create\n * @param client The cached WebDAV client\n */\n createDirectory(destination, directory, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n const rootPath = `${this.root.replace(/\\/$/, \"\")}/${folderPath.replace(/^\\//, \"\")}`;\n if (!directory.name) {\n throw new Error(\"Can not create empty directory\");\n }\n const currentUpload = new Upload(rootPath, false, 0, directory);\n this._uploadQueue.push(currentUpload);\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n currentUpload.signal.addEventListener(\"abort\", () => reject(t(\"Upload has been cancelled\")));\n await this._jobQueue.add(async () => {\n currentUpload.status = Status.UPLOADING;\n try {\n await client.createDirectory(folderPath, { signal: abort.signal });\n resolve(currentUpload);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n currentUpload.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else if (error && typeof error === \"object\" && \"status\" in error && error.status === 405) {\n logger.debug(\"Directory already exists, writing into it\", { directory: directory.name });\n currentUpload.status = Status.FINISHED;\n resolve(currentUpload);\n } else {\n currentUpload.status = Status.FAILED;\n reject(error);\n }\n } finally {\n this._notifyAll(currentUpload);\n this.updateStats();\n }\n });\n });\n }\n // Helper for uploading directories (recursively)\n uploadDirectory(destination, directory, callback, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n const selectedForUpload = await callback(directory.children, folderPath);\n if (selectedForUpload === false) {\n logger.debug(\"Upload canceled by user\", { directory });\n reject(new UploadCancelledError(\"Conflict resolution cancelled by user\"));\n return;\n } else if (selectedForUpload.length === 0 && directory.children.length > 0) {\n logger.debug(\"Skipping directory, as all files were skipped by user\", { directory });\n resolve([]);\n return;\n }\n const directories = [];\n const uploads = [];\n abort.signal.addEventListener(\"abort\", () => {\n directories.forEach((upload2) => upload2.cancel());\n uploads.forEach((upload2) => upload2.cancel());\n });\n logger.debug(\"Start directory upload\", { directory });\n try {\n if (directory.name) {\n uploads.push(this.createDirectory(destination, directory, client));\n await uploads.at(-1);\n }\n for (const node of selectedForUpload) {\n if (node instanceof Directory) {\n directories.push(this.uploadDirectory(folderPath, node, callback, client));\n } else {\n uploads.push(this.upload(`${folderPath}/${node.name}`, node));\n }\n }\n const resolvedUploads = await Promise.all(uploads);\n const resolvedDirectoryUploads = await Promise.all(directories);\n resolve([resolvedUploads, ...resolvedDirectoryUploads].flat());\n } catch (e) {\n abort.abort(e);\n reject(e);\n }\n });\n }\n /**\n * Upload a file to the given path\n * @param {string} destination the destination path relative to the root folder. e.g. /foo/bar.txt\n * @param {File|FileSystemFileEntry} fileHandle the file to upload\n * @param {string} root the root folder to upload to\n * @param retries number of retries\n */\n upload(destination, fileHandle, root, retries = 5) {\n root = root || this.root;\n const destinationPath = `${root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const { origin } = new URL(destinationPath);\n const encodedDestinationFile = origin + encodePath(destinationPath.slice(origin.length));\n this.eta.resume();\n logger.debug(`Uploading ${fileHandle.name} to ${encodedDestinationFile}`);\n const promise = new PCancelable(async (resolve, reject, onCancel) => {\n if (isFileSystemFileEntry(fileHandle)) {\n fileHandle = await new Promise((resolve2) => fileHandle.file(resolve2, reject));\n }\n const file = fileHandle;\n const supportsPublicChunking = getCapabilities().dav?.public_shares_chunking ?? false;\n const maxChunkSize = getMaxChunksSize(\"size\" in file ? file.size : void 0);\n const disabledChunkUpload = this._isPublic && !supportsPublicChunking || maxChunkSize === 0 || \"size\" in file && file.size < maxChunkSize;\n const upload2 = new Upload(destinationPath, !disabledChunkUpload, file.size, file);\n this._uploadQueue.push(upload2);\n this.updateStats();\n onCancel(upload2.cancel);\n if (!disabledChunkUpload) {\n logger.debug(\"Initializing chunked upload\", { file, upload: upload2 });\n const tempUrl = await initChunkWorkspace(encodedDestinationFile, retries, this._isPublic, this._customHeaders);\n const chunksQueue = [];\n for (let chunk = 0; chunk < upload2.chunks; chunk++) {\n const bufferStart = chunk * maxChunkSize;\n const bufferEnd = Math.min(bufferStart + maxChunkSize, upload2.size);\n const blob = () => getChunk(file, bufferStart, maxChunkSize);\n const request2 = () => {\n let chunkBytes = 0;\n return uploadData(\n `${tempUrl}/${chunk + 1}`,\n blob,\n {\n signal: upload2.signal,\n destinationFile: encodedDestinationFile,\n retries,\n onUploadProgress: ({ bytes }) => {\n const progressBytes = bytes * 0.9;\n chunkBytes += progressBytes;\n upload2.uploaded += progressBytes;\n this.updateStats();\n },\n onUploadRetry: () => {\n upload2.uploaded -= chunkBytes;\n chunkBytes = 0;\n this.updateStats();\n },\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"OC-Total-Length\": file.size,\n \"Content-Type\": \"application/octet-stream\"\n }\n }\n ).then(() => {\n upload2.uploaded += bufferEnd - bufferStart - chunkBytes;\n this.updateStats();\n }).catch((error) => {\n if (error?.response?.status === 507) {\n logger.error(\"Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks\", { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status.FAILED;\n throw error;\n }\n if (!isCancel(error)) {\n logger.error(`Chunk ${chunk + 1} ${bufferStart} - ${bufferEnd} uploading failed`, { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status.FAILED;\n }\n throw error;\n });\n };\n chunksQueue.push(this._jobQueue.add(request2));\n }\n const request = async () => {\n try {\n await Promise.all(chunksQueue);\n upload2.status = Status.ASSEMBLING;\n this.updateStats();\n upload2.response = await axios.request({\n method: \"MOVE\",\n url: `${tempUrl}/.file`,\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"OC-Total-Length\": file.size,\n Destination: encodedDestinationFile\n }\n });\n upload2.status = Status.FINISHED;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else {\n upload2.status = Status.FAILED;\n reject(t(\"Failed to assemble the chunks together\"));\n }\n axios.request({\n method: \"DELETE\",\n url: `${tempUrl}`\n });\n } finally {\n this._notifyAll(upload2);\n }\n };\n this._jobQueue.add(request);\n } else {\n logger.debug(\"Initializing regular upload\", { file, upload: upload2 });\n const blob = await getChunk(file, 0, upload2.size);\n const request = async () => {\n try {\n upload2.response = await uploadData(\n encodedDestinationFile,\n blob,\n {\n signal: upload2.signal,\n onUploadProgress: ({ bytes }) => {\n upload2.uploaded += bytes * 0.9;\n this.updateStats();\n },\n onUploadRetry: () => {\n upload2.uploaded = 0;\n this.updateStats();\n },\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"Content-Type\": file.type\n }\n }\n );\n upload2.uploaded = upload2.size;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n return;\n }\n if (error?.response) {\n upload2.response = error.response;\n }\n upload2.status = Status.FAILED;\n logger.error(`Failed uploading ${file.name}`, { error, file, upload: upload2 });\n reject(t(\"Failed to upload the file\"));\n }\n this._notifyAll(upload2);\n };\n this._jobQueue.add(request);\n this.updateStats();\n }\n this._jobQueue.onIdle().then(() => this.reset());\n return upload2;\n });\n return promise;\n }\n /**\n * Create modification time headers if valid value is available.\n * It can be invalid on Android devices if SD cards with NTFS / FAT are used,\n * as those files might use the NT epoch for time so the value will be negative.\n *\n * @param file The file to upload\n */\n _mtimeHeader(file) {\n const mtime = Math.floor(file.lastModified / 1e3);\n if (mtime > 0) {\n return { \"X-OC-Mtime\": mtime };\n }\n return {};\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction getUploader(isPublic = isPublicShare(), forceRecreate = false) {\n if (forceRecreate || window._nc_uploader === void 0) {\n window._nc_uploader = new Uploader(isPublic);\n }\n return window._nc_uploader;\n}\nfunction upload(destinationPath, file) {\n const uploader = getUploader();\n uploader.upload(destinationPath, file);\n return uploader;\n}\nfunction hasConflict(files, content) {\n return getConflicts(files, content).length > 0;\n}\nfunction getConflicts(files, content) {\n const contentNames = content.map((node) => node.basename);\n const conflicts = files.filter((node) => {\n const name = \"basename\" in node ? node.basename : node.name;\n return contentNames.indexOf(name) !== -1;\n });\n return conflicts;\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-DuPiUBHl.mjs\"));\n return new Promise((resolve, reject) => {\n const picker = new Vue({\n name: \"ConflictPickerRoot\",\n render: (h) => h(ConflictPicker, {\n props: {\n dirname,\n conflicts,\n content,\n recursiveUpload: options?.recursive === true\n },\n on: {\n submit(results) {\n resolve(results);\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n },\n cancel(error) {\n reject(error ?? new Error(\"Canceled\"));\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n }\n }\n })\n });\n picker.$mount();\n document.body.appendChild(picker.$el);\n });\n}\nfunction showInvalidFilenameDialog(error) {\n const InvalidFilenameDialog = defineAsyncComponent(() => import(\"./InvalidFilenameDialog-BM2VDeLo.mjs\"));\n const { promise, reject, resolve } = Promise.withResolvers();\n spawnDialog(\n InvalidFilenameDialog,\n {\n error,\n validateFilename\n },\n (...rest) => {\n const [{ skip, rename }] = rest;\n if (skip) {\n resolve(false);\n } else if (rename) {\n resolve(rename);\n } else {\n reject();\n }\n }\n );\n return promise;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction uploadConflictHandler(contentsCallback) {\n return async (nodes, path) => {\n try {\n const content = await contentsCallback(path).catch(() => []);\n const conflicts = getConflicts(nodes, content);\n if (conflicts.length > 0) {\n const { selected, renamed } = await openConflictPicker(path, conflicts, content, { recursive: true });\n nodes = [\n ...nodes.filter((node) => !conflicts.includes(node)),\n ...selected,\n ...renamed\n ];\n }\n const filesToUpload = [];\n for (const file of nodes) {\n try {\n validateFilename(file.name);\n filesToUpload.push(file);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n logger.error(`Unexpected error while validating ${file.name}`, { error });\n throw error;\n }\n let newName = await showInvalidFilenameDialog(error);\n if (newName !== false) {\n newName = getUniqueName(newName, nodes.map((node) => node.name));\n Object.defineProperty(file, \"name\", { value: newName });\n filesToUpload.push(file);\n }\n }\n }\n if (filesToUpload.length === 0 && nodes.length > 0) {\n const folder = basename(path);\n showInfo(\n folder ? t('Upload of \"{folder}\" has been skipped', { folder }) : t(\"Upload has been skipped\")\n );\n }\n return filesToUpload;\n } catch (error) {\n logger.debug(\"Upload has been cancelled\", { error });\n showWarning(t(\"Upload has been cancelled\"));\n return false;\n }\n };\n}\nfunction normalizeComponent(scriptExports, render6, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render6) {\n options.render = render6;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main$4 = {\n name: \"CancelIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon cancel-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst IconCancel = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconUpload = __component__$1.exports;\nconst _sfc_main = defineComponent({\n name: \"UploadPicker\",\n components: {\n IconCancel,\n IconFolderUpload,\n IconPlus,\n IconUpload,\n NcActionButton,\n NcActionCaption,\n NcActionSeparator,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcProgressBar\n },\n props: {\n accept: {\n type: Array,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the \"new\"-menu for this UploadPicker instance\n */\n noMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the button label\n */\n noLabel: {\n type: Boolean,\n default: false\n },\n /**\n * Make the \"New\"-button primary color.\n */\n primary: {\n type: Boolean,\n default: false\n },\n destination: {\n type: Folder,\n default: void 0\n },\n allowFolders: {\n type: Boolean,\n default: false\n },\n /**\n * List of file present in the destination folder\n * It is also possible to provide a function that takes a relative path to the current directory and returns the content of it\n * Note: If a function is passed it should return the current base directory when no path or an empty is passed\n */\n content: {\n type: [Array, Function],\n default: () => []\n },\n /**\n * Overwrite forbidden characters (by default the capabilities of the server are used)\n * @deprecated Deprecated and will be removed in the next major version\n */\n forbiddenCharacters: {\n type: Array,\n default: () => []\n }\n },\n setup() {\n return {\n t,\n // non reactive data / properties\n progressTimeId: `nc-uploader-progress-${Math.random().toString(36).slice(7)}`\n };\n },\n data() {\n return {\n newFileMenuEntries: [],\n openedMenu: false,\n uploadManager: getUploader()\n };\n },\n computed: {\n menuEntriesUpload() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.UploadFromDevice);\n },\n menuEntriesNew() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.CreateNew);\n },\n menuEntriesOther() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.Other);\n },\n /**\n * Check whether the current browser supports uploading directories\n * Hint: This does not check if the current connection supports this, as some browsers require a secure context!\n */\n canUploadFolders() {\n return this.allowFolders && \"webkitdirectory\" in document.createElement(\"input\");\n },\n queue() {\n return this.uploadManager.queue;\n },\n hasFailure() {\n return this.queue.some((upload2) => upload2.status === Status.FAILED);\n },\n isAssembling() {\n return this.queue.some((upload2) => upload2.status === Status.ASSEMBLING);\n },\n isUploading() {\n return this.queue.some((upload2) => upload2.status !== Status.CANCELLED);\n },\n isOnlyAssembling() {\n return this.isAssembling && this.queue.every((upload2) => (\n // ignore empty uploads or meta uploads\n upload2.size === 0 || upload2.status === Status.ASSEMBLING || upload2.status === Status.FINISHED\n ));\n },\n isPaused() {\n return this.uploadManager.info?.status === UploaderStatus.PAUSED;\n },\n buttonLabel() {\n return this.noMenu ? t(\"Upload\") : t(\"New\");\n },\n haveMenu() {\n return !((this.noMenu || this.newFileMenuEntries.length === 0) && !this.canUploadFolders);\n }\n },\n watch: {\n allowFolders: {\n immediate: true,\n handler() {\n if (typeof this.content !== \"function\" && this.allowFolders) {\n logger.error(\"[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function\");\n }\n }\n },\n destination(destination) {\n this.setDestination(destination);\n },\n isPaused(isPaused) {\n if (isPaused) {\n this.$emit(\"paused\", this.queue);\n } else {\n this.$emit(\"resumed\", this.queue);\n }\n }\n },\n beforeMount() {\n if (this.destination) {\n this.setDestination(this.destination);\n }\n this.uploadManager.addNotifier(this.onUploadCompletion);\n useHotKey(\"u\", this.onKeyDown, {\n stop: true,\n prevent: true,\n shift: true\n });\n useHotKey(\"Escape\", this.onKeyDown, {\n stop: true,\n prevent: true\n });\n logger.debug(\"UploadPicker initialised\");\n },\n methods: {\n etaTimeAndSpeed() {\n const speed = this.uploadManager.eta.speedReadable;\n if (speed) {\n return `${this.uploadManager.eta.timeReadable} (${speed})`;\n }\n return this.uploadManager.eta.timeReadable;\n },\n /**\n * Handle clicking a new-menu entry\n * @param entry The entry that was clicked\n */\n async onClick(entry) {\n entry.handler(\n this.destination,\n await this.getContent().catch(() => [])\n );\n },\n /**\n * Trigger file picker\n * @param uploadFolders Upload folders\n */\n onTriggerPick(uploadFolders = false) {\n const input = this.$refs.input;\n if (this.canUploadFolders) {\n input.webkitdirectory = uploadFolders;\n }\n this.$nextTick(() => input.click());\n },\n /**\n * Helper for backwards compatibility that queries the content of the current directory\n * @param path The current path\n */\n async getContent(path) {\n return Array.isArray(this.content) ? this.content : await this.content(path);\n },\n /**\n * Start uploading\n */\n async onPick() {\n const input = this.$refs.input;\n const files = input.files ? Array.from(input.files) : [];\n try {\n await this.uploadManager.batchUpload(\"\", files, uploadConflictHandler(this.getContent));\n } catch (error) {\n logger.debug(\"Error while uploading\", { error });\n } finally {\n this.resetForm();\n }\n },\n resetForm() {\n const form = this.$refs.form;\n form?.reset();\n },\n /**\n * Cancel ongoing queue\n */\n onCancel() {\n this.uploadManager.queue.forEach((upload2) => {\n upload2.cancel();\n });\n this.resetForm();\n },\n setDestination(destination) {\n if (!this.destination) {\n logger.debug(\"Invalid destination\");\n return;\n }\n this.uploadManager.destination = destination;\n this.newFileMenuEntries = getNewFileMenuEntries(destination);\n },\n onUploadCompletion(upload2) {\n if (upload2.status === Status.FAILED) {\n this.$emit(\"failed\", upload2);\n } else {\n this.$emit(\"uploaded\", upload2);\n }\n },\n onKeyDown(event) {\n if (event.key === \"u\") {\n if (this.haveMenu) {\n this.openedMenu = true;\n return;\n }\n this.onTriggerPick();\n }\n if (event.key === \"Escape\" && this.openedMenu) {\n this.openedMenu = false;\n }\n }\n }\n});\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _vm.destination ? _c(\"form\", { ref: \"form\", staticClass: \"upload-picker\", class: { \"upload-picker--uploading\": _vm.isUploading, \"upload-picker--paused\": _vm.isPaused }, attrs: { \"data-cy-upload-picker\": \"\" } }, [!_vm.haveMenu ? _c(\"NcButton\", { attrs: { \"aria-label\": _vm.buttonLabel, \"disabled\": _vm.disabled, \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }, !_vm.isUploading ? { key: \"default\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.buttonLabel) + \" \")];\n }, proxy: true } : null], null, true) }) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.buttonLabel, \"menu-name\": _vm.noLabel ? void 0 : _vm.buttonLabel, \"open\": _vm.openedMenu, \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"update:open\": function($event) {\n _vm.openedMenu = $event;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1991456921) }, [_c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Upload from device\") } }), _c(\"NcActionButton\", { attrs: { \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"close-after-click\": true }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 337456192) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload files\")) + \" \")]), _vm.canUploadFolders ? _c(\"NcActionButton\", { attrs: { \"close-after-click\": \"\", \"data-cy-upload-picker-add-folders\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-folder\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick(true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconFolderUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 931184598) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload folders\")) + \" \")]) : _vm._e(), !_vm.noMenu ? _vm._l(_vm.menuEntriesUpload, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n }) : _vm._e(), !_vm.noMenu && _vm.menuEntriesNew.length > 0 ? [_c(\"NcActionSeparator\"), _c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Create new\") } }), _vm._l(_vm.menuEntriesNew, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e(), !_vm.noMenu && _vm.menuEntriesOther.length > 0 ? [_c(\"NcActionSeparator\"), _vm._l(_vm.menuEntriesOther, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e()], 2), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.isUploading, expression: \"isUploading\" }], staticClass: \"upload-picker__progress\" }, [_c(\"NcProgressBar\", { attrs: { \"aria-label\": _vm.t(\"Upload progress\"), \"aria-describedby\": _vm.progressTimeId, \"data-cy-upload-picker-progress\": \"\", \"error\": _vm.hasFailure, \"value\": _vm.uploadManager.eta.progress, \"size\": \"medium\" } }), _c(\"p\", { attrs: { \"id\": _vm.progressTimeId, \"data-cy-upload-picker-progress-label\": \"\" } }, [_vm.isPaused ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"paused\")) + \" \")]) : _vm.isOnlyAssembling ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"assembling\")) + \" \")]) : _c(\"span\", { attrs: { \"title\": _vm.etaTimeAndSpeed() } }, [_vm._v(\" \" + _vm._s(_vm.uploadManager.eta.timeReadable) + \" \"), _vm.uploadManager.eta.speedReadable && _vm.uploadManager.eta.time >= 60 ? _c(\"span\", [_vm._v(\" (\" + _vm._s(_vm.uploadManager.eta.speedReadable) + \") \")]) : _vm._e()])])], 1), _vm.isUploading && !_vm.isOnlyAssembling ? _c(\"NcButton\", { staticClass: \"upload-picker__cancel\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.t(\"Cancel uploads\"), \"data-cy-upload-picker-cancel\": \"\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconCancel\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3076329829) }) : _vm._e(), _c(\"input\", { ref: \"input\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join?.(\", \"), \"multiple\": _vm.multiple, \"data-cy-upload-picker-input\": \"\", \"type\": \"file\" }, on: { \"change\": _vm.onPick } })], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a66c1264\"\n);\nconst UploadPicker = __component__.exports;\nexport {\n EtaStatus as E,\n Status as S,\n Upload as U,\n isFileSystemFileEntry as a,\n n as b,\n Uploader as c,\n UploaderStatus as d,\n getConflicts as e,\n uploadConflictHandler as f,\n getUploader as g,\n hasConflict as h,\n isFileSystemEntry as i,\n UploadPicker as j,\n logger as l,\n normalizeComponent as n,\n openConflictPicker as o,\n t,\n upload as u\n};\n//# sourceMappingURL=index-DPkUyJ8g.mjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1035\":\"da08d310d18692ca4e27\",\"1140\":\"dd55e1cf2dab9870eea9\",\"1764\":\"3654558a3474ec02b609\",\"2221\":\"5cdd551ed83d9a12c3ed\",\"2457\":\"ce6348bfa704a5bf56fb\",\"2915\":\"0ea964602d304dd64718\",\"4271\":\"101cdb0f1357424796fd\",\"5448\":\"71cfe268d6f1213c4735\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"8ac07126adf0759a3464\",\"6798\":\"55fb835b251fd3f7de19\",\"7471\":\"b4ac70873a3ab192efd0\",\"7859\":\"5bcb1bbacda3204063dd\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"0f63c2eb085d7b08be1b\",\"9281\":\"29ef7f217a0c6b239922\",\"9906\":\"24447948ddfe6cf1ef05\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 1171;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t1171: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(30312)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","queue","PQueue","concurrency","requestConversion","fileId","targetMimeType","axios","post","generateOcsUrl","ACTION_CONVERT","initialUserConfig","loadState","crop_image_previews","default_view","folder_tree","grid_view","show_files_extensions","show_hidden","show_mime_column","sort_favorites_first","sort_folders_first","show_dialog_deletion","show_dialog_file_extension","useUserConfigStore","defineStore","userConfig","ref","subscribe","key","value","set","onUpdate","update","async","getCurrentUser","put","generateUrl","emit","isTrashbinEnabled","getCapabilities","files","undelete","canUnshareOnly","nodes","every","node","attributes","canDisconnectOnly","displayName","view","length","t","id","hasSharedItems","some","hasDeleteItems","isMixedUnshareAndDelete","type","FileType","File","isAllFiles","Folder","isAllFolders","shouldAskForConfirmation","getPinia","askConfirmation","message","n","count","Promise","resolve","window","OC","dialogs","confirmDestructive","YES_NO_BUTTONS","confirm","confirmClasses","cancel","decision","deleteNode","delete","encodedSource","action","iconSvgInline","enabled","allow_delete","map","permissions","permission","Permission","DELETE","exec","isCalledFromEventListener","Error","stack","toLocaleLowerCase","includes","error","logger","source","execBatch","all","promises","add","destructive","order","hotkey","description","isDownloadable","READ","downloadAttribute","JSON","parse","find","scope","undefined","default","DefaultType","DEFAULT","isDavResource","downloadNodes","showError","folder","directory","filesStore","useFilesStore","pathsStore","usePathsStore","getRoot","getPath","getNode","getCurrentDirectory","path","Array","fill","triggerDownload","url","name","head","hiddenElement","document","createElement","download","href","click","longestCommonPath","first","second","firstSegments","split","filter","Boolean","secondSegments","base","index","segment","entries","displayname","URL","searchParams","append","pathname","slice","filenames","decodeURIComponent","stringify","at","shouldFavorite","StarOutlineSvg","StarSvg","isPublicShare","root","startsWith","NONE","willFavorite","favoriteNode","encodePath","tags","TAG_FAVORITE","dirname","Vue","favorite","sharePermissions","MoveCopyAction","canMove","minPermission","reduce","min","Math","ALL","canCopy","attribute","canDownload","CREATE","HintException","getActionForNodes","MOVE","COPY","MOVE_OR_COPY","FolderMoveSvg","context","this","target","dir","reject","promise","withResolvers","fileIDs","fileid","filePicker","getFilePickerBuilder","allowDirectories","setFilter","setCanPick","setMimeTypeFilter","setMultiSelect","startAt","setButtonFactory","selection","buttons","basename","dirnames","paths","push","label","escape","sanitize","variant","icon","CopyIconSvg","callback","destination","build","pick","catch","debug","FilePickerClosed","openFilePickerForAction","result","fromAsync","method","overwrite","nameMapping","Map","otherNodes","getContents","contents","conflicts","getConflicts","nodesToRename","content","c","openConflictPicker","skipped","renamed","usedNames","newName","getUniqueName","ignoreFileExtension","actionFinished","mode","sources","text","toast","showLoading","hideToast","createLoadingNotification","join","NodeStatus","LOADING","client","getClient","currentPath","defaultRootPath","destinationPath","get","copyFile","data","stat","details","getDefaultPropfind","resultToNode","moveFile","response","status","parser","DOMParser","parseFromString","querySelector","textContent","handleCopyMoveNodesTo","FolderSvg","OCP","Files","Router","goToRoute","String","HIDDEN","SEARCH_VIEW_ID","openfile","WRITE","openLocalClient","dialog","DialogBuilder","setName","setText","setButtons","show","confirmLocalEditDialog","OCA","Viewer","open","attemptOpenLocalClient","link","uid","location","host","ocs","token","parentNode","parentPermissions","UPDATE","getSidebar","available","sidebar","FilenameFilter","FileListFilter","constructor","super","query","updateQuery","queryParts","searchQuery","part","reset","trim","filterUpdated","chips","onclick","store","useSearchStore","updateChips","HiddenFilesFilter","showHidden","hidden","N","Symbol","toStringTag","startOfToday","Date","setHours","startOfLastWeek","timePresets","time","year","getFullYear","setMonth","setFullYear","timeRange","timeValue","getTime","_defineComponent","__name","props","setup","__props","selectedOption","watch","preset","setPreset","onReset","onMounted","f","addEventListener","onUnmounted","removeEventListener","__sfc","NcDateTimePicker","NcButton","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_vm","_c","_self","_setup","_setupProxy","_l","attrs","on","$event","_v","_s","model","$$v","expression","_e","tagName","ModifiedFilter","_defineProperty","svgCalendarRangeOutline","currentPreset","mtime","dispatchEvent","CustomEvent","currentInstance","resetFilter","typePresets","colorize","mime","svgFolder","getComputedStyle","body","getPropertyValue","svg","color","replace","selectedOptions","onDeselect","event","option","detail","toggleOption","selected","o","setPresets","presets","NcIconSvgWrapper","class","$style","fileListFilterType","fileType","scopedSlots","_u","fn","proxy","TypeFilter","currentPresets","mimeList","previous","current","toLowerCase","MimeTypeList","aliases","$props","removeFilterPreset","presetId","filtered","defaultName","otherNames","emits","localDefaultName","nameInput","formElement","validity","isHiddenFileName","computed","focusInput","nextTick","input","$el","extname","focus","setSelectionRange","watchEffect","validateFilename","InvalidFilenameError","reason","InvalidFilenameErrorReason","Character","char","ReservedName","Extension","match","extension","getFilenameValidity","setCustomValidity","reportValidity","submit","requestSubmit","NcDialog","NcNoteCard","NcTextField","staticClass","preventDefault","newNodeName","folderContent","labels","contentNames","spawnDialog","NewNodeDialog","folderName","entry","handler","encodeURIComponent","headers","Overwrite","parseInt","createNewFolder","owner","showSuccess","TemplatePickerVue","defineAsyncComponent","TemplatePicker","templatesEnabled","templatesPath","templatePath","copySystemTemplates","info","templates_path","initTemplatesFolder","removeNewFileMenuEntry","navigator","noRewrite","getRootUrl","registration","serviceWorker","register","filesContents","getFavoriteNodes","signal","getRemoteURL","getRootPath","aborted","DOMException","generateFavoriteFolderView","View","generateIdFromPath","params","parent","columns","str","hash","i","charCodeAt","hashCode","folderTreeId","sourceRoot","collator","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","compareNodes","a","b","compare","getTreeNodes","tree","sortedTree","toSorted","children","encodeSource","getFolderTreeNodes","depth","withParents","URLSearchParams","getFiles","origin","getSourceParent","Navigation","getNavigation","intervalCap","interval","isFolderTreeEnabled","showHiddenFiles","folderTreeView","caption","FolderMultipleSvg","loadChildViews","treeView","loading","loaded","search","registerNodeViews","onCreateNode","onDeleteNode","onMoveNode","onUserConfigUpdated","views","isRegistered","generateNodeView","remove","expanded","getLoadChildViews","updateTreeChildren","cachedNodes","getNodesByPath","active","viewId","removeFolderView","oldSource","newPath","oldPath","childViews","isSamePath","currentUserId","isPersonalFile","mountType","then","VIEW_ID","lastTwoWeeksTimestamp","round","now","recentLimit","filterHidden","getRecentSearch","results","filename","emptyTitle","emptyCaption","defaultSortKey","actions","file_conversions","to","from","generateIconSvg","newFile","fetchNode","newFileId","toString","isAxiosError","meta","convertFile","fileIds","conversions","allSettled","failed","messages","Set","size","currentDir","newPaths","newFiles","forEach","file","convertFiles","registerFileAction","registerConvertActions","deleteAction","downloadAction","editLocallyAction","favoriteAction","moveOrCopyAction","openFolderAction","openInFilesAction","renameAction","sidebarAction","viewInFolderAction","addNewFileMenuEntry","newFolderEntry","newTemplatesFolder","templates","provider","app","templatePicker","mountingPoint","appendChild","render","h","methods","args","$refs","picker","el","getTemplatePicker","registerTemplateEntries","controller","AbortController","favoriteFolders","favoriteFoldersViews","addToFavorites","removePathFromFavorites","favoriteFolder","updateNodeFromFavorites","updateAndSortViews","sort","localeCompare","ignorePunctuation","findIndex","splice","registerFavoritesView","registerFilesView","hasPersonalFilesView","defaultView","registerRecentView","registerSearchView","registerFolderTreeView","registerFileListFilter","WrappedComponent","wrap","FileListFilterType","Object","defineProperty","prototype","customElements","define","registerTypeFilter","FileListFilterModified","registerModifiedFilter","registerSidebarAction","starSvg","starOutlineSvg","onClick","registerPreviewServiceWorker","registerDavProperty","nc","_nc_newfilemenu","Proxy","getNewFileMenu","prop","getLoggerBuilder","setApp","detectUser","searchStore","propfindPayload","contentsResponse","getDirectoryContents","includeSelf","defaultGetContents","getDirectoryByPath","rootPath","searchNodes","getLocalSearch","user","getDavNameSpaces","getDavProperties","escapeHTML","getBaseUrl","dummyFolder","useActiveStore","activeAction","shallowRef","activeNode","activeView","activeFolder","onDeletedNode","onChangedView","navigation","initialize","roots","getNodes","getNodesById","values","service","updateNodes","newNodes","acc","activeStore","deleteNodes","fromEntries","ourNode","_children","setRoot","_nc_files_pinia","createPinia","state","getters","addPath","payload","deletePath","onCreatedNode","addNodeToParentChildren","deleteNodeFromParentChildren","onMovedNode","oldNode","parentSource","_initialized","updateSearch","old","onViewChanged","router","flat","updateRouter","debounce","isSearch","quota","oldQuery","defaultRemoteURL","instance","emptyView","$destroy","$mount","FILES_VIEW_ID","___CSS_LOADER_EXPORT___","module","defaultDavProperties","defaultDavNamespaces","d","oc","namespace","s","davNamespaces","davProperties","namespaces","l","warn","keys","ns","lastModified","remoteURL","setHeaders","requesttoken","patch","headers2","fetch","davRoot","filesRoot","userId","permString","P","SHARE","parsePermissions","lastmod","crtime","creationdate","nodeData","isNaN","Number","getcontentlength","FAILED","hasPreview","gtBuilder","detectLocale","addTranslation","locale","json","gt","ngettext","bind","gettext","UploadCancelledError","cause","uploadData","uploadData2","uploadOptions","onUploadProgress","onUploadRetry","retries","Blob","destinationFile","Destination","request","retryDelay","retryCount","retryCondition","onRetry","getChunk","start","getMaxChunksSize","fileSize","maxChunkSize","appConfig","max_chunk_size","minimumChunkSize","max","ceil","Status","Status2","Upload","_source","_file","_isChunked","_chunks","_size","_uploaded","_startTime","_status","_controller","_response","chunked","chunks","isChunked","startTime","uploaded","abort","isFileSystemFileEntry","FileSystemFileEntry","isFileSystemEntry","FileSystemEntry","Directory","_originalName","_path","sum","latest","originalName","webkitRelativePath","getChild","addChildren","addChild","FileSystemDirectoryEntry","reader","createReader","readEntries","child","filePath","relPath","indexOf","has","Eta","_done","_total","_progress","_elapsedTime","_speed","_eta","Infinity","_cutoffTime","resume","total","cutoffTime","done","deltaDone","deltaTime","historyNeeded","alpha","eta","dispatchTypedEvent","cancelable","pause","progress","timeReadable","seconds","hours","floor","padStart","minutes","speed","speedReadable","UploaderStatus","UploaderStatus2","Uploader","_destinationFolder","_isPublic","_customHeaders","_uploadQueue","_jobQueue","chunked_upload","max_parallel_count","_queueSize","_queueProgress","_queueStatus","_notifiers","isPublic","destinationFolder","maxChunksSize","customHeaders","structuredClone","setCustomHeader","deleteCustomerHeader","clear","updateStats","upload2","partialSum","pending","INITIALIZED","UPLOADING","ASSEMBLING","addNotifier","notifier","_notifyAll","batchUpload","files2","onCancel","rootFolder","uploadDirectory","uploads","FINISHED","CANCELLED","createDirectory","folderPath","normalize","currentUpload","selectedForUpload","directories","upload","e","fileHandle","encodedDestinationFile","resolve2","supportsPublicChunking","dav","public_shares_chunking","disabledChunkUpload","blob","bytes","_mtimeHeader","tempUrl","chunksWorkspace","random","initChunkWorkspace","chunksQueue","chunk","bufferStart","bufferEnd","request2","chunkBytes","progressBytes","onIdle","getUploader","forceRecreate","_nc_uploader","showInvalidFilenameDialog","InvalidFilenameDialog","rest","skip","rename","normalizeComponent","scriptExports","render6","staticRenderFns","functionalTemplate","injectStyles","scopeId","moduleIdentifier","shadowMode","_compiled","_scopeId","exports","IconCancel","title","fillColor","_b","$emit","$attrs","IconFolderUpload","IconPlus","IconUpload","components","NcActionButton","NcActionCaption","NcActionSeparator","NcActions","NcProgressBar","accept","disabled","multiple","noMenu","noLabel","primary","allowFolders","Function","forbiddenCharacters","progressTimeId","newFileMenuEntries","openedMenu","uploadManager","menuEntriesUpload","category","UploadFromDevice","menuEntriesNew","CreateNew","menuEntriesOther","Other","canUploadFolders","hasFailure","isAssembling","isUploading","isOnlyAssembling","isPaused","PAUSED","buttonLabel","haveMenu","immediate","setDestination","beforeMount","onUploadCompletion","onKeyDown","stop","prevent","shift","etaTimeAndSpeed","getContent","onTriggerPick","uploadFolders","webkitdirectory","$nextTick","isArray","onPick","contentsCallback","ConflictPicker","recursiveUpload","recursive","removeChild","filesToUpload","resetForm","form","iconClass","directives","rawName","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","fulfilled","j","r","getter","__esModule","definition","enumerable","chunkId","u","obj","hasOwnProperty","script","needAttach","scripts","getElementsByTagName","getAttribute","charset","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","timeout","doneFns","setTimeout","nmd","scriptUrl","globalThis","importScripts","currentScript","toUpperCase","test","p","baseURI","self","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/files-main.js b/dist/files-main.js index 2db88d33a0cee..704d80cd337ca 100644 --- a/dist/files-main.js +++ b/dist/files-main.js @@ -1,2 +1,2 @@ -(()=>{var e,s,i,n={84560(e,t,s){"use strict";s.d(t,{A:()=>i});const i=(0,s(35947).YK)().setApp("files").detectUser().build()},50252(e,s,i){"use strict";var n=i(21777),a=i(10810),o=i(85471),r=i(32505),l=i(22378),d=i(85168),c=i(61338),m=i(35810),g=i(81222),u=i(53334),f=i(71225),p=i(40715),h=i(66860),v=i(22720),A=i(43627),w={name:"teleport",props:{to:{type:String,required:!0},where:{type:String,default:"after"},disabled:Boolean},data:function(){return{nodes:[],waiting:!1,observer:null,parent:null}},watch:{to:"maybeMove",where:"maybeMove",disabled:function(e){var t=this;e?(this.disable(),this.$nextTick(function(){t.teardownObserver()})):(this.bootObserver(),this.move())}},mounted:function(){this.nodes=Array.from(this.$el.childNodes),this.disabled||this.bootObserver(),this.maybeMove()},beforeDestroy:function(){this.nodes=this.getComponentChildrenNode(),this.disable(),this.teardownObserver()},computed:{classes:function(){return this.disabled?["teleporter"]:["teleporter","hidden"]}},methods:{maybeMove:function(){this.disabled||this.move()},move:function(){if(this.waiting=!1,this.parent=document.querySelector(this.to),!this.parent)return this.disable(),void(this.waiting=!0);"before"===this.where?this.parent.prepend(this.getFragment()):this.parent.appendChild(this.getFragment())},disable:function(){this.$el.appendChild(this.getFragment()),this.parent=null},getFragment:function(){var e=document.createDocumentFragment();return this.nodes.forEach(function(t){return e.appendChild(t)}),e},onMutations:function(e){for(var t=this,s=!1,i=0;i0&&(s=!0)}s&&this.move()},bootObserver:function(){var e=this;this.observer||(this.observer=new MutationObserver(function(t){return e.onMutations(t)}),this.observer.observe(document.body,{childList:!0,subtree:!0,attributes:!1,characterData:!1}),this.childObserver||(this.childObserver=new MutationObserver(function(t){t.find(function(t){return t.target===e.$el})&&(e.nodes.forEach(function(e){return e.parentNode&&e.parentNode.removeChild(e)}),e.nodes=e.getComponentChildrenNode(),e.maybeMove())}),this.childObserver.observe(this.$el,{childList:!0,subtree:!1,attributes:!1,characterData:!1})))},teardownObserver:function(){this.observer&&(this.observer.disconnect(),this.observer=null),this.childObserver&&(this.childObserver.disconnect(),this.childObserver=null)},getComponentChildrenNode:function(){return this.$vnode.componentOptions.children.map(function(e){return e.elm}).filter(function(e){return e})}}};function b(e,t,s,i,n,a,o,r,l,d){"boolean"!=typeof o&&(l=r,r=o,o=!1);var c,m="function"==typeof s?s.options:s;if(e&&e.render&&(m.render=e.render,m.staticRenderFns=e.staticRenderFns,m._compiled=!0,n&&(m.functional=!0)),i&&(m._scopeId=i),a?(c=function(e){(e=e||this.$vnode&&this.$vnode.ssrContext||this.parent&&this.parent.$vnode&&this.parent.$vnode.ssrContext)||"undefined"==typeof __VUE_SSR_CONTEXT__||(e=__VUE_SSR_CONTEXT__),t&&t.call(this,l(e)),e&&e._registeredComponents&&e._registeredComponents.add(a)},m._ssrRegister=c):t&&(c=o?function(e){t.call(this,d(e,this.$root.$options.shadowRoot))}:function(e){t.call(this,r(e))}),c)if(m.functional){var g=m.render;m.render=function(e,t){return c.call(t),g(e,t)}}else{var u=m.beforeCreate;m.beforeCreate=u?[].concat(u,c):[c]}return s}var C,y="undefined"!=typeof navigator&&/msie [6-9]\\b/.test(navigator.userAgent.toLowerCase());function k(e){return function(e,t){return function(e,t){var s=y?t.media||"default":e,i=_[s]||(_[s]={ids:new Set,styles:[]});if(!i.ids.has(e)){i.ids.add(e);var n=t.source;if(t.map&&(n+="\n/*# sourceURL="+t.map.sources[0]+" */",n+="\n/*# sourceMappingURL=data:application/json;base64,"+btoa(unescape(encodeURIComponent(JSON.stringify(t.map))))+" */"),i.element||(i.element=document.createElement("style"),i.element.type="text/css",t.media&&i.element.setAttribute("media",t.media),void 0===C&&(C=document.head||document.getElementsByTagName("head")[0]),C.appendChild(i.element)),"styleSheet"in i.element)i.styles.push(n),i.element.styleSheet.cssText=i.styles.filter(Boolean).join("\n");else{var a=i.ids.size-1,o=document.createTextNode(n),r=i.element.childNodes;r[a]&&i.element.removeChild(r[a]),r.length?i.element.insertBefore(o,r[a]):i.element.appendChild(o)}}}(e,t)}}var _={},x=w,S=function(){var e=this,t=e.$createElement;return(e._self._c||t)("div",{class:e.classes},[e._t("default")],2)};S._withStripped=!0;var T=b({render:S,staticRenderFns:[]},function(e){e&&e("data-v-50f4b45b_0",{source:".hidden[data-v-50f4b45b] {\n visibility: hidden;\n display: none;\n}\n\n/*# sourceMappingURL=Teleport.vue.map */",map:{version:3,sources:["/home/shodan/Projects/vue2-teleport/src/Teleport.vue","Teleport.vue"],names:[],mappings:"AA2LA;EACA,kBAAA;EACA,aAAA;AC1LA;;AAEA,uCAAuC",file:"Teleport.vue",sourcesContent:["\n\n\\n\\n\\n\",\".hidden {\\n visibility: hidden;\\n display: none;\\n}\\n\\n/*# sourceMappingURL=Teleport.vue.map */\"]}, media: undefined });\n\n };\n /* scoped */\n var __vue_scope_id__ = \"data-v-50f4b45b\";\n /* module identifier */\n var __vue_module_identifier__ = undefined;\n /* functional template */\n var __vue_is_functional_template__ = false;\n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__ = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n createInjector,\n undefined,\n undefined\n );\n\n// Taken from https://vuejs.org/v2/cookbook/packaging-sfc-for-npm.html\n\n// Declare install function executed by Vue.use()\nfunction install (Vue) {\n if (install.installed) { return; }\n\n install.installed = true;\n Vue.component('Teleport', __vue_component__);\n}\n\n// Create module definition for Vue.use()\nvar plugin = {\n install: install,\n};\n\n// Auto-install when vue is found (eg. in browser via ","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulletedSquare.vue?vue&type=template&id=64cece03\"\nimport script from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-square-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Reload.vue?vue&type=template&id=39a07256\"\nimport script from \"./Reload.vue?vue&type=script&lang=js\"\nexport * from \"./Reload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon reload-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ViewGridOutline.vue?vue&type=template&id=0c2dec16\"\nimport script from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon view-grid-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{staticClass:\"files-list__breadcrumbs\",class:{ 'files-list__breadcrumbs--with-progress': _vm.wrapUploadProgressBar },attrs:{\"data-cy-files-content-breadcrumbs\":\"\",\"aria-label\":_vm.t('files', 'Current directory path')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"dir\":\"auto\",\"to\":section.to,\"force-icon-text\":index === 0 && !_vm.isNarrow,\"force-menu\":\"\",\"open\":_vm.isMenuOpen,\"title\":_vm.titleForSection(index, section),\"aria-description\":_vm.ariaForSection(section)},on:{\"update:open\":function($event){_vm.isMenuOpen=$event},\"drop\":function($event){return _vm.onDrop($event, section.dir)}},nativeOn:{\"dragover\":function($event){return _vm.onDragOver($event, section.dir)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"size\":20,\"svg\":_vm.viewIcon}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"menu-icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.isMenuOpen ? _vm.mdiChevronUp : _vm.mdiChevronDown}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"default\",fn:function(){return [(_vm.canShare)?_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.openSharingSidebar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountPlus}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Share'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.$emit('reload')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiReload}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Reload content'))+\"\\n\\t\\t\\t\")])]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed, onMounted, readonly, ref } from 'vue';\n/** The element we observe */\nlet element;\n/** The current width of the element */\nconst width = ref(0);\nconst isWide = computed(() => width.value >= 1024);\nconst isMedium = computed(() => width.value >= 512 && width.value < 1024);\nconst isNarrow = computed(() => width.value < 512);\nconst observer = new ResizeObserver(([element]) => {\n if (!element) {\n return;\n }\n const contentBoxSize = element.contentBoxSize?.[0];\n if (contentBoxSize) {\n // use the newer `contentBoxSize` property if available\n width.value = contentBoxSize.inlineSize;\n }\n else {\n // fall back to `contentRect`\n width.value = element.contentRect.width;\n }\n});\n/**\n * Update the observed element if needed and reconfigure the observer\n */\nfunction updateObserver() {\n const el = document.querySelector('#app-content-vue') ?? document.body;\n if (el !== element) {\n // if already observing: stop observing the old element\n if (element) {\n observer.unobserve(element);\n }\n // observe the new element if needed\n observer.observe(el);\n element = el;\n }\n}\n/**\n * Get the reactive width of the file list\n */\nexport function useFileListWidth() {\n // Update the observer when the component is mounted (e.g. because this is the files app)\n onMounted(updateObserver);\n // Update the observer also in setup context, so we already have an initial value\n updateObserver();\n return {\n width: readonly(width),\n isWide,\n isMedium,\n isNarrow,\n };\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getNavigation } from '@nextcloud/files';\nimport { computed, shallowRef } from 'vue';\nconst allViews = shallowRef([]);\nconst visibleViews = computed(() => allViews.value?.filter((view) => !view.hidden) ?? []);\nlet initialized = false;\n/**\n * Get all currently registered views.\n * Unline `Navigation.views` this is reactive and will update when new views are added or existing views are removed.\n */\nexport function useViews() {\n if (!initialized) {\n const navigation = getNavigation();\n navigation.addEventListener('update', () => {\n allViews.value = [...navigation.views];\n });\n allViews.value = [...navigation.views];\n initialized = true;\n }\n return allViews;\n}\n/**\n * Get all non-hidden views.\n */\nexport function useVisibleViews() {\n useViews();\n return visibleViews;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport PQueue from 'p-queue';\nconst sharePermissions = loadState('files_sharing', 'sharePermissions', Permission.NONE);\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n// Maximum number of concurrent operations\nconst MAX_CONCURRENCY = 5;\n/**\n * Get the processing queue\n */\nexport function getQueue() {\n if (!queue) {\n queue = new PQueue({ concurrency: MAX_CONCURRENCY });\n }\n return queue;\n}\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n MoveCopyAction[\"MOVE\"] = \"Move\";\n MoveCopyAction[\"COPY\"] = \"Copy\";\n MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\n/**\n * Check if the given nodes can be moved\n *\n * @param nodes - The nodes to check\n */\nexport function canMove(nodes) {\n const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n return Boolean(minPermission & Permission.DELETE);\n}\n/**\n * Check if the given nodes can be downloaded\n *\n * @param nodes - The nodes to check\n */\nexport function canDownload(nodes) {\n return nodes.every((node) => {\n const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n return !shareAttributes.some((attribute) => attribute.scope === 'permissions' && attribute.value === false && attribute.key === 'download');\n });\n}\n/**\n * Check if the given nodes can be copied\n *\n * @param nodes - The nodes to check\n */\nexport function canCopy(nodes) {\n // a shared file cannot be copied if the download is disabled\n if (!canDownload(nodes)) {\n return false;\n }\n // it cannot be copied if the user has only view permissions\n if (nodes.some((node) => node.permissions === Permission.NONE)) {\n return false;\n }\n // on public shares all files have the same permission so copy is only possible if write permission is granted\n if (isPublicShare()) {\n return Boolean(sharePermissions & Permission.CREATE);\n }\n // otherwise permission is granted\n return true;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move-outline.svg?raw';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple-outline.svg?raw';\nimport { FilePickerClosed, getFilePickerBuilder, openConflictPicker, showError, showLoading } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { FileType, getUniqueName, NodeStatus, Permission } from '@nextcloud/files';\nimport { defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { n, t } from '@nextcloud/l10n';\nimport { basename, join } from '@nextcloud/paths';\nimport { getConflicts } from '@nextcloud/upload';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { getContents } from '../services/Files.ts';\nimport { canCopy, canMove, getQueue, MoveCopyAction } from './moveOrCopyActionUtils.ts';\n/**\n * Exception to hint the user about something.\n * The message is intended to be shown to the user.\n */\nexport class HintException extends Error {\n}\nexport const ACTION_COPY_MOVE = 'move-copy';\nexport const action = {\n id: ACTION_COPY_MOVE,\n order: 15,\n displayName({ nodes }) {\n switch (getActionForNodes(nodes)) {\n case MoveCopyAction.MOVE:\n return t('files', 'Move');\n case MoveCopyAction.COPY:\n return t('files', 'Copy');\n case MoveCopyAction.MOVE_OR_COPY:\n return t('files', 'Move or copy');\n }\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled({ nodes, view }) {\n // We can not copy or move in single file shares\n if (view.id === 'public-file-share') {\n return false;\n }\n // We only support moving/copying files within the user folder\n if (!nodes.every((node) => node.root?.startsWith('/files/'))) {\n return false;\n }\n return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n },\n async exec(context) {\n return this.execBatch(context)[0];\n },\n async execBatch({ nodes, folder }) {\n const action = getActionForNodes(nodes);\n const target = await openFilePickerForAction(action, folder.path, nodes);\n // Handle cancellation silently\n if (target === false) {\n return nodes.map(() => null);\n }\n try {\n const result = await Array.fromAsync(handleCopyMoveNodesTo(nodes, target.destination, target.action));\n return result.map(() => true);\n }\n catch (error) {\n logger.error(`Failed to ${target.action} node`, { nodes, error });\n if (error instanceof HintException && !!error.message) {\n showError(error.message);\n // Silent action as we handle the toast\n return nodes.map(() => null);\n }\n // We need to keep the selection on error!\n // So we do not return null, and for batch action\n return nodes.map(() => false);\n }\n },\n};\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n *\n * @param nodes The nodes to copy/move\n * @param destination The destination to copy/move the nodes to\n * @param method The method to use for the copy/move\n * @param overwrite Whether to overwrite the destination if it exists\n * @yields {AsyncGenerator} A promise that resolves when the copy/move is done\n */\nexport async function* handleCopyMoveNodesTo(nodes, destination, method, overwrite = false) {\n if (!destination) {\n return;\n }\n if (destination.type !== FileType.Folder) {\n throw new Error(t('files', 'Destination is not a folder'));\n }\n // Do not allow to MOVE a node to the same folder it is already located\n if (method === MoveCopyAction.MOVE && nodes.some((node) => node.dirname === destination.path)) {\n throw new Error(t('files', 'This file/folder is already in that directory'));\n }\n /**\n * Example:\n * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n * Allow move of /foo does not start with /foo/bar/file.txt so allow\n * - node: /foo , destination: /foo/bar\n * Do not allow as it would copy foo within itself\n * - node: /foo/bar.txt, destination: /foo\n * Allow copy a file to the same directory\n * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n * Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n */\n if (nodes.some((node) => `${destination.path}/`.startsWith(`${node.path}/`))) {\n throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n }\n const nameMapping = new Map();\n // Check for conflicts if we do not want to overwrite\n if (!overwrite) {\n const otherNodes = (await getContents(destination.path)).contents;\n const conflicts = getConflicts(nodes, otherNodes);\n const nodesToRename = [];\n if (conflicts.length > 0) {\n if (method === MoveCopyAction.MOVE) {\n // Let the user choose what to do with the conflicting files\n const content = otherNodes.filter((n) => conflicts.some((c) => c.basename === n.basename));\n const result = await openConflictPicker(destination.path, conflicts, content);\n if (!result) {\n // User cancelled\n return;\n }\n nodes = nodes.filter((n) => !result.skipped.includes(n));\n nodesToRename.push(...result.renamed);\n }\n else {\n // for COPY we always rename conflicting files\n nodesToRename.push(...conflicts);\n }\n const usedNames = [...otherNodes, ...nodes.filter((n) => !conflicts.includes(n))].map((n) => n.basename);\n for (const node of nodesToRename) {\n const newName = getUniqueName(node.basename, usedNames, { ignoreFileExtension: node.type === FileType.Folder });\n nameMapping.set(node.source, newName);\n usedNames.push(newName); // add the new name to avoid duplicates for following re-namimgs\n }\n }\n }\n const actionFinished = createLoadingNotification(method, nodes.map((node) => node.displayname), join(destination.dirname, destination.displayname));\n const queue = getQueue();\n try {\n for (const node of nodes) {\n // Set loading state\n Vue.set(node, 'status', NodeStatus.LOADING);\n yield queue.add(async () => {\n try {\n const client = getClient();\n const currentPath = join(defaultRootPath, node.path);\n const destinationPath = join(defaultRootPath, destination.path, nameMapping.get(node.source) ?? node.basename);\n if (method === MoveCopyAction.COPY) {\n await client.copyFile(currentPath, destinationPath);\n // If the node is copied into current directory the view needs to be updated\n if (node.dirname === destination.path) {\n const { data } = await client.stat(destinationPath, {\n details: true,\n data: getDefaultPropfind(),\n });\n emit('files:node:created', resultToNode(data));\n }\n }\n else {\n await client.moveFile(currentPath, destinationPath);\n // Delete the node as it will be fetched again\n // when navigating to the destination folder\n emit('files:node:deleted', node);\n }\n }\n catch (error) {\n logger.debug(`Error while trying to ${method === MoveCopyAction.COPY ? 'copy' : 'move'} node`, { node, error });\n if (error.response?.status === 412) {\n throw new HintException(t('files', 'A file or folder with that name already exists in this folder'));\n }\n else if (error.response?.status === 423) {\n throw new HintException(t('files', 'The files are locked'));\n }\n else if (error.response?.status === 404) {\n throw new HintException(t('files', 'The file does not exist anymore'));\n }\n else if ('response' in error && error.response) {\n const parser = new DOMParser();\n const text = await error.response.text();\n const message = parser.parseFromString(text ?? '', 'text/xml')\n .querySelector('message')?.textContent;\n if (message) {\n throw new HintException(message);\n }\n }\n throw error;\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n });\n }\n }\n finally {\n actionFinished();\n }\n}\n/**\n * Return the action that is possible for the given nodes\n *\n * @param nodes The nodes to check against\n * @return The action that is possible for the given nodes\n */\nfunction getActionForNodes(nodes) {\n if (canMove(nodes)) {\n if (canCopy(nodes)) {\n return MoveCopyAction.MOVE_OR_COPY;\n }\n return MoveCopyAction.MOVE;\n }\n // Assuming we can copy as the enabled checks for copy permissions\n return MoveCopyAction.COPY;\n}\n/**\n * Create a loading notification toast\n *\n * @param mode The move or copy mode\n * @param sources Names of the nodes that are copied / moved\n * @param destination Destination path\n * @return Function to hide the notification\n */\nfunction createLoadingNotification(mode, sources, destination) {\n const text = mode === MoveCopyAction.MOVE\n ? (sources.length === 1\n ? t('files', 'Moving \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n : n('files', 'Moving %n file to \"{destination}\" …', 'Moving %n files to \"{destination}\" …', sources.length, { destination }))\n : (sources.length === 1\n ? t('files', 'Copying \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n : n('files', 'Copying %n file to \"{destination}\" …', 'Copying %n files to \"{destination}\" …', sources.length, { destination }));\n const toast = showLoading(text);\n return () => toast && toast.hideToast();\n}\n/**\n * Open a file picker for the given action\n *\n * @param action The action to open the file picker for\n * @param dir The directory to start the file picker in\n * @param nodes The nodes to move/copy\n * @return The picked destination or false if cancelled by user\n */\nasync function openFilePickerForAction(action, dir = '/', nodes) {\n const { resolve, reject, promise } = Promise.withResolvers();\n const fileIDs = nodes.map((node) => node.fileid).filter(Boolean);\n const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n .allowDirectories(true)\n .setFilter((n) => {\n // We don't want to show the current nodes in the file picker\n return !fileIDs.includes(n.fileid);\n })\n .setCanPick((n) => {\n const hasCreatePermissions = (n.permissions & Permission.CREATE) === Permission.CREATE;\n return hasCreatePermissions;\n })\n .setMimeTypeFilter([])\n .setMultiSelect(false)\n .startAt(dir)\n .setButtonFactory((selection, path) => {\n const buttons = [];\n const target = basename(path);\n const dirnames = nodes.map((node) => node.dirname);\n const paths = nodes.map((node) => node.path);\n if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Copy to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Copy'),\n variant: 'primary',\n icon: CopyIconSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.COPY,\n });\n },\n });\n }\n // Invalid MOVE targets (but valid copy targets)\n if (dirnames.includes(path)) {\n // This file/folder is already in that directory\n return buttons;\n }\n if (paths.includes(path)) {\n // You cannot move a file/folder onto itself\n return buttons;\n }\n if (selection.some((node) => (node.permissions & Permission.CREATE) === 0)) {\n // Missing 'CREATE' permissions for selected destination\n return buttons;\n }\n if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Move to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Move'),\n variant: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n icon: FolderMoveSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.MOVE,\n });\n },\n });\n }\n return buttons;\n })\n .build();\n filePicker.pick()\n .catch((error) => {\n logger.debug(error);\n if (error instanceof FilePickerClosed) {\n resolve(false);\n }\n else {\n reject(new Error(t('files', 'Move or copy operation failed')));\n }\n });\n return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showInfo, showWarning } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { defaultRemoteURL, defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { openConflictPicker } from '@nextcloud/upload';\nimport logger from '../logger.ts';\n/**\n * This represents a Directory in the file tree\n * We extend the File class to better handling uploading\n * and stay as close as possible as the Filesystem API.\n * This also allow us to hijack the size or lastModified\n * properties to compute them dynamically.\n */\nexport class Directory extends File {\n _contents;\n constructor(name, contents = []) {\n super([], name, { type: 'httpd/unix-directory' });\n this._contents = contents;\n }\n set contents(contents) {\n this._contents = contents;\n }\n get contents() {\n return this._contents;\n }\n get size() {\n return this._computeDirectorySize(this);\n }\n get lastModified() {\n if (this._contents.length === 0) {\n return Date.now();\n }\n return this._computeDirectoryMtime(this);\n }\n /**\n * Get the last modification time of a file tree\n * This is not perfect, but will get us a pretty good approximation\n *\n * @param directory the directory to traverse\n */\n _computeDirectoryMtime(directory) {\n return directory.contents.reduce((acc, file) => {\n return file.lastModified > acc\n // If the file is a directory, the lastModified will\n // also return the results of its _computeDirectoryMtime method\n // Fancy recursion, huh?\n ? file.lastModified\n : acc;\n }, 0);\n }\n /**\n * Get the size of a file tree\n *\n * @param directory the directory to traverse\n */\n _computeDirectorySize(directory) {\n return directory.contents.reduce((acc, entry) => {\n // If the file is a directory, the size will\n // also return the results of its _computeDirectorySize method\n // Fancy recursion, huh?\n return acc + entry.size;\n }, 0);\n }\n}\n/**\n * Traverse a file tree using the Filesystem API\n *\n * @param entry the entry to traverse\n */\nexport async function traverseTree(entry) {\n // Handle file\n if (entry.isFile) {\n return new Promise((resolve, reject) => {\n entry.file(resolve, reject);\n });\n }\n // Handle directory\n logger.debug('Handling recursive file tree', { entry: entry.name });\n const directory = entry;\n const entries = await readDirectory(directory);\n const contents = (await Promise.all(entries.map(traverseTree))).flat();\n return new Directory(directory.name, contents);\n}\n/**\n * Read a directory using Filesystem API\n *\n * @param directory the directory to read\n */\nfunction readDirectory(directory) {\n const dirReader = directory.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n const getEntries = () => {\n dirReader.readEntries((results) => {\n if (results.length) {\n entries.push(...results);\n getEntries();\n }\n else {\n resolve(entries);\n }\n }, (error) => {\n reject(error);\n });\n };\n getEntries();\n });\n}\n/**\n * @param path - The path relative to the destination root\n * @param destination - The destination folder. When provided, directories are created relative\n * to its source URL instead of the default user root. This is needed for uploads into\n * non-default locations like team folders.\n */\nexport async function createDirectoryIfNotExists(path, destination) {\n const davUrl = destination?.source ?? join(defaultRemoteURL, defaultRootPath);\n const davRoot = destination?.root ?? defaultRootPath;\n const davClient = getClient(davUrl);\n const dirExists = await davClient.exists(path);\n if (!dirExists) {\n logger.debug('Directory does not exist, creating it', { path, davUrl });\n await davClient.createDirectory(path, { recursive: true });\n const stat = await davClient.stat(path, { details: true, data: getDefaultPropfind() });\n emit('files:node:created', resultToNode(stat.data, davRoot, davUrl));\n }\n}\n/**\n * Resolve conflicts between existing files and incoming files\n *\n * @param files - incoming files\n * @param destination - destination folder\n * @param contents - existing contents of the destination folder\n */\nexport async function resolveConflict(files, destination, contents) {\n try {\n // List all conflicting files\n const conflicts = files.filter((file) => {\n return contents.find((node) => node.basename === (file instanceof File ? file.name : file.basename));\n }).filter(Boolean);\n // List of incoming files that are NOT in conflict\n const uploads = files.filter((file) => {\n return !conflicts.includes(file);\n });\n // Let the user choose what to do with the conflicting files\n const { selected, renamed } = await openConflictPicker(destination.path, conflicts, contents);\n logger.debug('Conflict resolution', { uploads, selected, renamed });\n // If the user selected nothing, we cancel the upload\n if (selected.length === 0 && renamed.length === 0 && uploads.length === 0) {\n // User skipped\n showInfo(t('files', 'Conflicts resolution skipped'));\n logger.info('User skipped the conflict resolution');\n return [];\n }\n // Update the list of files to upload\n return [...uploads, ...selected, ...renamed];\n }\n catch (error) {\n // User cancelled\n logger.warn('User cancelled the upload', { error });\n showWarning(t('files', 'Upload cancelled'));\n }\n return [];\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError, showInfo, showSuccess, showWarning } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { getUploader, hasConflict } from '@nextcloud/upload';\nimport { handleCopyMoveNodesTo, HintException } from '../actions/moveOrCopyAction.ts';\nimport { MoveCopyAction } from '../actions/moveOrCopyActionUtils.ts';\nimport logger from '../logger.ts';\nimport { createDirectoryIfNotExists, Directory, resolveConflict, traverseTree } from './DropServiceUtils.ts';\n/**\n * This function converts a list of DataTransferItems to a file tree.\n * It uses the Filesystem API if available, otherwise it falls back to the File API.\n * The File API will NOT be available if the browser is not in a secure context (e.g. HTTP).\n * ⚠️ When using this method, you need to use it as fast as possible, as the DataTransferItems\n * will be cleared after the first access to the props of one of the entries.\n *\n * @param items the list of DataTransferItems\n */\nexport async function dataTransferToFileTree(items) {\n // Check if the browser supports the Filesystem API\n // We need to cache the entries to prevent Blink engine bug that clears\n // the list (`data.items`) after first access props of one of the entries\n const entries = items\n .filter((item) => {\n if (item.kind !== 'file') {\n logger.debug('Skipping dropped item', { kind: item.kind, type: item.type });\n return false;\n }\n return true;\n }).map((item) => {\n // MDN recommends to try both, as it might be renamed in the future\n return item?.getAsEntry?.()\n ?? item?.webkitGetAsEntry?.()\n ?? item;\n });\n let warned = false;\n const fileTree = new Directory('root');\n // Traverse the file tree\n for (const entry of entries) {\n // Handle browser issues if Filesystem API is not available. Fallback to File API\n if (entry instanceof DataTransferItem) {\n logger.warn('Could not get FilesystemEntry of item, falling back to file');\n const file = entry.getAsFile();\n if (file === null) {\n logger.warn('Could not process DataTransferItem', { type: entry.type, kind: entry.kind });\n showError(t('files', 'One of the dropped files could not be processed'));\n continue;\n }\n // Warn the user that the browser does not support the Filesystem API\n // we therefore cannot upload directories recursively.\n if (file.type === 'httpd/unix-directory' || !file.type) {\n if (!warned) {\n logger.warn('Browser does not support Filesystem API. Directories will not be uploaded');\n showWarning(t('files', 'Your browser does not support the Filesystem API. Directories will not be uploaded'));\n warned = true;\n }\n continue;\n }\n fileTree.contents.push(file);\n continue;\n }\n // Use Filesystem API\n try {\n fileTree.contents.push(await traverseTree(entry));\n }\n catch (error) {\n // Do not throw, as we want to continue with the other files\n logger.error('Error while traversing file tree', { error });\n }\n }\n return fileTree;\n}\n/**\n * Handle dropping external files\n *\n * @param root - The root directory which should be uploaded\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n */\nexport async function onDropExternalFiles(root, destination, contents) {\n const uploader = getUploader();\n // Check for conflicts on root elements\n if (await hasConflict(root.contents, contents)) {\n root.contents = await resolveConflict(root.contents, destination, contents);\n if (root.contents.length === 0) {\n // user cancelled the upload\n return [];\n }\n }\n else if (root.contents.length === 0) {\n logger.info('No files to upload', { root });\n showInfo(t('files', 'No files to upload'));\n return [];\n }\n // Let's process the files\n logger.debug(`Uploading files to ${destination.path}`, { root, contents: root.contents });\n const queue = [];\n const uploadDirectoryContents = async (directory, path) => {\n for (const file of directory.contents) {\n // This is the relative path to the resource\n // from the current uploader destination\n const relativePath = join(path, file.name);\n // If the file is a directory, we need to create it first\n // then browse its tree and upload its contents.\n if (file instanceof Directory) {\n try {\n logger.debug('Processing directory', { relativePath, destination });\n await createDirectoryIfNotExists(relativePath, destination);\n await uploadDirectoryContents(file, relativePath);\n }\n catch (error) {\n showError(t('files', 'Unable to create the directory {directory}', { directory: file.name }));\n logger.error('Unable to create the directory', { error, relativePath, directory: file });\n }\n continue;\n }\n // If we've reached a file, we can upload it\n logger.debug('Uploading file to ' + join(destination.path, relativePath), { file });\n // Overriding the root to avoid changing the current uploader context\n queue.push(uploader.upload(relativePath, file, destination.source));\n }\n };\n // Pause the uploader to prevent it from starting\n // while we compute the queue\n uploader.pause();\n // Upload the files. Using '/' as the starting point\n // as we already adjusted the uploader destination\n await uploadDirectoryContents(root, '/');\n uploader.start();\n // Wait for all promises to settle\n const results = await Promise.allSettled(queue);\n // Check for errors\n const errors = results.filter((result) => result.status === 'rejected');\n if (errors.length > 0) {\n logger.error('Error while uploading files', { errors });\n showError(t('files', 'Some files could not be uploaded'));\n return [];\n }\n logger.debug('Files uploaded successfully');\n showSuccess(t('files', 'Files uploaded successfully'));\n return Promise.all(queue);\n}\n/**\n * Handle dropping internal files\n *\n * @param nodes - The nodes being dropped\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n * @param isCopy - Whether the operation is a copy\n */\nexport async function onDropInternalFiles(nodes, destination, contents, isCopy = false) {\n // Check for conflicts on root elements\n if (await hasConflict(nodes, contents)) {\n nodes = await resolveConflict(nodes, destination, contents);\n }\n if (nodes.length === 0) {\n logger.info('No files to process', { nodes });\n showInfo(t('files', 'No files to process'));\n return;\n }\n try {\n const promises = Array.fromAsync(handleCopyMoveNodesTo(nodes, destination, isCopy ? MoveCopyAction.COPY : MoveCopyAction.MOVE));\n await promises;\n logger.debug('Files copy/move successful');\n showSuccess(isCopy ? t('files', 'Files copied successfully') : t('files', 'Files moved successfully'));\n }\n catch (error) {\n logger.error('Error while processing dropped files', { error });\n if (error instanceof HintException) {\n showError(error.message);\n }\n else {\n showError(isCopy ? t('files', 'Some files could not be copied') : t('files', 'Some files could not be moved'));\n }\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useDragAndDropStore = defineStore('dragging', {\n state: () => ({\n dragging: [],\n }),\n actions: {\n /**\n * Set the selection of files being dragged currently\n *\n * @param selection array of node sources\n */\n set(selection = []) {\n Vue.set(this, 'dragging', selection);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'dragging', []);\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n *\n * @param selection\n */\n set(selection = []) {\n Vue.set(this, 'selected', [...new Set(selection)]);\n },\n /**\n * Set the last selected index\n *\n * @param lastSelectedIndex\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getUploader } from '@nextcloud/upload';\nimport { defineStore } from 'pinia';\nlet uploader;\n/**\n *\n * @param args\n */\nexport function useUploaderStore(...args) {\n // Only init on runtime\n uploader = getUploader();\n const store = defineStore('uploader', {\n state: () => ({\n queue: uploader.queue,\n }),\n });\n return store(...args);\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.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!./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=86e9be62&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=86e9be62&scoped=true\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&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 \"86e9be62\",\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('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragover),expression:\"dragover\"}],staticClass:\"files-list__drag-drop-notice\",attrs:{\"data-cy-files-drag-drop-area\":\"\"},on:{\"drop\":_vm.onDrop}},[_c('div',{staticClass:\"files-list__drag-drop-notice-wrapper\"},[(_vm.canUpload && !_vm.isQuotaExceeded)?[_c('TrayArrowDownIcon',{attrs:{\"size\":48}}),_vm._v(\" \"),_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Drag and drop files here to upload'))+\"\\n\\t\\t\\t\")])]:[_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.cantUploadLabel)+\"\\n\\t\\t\\t\")])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TrayArrowDown.vue?vue&type=template&id=5dbf2618\"\nimport script from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\nexport * from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tray-arrow-down-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.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!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropNotice.vue?vue&type=template&id=1e2b9696&scoped=true\"\nimport script from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&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 \"1e2b9696\",\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('div',{class:_vm.$style.fileListFilters,attrs:{\"data-test-id\":\"files-list-filters\"}},[(_setup.isWide)?_vm._l((_setup.visualFilters),function(filter){return _c(_setup.NcPopover,{key:filter.id,attrs:{\"boundary\":_setup.boundary},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\")])]},proxy:true},{key:\"default\",fn:function(){return [_c('div',{class:_vm.$style.fileListFilters__popoverContainer},[_c(filter.tagName,{tag:\"component\",domProps:{\"filter\":filter}})],1)]},proxy:true}],null,true)})}):_c(_setup.NcPopover,{attrs:{\"boundary\":_setup.boundary,\"popup-role\":_setup.selectedFilter ? 'dialog' : 'menu'},on:{\"update:shown\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"id\":_setup.menuTriggerId,\"aria-label\":_setup.t('files', 'Filters'),\"pressed\":_setup.hasActiveFilters,\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFilterVariant}})]},proxy:true}])})]},proxy:true},{key:\"default\",fn:function(){return [(_setup.selectedFilter)?_c('div',{class:_vm.$style.fileListFilters__popoverFilterView},[_c(_setup.NcButton,{attrs:{\"wide\":\"\",\"variant\":\"tertiary\"},on:{\"click\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"directional\":\"\",\"path\":_setup.mdiArrowLeft}})]},proxy:true}],null,false,1066031977)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Back to filters'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.selectedFilter.tagName,{tag:\"component\",domProps:{\"filter\":_setup.selectedFilter}})],1):[_c('ul',{class:_vm.$style.fileListFilters__popoverContainer,attrs:{\"aria-labelledby\":_setup.menuTriggerId,\"role\":\"menu\"}},_vm._l((_setup.visualFilters),function(filter){return _c('li',{key:filter.id,attrs:{\"role\":\"presentation\"}},[_c(_setup.NcButton,{attrs:{\"role\":\"menuitem\",\"alignment\":\"start\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){_setup.selectedFilter = filter}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)}),0)]]},proxy:true}])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { getFileListFilters, getFilesRegistry } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, ref } from 'vue';\nimport logger from '../logger.ts';\n/**\n * Check if the given value is an instance file list filter with mount function\n *\n * @param value The filter to check\n */\nfunction isFileListFilterWithUi(value) {\n return 'tagName' in value;\n}\nexport const useFiltersStore = defineStore('filters', () => {\n const chips = ref({});\n const filters = ref([]);\n /**\n * Currently active filter chips\n */\n const activeChips = computed(() => Object.values(chips.value).flat());\n /**\n * Filters sorted by order\n */\n const sortedFilters = computed(() => filters.value.sort((a, b) => a.order - b.order));\n /**\n * All filters that provide a UI for visual controlling the filter state\n */\n const filtersWithUI = computed(() => sortedFilters.value.filter(isFileListFilterWithUi));\n /**\n * Register a new filter on the store.\n * This will subscribe the store to the filters events.\n *\n * @param filter The filter to add\n */\n function addFilter(filter) {\n filter.addEventListener('update:chips', onFilterUpdateChips);\n filter.addEventListener('update:filter', onFilterUpdate);\n filters.value.push(filter);\n logger.debug('New file list filter registered', { id: filter.id });\n }\n /**\n * Unregister a filter from the store.\n * This will remove the filter from the store and unsubscribe the store from the filer events.\n *\n * @param filterId Id of the filter to remove\n */\n function removeFilter(filterId) {\n const index = filters.value.findIndex(({ id }) => id === filterId);\n if (index > -1) {\n const [filter] = filters.value.splice(index, 1);\n filter.removeEventListener('update:chips', onFilterUpdateChips);\n filter.removeEventListener('update:filter', onFilterUpdate);\n logger.debug('Files list filter unregistered', { id: filterId });\n }\n }\n /**\n * Event handler for filter update events\n *\n */\n function onFilterUpdate() {\n emit('files:filters:changed');\n }\n /**\n * Event handler for filter chips updates\n *\n * @param event The update event\n */\n function onFilterUpdateChips(event) {\n const id = event.target.id;\n chips.value = {\n ...chips.value,\n [id]: [...event.detail],\n };\n logger.debug('File list filter chips updated', { filter: id, chips: event.detail });\n }\n initialize();\n return {\n // state\n chips,\n filters,\n filtersWithUI,\n // getters / computed\n activeChips,\n sortedFilters,\n };\n /**\n * Initialize the store by registering event listeners and loading initial filters.\n *\n * @internal\n */\n function initialize() {\n const registry = getFilesRegistry();\n const initialFilters = getFileListFilters();\n // handle adding and removing filters after initialization\n registry.addEventListener('register:listFilter', (event) => {\n addFilter(event.detail);\n });\n registry.addEventListener('unregister:listFilter', (event) => {\n removeFilter(event.detail);\n });\n // register the initial filters\n for (const filter of initialFilters) {\n addFilter(filter);\n }\n // subscribe to file list view changes to reset the filters\n subscribe('files:navigation:changed', onViewChanged);\n }\n /**\n * Event handler that resets all filters if the file list view was changed.\n *\n * @internal\n */\n function onViewChanged() {\n logger.debug('Reset all file list filters - view changed');\n for (const filter of filters.value) {\n if (filter.reset !== undefined) {\n filter.reset();\n }\n }\n }\n});\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilters.vue?vue&type=template&id=4b9fd4ac\"\nimport script from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\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('VirtualList',{ref:\"table\",attrs:{\"data-component\":_vm.userConfig.grid_view ? _vm.FileEntryGrid : _vm.FileEntry,\"data-key\":\"source\",\"data-sources\":_vm.nodes,\"grid-mode\":_vm.userConfig.grid_view,\"extra-props\":{\n\t\tisMimeAvailable: _vm.isMimeAvailable,\n\t\tisMtimeAvailable: _vm.isMtimeAvailable,\n\t\tisSizeAvailable: _vm.isSizeAvailable,\n\t\tnodes: _vm.nodes,\n\t},\"scroll-to-index\":_vm.scrollToIndex,\"caption\":_vm.caption},scopedSlots:_vm._u([{key:\"filters\",fn:function(){return [_c('FileListFilterToSearch'),_c('FileListFilterChips')]},proxy:true},(!_vm.isNoneSelected)?{key:\"header-overlay\",fn:function(){return [_c('span',{staticClass:\"files-list__selected\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.n('files', '{count} selected', '{count} selected', _vm.selectedNodes.length, { count: _vm.selectedNodes.length }))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListTableHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}})]},proxy:true}:null,{key:\"before\",fn:function(){return _vm._l((_vm.headers),function(header){return _c('FilesListHeader',{key:header.id,attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"header\":header}})})},proxy:true},{key:\"header\",fn:function(){return [_c('FilesListTableHeader',{ref:\"thead\",attrs:{\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"empty\",fn:function(){return [_vm._t(\"empty\")]},proxy:true},{key:\"footer\",fn:function(){return [_c('FilesListTableFooter',{attrs:{\"current-view\":_vm.currentView,\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=5eb63caa\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\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('td',{staticClass:\"files-list__row-actions\",attrs:{\"data-cy-files-list-row-actions\":\"\"}},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,staticClass:\"files-list__row-action--inline\",class:'files-list__row-action-' + action.id,attrs:{\"active-folder\":_vm.activeStore.activeFolder,\"active-view\":_vm.activeStore.activeView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.getBoundariesElement,\"container\":_vm.getBoundariesElement,\"force-name\":true,\"variant\":\"tertiary\",\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"close\":_vm.onMenuClose,\"closed\":_vm.onMenuClosed}},[_vm._l((_vm.renderedNonDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action\",class:{\n\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.renderedDestructiveActions.length > 0)?[_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.renderedDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action files-list__row-action--destructive\",class:{\n\t\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e(),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-action-back\",attrs:{\"data-cy-files-list-row-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-action--submenu\",class:`files-list__row-action-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-row-action\":action.id,\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=16833c02\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n data() {\n return {\n openedSubmenu: null,\n };\n },\n computed: {\n enabledSubmenuActions() {\n return this.enabledFileActions\n .reduce((record, action) => {\n if (action.parent !== undefined) {\n if (!record[action.parent]) {\n record[action.parent] = [];\n }\n record[action.parent].push(action);\n }\n return record;\n }, {});\n },\n },\n methods: {\n /**\n * Check if a menu is valid, meaning it is\n * defined and has at least one action\n *\n * @param action The action to check\n */\n isValidMenu(action) {\n return this.enabledSubmenuActions[action.id]?.length > 0;\n },\n async onBackToMenuClick(action) {\n if (!action) {\n return;\n }\n this.openedSubmenu = null;\n // Wait for first render\n await this.$nextTick();\n // Focus the previous menu action button\n this.$nextTick(() => {\n // Focus the action button, test both batch and single action references\n // as this mixin is used in both single and batch actions.\n const menuAction = this.$refs[`action-batch-${action.id}`]?.[0]\n || this.$refs[`action-${action.id}`]?.[0];\n if (menuAction) {\n menuAction.$el.querySelector('button')?.focus();\n }\n });\n },\n },\n});\n","import { showError, showSuccess } from '@nextcloud/dialogs';\nimport { NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from '../store/active.ts';\n/**\n * Execute an action on the current active node\n *\n * @param action The action to execute\n */\nexport async function executeAction(action) {\n const activeStore = useActiveStore();\n const currentFolder = activeStore.activeFolder;\n const currentNode = activeStore.activeNode;\n const currentView = activeStore.activeView;\n if (!currentFolder || !currentNode || !currentView) {\n logger.error('No active folder, node or view', { folder: currentFolder, node: currentNode, view: currentView });\n return;\n }\n if (currentNode.status === NodeStatus.LOADING) {\n logger.debug('Node is already loading', { node: currentNode });\n return;\n }\n // @ts-expect-error _children is private\n const contents = currentFolder?._children || [];\n const context = {\n nodes: [currentNode],\n view: currentView,\n folder: currentFolder,\n contents,\n };\n if (!action.enabled(context)) {\n logger.debug('Action is not not available for the current context', { action, node: currentNode, view: currentView });\n return;\n }\n let displayName = action.id;\n try {\n displayName = action.displayName(context) || displayName;\n }\n catch (error) {\n logger.error('Error while getting action display name', { action, error });\n }\n try {\n // Set the loading marker\n Vue.set(currentNode, 'status', NodeStatus.LOADING);\n activeStore.activeAction = action;\n const success = await action.exec(context);\n // If the action returns null, we stay silent\n if (success === null || success === undefined) {\n return;\n }\n if (success) {\n showSuccess(t('files', '{displayName}: done', { displayName }));\n return;\n }\n showError(t('files', '{displayName}: failed', { displayName }));\n }\n catch (error) {\n logger.error('Error while executing action', { action, error });\n showError(t('files', '{displayName}: failed', { displayName }));\n }\n finally {\n // Reset the loading marker\n Vue.set(currentNode, 'status', undefined);\n activeStore.activeAction = undefined;\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.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!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&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/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryActions.vue?vue&type=template&id=5f3391ea&scoped=true\"\nimport script from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\"\nimport style1 from \"./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&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 \"5f3391ea\",\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('td',{staticClass:\"files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[(_vm.isLoading)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.loadingLabel}}):_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.ariaLabel,\"model-value\":_vm.isSelected,\"data-cy-files-list-row-checkbox\":\"\"},on:{\"update:modelValue\":_vm.onSelectionChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\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 *\n * @param args\n */\nexport function useKeyboardStore(...args) {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n },\n });\n const keyboardStore = store(...args);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n}\n","import { render, staticRenderFns } from \"./FileEntryCheckbox.vue?vue&type=template&id=b10e52a2\"\nimport script from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\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 (_vm.isRenaming)?_c('form',{directives:[{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.onRename),expression:\"onRename\"}],ref:\"renameForm\",staticClass:\"files-list__row-rename\",attrs:{\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"label\":_vm.renameLabel,\"autofocus\":\"\",\"required\":\"\",\"minlength\":1,\"enterkeyhint\":\"done\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}},model:{value:(_vm.newName),callback:function ($$v) {_vm.newName=$$v},expression:\"newName\"}})],1):_c(_vm.linkTo.is,_vm._b({ref:\"basename\",tag:\"component\",staticClass:\"files-list__row-name-link\",attrs:{\"data-cy-files-list-row-name-link\":\"\"}},'component',_vm.linkTo.params,false),[_c('span',{staticClass:\"files-list__row-name-text\",attrs:{\"dir\":\"auto\"}},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.basename)}}),_vm._v(\" \"),(_vm.userConfigStore.userConfig.show_files_extensions)?_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.extension)}}):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios, { isAxiosError } from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { FileType, NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { basename, dirname, extname } from '@nextcloud/paths';\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog';\nimport { defineStore } from 'pinia';\nimport Vue, { defineAsyncComponent, ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useUserConfigStore } from './userconfig.ts';\nexport const useRenamingStore = defineStore('renaming', () => {\n /**\n * The currently renamed node\n */\n const renamingNode = ref();\n /**\n * The new name of the currently renamed node\n */\n const newNodeName = ref('');\n /**\n * Internal flag to only allow calling `rename` once.\n */\n const isRenaming = ref(false);\n /**\n * Execute the renaming.\n * This will rename the node set as `renamingNode` to the configured new name `newName`.\n *\n * @return true if success, false if skipped (e.g. new and old name are the same)\n * @throws {Error} if renaming fails, details are set in the error message\n */\n async function rename() {\n if (renamingNode.value === undefined) {\n throw new Error('No node is currently being renamed');\n }\n const oldName = renamingNode.value.basename;\n let newName = newNodeName.value.trim();\n if (newName === oldName) {\n return false;\n }\n // Only rename once so we use this as some kind of mutex\n if (isRenaming.value) {\n return false;\n }\n isRenaming.value = true;\n const userConfig = useUserConfigStore();\n let node = renamingNode.value;\n Vue.set(node, 'status', NodeStatus.LOADING);\n try {\n if (userConfig.userConfig.show_dialog_file_extension) {\n const oldExtension = extname(oldName);\n const newExtension = extname(newName);\n // Check for extension change for files\n if (node.type === FileType.File\n && oldExtension !== newExtension\n && !(await showFileExtensionDialog(oldExtension, newExtension))) {\n // user selected to use the old extension\n newName = basename(newName, newExtension) + oldExtension;\n if (oldName === newName) {\n return false;\n }\n }\n if (!userConfig.userConfig.show_hidden\n && newName.startsWith('.')\n && !oldName.startsWith('.')\n && !(await showHiddenFileDialog(newName))) {\n return false;\n }\n }\n const oldEncodedSource = node.encodedSource;\n // rename the node\n node.rename(newName);\n logger.debug('Moving file to', { destination: node.encodedSource, oldEncodedSource });\n // create MOVE request\n await axios({\n method: 'MOVE',\n url: oldEncodedSource,\n headers: {\n Destination: node.encodedSource,\n Overwrite: 'F',\n },\n });\n // Update mime type if extension changed\n // as other related informations might have changed\n // on the backend but it is really hard to know on the front\n if (extname(oldName) !== extname(newName)) {\n node = await fetchNode(node.path);\n }\n // Success 🎉\n emit('files:node:updated', node);\n emit('files:node:renamed', node);\n emit('files:node:moved', {\n node,\n oldSource: `${dirname(node.source)}/${oldName}`,\n });\n // Reset the state not changed\n if (renamingNode.value === node) {\n $reset();\n }\n return true;\n }\n catch (error) {\n logger.error('Error while renaming file', { error });\n // Rename back as it failed\n node.rename(oldName);\n if (isAxiosError(error)) {\n // TODO: 409 means current folder does not exist, redirect ?\n if (error?.response?.status === 404) {\n throw new Error(t('files', 'Could not rename \"{oldName}\", it does not exist any more', { oldName }), { cause: error });\n }\n else if (error?.response?.status === 412) {\n throw new Error(t('files', 'The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name.', {\n newName,\n dir: basename(renamingNode.value.dirname),\n }), { cause: error });\n }\n }\n // Unknown error\n throw new Error(t('files', 'Could not rename \"{oldName}\"', { oldName }), { cause: error });\n }\n finally {\n Vue.set(node, 'status', undefined);\n isRenaming.value = false;\n }\n }\n /**\n * Reset the store state\n */\n function $reset() {\n newNodeName.value = '';\n renamingNode.value = undefined;\n }\n // Make sure we only register the listeners once\n subscribe('files:node:rename', (node) => {\n renamingNode.value = node;\n newNodeName.value = node.basename;\n });\n return {\n $reset,\n newNodeName,\n rename,\n renamingNode,\n };\n});\n/**\n * Show a dialog asking user for confirmation about changing the file extension.\n *\n * @param oldExtension the old file name extension\n * @param newExtension the new file name extension\n */\nasync function showFileExtensionDialog(oldExtension, newExtension) {\n const { promise, resolve } = Promise.withResolvers();\n await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileExtension.vue')), { oldExtension, newExtension }, resolve);\n return promise;\n}\n/**\n * Show a dialog asking user for confirmation about renaming a file to a hidden file.\n *\n * @param filename - The new filename\n */\nasync function showHiddenFileDialog(filename) {\n const { promise, resolve } = Promise.withResolvers();\n await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileHidden.vue')), { filename }, resolve);\n return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { InvalidFilenameError, InvalidFilenameErrorReason, validateFilename } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\n/**\n * Get the validity of a filename (empty if valid).\n * This can be used for `setCustomValidity` on input elements\n *\n * @param name The filename\n * @param escape Escape the matched string in the error (only set when used in HTML)\n */\nexport function getFilenameValidity(name, escape = false) {\n if (name.trim() === '') {\n return t('files', 'Filename must not be empty.');\n }\n try {\n validateFilename(name);\n return '';\n }\n catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n return t('files', '\"{char}\" is not allowed inside a filename.', { char: error.segment }, undefined, { escape });\n case InvalidFilenameErrorReason.ReservedName:\n return t('files', '\"{segment}\" is a reserved name and not allowed for filenames.', { segment: error.segment }, undefined, { escape: false });\n case InvalidFilenameErrorReason.Extension:\n if (error.segment.match(/\\.[a-z]/i)) {\n return t('files', '\"{extension}\" is not an allowed filetype.', { extension: error.segment }, undefined, { escape: false });\n }\n return t('files', 'Filenames must not end with \"{extension}\".', { extension: error.segment }, undefined, { escape: false });\n default:\n return t('files', 'Invalid filename.');\n }\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.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!./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryName.vue?vue&type=template&id=3e8ca2b0&scoped=true\"\nimport script from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&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 \"3e8ca2b0\",\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('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?[(_vm.dragover)?_vm._m(0):[_vm._m(1),_vm._v(\" \"),(_vm.folderOverlay)?_c(_vm.folderOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay\"}):_vm._e()]]:(_vm.previewUrl)?_c('span',{staticClass:\"files-list__row-icon-preview-container\"},[(_vm.hasBlurhash && (_vm.backgroundFailed === true || !_vm.backgroundLoaded))?_c('canvas',{ref:\"canvas\",staticClass:\"files-list__row-icon-blurhash\",attrs:{\"aria-hidden\":\"true\"}}):_vm._e(),_vm._v(\" \"),(_vm.backgroundFailed !== true)?_c('img',{key:_vm.source.fileid,ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",class:{ 'files-list__row-icon-preview--loaded': _vm.backgroundFailed === false },attrs:{\"alt\":\"\",\"loading\":\"lazy\",\"src\":_vm.previewUrl},on:{\"error\":_vm.onBackgroundError,\"load\":_vm.onBackgroundLoad}}):_vm._e()]):_vm._m(2),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\"},[_vm._m(3)],1):(_vm.isRecentView && _vm.isRecentlyCreated)?_c('span',{staticClass:\"files-list__row-icon-recently-created\"},[_vm._m(4)],1):_vm._e(),_vm._v(\" \"),(_vm.fileOverlay)?_c(_vm.fileOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay files-list__row-icon-overlay--file\"}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderOpenIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FileIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FavoriteIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('RecentlyCreatedIcon')\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountGroup.vue?vue&type=template&id=fa2b1464\"\nimport script from \"./AccountGroup.vue?vue&type=script&lang=js\"\nexport * from \"./AccountGroup.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-group-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./AccountPlus.vue?vue&type=template&id=53a26aa0\"\nimport script from \"./AccountPlus.vue?vue&type=script&lang=js\"\nexport * from \"./AccountPlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-plus-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderOpen.vue?vue&type=template&id=ae0c5fc0\"\nimport script from \"./FolderOpen.vue?vue&type=script&lang=js\"\nexport * from \"./FolderOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Key.vue?vue&type=template&id=499b3412\"\nimport script from \"./Key.vue?vue&type=script&lang=js\"\nexport * from \"./Key.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon key-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./NetworkOutline.vue?vue&type=template&id=8f00cb50\"\nimport script from \"./NetworkOutline.vue?vue&type=script&lang=js\"\nexport * from \"./NetworkOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon network-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=3cc1493c\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=356230e0\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_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!./CollectivesIcon.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!./CollectivesIcon.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./CollectivesIcon.vue?vue&type=template&id=dc7ddfee\"\nimport script from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\nexport * from \"./CollectivesIcon.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',_vm._b({staticClass:\"material-design-icon collectives-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"favorite-marker-icon\",attrs:{\"name\":_vm.t('files', 'Favorite'),\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.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!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=4505d262&scoped=true\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&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 \"4505d262\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"recently-created-marker-icon\",attrs:{\"name\":_vm.t('files', 'Recently created'),\"path\":_vm.mdiPlus}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecentlyCreatedIcon.vue?vue&type=template&id=251f6582&scoped=true\"\nimport script from \"./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&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 \"251f6582\",\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType } from '@nextcloud/files';\nimport { generateUrl } from '@nextcloud/router';\nimport { getSharingToken, isPublicShare } from '@nextcloud/sharing/public';\nimport { toValue } from '@vueuse/core';\nimport { computed } from 'vue';\n/**\n * Get the preview URL for a given node.\n *\n * @param node - The node to get the preview for\n * @param options - The preview options\n * @param options.crop - Whether to crop the preview (default: true)\n * @param options.fallback - Whether to use a mime type icon as fallback (default: true)\n * @param options.size - The size of the preview in pixels (default: 128). Can be a number or a tuple [width, height]\n */\nexport function usePreviewImage(node, options = {}) {\n return computed(() => {\n const source = toValue(node);\n if (!source) {\n return;\n }\n if (source.type === FileType.Folder) {\n return;\n }\n const fallback = toValue(options).fallback ?? true;\n if (source.attributes['has-preview'] !== true\n && source.mime !== undefined\n && source.mime !== 'application/octet-stream') {\n if (!fallback) {\n return;\n }\n const previewUrl = generateUrl('/core/mimeicon?mime={mime}', {\n mime: source.mime,\n });\n const url = new URL(window.location.origin + previewUrl);\n return url.href;\n }\n const crop = toValue(options).crop ?? true;\n const [sizeX, sizeY] = [toValue(options).size ?? 128].flat();\n try {\n const previewUrl = source.attributes.previewUrl\n || (isPublicShare()\n ? generateUrl('/apps/files_sharing/publicpreview/{token}?file={file}', {\n token: getSharingToken(),\n file: source.path,\n })\n : generateUrl('/core/preview?fileId={fileid}', {\n fileid: String(source.fileid),\n }));\n const url = new URL(window.location.origin + previewUrl);\n // Request tiny previews\n url.searchParams.set('x', sizeX.toString());\n url.searchParams.set('y', (sizeY ?? sizeX).toString());\n url.searchParams.set('mimeFallback', fallback.toString());\n // Etag to force refresh preview on change\n const etag = source.attributes.etag || source.mtime?.getTime() || '';\n url.searchParams.set('v', etag.slice(0, 6));\n // Handle cropping\n url.searchParams.set('a', crop ? '0' : '1');\n return url.href;\n }\n catch {\n return;\n }\n });\n}\n","import { registerDavProperty } from '@nextcloud/files/dav';\n/**\n *\n */\nexport function initLivePhotos() {\n registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param node - The node\n */\nexport function isLivePhoto(node) {\n return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryPreview.vue?vue&type=template&id=285bdd62\"\nimport script from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\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","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, readonly, ref } from 'vue';\nconst actions = ref();\n/**\n * Get the registered and sorted file actions.\n */\nexport function useFileActions() {\n if (!actions.value) {\n // if not initialized by other component yet, initialize and subscribe to registry changes\n actions.value = getFileActions();\n getFilesRegistry().addEventListener('register:action', () => {\n actions.value = getFileActions();\n });\n }\n return readonly(actions);\n}\n/**\n * Get the enabled file actions for the given context.\n *\n * @param context - The context to check the enabled state of the actions against\n */\nexport function useEnabledFileActions(context) {\n const actions = useFileActions();\n return computed(() => actions.value\n .filter((action) => action.enabled === undefined\n || action.enabled(toValue(context)))\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)));\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed } from 'vue';\nimport { useRoute } from 'vue-router/composables';\n/**\n * Get information about the current route\n */\nexport function useRouteParameters() {\n const route = useRoute();\n /**\n * Get the path of the current active directory\n */\n const directory = computed(() => String(route.query.dir || '/')\n // Remove any trailing slash but leave root slash\n .replace(/^(.+)\\/$/, '$1'));\n /**\n * Get the current fileId used on the route\n */\n const fileId = computed(() => {\n const fileId = Number.parseInt(route.params.fileid ?? '0') || null;\n return Number.isNaN(fileId) ? null : fileId;\n });\n /**\n * State of `openFile` route param\n */\n const openFile = computed(() => 'openfile' in route.query\n && (typeof route.query.openfile !== 'string'\n || route.query.openfile.toLocaleLowerCase() !== 'false'));\n // if `opendetails` is set it is considered truthy, but allow to explicitly set it to 'false'\n const openDetails = computed(() => 'opendetails' in route.query\n && (typeof route.query.opendetails !== 'string'\n || route.query.opendetails.toLocaleLowerCase() !== 'false'));\n return {\n /** Path of currently open directory */\n directory,\n /** Current active fileId */\n fileId,\n /** Should the active node should be opened (`openFile` route param) */\n openFile,\n /** Should the details sidebar be shown (`openDetails` route param) */\n openDetails,\n };\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport InformationSvg from '@mdi/svg/svg/information-outline.svg?raw';\nimport { getSidebar, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport logger from '../logger.ts';\nexport const ACTION_DETAILS = 'details';\nexport const action = {\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: ({ nodes }) => {\n const node = nodes[0];\n if (nodes.length !== 1 || !node) {\n return false;\n }\n const sidebar = getSidebar();\n if (!sidebar.available) {\n return false;\n }\n if (isPublicShare()) {\n return false;\n }\n return node.root.startsWith('/files/') && node.permissions !== Permission.NONE;\n },\n async exec({ nodes }) {\n const sidebar = getSidebar();\n const [node] = nodes;\n try {\n // If the sidebar is already open for the current file, do nothing\n if (sidebar.node?.source === node.source) {\n logger.debug('Sidebar already open for this file', { node });\n return null;\n }\n sidebar.open(node, 'sharing');\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n hotkey: {\n key: 'D',\n description: t('files', 'Open the details sidebar'),\n },\n};\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./FileMultiple.vue?vue&type=template&id=15fca808\"\nimport script from \"./FileMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FileMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-multiple-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType, } from '@nextcloud/files';\nimport { n } from '@nextcloud/l10n';\n/**\n * Extract dir and name from file path\n *\n * @param path - The full path\n * @return [dirPath, fileName]\n */\nexport function extractFilePaths(path) {\n const pathSections = path.split('/');\n const fileName = pathSections[pathSections.length - 1];\n const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n return [dirPath, fileName];\n}\n/**\n * Generate a translated summary of an array of nodes\n *\n * @param nodes - The nodes to summarize\n * @param hidden - The number of hidden nodes\n */\nexport function getSummaryFor(nodes, hidden = 0) {\n const fileCount = nodes.filter((node) => node.type === FileType.File).length;\n const folderCount = nodes.filter((node) => node.type === FileType.Folder).length;\n const summary = [];\n if (fileCount > 0 || folderCount === 0) {\n const fileSummary = n('files', '%n file', '%n files', fileCount);\n summary.push(fileSummary);\n }\n if (folderCount > 0) {\n const folderSummary = n('files', '%n folder', '%n folders', folderCount);\n summary.push(folderSummary);\n }\n if (hidden > 0) {\n // TRANSLATORS: This is the number of hidden files or folders\n const hiddenSummary = n('files', '%n hidden', '%n hidden', hidden);\n summary.push(hiddenSummary);\n }\n return summary.join(' · ');\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list-drag-image\"},[_c('span',{staticClass:\"files-list-drag-image__icon\"},[_c('span',{ref:\"previewImg\"}),_vm._v(\" \"),(_vm.isSingleFolder)?_c('FolderIcon'):_c('FileMultipleIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list-drag-image__name\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.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!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropPreview.vue?vue&type=template&id=6c14765c\"\nimport script from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&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","import Vue from 'vue';\nimport DragAndDropPreview from '../components/DragAndDropPreview.vue';\nconst Preview = Vue.extend(DragAndDropPreview);\nlet preview;\n/**\n *\n * @param nodes\n */\nexport async function getDragAndDropPreview(nodes) {\n return new Promise((resolve) => {\n if (!preview) {\n preview = new Preview().$mount();\n document.body.appendChild(preview.$el);\n }\n preview.update(nodes);\n preview.$on('loaded', () => {\n resolve(preview.$el);\n preview.$off('loaded');\n });\n });\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType, Folder, File as NcFile, Node, NodeStatus, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { vOnClickOutside } from '@vueuse/components';\nimport { extname } from 'path';\nimport Vue, { computed, defineComponent } from 'vue';\nimport { action as sidebarAction } from '../actions/sidebarAction.ts';\nimport logger from '../logger.ts';\nimport { dataTransferToFileTree, onDropExternalFiles, onDropInternalFiles } from '../services/DropService.ts';\nimport { getDragAndDropPreview } from '../utils/dragUtils.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\nimport { isDownloadable } from '../utils/permissions.ts';\nVue.directive('onClickOutside', vOnClickOutside);\nexport default defineComponent({\n props: {\n source: {\n type: [Folder, NcFile, Node],\n required: true,\n },\n nodes: {\n type: Array,\n required: true,\n },\n isMtimeAvailable: {\n type: Boolean,\n default: false,\n },\n compact: {\n type: Boolean,\n default: false,\n },\n },\n provide() {\n return {\n defaultFileAction: computed(() => this.defaultFileAction),\n enabledFileActions: computed(() => this.enabledFileActions),\n };\n },\n data() {\n return {\n dragover: false,\n gridMode: false,\n };\n },\n computed: {\n fileid() {\n return this.source.fileid ?? 0;\n },\n uniqueId() {\n return hashCode(this.source.source);\n },\n isLoading() {\n return this.source.status === NodeStatus.LOADING;\n },\n /**\n * The display name of the current node\n * Either the nodes filename or a custom display name (e.g. for shares)\n */\n displayName() {\n // basename fallback needed for apps using old `@nextcloud/files` prior 3.6.0\n return this.source.displayname || this.source.basename;\n },\n /**\n * The display name without extension\n */\n basename() {\n if (this.extension === '') {\n return this.displayName;\n }\n return this.displayName.slice(0, 0 - this.extension.length);\n },\n /**\n * The extension of the file\n */\n extension() {\n if (this.source.type === FileType.Folder) {\n return '';\n }\n return extname(this.displayName);\n },\n draggingFiles() {\n return this.draggingStore.dragging;\n },\n selectedFiles() {\n return this.selectionStore.selected;\n },\n isSelected() {\n return this.selectedFiles.includes(this.source.source);\n },\n isRenaming() {\n return this.renamingStore.renamingNode === this.source;\n },\n isRenamingSmallScreen() {\n return this.isRenaming && this.isNarrow;\n },\n isActive() {\n // Not using activeNode here because we want to\n // be reactive to the url change directly\n return String(this.fileid) === String(this.currentRouteFileId);\n },\n /**\n * Check if the source is in a failed state after an API request\n */\n isFailedSource() {\n return this.source.status === NodeStatus.FAILED;\n },\n canDrag() {\n if (this.isRenaming) {\n return false;\n }\n // Ignore if the node is not available\n if (this.isFailedSource) {\n return false;\n }\n const canDrag = (node) => {\n return (node?.permissions & Permission.UPDATE) !== 0;\n };\n // If we're dragging a selection, we need to check all files\n if (this.selectedFiles.length > 0) {\n const nodes = this.selectedFiles.map((source) => this.filesStore.getNode(source));\n return nodes.every(canDrag);\n }\n return canDrag(this.source);\n },\n canDrop() {\n if (this.source.type !== FileType.Folder) {\n return false;\n }\n // Ignore if the node is not available\n if (this.isFailedSource) {\n return false;\n }\n // If the current folder is also being dragged, we can't drop it on itself\n if (this.draggingFiles.includes(this.source.source)) {\n return false;\n }\n return (this.source.permissions & Permission.CREATE) !== 0;\n },\n openedMenu: {\n get() {\n return this.actionsMenuStore.opened === this.uniqueId.toString();\n },\n set(opened) {\n // If the menu is opened on another file entry, we ignore closed events\n if (opened === false && this.actionsMenuStore.opened !== this.uniqueId.toString()) {\n return;\n }\n // If opened, we specify the current file id\n // else we set it to null to close the menu\n this.actionsMenuStore.opened = opened\n ? this.uniqueId.toString()\n : null;\n },\n },\n mtime() {\n // If the mtime is not a valid date, return it as is\n if (this.source.mtime && !isNaN(this.source.mtime.getDate())) {\n return this.source.mtime;\n }\n if (this.source.crtime && !isNaN(this.source.crtime.getDate())) {\n return this.source.crtime;\n }\n return null;\n },\n mtimeOpacity() {\n if (!this.mtime) {\n return {};\n }\n // The time when we start reducing the opacity\n const maxOpacityTime = 31 * 24 * 60 * 60 * 1000; // 31 days\n // everything older than the maxOpacityTime will have the same value\n const timeDiff = Date.now() - this.mtime.getTime();\n if (timeDiff < 0) {\n // this means we have an invalid mtime which is in the future!\n return {};\n }\n // inversed time difference from 0 to maxOpacityTime (which would mean today)\n const opacityTime = Math.max(0, maxOpacityTime - timeDiff);\n // 100 = today, 0 = 31 days ago or older\n const percentage = Math.round(opacityTime * 100 / maxOpacityTime);\n return {\n color: `color-mix(in srgb, var(--color-main-text) ${percentage}%, var(--color-text-maxcontrast))`,\n };\n },\n /**\n * Sorted actions that are enabled for this node\n */\n enabledFileActions() {\n if (this.source.status === NodeStatus.FAILED) {\n return [];\n }\n return this.actions\n .filter((action) => {\n if (!action.enabled) {\n return true;\n }\n // In case something goes wrong, since we don't want to break\n // the entire list, we filter out actions that throw an error.\n try {\n return action.enabled({\n nodes: [this.source],\n view: this.activeView,\n folder: this.activeFolder,\n contents: this.nodes,\n });\n }\n catch (error) {\n logger.error('Error while checking action', { action, error });\n return false;\n }\n })\n .sort((a, b) => (a.order || 0) - (b.order || 0));\n },\n defaultFileAction() {\n return this.enabledFileActions.find((action) => action.default !== undefined);\n },\n },\n watch: {\n /**\n * When the source changes, reset the preview\n * and fetch the new one.\n *\n * @param newSource The new value of the source prop\n * @param oldSource The previous value\n */\n source(newSource, oldSource) {\n if (newSource.source !== oldSource.source) {\n this.resetState();\n }\n },\n openedMenu() {\n // Checking if the menu is really closed and not\n // just a change in the open state to another file entry.\n if (this.actionsMenuStore.opened === null) {\n // Reset any right menu position potentially set\n logger.debug('All actions menu closed, resetting right menu position...');\n const root = this.$el?.closest('main.app-content');\n if (root !== null) {\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n }\n },\n },\n beforeDestroy() {\n this.resetState();\n },\n methods: {\n resetState() {\n // Reset the preview state\n this.$refs?.preview?.reset?.();\n // Close menu\n this.openedMenu = false;\n },\n // Open the actions menu on right click\n onRightClick(event) {\n // If already opened, fallback to default browser\n if (this.openedMenu) {\n return;\n }\n // Ignore right click if the node is not available\n if (this.isFailedSource) {\n return;\n }\n // The grid mode is compact enough to not care about\n // the actions menu mouse position\n if (!this.gridMode) {\n // Actions menu is contained within the app content\n const root = this.$el?.closest('main.app-content');\n const contentRect = root.getBoundingClientRect();\n // Using Math.min/max to prevent the menu from going out of the AppContent\n // 200 = max width of the menu\n logger.debug('Setting actions menu position...');\n root.style.setProperty('--mouse-pos-x', Math.max(0, event.clientX - contentRect.left - 200) + 'px');\n root.style.setProperty('--mouse-pos-y', Math.max(0, event.clientY - contentRect.top) + 'px');\n }\n else {\n // Reset any right menu position potentially set\n const root = this.$el?.closest('main.app-content');\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n // If the clicked row is in the selection, open global menu\n const isMoreThanOneSelected = this.selectedFiles.length > 1;\n this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId.toString();\n // Prevent any browser defaults\n event.preventDefault();\n event.stopPropagation();\n },\n execDefaultAction(event) {\n // Ignore click if we are renaming\n if (this.isRenaming) {\n return;\n }\n // Ignore right click (button & 2) and any auxiliary button expect mouse-wheel (button & 4)\n if (Boolean(event.button & 2) || event.button > 4) {\n return;\n }\n // Ignore if the node is not available\n if (this.isFailedSource) {\n return;\n }\n // if ctrl+click / cmd+click (MacOS uses the meta key) or middle mouse button (button & 4), open in new tab\n // also if there is no default action use this as a fallback\n const metaKeyPressed = event.ctrlKey || event.metaKey || event.button === 1;\n if (metaKeyPressed || !this.defaultFileAction) {\n // If no download permission, then we can not allow to download (direct link) the files\n if (!isDownloadable(this.source)) {\n return;\n }\n const url = isPublicShare()\n ? this.source.encodedSource\n : generateUrl('/f/{fileId}', { fileId: this.fileid });\n event.preventDefault();\n event.stopPropagation();\n // Open the file in a new tab if the meta key or the middle mouse button is clicked\n window.open(url, metaKeyPressed ? '_blank' : '_self');\n return;\n }\n // every special case handled so just execute the default action\n event.preventDefault();\n event.stopPropagation();\n // Execute the first default action if any\n this.defaultFileAction.exec({\n nodes: [this.source],\n folder: this.activeFolder,\n contents: this.nodes,\n view: this.activeView,\n });\n },\n openDetailsIfAvailable(event) {\n event.preventDefault();\n event.stopPropagation();\n if (sidebarAction?.enabled?.({\n nodes: [this.source],\n folder: this.activeFolder,\n contents: this.nodes,\n view: this.activeView,\n })) {\n sidebarAction.exec({\n nodes: [this.source],\n folder: this.activeFolder,\n contents: this.nodes,\n view: this.activeView,\n });\n }\n },\n onDragOver(event) {\n this.dragover = this.canDrop;\n if (!this.canDrop) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n // Handle copy/move drag and drop\n if (event.ctrlKey) {\n event.dataTransfer.dropEffect = 'copy';\n }\n else {\n event.dataTransfer.dropEffect = 'move';\n }\n },\n onDragLeave(event) {\n // Counter bubbling, make sure we're ending the drag\n // only when we're leaving the current element\n const currentTarget = event.currentTarget;\n if (currentTarget?.contains(event.relatedTarget)) {\n return;\n }\n this.dragover = false;\n },\n async onDragStart(event) {\n event.stopPropagation();\n if (!this.canDrag || !this.fileid) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n logger.debug('Drag started', { event });\n // Make sure that we're not dragging a file like the preview\n event.dataTransfer?.clearData?.();\n // Reset any renaming\n this.renamingStore.$reset();\n // Dragging set of files, if we're dragging a file\n // that is already selected, we use the entire selection\n if (this.selectedFiles.includes(this.source.source)) {\n this.draggingStore.set(this.selectedFiles);\n }\n else {\n this.draggingStore.set([this.source.source]);\n }\n const nodes = this.draggingStore.dragging\n .map((source) => this.filesStore.getNode(source));\n const image = await getDragAndDropPreview(nodes);\n event.dataTransfer?.setDragImage(image, -10, -10);\n },\n onDragEnd() {\n this.draggingStore.reset();\n this.dragover = false;\n logger.debug('Drag ended');\n },\n async onDrop(event) {\n // skip if native drop like text drag and drop from files names\n if (!this.draggingFiles && !event.dataTransfer?.items?.length) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n // If another button is pressed, cancel it. This\n // allows cancelling the drag with the right click.\n if (!this.canDrop || event.button) {\n return;\n }\n // Caching the selection\n const selection = this.draggingFiles;\n const items = Array.from(event.dataTransfer?.items || []);\n if (selection.length === 0 && items.some((item) => item.kind === 'file')) {\n // Snapshot DataTransfer items immediately so Blink clears data.items\n // after the first async yield. Then convert FileSystemEntry to File\n // inside dataTransferToFileTree (duck-typed via entry.isFile) rather\n // than deferring to @nextcloud/upload's batchUpload, whose\n // instanceof-based conversion silently no-ops on some Chromium builds.\n // See https://github.com/nextcloud/server/issues/60139\n const fileTree = await dataTransferToFileTree(items);\n // canDrop already gates this branch on FileType.Folder, but the\n // type system can't see that — narrow defensively so a future\n // loosening of canDrop can't silently lie via the cast below.\n // Use the `type` field rather than `instanceof Folder`: apps\n // bundle their own copy of @nextcloud/files, so a Folder from\n // an app would not be `instanceof` the server's Folder class.\n if (this.source.type !== FileType.Folder) {\n logger.error('onDrop: external drop target is not a Folder', { source: this.source });\n this.dragover = false;\n return;\n }\n // Fetch destination contents for conflict resolution\n const cachedContents = this.filesStore.getNodesByPath(this.activeView.id, this.source.path);\n const contents = cachedContents.length === 0\n ? (await this.activeView.getContents(this.source.path)).contents\n : cachedContents;\n logger.debug('Start uploading dropped files', { target: this.source.path, fileTree });\n await onDropExternalFiles(fileTree, this.source, contents);\n this.dragover = false;\n return;\n }\n // We might not have the target directory fetched yet\n const cachedContents = this.filesStore.getNodesByPath(this.activeView.id, this.source.path);\n const contents = cachedContents.length === 0\n ? (await this.activeView.getContents(this.source.path)).contents\n : cachedContents;\n const isCopy = event.ctrlKey;\n this.dragover = false;\n logger.debug('Dropped', { event, folder: this.source, selection });\n const nodes = selection.map((source) => this.filesStore.getNode(source));\n await onDropInternalFiles(nodes, this.source, contents, isCopy);\n // Reset selection after we dropped the files\n // if the dropped files are within the selection\n if (selection.some((source) => this.selectedFiles.includes(source))) {\n logger.debug('Dropped selection, resetting select store...');\n this.selectionStore.reset();\n }\n },\n t,\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Simple non-secure hashing function similar to Java's `hashCode`\n *\n * @param str The string to hash\n * @return a non secure hash of the string\n */\nexport function hashCode(str) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;\n }\n return (hash >>> 0);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\n/**\n * Check permissions on the node if it can be downloaded\n *\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node) {\n if ((node.permissions & Permission.READ) === 0) {\n return false;\n }\n // check hide-download property of shares\n if (node.attributes['hide-download'] === true\n || node.attributes['hide-download'] === 'true') {\n return false;\n }\n // If the mount type is a share, ensure it got download permissions.\n if (node.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]');\n const downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download');\n if (downloadAttribute !== undefined) {\n return downloadAttribute.value === true;\n }\n }\n return true;\n}\n/**\n * Check permissions on the node if it can be synced/open locally\n *\n * @param node The node to check\n * @return True if syncable, false otherwise\n */\nexport function isSyncable(node) {\n if (!node.isDavResource) {\n return false;\n }\n if ((node.permissions & Permission.WRITE) === 0) {\n return false;\n }\n // Syncable has the same permissions as downloadable for now\n return isDownloadable(node);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',_vm._g({staticClass:\"files-list__row\",class:{\n\t\t'files-list__row--dragover': _vm.dragover,\n\t\t'files-list__row--loading': _vm.isLoading,\n\t\t'files-list__row--active': _vm.isActive,\n\t},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag}},_vm.rowListeners),[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"source\":_vm.source,\"dragover\":_vm.dragover},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),_c('FileEntryActions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('td',{staticClass:\"files-list__row-mime\",attrs:{\"title\":_vm.mime,\"data-cy-files-list-row-mime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.mime))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:(_vm.sizeOpacity),attrs:{\"data-cy-files-list-row-size\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_c('span',[_vm._v(_vm._s(_vm.t('files', 'Unknown date')))])],1):_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.activeView.id}-${column.id}`,attrs:{\"data-cy-files-list-row-column-custom\":column.id},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('CustomElementRender',{attrs:{\"active-folder\":_vm.activeFolder,\"active-view\":_vm.activeView,\"render\":_vm.adaptColumnRenderToCustomElementRender(column),\"source\":_vm.source}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=4fc1f0a8\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts\"\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('tr',{staticClass:\"files-list__row\",class:{ 'files-list__row--active': _vm.isActive, 'files-list__row--dragover': _vm.dragover, 'files-list__row--loading': _vm.isLoading },attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag},on:{\"contextmenu\":_vm.onRightClick,\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave,\"dragstart\":_vm.onDragStart,\"dragend\":_vm.onDragEnd,\"drop\":_vm.onDrop}},[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"dragover\":_vm.dragover,\"grid-mode\":true,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('FileEntryActions',{ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"grid-mode\":true,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryGrid.vue?vue&type=template&id=c13970d8\"\nimport script from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\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 (_setup.activeChips.length > 0)?_c('ul',{class:_vm.$style.fileListFilterChips,attrs:{\"aria-label\":_setup.t('files', 'Active filters')}},_vm._l((_setup.activeChips),function(chip,index){return _c('li',{key:index},[_c(_setup.NcChip,{attrs:{\"aria-label-close\":_setup.t('files', 'Remove filter'),\"icon-svg\":chip.icon,\"text\":chip.text},on:{\"close\":chip.onclick},scopedSlots:_vm._u([(chip.user)?{key:\"icon\",fn:function(){return [_c(_setup.NcAvatar,{attrs:{\"disable-menu\":\"\",\"hide-status\":\"\",\"size\":24,\"user\":chip.user}})]},proxy:true}:null],null,true)})],1)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcChip-DLfUzq07.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcChip-DLfUzq07.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcChip-DLfUzq07.css';\nimport { c as mdiClose } from \"../chunks/mdi-DkJglNiS.mjs\";\nimport { useSlots, computed } from \"vue\";\nimport { N as NcActionButton } from \"../chunks/NcActionButton-K4jUGMlW.mjs\";\nimport { N as NcActions } from \"../chunks/NcActions-Ca_2vj8f.mjs\";\nimport { N as NcIconSvgWrapper } from \"../chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { r as register, m as t18, a as t } from \"../chunks/_l10n-DVz9Qdzk.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t18);\nconst _sfc_main = {\n __name: \"NcChip\",\n props: {\n /**\n * aria label to set on the close button\n *\n * @default 'Close'\n */\n ariaLabelClose: {\n type: String,\n default: t(\"Close\")\n },\n /**\n * Container for the actions\n */\n actionsContainer: {\n type: String,\n default: \"body\"\n },\n /**\n * Main text of the chip.\n */\n text: {\n type: String,\n default: \"\"\n },\n /**\n * Set the chips design variant-\n *\n * This sets the background style of the chip, similar to NcButton's `variant`.\n *\n * @deprecated will be removed with v9 - use `variant` instead.\n */\n type: {\n type: String,\n default: \"secondary\",\n validator: (value) => [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(value)\n },\n /**\n * SVG path of the icon to use, this takes precedence over `iconSVG`.\n * For example icon paths from `@mdi/js` can be used.\n */\n iconPath: {\n type: String,\n default: null\n },\n /**\n * Inline SVG to use as the icon\n */\n iconSvg: {\n type: String,\n default: null\n },\n /**\n * Set to true to prevent the close button to be shown\n */\n noClose: {\n type: Boolean,\n default: false\n },\n /**\n * Set the chips design variant-\n *\n * This sets the background style of the chip, similar to NcButton's `variant`.\n *\n * @since 8.24.0\n */\n variant: {\n type: String,\n default: \"secondary\",\n validator: (value) => [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(value)\n }\n },\n emits: [\"close\"],\n setup(__props, { emit }) {\n const props = __props;\n const slots = useSlots();\n const realVariant = computed(() => props.type !== \"secondary\" ? props.type : props.variant);\n const canClose = computed(() => !props.noClose);\n const hasActions = () => Boolean(slots.actions?.());\n const hasIcon = () => Boolean(props.iconPath || props.iconSvg || !!slots.icon?.());\n return { __sfc: true, props, emit, slots, realVariant, canClose, hasActions, hasIcon, mdiClose, NcActionButton, NcActions, NcIconSvgWrapper };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { staticClass: \"nc-chip\", class: {\n [`nc-chip--${_setup.realVariant}`]: true,\n \"nc-chip--no-actions\": _vm.noClose && !_setup.hasActions(),\n \"nc-chip--no-icon\": !_setup.hasIcon()\n } }, [_setup.hasIcon() ? _c(\"span\", { staticClass: \"nc-chip__icon\" }, [_vm._t(\"icon\", function() {\n return [_vm.iconPath || _vm.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"inline\": \"\", \"path\": _vm.iconPath, \"svg\": _vm.iconPath ? void 0 : _vm.iconSvg, \"size\": 18 } }) : _vm._e()];\n })], 2) : _vm._e(), _c(\"span\", { staticClass: \"nc-chip__text\" }, [_vm._t(\"default\", function() {\n return [_vm._v(_vm._s(_vm.text))];\n })], 2), _setup.canClose || _setup.hasActions() ? _c(_setup.NcActions, { staticClass: \"nc-chip__actions\", attrs: { \"container\": _vm.actionsContainer, \"force-menu\": !_setup.canClose, \"variant\": \"tertiary-no-background\" } }, [_setup.canClose ? _c(_setup.NcActionButton, { attrs: { \"close-after-click\": \"\" }, on: { \"click\": function($event) {\n return _setup.emit(\"close\");\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.mdiClose, \"size\": 20 } })];\n }, proxy: true }], null, false, 2547223506) }, [_vm._v(\" \" + _vm._s(_vm.ariaLabelClose) + \" \")]) : _vm._e(), _vm._t(\"actions\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"c8e429a5\"\n);\nconst NcChip = __component__.exports;\nexport {\n NcChip as default\n};\n//# sourceMappingURL=NcChip.mjs.map\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilterChips.vue?vue&type=template&id=690b69f8\"\nimport script from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\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 (_setup.isVisible)?_c(_setup.NcButton,{attrs:{\"size\":\"small\"},on:{\"click\":_setup.onClick}},[_vm._v(\"\\n\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\")]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FileListFilterToSearch.vue?vue&type=template&id=f1a11948\"\nimport script from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enabled),expression:\"enabled\"}],class:`files-list__header-${_vm.header.id}`},[_c('span',{ref:\"mount\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=272fbca3\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\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('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_setup.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.isMimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mime\"}):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_setup.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.columns),function(column){return _c('th',{key:column.id,class:_setup.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&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!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableFooter.vue?vue&type=template&id=378a6e4a&scoped=true\"\nimport script from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&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 \"378a6e4a\",\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('div',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"data-cy-files-list-selection-actions\":\"\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"open\":_vm.openedMenu,\"container\":\"#app-content-vue\",\"boundaries-element\":_vm.boundariesElement,\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-name\":true,\"inline\":_vm.enabledInlineActions.length,\"menu-name\":_vm.enabledInlineActions.length <= 1 ? _vm.t('files', 'Actions') : undefined},on:{\"update:open\":function($event){_vm.openedMenu=$event},\"close\":function($event){_vm.openedSubmenu = null}}},[_vm._l((_vm.enabledMenuActions),function(action,idx){return _c('NcActionButton',{key:action.id,ref:`action-batch-${action.id}`,refInFor:true,class:{\n\t\t\t\t[`files-list__row-actions-batch-${action.id}`]: true,\n\t\t\t\t[`files-list__row-actions-batch--menu`]: _vm.isValidMenu(action),\n\t\t\t},attrs:{\"id\":idx === 0 ? _vm.FILE_LIST_HEAD_FIRST_BATCH_ACTION_ID : undefined,\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-selection-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},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('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-actions-batch-back\",attrs:{\"data-cy-files-list-selection-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-actions-batch--submenu\",class:`files-list__row-actions-batch-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-selection-action\":action.id,\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},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('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.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!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderActions.vue?vue&type=template&id=53193162&scoped=true\"\nimport script from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&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 \"53193162\",\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:[{\n\t\t'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode,\n\t\t'files-list__column-sort-button--size': _vm.sortingMode === 'size',\n\t}],attrs:{\"alignment\":_vm.mode === 'size' ? 'end' : 'start-reverse',\"variant\":\"tertiary\",\"title\":_vm.name},on:{\"click\":function($event){return _vm.toggleSortBy(_vm.mode)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{staticClass:\"files-list__column-sort-button-icon\"}):_c('MenuDown',{staticClass:\"files-list__column-sort-button-icon\"})]},proxy:true}])},[_vm._v(\" \"),_c('span',{staticClass:\"files-list__column-sort-button-text\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialViewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = defineStore('viewconfig', () => {\n const viewConfigs = ref({ ...initialViewConfig });\n /**\n * Get the config for a specific view\n *\n * @param viewid Id of the view to fet the config for\n */\n function getConfig(viewid) {\n return viewConfigs.value[viewid] || {};\n }\n /**\n * Update the view config local store\n *\n * @param viewId The id of the view to update\n * @param key The config key to update\n * @param value The new value\n */\n function onUpdate(viewId, key, value) {\n if (!(viewId in viewConfigs.value)) {\n set(viewConfigs.value, viewId, {});\n }\n set(viewConfigs.value[viewId], key, value);\n }\n /**\n * Update the view config local store AND on server side\n *\n * @param view Id of the view to update\n * @param key Config key to update\n * @param value New value\n */\n async function update(view, key, value) {\n if (getCurrentUser() !== null) {\n await axios.put(generateUrl('/apps/files/api/v1/views'), {\n value,\n view,\n key,\n });\n }\n emit('files:view-config:updated', { view, key, value });\n }\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n *\n * @param key Key to sort by\n * @param view View to set the sorting key for\n */\n function setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n update(view, 'sorting_mode', key);\n update(view, 'sorting_direction', 'asc');\n }\n /**\n * Toggle the sorting direction\n *\n * @param viewId id of the view to set the sorting order for\n */\n function toggleSortingDirection(viewId = 'files') {\n const config = viewConfigs.value[viewId] || { sorting_direction: 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n update(viewId, 'sorting_direction', newDirection);\n }\n // Initialize event listener\n subscribe('files:view-config:updated', ({ view, key, value }) => onUpdate(view, key, value));\n return {\n viewConfigs,\n getConfig,\n setSortingBy,\n toggleSortingDirection,\n update,\n };\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mapState } from 'pinia';\nimport Vue from 'vue';\nimport { useActiveStore } from '../store/active.ts';\nimport { useViewConfigStore } from '../store/viewConfig.ts';\nexport default Vue.extend({\n setup() {\n const activeStore = useActiveStore();\n return {\n activeStore,\n };\n },\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.activeStore.activeView?.id)?.sorting_mode\n || this.activeStore.activeView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.activeStore.activeView?.id)?.sorting_direction;\n return sortingDirection !== 'desc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.activeStore.activeView?.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.activeStore.activeView?.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.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!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderButton.vue?vue&type=template&id=4a8557e6&scoped=true\"\nimport script from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&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 \"4a8557e6\",\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',{staticClass:\"files-list__row-head\"},[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[_c('NcCheckboxRadioSwitch',_vm._b({attrs:{\"id\":_vm.FILES_LIST_HEADER_SELECT_ALL_CHECKBOX_ID,\"data-cy-files-list-selection-checkbox\":\"\"},on:{\"update:model-value\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",attrs:{\"aria-sort\":_vm.ariaSortForMode('basename')}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Actions'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mime\",class:{ 'files-list__column--sortable': _vm.isMimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'File type'),\"mode\":\"mime\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{ 'files-list__column--sortable': _vm.isSizeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('size')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{ 'files-list__column--sortable': _vm.isMtimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mtime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column),attrs:{\"aria-sort\":_vm.ariaSortForMode(column.id)}},[(!!column.sort)?_c('FilesListTableHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\")])],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.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!./FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeader.vue?vue&type=template&id=5a72550e&scoped=true\"\nimport script from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&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 \"5a72550e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list\",class:{ 'files-list--grid': _vm.gridMode },attrs:{\"data-cy-files-list\":\"\"},on:{\"&scroll\":function($event){return _vm.onScroll.apply(null, arguments)}}},[_c('div',{ref:\"before\",staticClass:\"files-list__before\"},[_vm._t(\"before\")],2),_vm._v(\" \"),_c('div',{ref:\"filters\",staticClass:\"files-list__filters\"},[_vm._t(\"filters\")],2),_vm._v(\" \"),(!!_vm.$scopedSlots['header-overlay'])?_c('div',{staticClass:\"files-list__thead-overlay\"},[_vm._t(\"header-overlay\")],2):_vm._e(),_vm._v(\" \"),(_vm.dataSources.length === 0)?_c('div',{staticClass:\"files-list__empty\"},[_vm._t(\"empty\")],2):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"files-list__table\",class:{\n\t\t\t'files-list__table--with-thead-overlay': !!_vm.$scopedSlots['header-overlay'],\n\t\t\t'files-list__table--hidden': _vm.dataSources.length === 0,\n\t\t},attrs:{\"aria-hidden\":_vm.dataSources.length === 0,\"inert\":_vm.dataSources.length === 0}},[(_vm.caption)?_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.caption)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"files-list__thead\",attrs:{\"data-cy-files-list-thead\":\"\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"files-list__tbody\",style:(_vm.tbodyStyle),attrs:{\"data-cy-files-list-tbody\":\"\"}},_vm._l((_vm.renderedItems),function({ key, item },i){return _c(_vm.dataComponent,_vm._b({key:key,tag:\"component\",attrs:{\"source\":item,\"index\":i}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{ref:\"footer\",staticClass:\"files-list__tfoot\",attrs:{\"data-cy-files-list-tfoot\":\"\"}},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=097bcb72\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\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","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListHeaders, getFilesRegistry } from '@nextcloud/files';\nimport { computed, ref } from 'vue';\nconst headers = ref();\nconst sorted = computed(() => [...(headers.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list headers.\n */\nexport function useFileListHeaders() {\n if (!headers.value) {\n // if not initialized by other component yet, initialize and subscribe to registry changes\n headers.value = getFileListHeaders();\n getFilesRegistry().addEventListener('register:listHeader', () => {\n headers.value = getFileListHeaders();\n });\n }\n return sorted;\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.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!./FilesListVirtual.vue?vue&type=style&index=0&id=1a9725ff&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=1a9725ff&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/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=1a9725ff&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=1&id=1a9725ff&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=1a9725ff&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=1a9725ff&prod&scoped=true&lang=scss\"\nimport style1 from \"./FilesListVirtual.vue?vue&type=style&index=1&id=1a9725ff&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 \"1a9725ff\",\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, ref } from 'vue';\nconst actions = ref();\nconst sorted = computed(() => [...(actions.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list actions.\n */\nexport function useFileListActions() {\n if (!actions.value) {\n // if not initialized by other component yet, initialize and subscribe to registry changes\n actions.value = getFileListActions();\n getFilesRegistry().addEventListener('register:listAction', () => {\n actions.value = getFileListActions();\n });\n }\n return sorted;\n}\n/**\n * Get the enabled file list actions for the given folder, contents and view.\n *\n * @param folder - The current folder\n * @param contents - The contents of the current folder\n * @param view - The current view\n */\nexport function useEnabledFileListActions(folder, contents, view) {\n const actions = useFileListActions();\n return computed(() => {\n if (toValue(folder) === undefined || toValue(view) === undefined) {\n return [];\n }\n return actions.value.filter((action) => action.enabled === undefined\n || action.enabled({ folder: toValue(folder), contents: toValue(contents), view: toValue(view) }));\n });\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { getSidebarActions, getSidebarTabs } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, readonly, ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from './active.ts';\nimport { useFilesStore } from './files.ts';\nexport const useSidebarStore = defineStore('sidebar', () => {\n const activeTab = ref();\n const isOpen = ref(false);\n const activeStore = useActiveStore();\n const currentNode = computed(() => isOpen.value ? activeStore.activeNode : undefined);\n const hasContext = computed(() => !!(currentNode.value && activeStore.activeFolder && activeStore.activeView));\n const currentContext = computed(() => {\n if (!hasContext.value) {\n return;\n }\n return {\n node: currentNode.value,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n };\n });\n const currentActions = computed(() => currentContext.value ? getActions(currentContext.value) : []);\n const currentTabs = computed(() => currentContext.value ? getTabs(currentContext.value) : []);\n /**\n * Open the sidebar for a given node and optional tab ID.\n *\n * @param node - The node to display in the sidebar.\n * @param tabId - Optional ID of the tab to activate.\n */\n function open(node, tabId) {\n if (!(node && activeStore.activeFolder && activeStore.activeView)) {\n logger.debug('sidebar: cannot open sidebar because the active folder or view is not set.', {\n node,\n activeFolder: activeStore.activeFolder,\n activeView: activeStore.activeView,\n });\n throw new Error('Cannot open sidebar because the active folder or view is not set.');\n }\n if (isOpen.value && currentNode.value?.source === node.source) {\n logger.debug('sidebar: already open for current node');\n if (tabId) {\n logger.debug('sidebar: already open for current node - switching tab', { tabId });\n setActiveTab(tabId);\n }\n return;\n }\n const newTabs = getTabs({\n node,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n });\n if (tabId && !newTabs.find(({ id }) => id === tabId)) {\n logger.warn(`sidebar: cannot open tab '${tabId}' because it is not available for the current context.`);\n activeTab.value = newTabs[0]?.id;\n }\n else {\n activeTab.value = tabId ?? newTabs[0]?.id;\n }\n logger.debug(`sidebar: opening for ${node.displayname}`, { node });\n activeStore.activeNode = node;\n isOpen.value = true;\n }\n /**\n * Close the sidebar.\n */\n function close() {\n isOpen.value = false;\n }\n /**\n * Get the available tabs for the sidebar.\n * If a context is provided, only tabs enabled for that context are returned.\n *\n * @param context - Optional context to filter the available tabs.\n */\n function getTabs(context) {\n let tabs = getSidebarTabs();\n if (context) {\n tabs = tabs.filter((tab) => tab.enabled === undefined || tab.enabled(context));\n }\n return tabs.sort((a, b) => a.order - b.order);\n }\n /**\n * Get the available actions for the sidebar.\n * If a context is provided, only actions enabled for that context are returned.\n *\n * @param context - Optional context to filter the available actions.\n */\n function getActions(context) {\n let actions = getSidebarActions();\n if (context) {\n actions = actions.filter((action) => action.enabled === undefined || action.enabled(context));\n }\n return actions.sort((a, b) => a.order - b.order);\n }\n /**\n * Set the active tab in the sidebar.\n *\n * @param tabId - The ID of the tab to activate.\n */\n function setActiveTab(tabId) {\n if (!currentTabs.value.find(({ id }) => id === tabId)) {\n throw new Error(`Cannot set sidebar tab '${tabId}' because it is not available for the current context.`);\n }\n activeTab.value = tabId;\n }\n // update the current node if updated\n subscribe('files:node:updated', (node) => {\n if (node.source === currentNode.value?.source) {\n activeStore.activeNode = node;\n }\n });\n // close the sidebar if the current node is deleted\n subscribe('files:node:deleted', (node) => {\n if (node.fileid === currentNode.value?.fileid) {\n close();\n }\n });\n subscribe('viewer:sidebar:open', ({ source }) => {\n const filesStore = useFilesStore();\n const node = filesStore.getNode(source);\n if (node) {\n logger.debug('sidebar: opening for node from Viewer.', { node });\n open(node);\n }\n else {\n logger.error(`sidebar: cannot open for node '${source}' because it was not found in the current view.`);\n }\n });\n let initialized = false;\n // close sidebar when parameter is removed from url\n subscribe('files:list:updated', () => {\n if (!initialized) {\n initialized = true;\n window.OCP.Files.Router._router.afterEach((to, from) => {\n if ((from.query && ('opendetails' in from.query))\n && (to.query && !('opendetails' in to.query))) {\n logger.debug('sidebar: closing because \"opendetails\" query parameter was removed from URL.');\n close();\n }\n });\n }\n });\n // watch open state and update URL query parameters\n watch(isOpen, (isOpen) => {\n const params = { ...(window.OCP?.Files?.Router?.params ?? {}) };\n const query = { ...(window.OCP?.Files?.Router?.query ?? {}) };\n logger.debug(`sidebar: current node changed: ${isOpen ? 'open' : 'closed'}`, { query, params, node: activeStore.activeNode });\n if (!isOpen && ('opendetails' in query)) {\n delete query.opendetails;\n window.OCP.Files.Router.goToRoute(null, params, query, true);\n }\n if (isOpen && !('opendetails' in query)) {\n window.OCP.Files.Router.goToRoute(null, params, {\n ...query,\n opendetails: 'true',\n }, true);\n }\n });\n return {\n activeTab,\n currentActions,\n currentContext,\n currentNode,\n currentTabs,\n hasContext,\n isOpen: readonly(isOpen),\n open,\n close,\n getActions,\n getTabs,\n setActiveTab,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check whether the personal files view can be shown\n */\nexport function hasPersonalFilesView() {\n const storageStats = loadState('files', 'storageStats', { quota: -1 });\n // Don't show this view if the user has no storage quota\n return storageStats.quota !== 0;\n}\n/**\n * Get the default files view\n */\nexport function defaultView() {\n const { default_view: defaultView } = loadState('files', 'config', { default_view: 'files' });\n // the default view - only use the personal one if it is enabled\n if (defaultView !== 'personal' || hasPersonalFilesView()) {\n return defaultView;\n }\n return 'files';\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading,\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\",class:{ 'files-list__header--public': _vm.isPublic }},[_c(_vm.isNarrow ? 'Teleport' : 'div',{tag:\"component\",attrs:{\"to\":_vm.isNarrow ? 'body' : undefined}},[(_vm.canUpload && !_vm.isQuotaExceeded && _vm.currentFolder)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",class:{ 'files-list__header-upload-button--narrow': _vm.isNarrow },attrs:{\"allow-folders\":\"\",\"no-label\":_vm.isNarrow,\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\",\"primary\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_vm._e()],1),_vm._v(\" \"),_c('BreadCrumbs',{attrs:{\"path\":_vm.directory},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\",attrs:{\"name\":_vm.t('files', 'File list is reloading')}}):_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"files-list__header-actions\",attrs:{\"inline\":1,\"variant\":\"tertiary\",\"force-name\":\"\"}},_vm._l((_vm.enabledFileListActions),function(action){return _c('NcActionButton',{key:action.id,attrs:{\"disabled\":!!_vm.loadingAction,\"data-cy-files-list-action\":action.id,\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.execFileListAction(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loadingAction === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):(action.iconSvgInline !== undefined && _vm.currentView)?_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.currentView)}}):_vm._e()]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])}),1),_vm._v(\" \"),_c('FileListFilters'),_vm._v(\" \"),(_vm.enableGridView)?_c('NcButton',{staticClass:\"files-list__header-grid-button\",attrs:{\"aria-label\":_vm.gridViewButtonLabel,\"title\":_vm.gridViewButtonLabel,\"variant\":\"tertiary\"},on:{\"click\":_vm.toggleGridView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.userConfig.grid_view)?_c('ListViewIcon'):_c('ViewGridIcon')]},proxy:true}],null,false,1682960703)}):_vm._e()],1),_vm._v(\" \"),(!_vm.loading && _vm.canUpload && _vm.currentFolder)?_c('DragAndDropNotice',{attrs:{\"current-folder\":_vm.currentFolder}}):_vm._e(),_vm._v(\" \"),(!_vm.currentView)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"nodes\":_vm.dirContentsSorted,\"summary\":_vm.summary},scopedSlots:_vm._u([{key:\"empty\",fn:function(){return [(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.error,\"data-cy-files-content-error\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('NcButton',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconReload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Retry'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true},{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}])}):(_vm.currentView?.emptyView)?_c('div',{staticClass:\"files-list__empty-view-wrapper\"},[_c('div',{ref:\"customEmptyView\"})]):_c('NcEmptyContent',{attrs:{\"name\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([(_vm.directory !== '/')?{key:\"action\",fn:function(){return [(_vm.canUpload && !_vm.isQuotaExceeded)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"allow-folders\":\"\",\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_c('NcButton',{attrs:{\"to\":_vm.toPreviousDir,\"variant\":\"primary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true}:null,{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView?.icon}})]},proxy:true}],null,true)})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * Whether error is a WebDAVClientError\n *\n * @param error - Any exception\n * @return - Whether error is a WebDAVClientError\n */\nfunction isWebDAVClientError(error) {\n return error instanceof Error && 'status' in error && 'response' in error;\n}\n/**\n * Get a localized error message from webdav request\n *\n * @param error - An exception from webdav request\n * @return Localized error message for end user\n */\nexport function humanizeWebDAVError(error) {\n if (error instanceof Error) {\n if (isWebDAVClientError(error)) {\n const status = error.status || error.response?.status || 0;\n if ([400, 404, 405].includes(status)) {\n return t('files', 'Folder not found');\n }\n else if (status === 403) {\n return t('files', 'This operation is forbidden');\n }\n else if (status === 500) {\n return t('files', 'This folder is unavailable, please try again later or contact the administration');\n }\n else if (status === 503) {\n return t('files', 'Storage is temporarily not available');\n }\n }\n // We don't need to show abortion error to the user as those are expected.\n if (error.name === 'AbortError') {\n return null;\n }\n return t('files', 'Unexpected error: {error}', { error: error.message });\n }\n return t('files', 'Unknown error');\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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=ed23df10&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=ed23df10&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=ed23df10&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=ed23df10&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 \"ed23df10\",\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(_setup.NcAppNavigation,{staticClass:\"files-navigation\",attrs:{\"data-cy-files-navigation\":\"\",\"aria-label\":_setup.t('files', 'Files')},scopedSlots:_vm._u([{key:\"search\",fn:function(){return [_c(_setup.FilesNavigationSearch)]},proxy:true},{key:\"default\",fn:function(){return [_c(_setup.FilesNavigationList),_vm._v(\" \"),_c(_setup.FilesAppSettings,{attrs:{\"open\":_setup.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"update:open\":function($event){_setup.settingsOpened=$event},\"close\":function($event){_setup.settingsOpened = false}}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c(_setup.NavigationQuota),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"name\":_setup.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();_setup.settingsOpened = true}}},[_c(_setup.IconCog,{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CogOutline.vue?vue&type=template&id=96fed70c\"\nimport script from \"./CogOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CogOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationList,{class:_vm.$style.filesNavigationList,attrs:{\"aria-label\":_setup.t('files', 'Views')}},_vm._l((_setup.rootViews),function(view){return _c(_setup.FilesNavigationListItem,{key:view.id,attrs:{\"view\":view}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { getRemoteURL } from '@nextcloud/files/dav';\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nimport { dirname, encodePath, join } from '@nextcloud/paths';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { getContents as getFiles } from './Files.ts';\nexport const folderTreeId = 'folders';\nexport const sourceRoot = `${getRemoteURL()}/files/${getCurrentUser()?.uid}`;\nconst collator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\nconst compareNodes = (a, b) => collator.compare(a.displayName ?? a.basename, b.displayName ?? b.basename);\n/**\n * Get all tree nodes recursively\n *\n * @param tree - The tree to process\n * @param currentPath - The current path\n * @param nodes - The nodes collected so far\n */\nfunction getTreeNodes(tree, currentPath = '/', nodes = []) {\n const sortedTree = tree.toSorted(compareNodes);\n for (const { id, basename, displayName, children } of sortedTree) {\n const path = join(currentPath, basename);\n const source = `${sourceRoot}${path}`;\n const node = {\n source,\n encodedSource: encodeSource(source),\n path,\n fileid: id,\n basename,\n };\n if (displayName) {\n node.displayName = displayName;\n }\n nodes.push(node);\n if (children.length > 0) {\n getTreeNodes(children, path, nodes);\n }\n }\n return nodes;\n}\n/**\n * Get folder tree nodes\n *\n * @param path - The path to get the tree from\n * @param depth - The depth to fetch\n * @param withParents - Whether to include parent folders in the response\n */\nexport async function getFolderTreeNodes(path = '/', depth = 1, withParents = false) {\n const { data: tree } = await axios.get(generateOcsUrl('/apps/files/api/v1/folder-tree'), {\n params: new URLSearchParams({ path, depth: String(depth), withParents: String(withParents) }),\n });\n const nodes = getTreeNodes(tree, withParents ? '/' : path);\n return nodes;\n}\nexport const getContents = (path, options) => getFiles(path, options);\n/**\n * Encode source URL\n *\n * @param source - The source URL\n */\nexport function encodeSource(source) {\n const { origin } = new URL(source);\n return origin + encodePath(source.slice(origin.length));\n}\n/**\n * Get parent source URL\n *\n * @param source - The source URL\n */\nexport function getSourceParent(source) {\n const parent = dirname(source);\n if (parent === sourceRoot) {\n return folderTreeId;\n }\n return `${folderTreeId}::${encodeSource(parent)}`;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationItem,{staticClass:\"files-navigation__item\",attrs:{\"allow-collapse\":\"\",\"loading\":_setup.isLoading,\"data-cy-files-navigation-item\":_vm.view.id,\"exact\":_setup.hasChildViews,\"name\":_vm.view.name,\"open\":_setup.isExpanded,\"pinned\":_vm.view.sticky,\"to\":_setup.navigationRoute},on:{\"update:open\":_setup.onExpandCollapse},scopedSlots:_vm._u([(_vm.view.icon)?{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.view.icon}})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(!_setup.hasChildViews && !_setup.childViewsLoaded && _vm.view.loadChildViews)?_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],attrs:{\"role\":\"presentation\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.sortedChildViews),function(childView){return _c('FilesNavigationListItem',{key:childView.id,attrs:{\"level\":_vm.level + 1,\"view\":childView}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesNavigationListItem.vue?vue&type=template&id=008accd4\"\nimport script from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigationList.vue?vue&type=template&id=1b62d532\"\nimport script from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\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(_setup.NcAppNavigationSearch,{attrs:{\"label\":_setup.searchLabel},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c(_setup.NcActions,{attrs:{\"aria-label\":_setup.t('files', 'Search scope options'),\"disabled\":_setup.isSearchView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.searchStore.scope === 'globally' ? _setup.mdiSearchWeb : _setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'filter'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search here'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'globally'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiSearchWeb}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\\t\\t\\t\")])],1)]},proxy:true}]),model:{value:(_setup.searchStore.query),callback:function ($$v) {_vm.$set(_setup.searchStore, \"query\", $$v)},expression:\"searchStore.query\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { onUnmounted } from 'vue';\nimport { useRouter } from 'vue-router/composables';\n/**\n * Helper until we use Vue-Router v4 (Vue3).\n *\n * @param fn - The navigation guard\n */\nexport function onBeforeNavigation(fn) {\n const router = useRouter();\n const remove = router.beforeResolve(fn);\n onUnmounted(remove);\n}\n","import { render, staticRenderFns } from \"./FilesNavigationSearch.vue?vue&type=template&id=7f26c822\"\nimport script from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\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","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false;\n\n // Keep track of the last time `callback` was executed.\n var lastExec = 0;\n\n // Function to clear existing timeout\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n }\n\n // Function to cancel next exec\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n var self = this;\n var elapsed = Date.now() - lastExec;\n if (cancelled) {\n return;\n }\n\n // Execute `callback` and update the `lastExec` timestamp.\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n function clear() {\n timeoutID = undefined;\n }\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel;\n\n // Return the wrapper function.\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"","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\n\n\n\n\n","import { render, staticRenderFns } from \"./ChartPieOutline.vue?vue&type=template&id=a29cc97a\"\nimport script from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13 11H19.95Q19.58 8.25 17.66 6.34 15.75 4.43 13 4.05M11 19.95V4.05Q8 4.43 6 6.69 4 8.95 4 12T6 17.31Q8 19.58 11 19.95M13 19.95Q15.75 19.6 17.68 17.68 19.6 15.75 19.95 13H13M12 12M12 22Q9.93 22 8.1 21.21 6.28 20.43 4.93 19.08 3.58 17.73 2.79 15.9 2 14.08 2 12T2.79 8.1Q3.58 6.28 4.93 4.93 6.28 3.58 8.1 2.79 9.93 2 12 2T15.89 2.79Q17.7 3.58 19.06 4.94 20.43 6.3 21.21 8.11 22 9.93 22 12 22 14.05 21.21 15.88 20.43 17.7 19.08 19.06 17.73 20.43 15.9 21.21 14.08 22 12 22Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=062ef4b2&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=062ef4b2&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=062ef4b2&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 \"062ef4b2\",\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-description\":_vm.t('files', 'Storage information'),\"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\",\"aria-label\":_vm.t('files', 'Storage quota'),\"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 }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsDialog,{attrs:{\"legacy\":false,\"name\":_setup.t('files', 'Files settings'),\"no-version\":\"\",\"open\":_vm.open,\"show-navigation\":\"\"},on:{\"update:open\":function($event){return _setup.emit('close')}}},[_c(_setup.FilesAppSettingsGeneral),_vm._v(\" \"),_c(_setup.FilesAppSettingsAppearance),_vm._v(\" \"),_c(_setup.FilesAppSettingsLegacyApi),_vm._v(\" \"),_c(_setup.FilesAppSettingsWarnings),_vm._v(\" \"),_c(_setup.FilesAppSettingsWebDav),_vm._v(\" \"),_c(_setup.FilesAppSettingsShortcuts)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"appearance\",\"name\":_setup.t('files', 'Appearance')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show hidden files')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_hidden', $event)}},model:{value:(_setup.store.userConfig.show_hidden),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_hidden\", $$v)},expression:\"store.userConfig.show_hidden\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file type column')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_mime_column', $event)}},model:{value:(_setup.store.userConfig.show_mime_column),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_mime_column\", $$v)},expression:\"store.userConfig.show_mime_column\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file extensions')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_files_extensions', $event)}},model:{value:(_setup.store.userConfig.show_files_extensions),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_files_extensions\", $$v)},expression:\"store.userConfig.show_files_extensions\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Crop image previews')},on:{\"update:modelValue\":function($event){return _setup.store.update('crop_image_previews', $event)}},model:{value:(_setup.store.userConfig.crop_image_previews),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"crop_image_previews\", $$v)},expression:\"store.userConfig.crop_image_previews\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsAppearance.vue?vue&type=template&id=1d0fcc36\"\nimport script from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\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(_setup.NcAppSettingsSection,{attrs:{\"id\":\"settings\",\"name\":_setup.t('files', 'General')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort favorites first')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_favorites_first', $event)}},model:{value:(_setup.store.userConfig.sort_favorites_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_favorites_first\", $$v)},expression:\"store.userConfig.sort_favorites_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort folders before files')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_folders_first', $event)}},model:{value:(_setup.store.userConfig.sort_folders_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_folders_first\", $$v)},expression:\"store.userConfig.sort_folders_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Enable folder tree view')},on:{\"update:modelValue\":function($event){return _setup.store.update('folder_tree', $event)}},model:{value:(_setup.store.userConfig.folder_tree),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"folder_tree\", $$v)},expression:\"store.userConfig.folder_tree\"}})],1),_vm._v(\" \"),_c(_setup.NcRadioGroup,{attrs:{\"label\":_setup.t('files', 'Default view')},on:{\"update:modelValue\":function($event){return _setup.store.update('default_view', $event)}},model:{value:(_setup.store.userConfig.default_view),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"default_view\", $$v)},expression:\"store.userConfig.default_view\"}},[_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'All files'),\"value\":\"files\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFolderOutline}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'Personal files'),\"value\":\"personal\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOutline}})]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsGeneral.vue?vue&type=template&id=286756ea\"\nimport script from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"el\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=template&id=6d8612e1\"\nimport script from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.apiSettings.length !== 0)?_c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"api-settings\",\"name\":_setup.t('files', 'Additional settings')}},_vm._l((_setup.apiSettings),function(setting){return _c(_setup.FilesAppSettingsLegacyApiEntry,{key:setting.name,attrs:{\"setting\":setting}})}),1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApi.vue?vue&type=template&id=f4559f9c\"\nimport script from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\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(_setup.NcAppSettingsShortcutsSection,[_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Actions')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'File actions'),\"hotkey\":\"A\"}}),_vm._v(\" \"),_vm._l((_setup.actionHotkeys),function(hotkey){return _c(_setup.NcHotkey,{key:hotkey.id,attrs:{\"label\":hotkey.label,\"hotkey\":hotkey.hotkey}})})],2),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Selection')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select all files'),\"hotkey\":\"Control A\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Deselect all'),\"hotkey\":\"Escape\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select or deselect'),\"hotkey\":\"Control Space\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select a range'),\"hotkey\":\"Control Shift Space\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Navigation')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to parent folder'),\"hotkey\":\"Alt ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file above'),\"hotkey\":\"ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file below'),\"hotkey\":\"ArrowDown\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go left in grid'),\"hotkey\":\"ArrowLeft\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go right in grid'),\"hotkey\":\"ArrowRight\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'View')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Toggle grid view'),\"hotkey\":\"V\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Show those shortcuts'),\"hotkey\":\"?\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsShortcuts.vue?vue&type=template&id=5a8abf86\"\nimport script from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"warning\",\"name\":_setup.t('files', 'Warnings')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before changing a file extension')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_file_extension', $event)}},model:{value:(_setup.store.userConfig.show_dialog_file_extension),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_file_extension\", $$v)},expression:\"store.userConfig.show_dialog_file_extension\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before deleting a file')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_deletion', $event)}},model:{value:(_setup.store.userConfig.show_dialog_deletion),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_deletion\", $$v)},expression:\"store.userConfig.show_dialog_deletion\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsWarnings.vue?vue&type=template&id=02608f74\"\nimport script from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=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 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(_setup.NcAppSettingsSection,{attrs:{\"id\":\"webdav\",\"name\":\"WebDAV\"}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxCopyButton,{attrs:{\"label\":_setup.t('files', 'WebDAV URL'),\"value\":_setup.webDavUrl}}),_vm._v(\" \"),(_setup.isTwoFactorEnabled)?_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'Create an app password'),\"description\":_setup.t('files', 'Required for WebDAV authentication because Two-Factor Authentication is enabled for this account.'),\"href\":_setup.appPasswordUrl,\"target\":\"_blank\"}}):_vm._e(),_vm._v(\" \"),_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'How to access files using WebDAV'),\"href\":_setup.webDavDocsUrl,\"target\":\"_blank\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"","import { render, staticRenderFns } from \"./FilesAppSettingsWebDav.vue?vue&type=template&id=601f53e8\"\nimport script from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=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 null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettings.vue?vue&type=template&id=72195bd8\"\nimport script from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&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!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigation.vue?vue&type=template&id=b3d7fbf2&scoped=true\"\nimport script from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&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 \"b3d7fbf2\",\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(_setup.NcAppSidebar,{attrs:{\"data-cy-sidebar\":\"\",\"force-menu\":\"\",\"active\":_setup.sidebar.activeTab,\"background\":_setup.background,\"empty\":!_setup.sidebar.hasContext,\"loading\":!_setup.sidebar.hasContext,\"name\":_setup.sidebar.currentNode?.displayname ?? _setup.t('files', 'Loading …'),\"no-toggle\":\"\",\"open\":_setup.sidebar.isOpen},on:{\"update:active\":function($event){return _vm.$set(_setup.sidebar, \"activeTab\", $event)},\"closed\":_setup.onClosed,\"opened\":_setup.onOpened,\"update:open\":_setup.onToggle},scopedSlots:_vm._u([(_setup.sidebar.currentNode)?{key:\"subname\",fn:function(){return [_c(_setup.FilesSidebarSubname,{attrs:{\"node\":_setup.sidebar.currentNode}})]},proxy:true}:null,(_setup.sidebar.currentContext)?{key:\"secondary-actions\",fn:function(){return _vm._l((_setup.sidebar.currentActions),function(action){return _c(_setup.NcActionButton,{key:action.id,attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return action.onClick(_setup.sidebar.currentContext)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":action.iconSvgInline(_setup.sidebar.currentContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_setup.sidebar.currentContext))+\"\\n\\t\\t\")])})},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._v(\" \"),(_setup.sidebar.hasContext)?_vm._l((_setup.sidebar.currentTabs),function(tab){return _c(_setup.FilesSidebarTab,{key:tab.id,attrs:{\"active\":_setup.sidebar.activeTab === tab.id,\"tab\":tab}})}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.$style.filesSidebarSubname},[(_setup.isFavourited)?_c(_setup.NcIconSvgWrapper,{attrs:{\"inline\":\"\",\"path\":_setup.mdiStar,\"name\":_setup.t('files', 'Favorite')}}):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_setup.size))]),_vm._v(\" \"),(_vm.node.mtime)?_c('span',[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcDateTime,{attrs:{\"timestamp\":_vm.node.mtime}})],1):_vm._e(),_vm._v(\" \"),(_vm.node.owner)?[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcUserBubble,{class:_vm.$style.filesSidebarSubname__userBubble,attrs:{\"title\":_setup.t('files', 'Owner'),\"user\":_vm.node.owner,\"display-name\":_vm.node.attributes['owner-display-name']}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebarSubname.vue?vue&type=template&id=7bd1e3c0\"\nimport script from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\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(_setup.NcAppSidebarTab,{attrs:{\"id\":_vm.tab.id,\"order\":_vm.tab.order,\"name\":_vm.tab.displayName},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.tab.iconSvgInline}})]},proxy:true}])},[_vm._v(\" \"),(_setup.loading)?_c(_setup.NcEmptyContent,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon)]},proxy:true}],null,false,1675040227)}):_c(_vm.tab.tagName,{tag:\"component\",domProps:{\"active\":_vm.active,\"node\":_setup.sidebar.currentNode,\"folder\":_setup.activeStore.activeFolder,\"view\":_setup.activeStore.activeView}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { N as NcActionButton } from \"./chunks/NcActionButton-K4jUGMlW.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-B95wg_Q6.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-23CmleUh.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-B_9GOTi6.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-Dd3CsuiD.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-Ca_2vj8f.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-YqvZGY07.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-HZ-Lp090.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-BPqJExo6.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-Bt51pgle.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-DcKt7SjF.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationNew } from \"./chunks/NcAppNavigationNew-B5ikLvxM.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-BqhwbJsJ.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-B6u1Ln1_.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-BfysBg80.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-D0M18YFD.mjs\";\nimport { N as NcAppSettingsSection } from \"./chunks/NcAppSettingsSection-BjQllLEA.mjs\";\nimport { N as NcAppSettingsShortcutsSection } from \"./chunks/NcAppSettingsShortcutsSection-DblUBaWP.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-Bljse39J.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAssistantButton } from \"./chunks/NcAssistantButton-BdUkhzq1.mjs\";\nimport NcAssistantContent from \"./Components/NcAssistantContent.mjs\";\nimport { N as NcAssistantIcon } from \"./chunks/NcAssistantIcon-DCx6AaSW.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-CGnqUtoy.mjs\";\nimport { u } from \"./chunks/NcAvatar-CGnqUtoy.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-KSj0HXbX.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-DH2FV6QI.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-DrYYSHAS.mjs\";\nimport { N as NcButton } from \"./chunks/NcButton-BgppWSl9.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-D4IV4zWy.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-BbmBJ4ET.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-Bzzw1uKu.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-DpGM2KRx.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-oxV8oMlX.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-NOuL4APU.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-CBW263ij.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-enXYuwj8.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-BCCBuI6f.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-DpA4mqr-.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-C4jCrwQY.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport { N as NcFilePicker } from \"./chunks/NcFilePicker-DCPi6JGg.mjs\";\nimport { N as NcFormBox } from \"./chunks/NcFormBox-DtoCXLMx.mjs\";\nimport { N as NcFormBoxButton } from \"./chunks/NcFormBoxButton-BQi11xQX.mjs\";\nimport { N as NcFormBoxCopyButton } from \"./chunks/NcFormBoxCopyButton-BkunQ3me.mjs\";\nimport { N as NcFormBoxSwitch } from \"./chunks/NcFormBoxSwitch-E6sxPL4n.mjs\";\nimport { N as NcFormGroup } from \"./chunks/NcFormGroup-DblLoFMf.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport { N as NcHeaderButton } from \"./chunks/NcHeaderButton-DXdY8gct.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-BZnnbLTo.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-CxTT94_h.mjs\";\nimport { N as NcHotkey } from \"./chunks/NcHotkey-CLLtt9LG.mjs\";\nimport { N as NcHotkeyList } from \"./chunks/NcHotkeyList-Co7MBL5U.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-j5EyU7QH.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-D0JDzXkL.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-D35XZDGI.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-HQK5d_nv.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-UAg26Qdd.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-D7zYeXBH.mjs\";\nimport { N as NcRadioGroup } from \"./chunks/NcRadioGroup-BbBX9X2J.mjs\";\nimport { N as NcRadioGroupButton } from \"./chunks/NcRadioGroupButton-BkxlxjIA.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-BdmY-Mly.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-BCqXu_og.mjs\";\nimport { r } from \"./chunks/index-BCqXu_og.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-BcTSkyeW.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a, g, b, c, s, d } from \"./chunks/referencePickerModal-BQExd0w6.mjs\";\nimport { N, h, c as c2, i, e, r as r2, f, a as a2 } from \"./chunks/customPickerElements-DLFtgReB.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit-parents\";\nimport \"./chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-DZgAb6-3.mjs\";\nimport { N as NcSelect } from \"./chunks/NcSelect-FwcxH76q.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-ByDOTNvC.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-U7AIamCl.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-yZfa_z_z.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-5r-vvEVy.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-BwnkZzWL.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-Dz_b9rcq.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-CUM0vkbN.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-fGUiK7p2.mjs\";\nimport { N as NcThemeProvider } from \"./chunks/NcThemeProvider-BA_zMjAf.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-Cok_NaVd.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-Csw7PXyG.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-Cq1RnTfF.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useFormatDateTime, useFormatRelativeTime, useFormatTime } from \"./Composables/useFormatDateTime.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e as e2, g as g2, s as s2 } from \"./chunks/emoji-Dtn2mDf7.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { usernameToColor } from \"./Functions/usernameToColor.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport directive$1 from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsSectionShortcuts: NcAppSettingsShortcutsSection,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsShortcutsSection as NcAppSettingsSectionShortcuts,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e2 as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b as getProvider,\n c as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n c2 as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n e as registerCustomPickerElement,\n r2 as registerWidget,\n f as renderCustomPickerElement,\n a2 as renderWidget,\n r as richEditor,\n s as searchProvider,\n s2 as setCurrentSkinTone,\n d as sortProviders,\n spawnDialog,\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesSidebarTab.vue?vue&type=template&id=6b69fc23\"\nimport script from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&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!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebar.vue?vue&type=template&id=f91af60e&scoped=true\"\nimport script from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&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 \"f91af60e\",\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(_setup.NcContent,{attrs:{\"app-name\":\"files\"}},[(!_setup.isPublic)?_c(_setup.FilesNavigation):_vm._e(),_vm._v(\" \"),_c(_setup.FilesList,{attrs:{\"is-public\":_setup.isPublic}}),_vm._v(\" \"),(!_setup.isPublic)?_c(_setup.FilesSidebar):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions } from '@nextcloud/files';\nimport { useHotKey } from '@nextcloud/vue/composables/useHotKey';\nimport { dirname } from 'path';\nimport { useRoute, useRouter } from 'vue-router/composables';\nimport logger from '../logger.ts';\nimport { useUserConfigStore } from '../store/userconfig.ts';\nimport { executeAction } from '../utils/actionUtils.ts';\nimport { useRouteParameters } from './useRouteParameters.ts';\n/**\n * This register the hotkeys for the Files app.\n * As much as possible, we try to have all the hotkeys in one place.\n * Please make sure to add tests for the hotkeys after adding a new one.\n */\nexport function useHotKeys() {\n const userConfigStore = useUserConfigStore();\n const { directory } = useRouteParameters();\n const router = useRouter();\n const route = useRoute();\n const actions = getFileActions();\n for (const action of actions) {\n if (!action.hotkey) {\n continue;\n }\n const key = action.hotkey.key.match(/^[a-z]$/)\n ? action.hotkey.key.toUpperCase()\n : action.hotkey.key;\n logger.debug(`Register hotkey for action \"${action.id}\"`);\n useHotKey(key, () => executeAction(action), {\n stop: true,\n prevent: true,\n alt: action.hotkey.alt,\n ctrl: action.hotkey.ctrl,\n shift: action.hotkey.shift,\n });\n }\n // alt+up go to parent directory\n useHotKey('ArrowUp', goToParentDir, {\n stop: true,\n prevent: true,\n alt: true,\n });\n // v toggle grid view\n useHotKey('v', toggleGridView, {\n stop: true,\n prevent: true,\n });\n logger.debug('Hotkeys registered');\n /**\n * Use the router to go to the parent directory\n */\n function goToParentDir() {\n const dir = dirname(directory.value);\n logger.debug('Navigating to parent directory', { dir });\n router.push({ params: { ...route.params }, query: { ...route.query, dir } });\n }\n /**\n * Toggle the grid view\n */\n function toggleGridView() {\n const value = userConfigStore.userConfig.grid_view;\n logger.debug('Toggling grid view', { old: value, new: !value });\n userConfigStore.update('grid_view', !value);\n }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesApp.vue?vue&type=template&id=e1f85142\"\nimport script from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\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","/*\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { relative } from 'path';\nimport queryString from 'query-string';\nimport Vue from 'vue';\nimport Router, { isNavigationFailure, NavigationFailureType } from 'vue-router';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { usePathsStore } from '../store/paths.ts';\nimport { defaultView } from '../utils/filesViews.ts';\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = (function (...args) {\n if (args.length > 1) {\n return originalPush.call(this, ...args);\n }\n return originalPush.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\nconst originalReplace = Router.prototype.replace;\nRouter.prototype.replace = (function (...args) {\n if (args.length > 1) {\n return originalReplace.call(this, ...args);\n }\n return originalReplace.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\n/**\n * Ignore duplicated-navigation error but forward real exceptions\n *\n * @param error The thrown error\n */\nfunction ignoreDuplicateNavigation(error) {\n if (isNavigationFailure(error, NavigationFailureType.duplicated)) {\n logger.debug('Ignoring duplicated navigation from vue-router', { error });\n }\n else {\n throw error;\n }\n}\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl('/apps/files'),\n linkActiveClass: 'active',\n routes: [\n {\n path: '/',\n // Pretending we're using the default view\n redirect: { name: 'filelist', params: { view: defaultView() } },\n },\n {\n path: '/:view/:fileid(\\\\d+)?',\n name: 'filelist',\n props: true,\n },\n ],\n // Custom stringifyQuery to prevent encoding of slashes in the url\n stringifyQuery(query) {\n const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n return result ? ('?' + result) : '';\n },\n});\n// Handle aborted navigation (NavigationGuards) gracefully\nrouter.onError((error) => {\n if (isNavigationFailure(error, NavigationFailureType.aborted)) {\n logger.debug('Navigation was aboorted', { error });\n }\n else {\n throw error;\n }\n});\n// If navigating back from a folder to a parent folder,\n// we need to keep the current dir fileid so it's highlighted\n// and scrolled into view.\nrouter.beforeResolve((to, from, next) => {\n if (to.params?.parentIntercept) {\n delete to.params.parentIntercept;\n return next();\n }\n if (to.params.view !== from.params.view) {\n // skip if different views\n return next();\n }\n const fromDir = (from.query?.dir || '/');\n const toDir = (to.query?.dir || '/');\n // We are going back to a parent directory\n if (relative(fromDir, toDir) === '..') {\n const { getNode } = useFilesStore();\n const { getPath } = usePathsStore();\n if (!from.params.view) {\n logger.error('No current view id found, cannot navigate to parent directory', { fromDir, toDir });\n return next();\n }\n // Get the previous parent's file id\n const fromSource = getPath(from.params.view, fromDir);\n if (!fromSource) {\n logger.error('No source found for the parent directory', { fromDir, toDir });\n return next();\n }\n const fileId = getNode(fromSource)?.fileid;\n if (!fileId) {\n logger.error('No fileid found for the parent directory', { fromDir, toDir, fromSource });\n return next();\n }\n logger.debug('Navigating back to parent directory', { fromDir, toDir, fileId });\n return next({\n name: 'filelist',\n query: to.query,\n params: {\n ...to.params,\n fileid: String(fileId),\n // Prevents the beforeEach from being called again\n parentIntercept: 'true',\n },\n // Replace the current history entry\n replace: true,\n });\n }\n // else, we just continue\n next();\n});\nsubscribe('files:node:deleted', (node) => {\n if (router.currentRoute.params.fileid === String(node.fileid)) {\n const params = { ...router.currentRoute.params };\n const { getPath } = usePathsStore(getPinia());\n const { getNode } = useFilesStore(getPinia());\n const source = getPath(router.currentRoute.params.view, node.dirname);\n const parentFolder = getNode(source);\n if (source && parentFolder) {\n params.fileid = String(parentFolder.fileid);\n }\n else {\n delete params.fileid;\n }\n const query = { ...router.currentRoute.query };\n delete query.opendetails;\n delete query.openfile;\n router.replace({\n ...router.currentRoute,\n name: router.currentRoute.name,\n params,\n query,\n });\n }\n});\nexport default router;\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class RouterService {\n // typescript compiles this to `#router` to make it private even in JS,\n // but in TS it needs to be called without the visibility specifier\n router;\n constructor(router) {\n this.router = router;\n }\n get name() {\n return this.router.currentRoute.name;\n }\n get query() {\n return this.router.currentRoute.query || {};\n }\n get params() {\n return this.router.currentRoute.params || {};\n }\n /**\n * This is a protected getter only for internal use\n *\n */\n get _router() {\n return this.router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this.router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name - The route name or null to keep current route and just update params/query\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n name ??= this.router.currentRoute.name;\n const location = { name, query, params };\n if (replace) {\n return this._router.replace(location);\n }\n return this._router.push(location);\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport FilesApp from './FilesApp.vue';\nimport SettingsModel from './models/Setting.ts';\nimport router from './router/router.ts';\nimport RouterService from './services/RouterService.ts';\nimport SettingsService from './services/Settings.js';\nimport { getPinia } from './store/index.ts';\n__webpack_nonce__ = getCSPNonce();\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nif (!window.OCP.Files.Router) {\n const Router = new RouterService(router);\n Object.assign(window.OCP.Files, { Router });\n}\n// Init Pinia store\nVue.use(PiniaVuePlugin);\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\nconst FilesAppVue = Vue.extend(FilesApp);\nnew FilesAppVue({\n router: window.OCP.Files.Router._router,\n pinia: getPinia(),\n}).$mount('#content');\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from '../logger.ts'\n\nexport default class Settings {\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tlogger.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\tlogger.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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class Setting {\n #name;\n #options;\n /**\n * Create a new files app setting\n *\n * @param name - The name of this setting\n * @param options - The setting options\n * @param options.el - Function that returns an unmounted dom element to be added\n * @param options.open - Callback for when setting is added\n * @param options.close - Callback for when setting is closed\n * @param options.order - The order of this setting, lower numbers are shown first\n * @since 19.0.0\n */\n constructor(name, options) {\n this.#name = name;\n this.#options = {\n open: () => { },\n close: () => { },\n order: 0,\n ...options,\n };\n if (typeof this.#options.el !== 'function') {\n throw new Error('Setting must have an `el` function that returns a DOM element');\n }\n if (typeof this.#name !== 'string') {\n throw new Error('Setting must have a `name` string');\n }\n if (typeof this.#options.order !== 'number') {\n throw new Error('Setting must have an `order` number');\n }\n }\n get name() {\n return this.#name;\n }\n get el() {\n return this.#options.el;\n }\n get open() {\n return this.#options.open;\n }\n get close() {\n return this.#options.close;\n }\n get order() {\n return this.#options.order;\n }\n}\n","import { getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { join } from 'path';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\nimport { client } from './WebdavClient.ts';\nimport { searchNodes } from './WebDavSearch.ts';\n/**\n * Get contents implementation for the files view.\n * This also allows to fetch local search results when the user is currently filtering.\n *\n * @param path - The path to query\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function getContents(path = '/', options) {\n const searchStore = useSearchStore(getPinia());\n if (searchStore.query.length < 3) {\n return await defaultGetContents(path, options);\n }\n return await getLocalSearch(path, searchStore.query, options?.signal);\n}\n/**\n * Generic `getContents` implementation for the users files.\n *\n * @param path - The path to get the contents\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function defaultGetContents(path, options) {\n path = join(getRootPath(), path);\n const propfindPayload = getDefaultPropfind();\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: options?.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root?.filename !== path && `${root?.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n return {\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n };\n}\n/**\n * Get the local search results for the current folder.\n *\n * @param path - The path\n * @param query - The current search query\n * @param signal - The aboort signal\n */\nasync function getLocalSearch(path, query, signal) {\n const filesStore = useFilesStore(getPinia());\n let folder = filesStore.getDirectoryByPath('files', path);\n if (!folder) {\n const rootPath = join(getRootPath(), path);\n const stat = await client.stat(rootPath, { details: true });\n folder = resultToNode(stat.data);\n }\n const contents = await searchNodes(query, { dir: path, signal });\n return {\n folder,\n contents,\n };\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { defaultRootPath, getDavNameSpaces, getDavProperties, resultToNode } from '@nextcloud/files/dav';\nimport { getBaseUrl } from '@nextcloud/router';\nimport escapeHTML from 'escape-html';\nimport logger from '../logger.ts';\nimport { client } from './WebdavClient.ts';\n/**\n * Search for nodes matching the given query.\n *\n * @param query - Search query\n * @param options - Options\n * @param options.dir - The base directory to scope the search to\n * @param options.signal - Abort signal for the request\n */\nexport async function searchNodes(query, { dir, signal }) {\n const user = getCurrentUser();\n if (!user) {\n // the search plugin only works for user roots\n return [];\n }\n query = query.trim();\n if (query.length < 3) {\n // the search plugin only works with queries of at least 3 characters\n return [];\n }\n if (dir && !dir.startsWith('/')) {\n dir = `/${dir}`;\n }\n logger.debug('Searching for nodes', { query, dir });\n const { data } = await client.search('/', {\n details: true,\n signal,\n data: `\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${getDavProperties()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${user.uid}${dir ? escapeHTML(dir) : ''}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${query.replace('%', '')}%\n\t\t\t \n\t\t \n\t\t \n\t\n`,\n });\n // check if the request was aborted\n if (signal?.aborted) {\n return [];\n }\n // otherwise return the result mapped to Nextcloud nodes\n return data.results.map((result) => resultToNode(result, defaultRootPath, getBaseUrl()));\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n id: 0,\n source: getRemoteURL() + getRootPath(),\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n /**\n * The currently active action\n */\n const activeAction = shallowRef();\n /**\n * The current active node within the folder\n */\n const activeNode = ref();\n /**\n * The current active view\n */\n const activeView = shallowRef();\n /**\n * The currently active folder\n */\n const activeFolder = ref(dummyFolder);\n // Set the active node on the router params\n watch(activeNode, () => {\n if (typeof activeNode.value?.fileid !== 'number' || activeNode.value.fileid === activeFolder.value?.fileid) {\n return;\n }\n logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.fileid });\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: String(activeNode.value.fileid) }, { ...window.OCP.Files.Router.query }, true);\n });\n initialize();\n /**\n * Unset the active node if deleted\n *\n * @param node - The node thats deleted\n */\n function onDeletedNode(node) {\n if (activeNode.value && activeNode.value.source === node.source) {\n activeNode.value = undefined;\n }\n }\n /**\n * Callback to update the current active view\n *\n * @param view - The new active view\n */\n function onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n activeView.value = view ?? undefined;\n activeNode.value = undefined;\n }\n /**\n * Initalize the store - connect all event listeners.\n *\n */\n function initialize() {\n const navigation = getNavigation();\n onChangedView(navigation.active);\n // Make sure we only register the listeners once\n subscribe('files:node:deleted', onDeletedNode);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n onChangedView(event.detail);\n });\n }\n return {\n activeAction,\n activeFolder,\n activeNode,\n activeView,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue, { ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n * Store for files and folders in the files app.\n */\nexport const useFilesStore = defineStore('files', () => {\n const files = ref({});\n const roots = ref({});\n // initialize the store once its used first time\n initalizeStore();\n /**\n * Get a file or folder by its source\n *\n * @param source - The file source\n */\n function getNode(source) {\n return files.value[source];\n }\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n *\n * @param sources - The file sources\n */\n function getNodes(sources) {\n return sources\n .map((source) => files.value[source])\n .filter(Boolean);\n }\n /**\n * Get files or folders by their ID\n * Multiple nodes can have the same ID but different sources\n * (e.g. in a shared context)\n *\n * @param id - The file ID\n */\n function getNodesById(id) {\n return Object.values(files.value)\n .filter((node) => node.id === id);\n }\n /**\n * Get the root folder of a service\n *\n * @param service - The service (files view)\n * @return The root folder if set\n */\n function getRoot(service) {\n return roots.value[service];\n }\n /**\n * Get cached directory matching a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return The folder if found\n */\n function getDirectoryByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = getNode(source);\n }\n }\n return folder;\n }\n /**\n * Get cached child nodes within a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return Array of cached nodes within the path\n */\n function getNodesByPath(service, path) {\n const folder = getDirectoryByPath(service, path);\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => getNode(source))\n .filter(Boolean);\n }\n /**\n * Update or set nodes in the store\n *\n * @param nodes - The nodes to update or set\n */\n function updateNodes(nodes) {\n // Update the store all at once\n const newNodes = nodes.reduce((acc, node) => {\n if (files.value[node.source]?.id && !node.id) {\n logger.error('Trying to update/set a node without id', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n files.value = { ...files.value, ...newNodes };\n }\n /**\n * Delete nodes from the store\n *\n * @param nodes - The nodes to delete\n */\n function deleteNodes(nodes) {\n const entries = Object.entries(files.value)\n .filter(([, node]) => !nodes.some((n) => n.source === node.source));\n files.value = Object.fromEntries(entries);\n }\n /**\n * Set the root folder for a service\n *\n * @param options - The options for setting the root\n * @param options.service - The service (files view)\n * @param options.root - The root folder\n */\n function setRoot({ service, root }) {\n roots.value = { ...roots.value, [service]: root };\n }\n return {\n files,\n roots,\n deleteNodes,\n getDirectoryByPath,\n getNode,\n getNodes,\n getNodesById,\n getNodesByPath,\n getRoot,\n setRoot,\n updateNodes,\n };\n // Internal helper functions\n /**\n * Initialize the store by subscribing to events\n */\n function initalizeStore() {\n subscribe('files:node:created', onCreatedNode);\n subscribe('files:node:deleted', onDeletedNode);\n subscribe('files:node:updated', onUpdatedNode);\n subscribe('files:node:moved', onMovedNode);\n // legacy sidebar\n subscribe('files:favorites:added', onAddFavorite);\n subscribe('files:favorites:removed', onRemoveFavorite);\n }\n /**\n * Called when a node is deleted, removes the node from the store\n *\n * @param node - The deleted node\n */\n function onDeletedNode(node) {\n deleteNodes([node]);\n }\n /**\n * Handler for when a node is created\n *\n * @param node - The created node\n */\n function onCreatedNode(node) {\n updateNodes([node]);\n }\n /**\n * Handler for when a node is moved, updates the path of the node in the store\n *\n * @param context - The context of the moved node\n * @param context.node - The moved node\n * @param context.oldSource - The old source of the node before it was moved\n */\n function onMovedNode({ node, oldSource }) {\n // Update the path of the node\n delete files.value[oldSource];\n updateNodes([node]);\n }\n /**\n * Handler for when a node is updated, updates the node in the store\n *\n * @param node - The updated node\n */\n async function onUpdatedNode(node) {\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = node.id\n ? getNodesById(node.id)\n : getNodes([node.source]);\n if (nodes.length > 1) {\n await Promise.all(nodes.map((node) => fetchNode(node.path))).then(updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.id, source: node.source });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (nodes.length === 1 && node.source === nodes[0].source) {\n updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n fetchNode(node.path).then((n) => updateNodes([n]));\n }\n /**\n * Handlers for legacy sidebar (no real nodes support)\n *\n * @param node - The node that was added to favorites\n */\n function onAddFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 1);\n }\n }\n /**\n * Handler for when a node is removed from favorites\n *\n * @param node - The removed favorite\n */\n function onRemoveFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 0);\n }\n }\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({\n source: oldSource,\n owner: node.owner,\n mime: node.mime,\n root: node.root,\n });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport debounce from 'debounce';\nimport { defineStore } from 'pinia';\nimport { ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { VIEW_ID } from '../views/search.ts';\nexport const useSearchStore = defineStore('search', () => {\n /**\n * The current search query\n */\n const query = ref('');\n /**\n * Scope of the search.\n * Scopes:\n * - filter: only filter current file list\n * - globally: search everywhere\n */\n const scope = ref('filter');\n // reset the base if query is cleared\n watch(scope, updateSearch);\n watch(query, (old, current) => {\n // skip if only whitespaces changed\n if (old.trim() === current.trim()) {\n return;\n }\n updateSearch();\n });\n // initialize the search store\n initialize();\n /**\n * Debounced update of the current route\n *\n */\n const updateRouter = debounce((isSearch) => {\n const router = window.OCP.Files.Router;\n router.goToRoute(undefined, {\n view: VIEW_ID,\n }, {\n query: query.value,\n }, isSearch);\n });\n /**\n * Handle updating the filter if needed.\n * Also update the search view by updating the current route if needed.\n *\n */\n function updateSearch() {\n // emit the search event to update the filter\n emit('files:search:updated', { query: query.value, scope: scope.value });\n const router = window.OCP.Files.Router;\n // if we are on the search view and the query was unset or scope was set to 'filter' we need to move back to the files view\n if (router.params.view === VIEW_ID && (query.value === '' || scope.value === 'filter')) {\n scope.value = 'filter';\n return router.goToRoute(undefined, {\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n });\n }\n // for the filter scope we do not need to adjust the current route anymore\n // also if the query is empty we do not need to do anything\n if (scope.value === 'filter' || !query.value) {\n return;\n }\n const isSearch = router.params.view === VIEW_ID;\n logger.debug('Update route for updated search query', { query: query.value, isSearch });\n updateRouter(isSearch);\n }\n /**\n * Event handler that resets the store if the file list view was changed.\n *\n * @param view - The new view that is active\n */\n function onViewChanged(view) {\n if (view.id !== VIEW_ID) {\n query.value = '';\n scope.value = 'filter';\n }\n }\n /**\n * Initialize the store from the router if needed\n */\n function initialize() {\n subscribe('files:navigation:changed', onViewChanged);\n const router = window.OCP.Files.Router;\n // if we initially load the search view (e.g. hard page refresh)\n // then we need to initialize the store from the router\n if (router.params.view === VIEW_ID) {\n query.value = [router.query.query].flat()[0] ?? '';\n if (query.value) {\n scope.value = 'globally';\n logger.debug('Directly navigated to search view', { query: query.value });\n }\n else {\n // we do not have any query so we need to move to the files list\n logger.info('Directly navigated to search view without any query, redirect to files view.');\n router.goToRoute(undefined, {\n ...router.params,\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n }, true);\n }\n }\n }\n return {\n query,\n scope,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialUserConfig = loadState('files', 'config', {\n crop_image_previews: true,\n default_view: 'files',\n folder_tree: true,\n grid_view: false,\n show_files_extensions: true,\n show_hidden: false,\n show_mime_column: true,\n sort_favorites_first: true,\n sort_folders_first: true,\n show_dialog_deletion: false,\n show_dialog_file_extension: true,\n});\nexport const useUserConfigStore = defineStore('userconfig', () => {\n const userConfig = ref({ ...initialUserConfig });\n /**\n * Update the user config local store\n *\n * @param key The config key\n * @param value The new value\n */\n function onUpdate(key, value) {\n set(userConfig.value, key, value);\n }\n /**\n * Update the user config local store AND on server side\n *\n * @param key The config key\n * @param value The new value\n */\n async function update(key, value) {\n // only update if a user is logged in (not the case for public shares)\n if (getCurrentUser() !== null) {\n await axios.put(generateUrl('/apps/files/api/v1/config/{key}', { key }), {\n value,\n });\n }\n emit('files:config:updated', { key, value });\n }\n // Register the event listener\n subscribe('files:config:updated', ({ key, value }) => onUpdate(key, value));\n return {\n userConfig,\n update,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MagnifySvg from '@mdi/svg/svg/magnify.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getContents } from '../services/Search.ts';\nimport { VIEW_ID as FILES_VIEW_ID } from './files.ts';\nexport const VIEW_ID = 'search';\n/**\n * Register the search-in-files view\n */\nexport function registerSearchView() {\n let instance;\n let view;\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: VIEW_ID,\n name: t('files', 'Search'),\n caption: t('files', 'Search results within your files.'),\n async emptyView(el) {\n if (!view) {\n view = (await import('./SearchEmptyView.vue')).default;\n }\n else {\n instance.$destroy();\n }\n instance = new Vue(view);\n instance.$mount(el);\n },\n icon: MagnifySvg,\n order: 10,\n parent: FILES_VIEW_ID,\n // it should be shown expanded\n expanded: true,\n // this view is hidden by default and only shown when active\n hidden: true,\n getContents,\n }));\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-c8e429a5] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.nc-chip[data-v-c8e429a5] {\n --chip-size: 24px;\n --chip-radius: calc(var(--chip-size) / 2);\n height: var(--chip-size);\n max-width: fit-content;\n display: flex;\n flex-direction: row;\n align-items: center;\n border-radius: var(--chip-radius);\n background-color: var(--color-background-hover);\n}\n.nc-chip--primary[data-v-c8e429a5] {\n background-color: var(--color-primary-element);\n color: var(--color-primary-element-text);\n}\n.nc-chip--secondary[data-v-c8e429a5] {\n background-color: var(--color-primary-element-light);\n color: var(--color-primary-element-light-text);\n}\n.nc-chip--error[data-v-c8e429a5] {\n background-color: var(--color-error);\n color: var(--color-error-text);\n}\n.nc-chip--warning[data-v-c8e429a5] {\n background-color: var(--color-warning);\n color: var(--color-warning-text);\n}\n.nc-chip--success[data-v-c8e429a5] {\n background-color: var(--color-success);\n color: var(--color-success-text);\n}\n.nc-chip--no-actions .nc-chip__text[data-v-c8e429a5] {\n padding-inline-end: calc(2 * var(--default-grid-baseline));\n}\n.nc-chip--no-icon .nc-chip__text[data-v-c8e429a5] {\n padding-inline-start: calc(2 * var(--default-grid-baseline));\n}\n.nc-chip__text[data-v-c8e429a5] {\n flex: 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n text-wrap: nowrap;\n}\n.nc-chip__icon[data-v-c8e429a5] {\n flex: 0 0 var(--chip-size);\n margin-inline-end: var(--default-grid-baseline);\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n height: var(--chip-size);\n width: var(--chip-size);\n}\n.nc-chip__actions[data-v-c8e429a5] {\n flex: 0 0 var(--chip-size);\n --default-clickable-area: var(--chip-size);\n --border-radius-element: var(--chip-radius);\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcChip-DLfUzq07.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,iBAAiB;EACjB,yCAAyC;EACzC,wBAAwB;EACxB,sBAAsB;EACtB,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,iCAAiC;EACjC,+CAA+C;AACjD;AACA;EACE,8CAA8C;EAC9C,wCAAwC;AAC1C;AACA;EACE,oDAAoD;EACpD,8CAA8C;AAChD;AACA;EACE,oCAAoC;EACpC,8BAA8B;AAChC;AACA;EACE,sCAAsC;EACtC,gCAAgC;AAClC;AACA;EACE,sCAAsC;EACtC,gCAAgC;AAClC;AACA;EACE,0DAA0D;AAC5D;AACA;EACE,4DAA4D;AAC9D;AACA;EACE,YAAY;EACZ,gBAAgB;EAChB,uBAAuB;EACvB,iBAAiB;AACnB;AACA;EACE,0BAA0B;EAC1B,+CAA+C;EAC/C,cAAc;EACd,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,gBAAgB;EAChB,wBAAwB;EACxB,uBAAuB;AACzB;AACA;EACE,0BAA0B;EAC1B,0CAA0C;EAC1C,2CAA2C;AAC7C\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-c8e429a5] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.nc-chip[data-v-c8e429a5] {\\n --chip-size: 24px;\\n --chip-radius: calc(var(--chip-size) / 2);\\n height: var(--chip-size);\\n max-width: fit-content;\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n border-radius: var(--chip-radius);\\n background-color: var(--color-background-hover);\\n}\\n.nc-chip--primary[data-v-c8e429a5] {\\n background-color: var(--color-primary-element);\\n color: var(--color-primary-element-text);\\n}\\n.nc-chip--secondary[data-v-c8e429a5] {\\n background-color: var(--color-primary-element-light);\\n color: var(--color-primary-element-light-text);\\n}\\n.nc-chip--error[data-v-c8e429a5] {\\n background-color: var(--color-error);\\n color: var(--color-error-text);\\n}\\n.nc-chip--warning[data-v-c8e429a5] {\\n background-color: var(--color-warning);\\n color: var(--color-warning-text);\\n}\\n.nc-chip--success[data-v-c8e429a5] {\\n background-color: var(--color-success);\\n color: var(--color-success-text);\\n}\\n.nc-chip--no-actions .nc-chip__text[data-v-c8e429a5] {\\n padding-inline-end: calc(2 * var(--default-grid-baseline));\\n}\\n.nc-chip--no-icon .nc-chip__text[data-v-c8e429a5] {\\n padding-inline-start: calc(2 * var(--default-grid-baseline));\\n}\\n.nc-chip__text[data-v-c8e429a5] {\\n flex: 1 auto;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n text-wrap: nowrap;\\n}\\n.nc-chip__icon[data-v-c8e429a5] {\\n flex: 0 0 var(--chip-size);\\n margin-inline-end: var(--default-grid-baseline);\\n line-height: 1;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n overflow: hidden;\\n height: var(--chip-size);\\n width: var(--chip-size);\\n}\\n.nc-chip__actions[data-v-c8e429a5] {\\n flex: 0 0 var(--chip-size);\\n --default-clickable-area: var(--chip-size);\\n --border-radius-element: var(--chip-radius);\\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__breadcrumbs[data-v-86e9be62]{flex:1 1 100% !important;width:100%;height:100%;margin:0;min-width:0}.files-list__breadcrumbs[data-v-86e9be62] a{cursor:pointer !important}.files-list__breadcrumbs--with-progress[data-v-86e9be62]{flex-direction:column !important;align-items:flex-start !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,0CAEC,wBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,WAAA,CAGC,6CACC,yBAAA,CAIF,yDACC,gCAAA,CACA,iCAAA\",\"sourcesContent\":[\"\\n.files-list__breadcrumbs {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tmargin: 0;\\n\\tmin-width: 0;\\n\\n\\t:deep() {\\n\\t\\ta {\\n\\t\\t\\tcursor: pointer !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&--with-progress {\\n\\t\\tflex-direction: column !important;\\n\\t\\talign-items: flex-start !important;\\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__drag-drop-notice[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;width:100%;min-height:102px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-1e2b9696]{margin-inline-start:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropNotice.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,wBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA\",\"sourcesContent\":[\"\\n.files-list__drag-drop-notice {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: 100%;\\n\\t// Breadcrumbs height + row thead height\\n\\tmin-height: calc(58px + 44px);\\n\\tmargin: 0;\\n\\tuser-select: none;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: var(--color-main-background);\\n\\tborder-color: black;\\n\\n\\th3 {\\n\\t\\tmargin-inline-start: 16px;\\n\\t\\tcolor: inherit;\\n\\t}\\n\\n\\t&-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\theight: 15vh;\\n\\t\\tmax-height: 70%;\\n\\t\\tpadding: 0 5vw;\\n\\t\\tborder: 2px var(--color-border-dark) dashed;\\n\\t\\tborder-radius: var(--border-radius-large);\\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-drag-image{position:absolute;top:-9999px;inset-inline-start:-9999px;display:flex;overflow:hidden;align-items:center;height:34px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon-preview-container{display:flex;overflow:hidden;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-inline-end:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:6px;margin-inline-start:-16px}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropPreview.vue\"],\"names\":[],\"mappings\":\"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,0BAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,4FAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,sBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAIA,kHACC,cA/CU,CAgDV,yBAAA,CACA,0JACC,eAAA,CAMF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n$size: 28px;\\n$stack-shift: 6px;\\n\\n.files-list-drag-image {\\n\\tposition: absolute;\\n\\ttop: -9999px;\\n\\tinset-inline-start: -9999px;\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\talign-items: center;\\n\\theight: $size + $stack-shift;\\n\\tpadding: $stack-shift $stack-shift * 2;\\n\\tbackground: var(--color-main-background);\\n\\n\\t&__icon,\\n\\t.files-list__row-icon-preview-container {\\n\\t\\tdisplay: flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: $size - $stack-shift;\\n\\t\\theight: $size - $stack-shift;;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\toverflow: visible;\\n\\t\\tmargin-inline-end: $stack-shift * 2;\\n\\n\\t\\timg {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tmax-height: 100%;\\n\\t\\t}\\n\\n\\t\\t.material-design-icon {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t&.folder-icon {\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Previews container\\n\\t\\t> span {\\n\\t\\t\\tdisplay: flex;\\n\\n\\t\\t\\t// Stack effect if more than one element\\n\\t\\t\\t// Max 3 elements\\n\\t\\t\\t> .files-list__row-icon-preview-container + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\tmargin-top: $stack-shift;\\n\\t\\t\\t\\tmargin-inline-start: $stack-shift * 2 - $size;\\n\\t\\t\\t\\t& + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\t\\tmargin-top: $stack-shift * 2;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If we have manually clone the preview,\\n\\t\\t\\t// let's hide any fallback icons\\n\\t\\t\\t&:not(:empty) + * {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__name {\\n\\t\\toverflow: hidden;\\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, `.favorite-marker-icon[data-v-4505d262]{color:var(--color-favorite);min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-4505d262] svg{width:20px !important;height:20px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-4505d262] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,2BAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.favorite-marker-icon {\\n\\tcolor: var(--color-favorite);\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n min-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 20px !important;\\n\\t\\t\\theight: 20px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Sow a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\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, `main.app-content[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAGA,uDACC,6EAAA,CAGA,kFAEC,iGAAA,CAGD,kFACC,YAAA\",\"sourcesContent\":[\"\\n// Allow right click to define the position of the menu\\n// only if defined\\nmain.app-content[style*=\\\"mouse-pos-x\\\"] .v-popper__popper {\\n\\ttransform: translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important;\\n\\n\\t// If the menu is too close to the bottom, we move it up\\n\\t&[data-popper-placement=\\\"top\\\"] {\\n\\t\\t// 34px added to align with the top of the cursor\\n\\t\\ttransform: translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important;\\n\\t}\\n\\t// Hide arrow if floating\\n\\t.v-popper__arrow-container {\\n\\t\\tdisplay: none;\\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__row-action[data-v-5f3391ea]{--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}.files-list__row-action.files-list__row-action--inline[data-v-5f3391ea]{--max-icon-size: var(--default-clickable-area)}.files-list__row-action .files-list__row-action-icon[data-v-5f3391ea] svg{max-height:var(--max-icon-size) !important;max-width:var(--max-icon-size) !important}.files-list__row-action.files-list__row-action--destructive[data-v-5f3391ea] ::deep(button){color:var(--color-text-error) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AACA,yCACC,uFAAA,CAGA,wEACC,8CAAA,CAID,0EACC,0CAAA,CACA,yCAAA,CAIA,4FACC,wCAAA\",\"sourcesContent\":[\"\\n.files-list__row-action {\\n\\t--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));\\n\\n\\t// inline icons can have clickable area size so they still fit into the row\\n\\t&.files-list__row-action--inline {\\n\\t\\t--max-icon-size: var(--default-clickable-area);\\n\\t}\\n\\n\\t// Some icons exceed the default size so we need to enforce a max width and height\\n\\t.files-list__row-action-icon :deep(svg) {\\n\\t\\tmax-height: var(--max-icon-size) !important;\\n\\t\\tmax-width: var(--max-icon-size) !important;\\n\\t}\\n\\n\\t&.files-list__row-action--destructive {\\n\\t\\t::deep(button) {\\n\\t\\t\\tcolor: var(--color-text-error) !important;\\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, `button.files-list__row-name-link[data-v-3e8ca2b0]{background-color:unset;border:none;font-weight:normal}button.files-list__row-name-link[data-v-3e8ca2b0]:active{background-color:unset !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryName.vue\"],\"names\":[],\"mappings\":\"AACA,kDACC,sBAAA,CACA,WAAA,CACA,kBAAA,CAEA,yDAEC,iCAAA\",\"sourcesContent\":[\"\\nbutton.files-list__row-name-link {\\n\\tbackground-color: unset;\\n\\tborder: none;\\n\\tfont-weight: normal;\\n\\n\\t&:active {\\n\\t\\t// No active styles - handled by the row entry\\n\\t\\tbackground-color: unset !important;\\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, `.recently-created-marker-icon[data-v-251f6582]{color:var(--color-element-success);min-width:unset !important;min-height:unset !important}.recently-created-marker-icon[data-v-251f6582] svg{width:20px !important;height:20px !important;max-width:unset !important;max-height:unset !important}.recently-created-marker-icon[data-v-251f6582] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,kCAAA,CAEA,0BAAA,CACA,2BAAA,CAGC,oDAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,yDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.recently-created-marker-icon {\\n\\tcolor: var(--color-element-success);\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n\\tmin-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 20px !important;\\n\\t\\t\\theight: 20px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Show a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\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, `tr[data-v-378a6e4a]{margin-bottom:var(--body-container-margin);border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-378a6e4a]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,0CAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tmargin-bottom: var(--body-container-margin);\\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\\ttd {\\n\\t\\tuser-select: none;\\n\\t\\t// Make sure the cell colors don't apply to column headers\\n\\t\\tcolor: var(--color-text-maxcontrast) !important;\\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[data-v-5a72550e]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-5a72550e]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\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-53193162]{flex:1 1 100% !important;max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\tmax-width: 100%;\\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[data-v-4a8557e6]{margin:0 calc(var(--button-padding, var(--cell-margin))*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-4a8557e6]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-4a8557e6]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-4a8557e6]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-4a8557e6]{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDAEC,2DAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--button-padding, var(--cell-margin)) * -1);\\n\\tmin-width: calc(100% - 3 * var(--cell-margin))!important;\\n\\n\\t&-text {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tfont-weight: normal;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\topacity: 0;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\tinset-inline-start: -10px;\\n\\t}\\n\\n\\t&--size &-icon {\\n\\t\\tinset-inline-start: 10px;\\n\\t}\\n\\n\\t&--active &-icon,\\n\\t&:hover &-icon,\\n\\t&:focus &-icon,\\n\\t&:active &-icon {\\n\\t\\topacity: 1;\\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-1a9725ff]{--row-height: 44px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: var(--default-clickable-area);--icon-preview-size: 24px;--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));display:flex;flex-direction:column;overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-1a9725ff]:has(.files-list__filters:empty){--fixed-block-start-position: 0px}.files-list[data-v-1a9725ff] tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-1a9725ff] tbody tr{contain:strict}.files-list[data-v-1a9725ff] tbody tr:hover,.files-list[data-v-1a9725ff] tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-1a9725ff] .files-list__before{display:flex;flex-direction:column}.files-list[data-v-1a9725ff] .files-list__selected{padding-inline-end:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.files-list[data-v-1a9725ff] .files-list__table{display:block}.files-list[data-v-1a9725ff] .files-list__table.files-list__table--with-thead-overlay{margin-block-start:calc(-1*var(--row-height))}.files-list[data-v-1a9725ff] .files-list__table--hidden{visibility:hidden;z-index:-1;opacity:0}.files-list[data-v-1a9725ff] .files-list__filters{display:flex;gap:var(--default-grid-baseline);box-sizing:border-box;position:sticky;top:0;background-color:var(--color-main-background);z-index:10;padding-inline:var(--row-height) var(--default-grid-baseline, 4px);height:var(--fixed-block-start-position);width:100%}.files-list[data-v-1a9725ff] .files-list__filters:not(:empty){padding-block:calc(var(--default-grid-baseline, 4px)/2)}.files-list[data-v-1a9725ff] .files-list__thead-overlay{position:sticky;top:var(--fixed-block-start-position);margin-inline-start:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-block-end:1px solid var(--color-border);height:var(--row-height);flex:0 0 var(--row-height)}.files-list[data-v-1a9725ff] .files-list__thead,.files-list[data-v-1a9725ff] .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-1a9725ff] .files-list__thead{position:sticky;z-index:10;top:var(--fixed-block-start-position)}.files-list[data-v-1a9725ff] .files-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%}.files-list[data-v-1a9725ff] tr{position:relative;display:flex;align-items:center;width:100%;border-block-end:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-1a9725ff] td,.files-list[data-v-1a9725ff] th{display:flex;align-items:center;flex:0 0 auto;justify-content:start;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-1a9725ff] td span,.files-list[data-v-1a9725ff] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-1a9725ff] .files-list__row--failed{position:absolute;display:block;top:0;inset-inline:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-1a9725ff] .files-list__row-checkbox{justify-content:center}.files-list[data-v-1a9725ff] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-1a9725ff] .files-list__row-checkbox .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[data-v-1a9725ff] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-1a9725ff] .files-list__row:hover,.files-list[data-v-1a9725ff] .files-list__row:focus,.files-list[data-v-1a9725ff] .files-list__row:active,.files-list[data-v-1a9725ff] .files-list__row--active,.files-list[data-v-1a9725ff] .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-1a9725ff] .files-list__row:hover>*,.files-list[data-v-1a9725ff] .files-list__row:focus>*,.files-list[data-v-1a9725ff] .files-list__row:active>*,.files-list[data-v-1a9725ff] .files-list__row--active>*,.files-list[data-v-1a9725ff] .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-1a9725ff] .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-1a9725ff] .files-list__row--dragover *{pointer-events:none}.files-list[data-v-1a9725ff] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-inline-end:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-1a9725ff] .files-list__row-icon *{cursor:pointer}.files-list[data-v-1a9725ff] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-1a9725ff] .files-list__row-icon>span:not(.files-list__row-icon-favorite):not(.files-list__row-icon-recently-created) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-icon,.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-icon svg,.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-1a9725ff] .files-list__row-icon-preview-container{position:relative;overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius)}.files-list[data-v-1a9725ff] .files-list__row-icon-blurhash{position:absolute;inset-block-start:0;inset-inline-start:0;height:100%;width:100%;object-fit:cover}.files-list[data-v-1a9725ff] .files-list__row-icon-preview{object-fit:contain;object-position:center;height:100%;width:100%}.files-list[data-v-1a9725ff] .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-1a9725ff] .files-list__row-icon-favorite,.files-list[data-v-1a9725ff] .files-list__row-icon-recently-created{position:absolute;top:0px;inset-inline-end:-10px}.files-list[data-v-1a9725ff] .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.6);max-width:calc(var(--icon-preview-size)*.6);color:var(--color-primary-element-text);margin-block-start:2px}.files-list[data-v-1a9725ff] .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-1a9725ff] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link{display:flex;align-items:center;text-align:start;width:100%;height:100%;min-width:0;margin:0;padding:0}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link:focus-visible{outline:none !important}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link:focus .files-list__row-name-text{outline:var(--border-width-input-focused) solid var(--color-main-text) !important;border-radius:var(--border-radius-element)}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-1a9725ff] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:var(--default-grid-baseline) calc(2*var(--default-grid-baseline));padding-inline-start:-10px;display:inline-flex}.files-list[data-v-1a9725ff] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-1a9725ff] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-1a9725ff] .files-list__row-rename input{width:100%;margin-inline-start:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-1a9725ff] .files-list__row-rename input:invalid{border-color:var(--color-border-error);color:var(--color-text-error)}.files-list[data-v-1a9725ff] .files-list__row-actions{width:auto}.files-list[data-v-1a9725ff] .files-list__row-actions~td,.files-list[data-v-1a9725ff] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-1a9725ff] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-1a9725ff] .files-list__row-action--inline{margin-inline-end:7px}.files-list[data-v-1a9725ff] .files-list__row-mime,.files-list[data-v-1a9725ff] .files-list__row-mtime,.files-list[data-v-1a9725ff] .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-1a9725ff] .files-list__row-size{width:calc(var(--row-height)*2);justify-content:flex-end}.files-list[data-v-1a9725ff] .files-list__row-mtime{width:calc(var(--row-height)*2.5)}.files-list[data-v-1a9725ff] .files-list__row-mime{width:calc(var(--row-height)*3.5)}.files-list[data-v-1a9725ff] .files-list__row-column-custom{width:calc(var(--row-height)*2.5)}@media screen and (max-width: 512px){.files-list[data-v-1a9725ff] .files-list__filters{padding-inline:var(--default-grid-baseline, 4px)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 44px;\\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: var(--default-clickable-area);\\n\\t--icon-preview-size: 24px;\\n\\n\\t--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t&:has(&__filters:empty) {\\n\\t\\t--fixed-block-start-position: 0px;\\n\\t}\\n\\n\\t& :deep() {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody {\\n\\t\\t\\twill-change: padding;\\n\\t\\t\\tcontain: layout paint style;\\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\\n\\t\\t\\t/* Hover effect on tbody lines only */\\n\\t\\t\\ttr {\\n\\t\\t\\t\\tcontain: strict;\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Before table and thead\\n\\t\\t.files-list__before {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t}\\n\\n\\t\\t.files-list__selected {\\n\\t\\t\\tpadding-inline-end: 12px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tfont-variant-numeric: tabular-nums;\\n\\t\\t}\\n\\n\\t\\t.files-list__table {\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t&.files-list__table--with-thead-overlay {\\n\\t\\t\\t\\t// Hide the table header below the overlay\\n\\t\\t\\t\\tmargin-block-start: calc(-1 * var(--row-height));\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Visually hide the table when there are no files\\n\\t\\t\\t&--hidden {\\n\\t\\t\\t\\tvisibility: hidden;\\n\\t\\t\\t\\tz-index: -1;\\n\\t\\t\\t\\topacity: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__filters {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: var(--default-grid-baseline);\\n\\t\\t\\tbox-sizing: border-box;\\n\\n\\t\\t\\t// Pinned on top when scrolling above table header\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\t// ensure there is a background to hide the file list on scroll\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\t// fixed the size\\n\\t\\t\\tpadding-inline: var(--row-height) var(--default-grid-baseline, 4px);\\n\\t\\t\\theight: var(--fixed-block-start-position);\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t&:not(:empty) {\\n\\t\\t\\t\\tpadding-block: calc(var(--default-grid-baseline, 4px) / 2);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__thead-overlay {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: var(--fixed-block-start-position);\\n\\t\\t\\t// Save space for a row checkbox\\n\\t\\t\\tmargin-inline-start: var(--row-height);\\n\\t\\t\\t// More than .files-list__thead\\n\\t\\t\\tz-index: 20;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t// Reuse row styles\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tflex: 0 0 var(--row-height);\\n\\t\\t}\\n\\n\\t\\t.files-list__thead,\\n\\t\\t.files-list__tfoot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.files-list__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: var(--fixed-block-start-position);\\n\\t\\t}\\n\\n\\t\\t// Empty content\\n\\t\\t.files-list__empty {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tuser-select: none;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: start;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row--failed {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\topacity: .1;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-error);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row {\\n\\t\\t\\t&:hover, &:focus, &:active, &--active, &--dragover {\\n\\t\\t\\t\\t// WCAG AA compliant\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t// text-maxcontrast have been designed to pass WCAG AA over\\n\\t\\t\\t\\t// a white background, we need to adjust then.\\n\\t\\t\\t\\t--color-text-maxcontrast: var(--color-main-text);\\n\\t\\t\\t\\t> * {\\n\\t\\t\\t\\t\\t--color-border: var(--color-border-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Hover state of the row should also change the favorite markers background\\n\\t\\t\\t\\t.favorite-marker-icon svg path {\\n\\t\\t\\t\\t\\tstroke: var(--color-background-hover);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--dragover * {\\n\\t\\t\\t\\t// Prevent dropping on row children\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry preview or mime icon\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-inline-end: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t// Icon is also clickable\\n\\t\\t\\t* {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\n\\t\\t\\t\\t&:not(.files-list__row-icon-favorite):not(.files-list__row-icon-recently-created) svg {\\n\\t\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Slightly increase the size of the folder icon\\n\\t\\t\\t\\t&.folder-icon,\\n\\t\\t\\t\\t&.folder-open-icon {\\n\\t\\t\\t\\t\\tmargin: -3px;\\n\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\twidth: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t\\theight: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview-container {\\n\\t\\t\\t\\tposition: relative; // Needed for the blurshash to be positioned correctly\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-blurhash {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tinset-block-start: 0;\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\tobject-fit: cover;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tobject-fit: contain;\\n\\t\\t\\t\\tobject-position: center;\\n\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t/* Preview not loaded animation effect */\\n\\t\\t\\t\\t&:not(.files-list__row-icon-preview--loaded) {\\n\\t\\t\\t\\t\\tbackground: var(--color-loading-dark);\\n\\t\\t\\t\\t\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite,\\n\\t\\t\\t&-recently-created {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 0px;\\n\\t\\t\\t\\tinset-inline-end: -10px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// File and folder overlay\\n\\t\\t\\t&-overlay {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tmax-height: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tmax-width: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\t\\t// better alignment with the folder icon\\n\\t\\t\\t\\tmargin-block-start: 2px;\\n\\n\\t\\t\\t\\t// Improve icon contrast with a background for files\\n\\t\\t\\t\\t&--file {\\n\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry link\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\tbutton.files-list__row-name-link {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\ttext-align: start;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\t// Necessary for flex grow to work\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t\\t// Already added to the inner text, see rule below\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: var(--border-width-input-focused) solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: var(--border-radius-element);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:focus:not(:focus-visible) .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline));\\n\\t\\t\\t\\tpadding-inline-start: -10px;\\n\\t\\t\\t\\t// Align two name and ext\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-ext {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t// always show the extension\\n\\t\\t\\t\\toverflow: visible;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Rename form\\n\\t\\t.files-list__row-rename {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t// Align with text, 0 - padding - border\\n\\t\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\t\\tpadding: 2px 6px;\\n\\t\\t\\t\\tborder-width: 2px;\\n\\n\\t\\t\\t\\t&:invalid {\\n\\t\\t\\t\\t\\t// Show red border on invalid input\\n\\t\\t\\t\\t\\tborder-color: var(--color-border-error);\\n\\t\\t\\t\\t\\tcolor: var(--color-text-error);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\t// take as much space as necessary\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-action--inline {\\n\\t\\t\\tmargin-inline-end: 7px;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime,\\n\\t\\t.files-list__row-mtime,\\n\\t\\t.files-list__row-size {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-size {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t\\t// Right align content/text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime {\\n\\t\\t\\twidth: calc(var(--row-height) * 3.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\t}\\n}\\n\\n@media screen and (max-width: 512px) {\\n\\t.files-list :deep(.files-list__filters) {\\n\\t\\t// Reduce padding on mobile\\n\\t\\tpadding-inline: var(--default-grid-baseline, 4px);\\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--grid tbody.files-list__tbody{--item-padding: 16px;--icon-preview-size: 166px;--name-height: var(--default-clickable-area);--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));align-content:center;align-items:center;justify-content:space-around;justify-items:center}.files-list--grid tbody.files-list__tbody tr{display:flex;flex-direction:column;width:var(--row-width);height:var(--row-height);border:none;border-radius:var(--border-radius-large);padding:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox{position:absolute;z-index:9;top:calc(var(--item-padding)/2);inset-inline-start:calc(var(--item-padding)/2);overflow:hidden;--checkbox-container-size: 44px;width:var(--checkbox-container-size);height:var(--checkbox-container-size)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox .checkbox-radio-switch__content::after{content:\"\";width:16px;height:16px;position:absolute;inset-inline-start:50%;margin-inline-start:-8px;z-index:-1;background:var(--color-main-background)}.files-list--grid tbody.files-list__tbody .files-list__row-icon-favorite,.files-list--grid tbody.files-list__tbody .files-list__row-icon-recently-created{position:absolute;top:0;inset-inline-end:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}.files-list--grid tbody.files-list__tbody .files-list__row-name{display:flex;flex-direction:column;width:var(--icon-preview-size);height:calc(var(--icon-preview-size) + var(--name-height));overflow:visible}.files-list--grid tbody.files-list__tbody .files-list__row-name span.files-list__row-icon{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list--grid tbody.files-list__tbody .files-list__row-name .files-list__row-name-text{margin:0;margin-inline-start:-4px;padding:0px 4px}.files-list--grid tbody.files-list__tbody .files-list__row-mtime{width:var(--icon-preview-size);height:var(--mtime-height);font-size:var(--font-size-small)}.files-list--grid tbody.files-list__tbody .files-list__row-actions{position:absolute;inset-inline-end:calc(var(--clickable-area)/4);inset-block-end:calc(var(--mtime-height)/2);width:var(--clickable-area);height:var(--clickable-area)}@media screen and (max-width: 768px){.files-list--grid tbody.files-list__tbody{--mtime-height: 0px}.files-list--grid tbody.files-list__tbody .files-list__row-actions{inset-block-end:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-name-text{padding-inline-end:var(--clickable-area) !important}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AAEA,0CACC,oBAAA,CACA,0BAAA,CACA,4CAAA,CACA,2EAAA,CACA,qEAAA,CACA,iHAAA,CACA,uBAAA,CACA,YAAA,CACA,yDAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,6CACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,wCAAA,CACA,2BAAA,CAID,oEACC,iBAAA,CACA,SAAA,CACA,+BAAA,CACA,8CAAA,CACA,eAAA,CACA,+BAAA,CACA,oCAAA,CACA,qCAAA,CAGA,2GACC,UAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,wBAAA,CACA,UAAA,CACA,uCAAA,CAKF,0JAEC,iBAAA,CACA,KAAA,CACA,kBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,gEACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,0DAAA,CAEA,gBAAA,CAEA,0FACC,8BAAA,CACA,+BAAA,CAGD,2FACC,QAAA,CAEA,wBAAA,CACA,eAAA,CAIF,iEACC,8BAAA,CACA,0BAAA,CACA,gCAAA,CAGD,mEACC,iBAAA,CACA,8CAAA,CACA,2CAAA,CACA,2BAAA,CACA,4BAAA,CAIF,qCAEC,0CACC,mBAAA,CAGA,mEACC,mCAAA,CAID,qEACC,mDAAA,CAAA\",\"sourcesContent\":[\"\\n// Grid mode\\n.files-list--grid tbody.files-list__tbody {\\n\\t--item-padding: 16px;\\n\\t--icon-preview-size: 166px;\\n\\t--name-height: var(--default-clickable-area);\\n\\t--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));\\n\\t--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);\\n\\t--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);\\n\\t--checkbox-padding: 0px;\\n\\tdisplay: grid;\\n\\tgrid-template-columns: repeat(auto-fill, var(--row-width));\\n\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tjustify-content: space-around;\\n\\tjustify-items: center;\\n\\n\\ttr {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--row-width);\\n\\t\\theight: var(--row-height);\\n\\t\\tborder: none;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tpadding: var(--item-padding);\\n\\t}\\n\\n\\t// Checkbox in the top left\\n\\t.files-list__row-checkbox {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 9;\\n\\t\\ttop: calc(var(--item-padding) / 2);\\n\\t\\tinset-inline-start: calc(var(--item-padding) / 2);\\n\\t\\toverflow: hidden;\\n\\t\\t--checkbox-container-size: 44px;\\n\\t\\twidth: var(--checkbox-container-size);\\n\\t\\theight: var(--checkbox-container-size);\\n\\n\\t\\t// Add a background to the checkbox so we do not see the image through it.\\n\\t\\t.checkbox-radio-switch__content::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-inline-start: 50%;\\n\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t}\\n\\t}\\n\\n\\t// Icon in the top right\\n\\t.files-list__row-icon-favorite,\\n\\t.files-list__row-icon-recently-created {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tinset-inline-end: 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n\\n\\t.files-list__row-name {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: calc(var(--icon-preview-size) + var(--name-height));\\n\\t\\t// Ensure that the name outline is visible.\\n\\t\\toverflow: visible;\\n\\n\\t\\tspan.files-list__row-icon {\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\t// Ensure that the outline is not too close to the text.\\n\\t\\t\\tmargin-inline-start: -4px;\\n\\t\\t\\tpadding: 0px 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-mtime {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--mtime-height);\\n\\t\\tfont-size: var(--font-size-small);\\n\\t}\\n\\n\\t.files-list__row-actions {\\n\\t\\tposition: absolute;\\n\\t\\tinset-inline-end: calc(var(--clickable-area) / 4);\\n\\t\\tinset-block-end: calc(var(--mtime-height) / 2);\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n}\\n\\n@media screen and (max-width: 768px) {\\n\\t// there is no mtime\\n\\t.files-list--grid tbody.files-list__tbody {\\n\\t\\t--mtime-height: 0px;\\n\\n\\t\\t// so we move the action to the name\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\tinset-block-end: var(--item-padding);\\n\\t\\t}\\n\\n\\t\\t// and we need to keep space on the name for the actions\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tpadding-inline-end: var(--clickable-area) !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, `.app-navigation-entry__settings-quota[data-v-062ef4b2]{--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2)}.app-navigation-entry__settings-quota--not-unlimited[data-v-062ef4b2] .app-navigation-entry__name{line-height:1;margin-top:var(--app-navigation-quota-margin)}.app-navigation-entry__settings-quota progress[data-v-062ef4b2]{position:absolute;bottom:var(--app-navigation-quota-margin);margin-inline-start:var(--default-clickable-area);width:calc(100% - 1.5*var(--default-clickable-area))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAEA,uDAEC,+EAAA,CAEA,kGACC,aAAA,CACA,6CAAA,CAGD,gEACC,iBAAA,CACA,yCAAA,CACA,iDAAA,CACA,oDAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2); // 20px icon size and 4px progress bar\\n\\n\\t&--not-unlimited :deep(.app-navigation-entry__name) {\\n\\t\\tline-height: 1;\\n\\t\\tmargin-top: var(--app-navigation-quota-margin);\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: var(--app-navigation-quota-margin);\\n\\t\\tmargin-inline-start: var(--default-clickable-area);\\n\\t\\twidth: calc(100% - (1.5 * var(--default-clickable-area)));\\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, `.toast-loading-icon{margin-inline-start:-4px;min-width:26px}.app-content[data-v-ed23df10]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative !important}.files-list__header[data-v-ed23df10]{display:flex;gap:var(--default-grid-baseline);align-items:center;flex:0 0;max-width:100%;margin-block:var(--app-navigation-padding, 4px);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px)}.files-list__header--public[data-v-ed23df10]{margin-inline:0 var(--app-navigation-padding, 4px)}.files-list__header>*[data-v-ed23df10]{flex:0 0}.files-list__header-actions[data-v-ed23df10]{min-width:fit-content !important}.files-list__header-upload-button--narrow[data-v-ed23df10]{position:fixed;inset-block-end:calc(1.5*var(--default-grid-baseline));inset-inline-end:calc(1.5*var(--default-grid-baseline))}.files-list__before[data-v-ed23df10]{display:flex;flex-direction:column;gap:calc(var(--default-grid-baseline)*2);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding))}.files-list__empty-view-wrapper[data-v-ed23df10]{display:flex;height:100%}.files-list__refresh-icon[data-v-ed23df10]{flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);height:var(--default-clickable-area)}.files-list__loading-icon[data-v-ed23df10]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,oBAEC,wBAAA,CAEA,cAAA,CAGD,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,4BAAA,CAIA,qCACC,YAAA,CACA,gCAAA,CACA,kBAAA,CAEA,QAAA,CACA,cAAA,CAEA,+CAAA,CACA,2HAAA,CAEA,6CAEC,kDAAA,CAGD,uCAGC,QAAA,CAGD,6CACC,gCAAA,CAIF,2DAEC,cAAA,CACA,sDAAA,CACA,uDAAA,CAGD,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CACA,mFAAA,CAGD,iDACC,YAAA,CACA,WAAA,CAGD,2CACC,sCAAA,CACA,mCAAA,CACA,oCAAA,CAGD,2CACC,WAAA\",\"sourcesContent\":[\"\\n:global(.toast-loading-icon) {\\n\\t// Reduce start margin (it was made for text but this is an icon)\\n\\tmargin-inline-start: -4px;\\n\\t// 16px icon + 5px on both sides\\n\\tmin-width: 26px;\\n}\\n\\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\\tposition: relative !important;\\n}\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: var(--default-grid-baseline);\\n\\t\\talign-items: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\tmax-width: 100%;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin-block: var(--app-navigation-padding, 4px);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px);\\n\\n\\t\\t&--public {\\n\\t\\t\\t// There is no navigation toggle on public shares\\n\\t\\t\\tmargin-inline: 0 var(--app-navigation-padding, 4px);\\n\\t\\t}\\n\\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\\n\\t\\t&-actions {\\n\\t\\t\\tmin-width: fit-content !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header-upload-button--narrow {\\n\\t\\t// this is teleported to body on narrow screens\\n\\t\\tposition: fixed;\\n\\t\\tinset-block-end: calc(1.5 * var(--default-grid-baseline));\\n\\t\\tinset-inline-end: calc(1.5 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__before {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(var(--default-grid-baseline) * 2);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding));\\n\\t}\\n\\n\\t&__empty-view-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 var(--default-clickable-area);\\n\\t\\twidth: var(--default-clickable-area);\\n\\t\\theight: var(--default-clickable-area);\\n\\t}\\n\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\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, `.app-navigation[data-v-b3d7fbf2] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-b3d7fbf2]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-b3d7fbf2]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}.files-navigation[data-v-b3d7fbf2] .app-navigation__content > ul.app-navigation__list{will-change:scroll-position}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesNavigation.vue\"],\"names\":[],\"mappings\":\"AAEC,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAIF,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA,CAIA,sFACC,2BAAA\",\"sourcesContent\":[\"\\n.app-navigation {\\n\\t:deep(.app-navigation-entry.active .button-vue.icon-collapse:not(:hover)) {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t}\\n\\n\\t> ul.app-navigation__list {\\n\\t\\t// Use flex gap value for more elegant spacing\\n\\t\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n\\t}\\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\\n.files-navigation {\\n\\t:deep(.app-navigation__content > ul.app-navigation__list) {\\n\\t\\twill-change: scroll-position;\\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, `.app-sidebar--has-preview[data-v-f91af60e] .app-sidebar-header__figure{background-size:cover}.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/plain\"] .app-sidebar-header__figure,.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/markdown\"] .app-sidebar-header__figure{background-size:contain}.app-sidebar--full[data-v-f91af60e]{position:fixed !important;z-index:2025 !important;top:0 !important;height:100% !important}.app-sidebar[data-v-f91af60e] .app-sidebar-header__description{margin:0 16px 4px 16px !important}.app-sidebar .svg-icon[data-v-f91af60e] svg{width:20px;height:20px;fill:currentColor}.sidebar__description[data-v-f91af60e]{display:flex;flex-direction:column;width:100%;gap:8px 0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesSidebar.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,qBAAA,CAKA,yMACC,uBAAA,CAKH,oCACC,yBAAA,CACA,uBAAA,CACA,gBAAA,CACA,sBAAA,CAIA,+DACC,iCAAA,CAKD,4CACC,UAAA,CACA,WAAA,CACA,iBAAA,CAKH,uCACE,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA\",\"sourcesContent\":[\"\\n.app-sidebar {\\n\\t&--has-preview:deep {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\n\\t\\t&[data-mimetype=\\\"text/plain\\\"],\\n\\t\\t&[data-mimetype=\\\"text/markdown\\\"] {\\n\\t\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--full {\\n\\t\\tposition: fixed !important;\\n\\t\\tz-index: 2025 !important;\\n\\t\\ttop: 0 !important;\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.app-sidebar-header__description {\\n\\t\\t\\tmargin: 0 16px 4px 16px !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.svg-icon {\\n\\t\\t:deep(svg) {\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\tfill: currentColor;\\n\\t\\t}\\n\\t}\\n}\\n\\n.sidebar__description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\t\\tgap: 8px 0;\\n\\t}\\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._fileListFilterChips_yBylg {\n\tdisplay: flex;\n\tgap: var(--default-grid-baseline);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilterChips.vue\"],\"names\":[],\"mappings\":\";AAwCA;CACA,aAAA;CACA,iCAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilterChips\": `_fileListFilterChips_yBylg`\n};\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._fileListFilters_dNswU {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: var(--default-grid-baseline);\n\tmargin-inline-end: var(--default-grid-baseline);\n\theight: 100%;\n\twidth: 100%;\n}\n._fileListFilters__popoverFilterView_fJWbD {\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(2 * var(--default-grid-baseline));\n\tpadding: calc(var(--default-grid-baseline) / 2);\n\tmin-width: calc(7 * var(--default-clickable-area));\n}\n._fileListFilters__popoverContainer_A30Cl {\n\tbox-sizing: border-box;\n\tpadding: calc(var(--default-grid-baseline) / 2);\n\tmin-width: calc(7 * var(--default-clickable-area));\n}\n._fileListFilters__filter_bCU2H {\n\tdisplay: flex;\n\talign-items: start;\n\tjustify-content: start;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n> * {\n\t\tflex: 0 1 fit-content;\n}\n}\n._fileListFilters__active_ECsmY {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilters.vue\"],\"names\":[],\"mappings\":\";AAkGA;CACA,aAAA;CACA,mBAAA;CACA,iCAAA;CACA,+CAAA;CACA,YAAA;CACA,WAAA;AACA;AAEA;CACA,sBAAA;CACA,aAAA;CACA,sBAAA;CACA,2CAAA;CACA,+CAAA;CACA,kDAAA;AACA;AAEA;CACA,sBAAA;CACA,+CAAA;CACA,kDAAA;AACA;AAEA;CACA,aAAA;CACA,kBAAA;CACA,sBAAA;CACA,gDAAA;AAEA;EACA,qBAAA;AACA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gDAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilters\": `_fileListFilters_dNswU`,\n\t\"fileListFilters__popoverFilterView\": `_fileListFilters__popoverFilterView_fJWbD`,\n\t\"fileListFilters__popoverContainer\": `_fileListFilters__popoverContainer_A30Cl`,\n\t\"fileListFilters__filter\": `_fileListFilters__filter_bCU2H`,\n\t\"fileListFilters__active\": `_fileListFilters__active_ECsmY`\n};\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._filesNavigationList_MBZVA {\n\theight: 100%; /* Fill all available space for sticky views */\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesNavigationList.vue\"],\"names\":[],\"mappings\":\";AAsDA;CACA,YAAA,EAAA,8CAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filesNavigationList\": `_filesNavigationList_MBZVA`\n};\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._filesSidebarSubname_yXZVi {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 0 8px;\n}\n._filesSidebarSubname__separator__OQUr {\n\tdisplay: inline-block;\n\tfont-weight: bold !important;\n}\n._filesSidebarSubname__userBubble_XTdWm {\n\tdisplay: inline-flex !important;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue\"],\"names\":[],\"mappings\":\";AAiDA;CACA,aAAA;CACA,mBAAA;CACA,eAAA;CACA,UAAA;AACA;AAEA;CACA,qBAAA;CACA,4BAAA;AACA;AAEA;CACA,+BAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filesSidebarSubname\": `_filesSidebarSubname_yXZVi`,\n\t\"filesSidebarSubname__separator\": `_filesSidebarSubname__separator__OQUr`,\n\t\"filesSidebarSubname__userBubble\": `_filesSidebarSubname__userBubble_XTdWm`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\")) {\n permissions |= Permission.WRITE;\n }\n if (permString.includes(\"CK\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"NV\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n}\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n if (scopedGlobals.davProperties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n scopedGlobals.davProperties.push(prop);\n scopedGlobals.davNamespaces = namespaces;\n return true;\n}\nfunction getDavProperties() {\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n}\nasync function getFavoriteNodes(options = {}) {\n const client = options.client ?? getClient();\n const path = options.path ?? \"/\";\n const davRoot = options.davRoot ?? defaultRootPath;\n const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n signal: options.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n defaultDavNamespaces,\n defaultDavProperties,\n defaultRemoteURL,\n defaultRootPath,\n getClient,\n getDavNameSpaces,\n getDavProperties,\n getDefaultPropfind,\n getFavoriteNodes,\n getFavoritesReport,\n getRecentSearch,\n getRemoteURL,\n getRootPath,\n parsePermissions,\n registerDavProperty,\n resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","import '../assets/index-BGmULkk-.css';\nimport { getSharingToken, isPublicShare } from \"@nextcloud/sharing/public\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport { formatFileSize, Folder, davRemoteURL, davRootPath, Permission, FileType, davGetClient, validateFilename, InvalidFilenameError, getUniqueName, getNewFileMenuEntries, NewMenuEntryCategory } from \"@nextcloud/files\";\nimport { basename, encodePath } from \"@nextcloud/paths\";\nimport { normalize } from \"path\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport axios, { isCancel } from \"@nextcloud/axios\";\nimport PCancelable from \"p-cancelable\";\nimport PQueue from \"p-queue\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getBaseUrl, generateRemoteUrl } from \"@nextcloud/router\";\nimport axiosRetry, { exponentialDelay, isNetworkOrIdempotentRequestError } from \"axios-retry\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport Vue, { defineAsyncComponent, defineComponent } from \"vue\";\nimport { showInfo, showWarning } from \"@nextcloud/dialogs\";\nimport { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { useHotKey } from \"@nextcloud/vue/dist/Composables/useHotKey.js\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport NcActionCaption from \"@nextcloud/vue/dist/Components/NcActionCaption.js\";\nimport NcActionSeparator from \"@nextcloud/vue/dist/Components/NcActionSeparator.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/dist/Components/NcIconSvgWrapper.js\";\nimport NcProgressBar from \"@nextcloud/vue/dist/Components/NcProgressBar.js\";\nconst gtBuilder = getGettextBuilder().detectLocale();\n[{ \"locale\": \"af\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"af\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: af\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ar\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Ali , 2025\", \"Language-Team\": \"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ar\", \"Plural-Forms\": \"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nabu.s3ud, 2024\\nAli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Ali , 2025\\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ar\\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" هو اسم ممنوع لملف أو مجلد.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" هو نوع ممنوع أن يكون لملف.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" هو غير مسموح به في اسم ملف أو مجلد.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ملف متعارض\", \"{count} ملف متعارض\", \"{count} ملفان متعارضان\", \"{count} ملف متعارض\", \"{count} ملفات متعارضة\", \"{count} ملفات متعارضة\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ملف متعارض في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفان متعارضان في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفات متعارضة في {dirname}\", \"{count} ملفات متعارضة في {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} متبقية\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"بضع ثوانٍ متبقية\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"تجميع\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"إلغاء\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"إلغِ العملية بالكامل\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"إلغاء عمليات رفع الملفات\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"إستمر\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"إنشاء جديد\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تقدير الوقت المتبقي\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"الإصدار الحالي\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"تعذّرت إعادة تجميع الكتل معاً \"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"تعذّر رفع الملف\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['غير مسموح ان ينتهي اسم الملف بـ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"اسم ملف غير صحيح\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"تاريخ آخر تعديل غير معروف\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"اسم ملف جديد\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخة جديدة\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مُجمَّد\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"معاينة الصورة\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغيير التسمية\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"حدِّد كل صناديق الخيارات\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"حدِّد كل الملفات الموجودة\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"حدِّد كل الملفات الجديدة\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"تخطِّي\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"حجم غير معلوم\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"رفع الملفات\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"رفع ملفات\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"رفع مجلدات\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"الرفع من جهاز \"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"تمّ إلغاء عملية رفع الملفات\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"تمّ تجاوز الرفع\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['رفع \"{folder}\" تمّ تجاوزه'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"تقدُّم الرفع \"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"أيُّ الملفات ترغب في الإبقاء عليها؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار.\"] } } } } }, { \"locale\": \"ast\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"enolp , 2023\", \"Language-Team\": \"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ast\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nenolp , 2023\\n\" }, \"msgstr\": [\"Last-Translator: enolp , 2023\\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ast\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ficheru en coflictu\", \"{count} ficheros en coflictu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ficheru en coflictu en {dirname}\", \"{count} ficheros en coflictu en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Tiempu que queda: {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden unos segundos\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Encaboxar les xubes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Siguir\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando'l tiempu que falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión esistente\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"La data de la última modificación ye desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en posa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar la imaxe\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar toles caxelles\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleicionar tolos ficheros esistentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleicionar tolos ficheros nuevos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar esti ficheru\", \"Saltar {count} ficheros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamañu desconocíu\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Encaboxóse la xuba\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Xubir ficheros\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Xuba en cursu\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué ficheros quies caltener?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Tienes de seleicionar polo menos una versión de cada ficheru pa siguir.\"] } } } } }, { \"locale\": \"az\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rashad Aliyev , 2023\", \"Language-Team\": \"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"az\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRashad Aliyev , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rashad Aliyev , 2023\\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: az\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniyə qalıb\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} qalıb\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir neçə saniyə qalıb\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Əlavə et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yükləməni imtina et\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Təxmini qalan vaxt\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauzadadır\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Faylları yüklə\"] } } } } }, { \"locale\": \"be\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"be\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: be\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bg\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bg_BG\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bg_BG\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bn_BD\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bn_BD\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bn_BD\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"br\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"br\", \"Plural-Forms\": \"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: br\\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bs\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bs\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ca\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Leandro Navarro , 2025\", \"Language-Team\": \"Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ca\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nv v , 2025\\nLeandro Navarro , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Leandro Navarro , 2025\\nLanguage-Team: Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ca\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" és un nom de fitxer o carpeta prohibit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" és un tipus de fitxer prohibit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no és permès dins del nom de fitxer o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fitxer en conflicte\", \"{count} fitxer en conflicte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicte de fitxers a {dirname}\", \"{count} conflictes de fitxers a {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segon restant\", \"{seconds} segons restants\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Queden {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden uns segons\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblatge\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar l'operació sencera\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel·la les pujades\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nou\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"s’està estimant el temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"No s'han pogut acoblar els trossos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"No s'ha pogut pujar el fitxer\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Els noms de fitxer no han d'acabar en \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fitxer no vàlid\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de la darrera modificació desconeguda\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nou nom de fitxer\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Imatge de vista prèvia\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Canviar el nom\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccioneu totes les caselles de selecció\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccioneu tots els fitxers existents\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccioneu tots el fitxers nous\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omet {count} fitxer\", \"Omet {count} fitxers\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Mida desconeguda\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Pujar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Puja els fitxers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Pujar les carpetes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Pujada des del dispositiu\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La pujada s'ha cancel·lat\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"S'ha omès la pujada\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [`S'ha omès la pujada de \"{folder}\"`] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Procés de pujada\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, també es sobreescriuran els fitxers en conflicte dins d'ella.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers vols conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Podeu canviar el nom del fitxer, saltar aquest fitxer o cancel·lar tota l'operació.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar almenys una versió de cada fitxer per continuar.\"] } } } } }, { \"locale\": \"cs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Pavel Borecki , 2025\", \"Language-Team\": \"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cs_CZ\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMichal Šmahel , 2024\\nMartin Hankovec, 2024\\nAppukonrad , 2024\\nPavel Borecki , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Pavel Borecki , 2025\\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs_CZ\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít jako název souboru či složky.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ není povoleného typu souboru.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít v rámci názvu souboru či složky.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} kolize souborů\", \"{count} kolize souborů\", \"{count} kolizí souborů\", \"{count} kolize souborů\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} kolize souboru v {dirname}\", \"{count} kolize souboru v {dirname}\", \"{count} kolizí souborů v {dirname}\", \"{count} kolize souboru v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"zbývá {seconds}\", \"zbývají {seconds}\", \"zbývá {seconds}\", \"zbývají {seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"zbývá {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zbývá několik sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sestavování\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušit\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušit nahrávání\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvořit nový\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhaduje se zbývající čas\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Shluky se nepodařilo dát dohromady\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Soubor se nepodařilo nahrát\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Názvy souborů nemohou končit na „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný název souboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Neznámé datum poslední úpravy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový název souboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastaveno\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhled obrázku\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Přejmenovat\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označit všechny zaškrtávací kolonky\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat veškeré stávající soubory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat veškeré nové soubory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Přeskočit\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Přeskočit {count} soubor\", \"Přeskočit {count} soubory\", \"Přeskočit {count} souborů\", \"Přeskočit {count} soubory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznámá velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrát\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrát soubory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrát složky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrát ze zařízení\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávání bylo zrušeno\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrání bylo přeskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Nahrání „{folder}“ bylo přeskočeno\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postup v nahrávání\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory si přejete ponechat?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] } } } } }, { \"locale\": \"cy_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cy_GB\", \"Plural-Forms\": \"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cy_GB\\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"da\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Finn Sommer , 2025\", \"Language-Team\": \"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"da\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRasmus Rosendahl-Kaa, 2024\\nMartin Bonde , 2025\\nFinn Sommer , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Finn Sommer , 2025\\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: da\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tilladt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fil konflikt\", \"{count} filer i konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fil konflikt i {dirname}\", \"{count} filer i konflikt i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{sekunder} sekunder tilbage\", \"{sekunder} sekunder tilbage\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tilbage\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"et par sekunder tilbage\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuller\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuller hele handlingen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuller uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opret ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimering af resterende tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Mislykkedes at samle stumperne sammen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunne ikke uploade filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavne må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldigt filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Sidste modifikationsdato ukendt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nyt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvisning af billede\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøb\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vælg alle felter\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Spring over\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Spring {count} fil over\", \"Spring {count} fil over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukendt størrelse\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload fra enhed\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload er blevet annulleret\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload er blevet sprunget over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload af \"{folder}\" er blevet sprunget over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload fremskridt\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer ønsker du at beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] } } } } }, { \"locale\": \"de\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (https://app.transifex.com/nextcloud/teams/64236/de/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndy Scherzinger , 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchtest du behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"de_DE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de_DE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de_DE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchten Sie behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"el\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Γιάννος, 2025\", \"Language-Team\": \"Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"el\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nEfstathios Iosifidis , 2025\\nΓιάννος, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Γιάννος, 2025\\nLanguage-Team: Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: el\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" είναι απαγορευμένο όνομα αρχείου ή φακέλου.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Το \"{segment}\" είναι απαγορευμένος τύπος αρχείου.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Το \"{segment}\" δεν επιτρέπεται μέσα στο όνομα ενός αρχείου ή φακέλου.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} αρχείο σε διένεξη\", \"{count} αρχεία σε διένεξη\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} αρχείο σε διένεξη στον φάκελο {dirname}\", \"{count} αρχεία σε διένεξη στον φάκελο {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Απομένει {seconds} δευτερόλεπτο\", \"Απομένουν {seconds} δευτερόλεπτα\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"απομένουν {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"απομένουν λίγα δευτερόλεπτα\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"συναρμολόγηση\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της λειτουργίας\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ακύρωση μεταφορτώσεων\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Δημιουργία νέου\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"εκτίμηση του χρόνου που απομένει\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Υπάρχουσα έκδοση\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Αποτυχία συναρμολόγησης των κομματιών\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Αποτυχία μεταφόρτωσης του αρχείου\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Τα ονόματα αρχείων δεν πρέπει να τελειώνουν με \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Αν επιλέξετε και τις δύο εκδόσεις, το εισερχόμενο αρχείο θα έχει έναν αριθμό προσαρτημένο στο όνομά του.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Μη έγκυρο όνομα αρχείου\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Νέο όνομα αρχείου\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"σε παύση\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Προεπισκόπηση εικόνας\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Μετονομασία\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλογή όλων των πλαισίων ελέγχου\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπαρχόντων αρχείων\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Παράλειψη\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Παράλειψη {count} αρχείου\", \"Παράλειψη {count} αρχείων\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παραλείψτε αυτό το αρχείο\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Άγνωστο μέγεθος\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Μεταφόρτωση\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Μεταφόρτωση αρχείων\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Μεταφόρτωση φακέλων\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Μεταφόρτωση από συσκευή\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Η μεταφόρτωση ακυρώθηκε\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Η μεταφόρτωση παραλείφθηκε\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Η μεταφόρτωση του \"{folder}\" παραλείφθηκε'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Πρόοδος μεταφόρτωσης\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, όλα τα αρχεία σε διένεξη μέσα σε αυτόν θα αντικατασταθούν.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, το περιεχόμενό του γράφεται στον υπάρχοντα φάκελο και εκτελείται αναδρομική επίλυση διενέξεων.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Μπορείτε είτε να μετονομάσετε το αρχείο, να παραλείψετε αυτό το αρχείο ή να ακυρώσετε όλη τη λειτουργία.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση κάθε αρχείου για να συνεχίσετε.\"] } } } } }, { \"locale\": \"en_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andi Chandler , 2025\", \"Language-Team\": \"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"en_GB\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndi Chandler , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Andi Chandler , 2025\\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: en_GB\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is a forbidden file or folder name.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is a forbidden file type.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is not allowed inside a file or folder name.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} files conflict\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} file conflicts in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconds left\", \"{seconds} seconds left\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} left\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"a few seconds left\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assembling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Create new\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimating time left\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Failed to assemble the chunks together\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Failed to upload the file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filenames must not end with \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Invalid filename\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"New filename\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"paused\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Preview image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rename\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Skip\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip {count} file\", \"Skip {count} files\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unknown size\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload files\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload folders\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload from device\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload has been cancelled\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload has been skipped\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload of \"{folder}\" has been skipped'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload progress\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"You can either rename the file, skip this file or cancel the whole operation.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] } } } } }, { \"locale\": \"eo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Julio C. Ortega, 2025\", \"Language-Team\": \"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFranciscoFJ , 2024\\nJulio C. Ortega, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Julio C. Ortega, 2025\\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" es un nombre de archivo o carpeta no permitido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" es un tipo de archivo no permitido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no está permitido dentro del nombre de un archivo o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"queda {seconds} segundo\", \"quedan {seconds} segundos\", \"quedan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Fallo al ensamblar todas las partes juntas\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fallo al cargar el archivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Los nombres de archivo no deben terminar en \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuevo nombre de archivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Cargar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"La carga fue omitida\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['La carga de \"{folder}\" ha sido omitida'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Puede o bien, renombrar el archivo, omitirlo, o, cancelar toda la operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_419\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ALEJANDRO CASTRO, 2022\", \"Language-Team\": \"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_419\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nALEJANDRO CASTRO, 2022\\n\" }, \"msgstr\": [\"Last-Translator: ALEJANDRO CASTRO, 2022\\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_419\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"agregar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] } } } } }, { \"locale\": \"es_AR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Matías Campo Hoet , 2024\", \"Language-Team\": \"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_AR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMatías Campo Hoet , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Matías Campo Hoet , 2024\\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_AR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa de imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Cargar archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Cargar carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Cargar desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Carga cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la carga\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_CL\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CL\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CL\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_DO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_DO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_DO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_EC\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_EC\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_EC\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_GT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_GT\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_GT\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_HN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_HN\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_HN\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_MX\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jehu Marcos Herrera Puentes, 2024\", \"Language-Team\": \"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_MX\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJehu Marcos Herrera Puentes, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Jehu Marcos Herrera Puentes, 2024\\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_MX\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿Cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} archivos en conflicto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} archivo en conflicto en {dirname}\", \"{count} archivos en conflicto en {dirname}\", \"{count} archivo en conflicto en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Cuáles archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_NI\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_NI\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_NI\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PA\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PA\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PA\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PE\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PE\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_SV\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_SV\", \"Plural-Forms\": \"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_SV\\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_UY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_UY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_UY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"et_EE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Priit Jõerüüt , 2025\", \"Language-Team\": \"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"et_EE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPriit Jõerüüt , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Priit Jõerüüt , 2025\\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: et_EE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ on keelatud faili- või kausta nimi.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ on keelatud failitüüp.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ pole faili- või kausta nimes lubatud.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fail on vastuolus\", \"{count} faili on vastuolus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail on vastuolus „{dirname}“ kaustas\", \"{count} faili on vastuolus „{dirname}“ kaustas\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"jäänud {seconds} sekund\", \"jäänud {seconds} sekundit\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"aega jäänud {time} \"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"jäänud mõni sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"koostamisel\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Katkesta üleslaadimine\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Loo uus\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hinnanguline järelejäänud aeg\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Tükkide koostamine üheks tervikuks ei õnnestunud\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Faili üleslaadimine ei õnnestunud\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Failinime lõpus ei tohi olla „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui sa valid mõlemad versioonid, lisatakse kopeeritud faili nimele number.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Vigane failinimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uus failinimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausil\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vaata pildi eelvaadet\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Muuda nime\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Jäta vahele\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Jäta vahele {count} fail\", \"Jäta vahele {count} faili\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta vahele see fail\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tundmatu suurus\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Laadi üles\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Laadi failid üles\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Laadi kaustad üles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Laadi üles seadmest\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Üleslaadimine on katkestatud\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Üleslaadimine on vahele jäetud\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}“ kausta üleslaadimine on vahele jäetud\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Üleslaadimise edenemine\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis seal asuvad vastuoluliste nimedega failid kirjutatakse samuti üle.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja käivitatakse rekursiivne vastuolude haldus.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Milliseid faile soovid säilitada?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sa võid kas faili nime muuta, ta vahele jätta või kogu tegevuse katkestada.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamiseks pead valima vähemalt ühe versiooni igast failist.\"] } } } } }, { \"locale\": \"eu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Unai Tolosa Pontesta , 2022\", \"Language-Team\": \"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eu\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nUnai Tolosa Pontesta , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Unai Tolosa Pontesta , 2022\\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eu\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo geratzen dira\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} geratzen da\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"segundo batzuk geratzen dira\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Gehitu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ezeztatu igoerak\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"kalkulatutako geratzen den denbora\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"geldituta\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Igo fitxategiak\"] } } } } }, { \"locale\": \"fa\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Alireza Rashidi, 2025\", \"Language-Team\": \"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fa\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nreza reza , 2024\\nAlireza Rashidi, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Alireza Rashidi, 2025\\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fa\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"{segment} یک نام فایل یا پوشه ممنوعه است.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"{segment} یک نوع فایل ممنوعه است.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"{segment} داخل نام فایل یا پوشه مجاز نیست.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} تداخل فایل\", \"{count} تداخل فایل‌ها\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} پرونده با {dirname} ناسازگاری داشت\", \"{count} پرونده با {dirname} ناسازگاری داشت\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} ثانیه مانده\", \"{seconds} ثانیه مانده\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} باقی مانده\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"چند ثانیه مانده\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"سرهم کردن\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"رد کردن\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"رد کردن کل عملیات\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"رد کردن بارگذاری\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ادامه\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ساخت جدید\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تخمین زمان باقی مانده\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"نگارش موجود\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"نتوانست تکه‌های را به سرهم کند\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"نتوانست پرونده را بارگذاری کند\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"نام پرونده نباید با {segment} پایان یابد.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"اگر هر دو نسخه را انتخاب کنید، یک عدد به نام پرونده ورودی اضافه خواهد شد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"نام پرونده نامعتبر\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"آخرین تاریخ تغییر نامشخص\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"نام فایل جدید\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخه جدید\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مکث کردن\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"پیش نمایش تصویر\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغییر نام\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"انتخاب همه چک‌باکس‌ها\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"انتخاب همه فایل‌های موجود\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"انتخاب همه فایل‌های جدید\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"رد شدن\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"رد شدن از \", \"رد شدن از {count} فایل\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"اندازه نامشخص\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"بارگذاری\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"بارگذاری پرونده‌ها\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"بارگذاری پوشه‌ها\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"بارگذاری از دستگاه\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"بارگذاری رد شده است\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"بارگذاری نادیده گرفته شده است\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"بارگذاری {folder} نادیده گرفته شده است\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"روند بارگذاری\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"هنگامی که یک پوشه ورودی انتخاب می‌شود، هر فایل متناقضی در آن نیز بازنویسی می‌شود.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"هنگامی که یک پوشه دریافتی انتخاب می شود ، محتوا در پوشه موجود نوشته می شود و حل ناسازگاری بازگشتی انجام می شود.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"کدام پرونده‌ها را می‌خواهید نگه دارید؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"می‌توانید نام پرونده را تغییر دهید، از این پرونده رد شوید یا کل عملیات را رد کنید.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"برای ادامه باید دست‌کم یک نگارش از هر پرونده را انتخاب کنید.\"] } } } } }, { \"locale\": \"fi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jiri Grönroos , 2025\", \"Language-Team\": \"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fi_FI\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nthingumy, 2024\\nteemue, 2024\\nJiri Grönroos , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Jiri Grönroos , 2025\\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fi_FI\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" on kielletty tiedoston tai hakemiston nimi.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" on kielletty tiedostotyyppi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ei ole sallittu tiedoston tai hakemiston nimessä.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tiedoston ristiriita\", \"{count} tiedoston ristiriita\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tiedoston ristiriita kansiossa {dirname}\", \"{count} tiedoston ristiriita kansiossa {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunti jäljellä\", \"{seconds} sekuntia jäljellä\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} jäljellä\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"muutama sekunti jäljellä\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"kootaan\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Peruuta koko toimenpide\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Peruuta lähetykset\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jatka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Luo uusi\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"arvioidaan jäljellä olevaa aikaa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemassa oleva versio\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Palojen kokoaminen yhteen epäonnistui\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tiedoston lähetys epäonnistui\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tiedoston nimi ei saa päättyä \"{segment}\"'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Kielletty/väärä tiedoston nimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimeisin muokkauspäivä on tuntematon\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uusi tiedostonimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uusi versio\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"keskeytetty\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Esikatsele kuva\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Nimeä uudelleen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Valitse kaikki valintaruudut\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Valitse kaikki olemassa olevat tiedostot\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Valitse kaikki uudet tiedostot\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ohita\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ohita tämä tiedosto\", \"Ohita {count} tiedostoa\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tuntematon koko\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Lähetä\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lähetä tiedostoja\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Lähetä kansioita\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Lähetä laitteelta\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Lähetys on peruttu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Lähetys on ohitettu\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Hakemiston \"{folder}\" lähetys on ohitettu'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Lähetyksen edistyminen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mitkä tiedostot haluat säilyttää?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi.\"] } } } } }, { \"locale\": \"fo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"fr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Caro Leviia, 2025\", \"Language-Team\": \"French (https://app.transifex.com/nextcloud/teams/64236/fr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fr\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nBenoit Pruneau, 2024\\nJEEEEEEEEEEEEEEEEEEEEEED, 2024\\nJérôme HERBINET, 2024\\nacazenave, 2024\\nLisa Cintosh, 2025\\nLdm Public , 2025\\nCaro Leviia, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Caro Leviia, 2025\\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fr\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" est un nom de fichier ou de dossier interdit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" est un type de fichier interdit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fichier en conflit\", \"{count} fichiers en conflit\", \"{count} fichiers en conflit\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fichier en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde restante\", \"{seconds} secondes restantes\", \"{seconds} secondes restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restant\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quelques secondes restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblage\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuler toute l'opération\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuler les téléversements\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Créer un nouveau\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimation du temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Version existante\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Échec de l'assemblage des morceaux\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Échec de téléversement du fichier\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Les noms des fichiers ne doivent pas terminer par \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous sélectionnez les deux versions, un numéro sera ajouté au nom du fichier entrant.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fichier invalide\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de la dernière modification inconnue\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nouveau nom de fichier\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pause\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Aperçu de l'image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renommer\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorer\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} fichier ignoré\", \"{count} fichiers ignorés\", \"{count} fichiers ignorés\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Taille inconnue\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Téléverser\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Téléverser des fichiers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Téléverser des dossiers\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Téléverser depuis l'appareil\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Le téléversement a été annulé\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Le téléversement a été ignoré\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Le téléversement de \"{folder}\" a été ignoré'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progression du téléversement\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Vous pouvez soit renommer le fichier, soit ignorer le fichier, soit annuler toute l'opération.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Vous devez sélectionner au moins une version de chaque fichier pour continuer.\"] } } } } }, { \"locale\": \"ga\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Aindriú Mac Giolla Eoin, 2025\", \"Language-Team\": \"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ga\", \"Plural-Forms\": \"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nAindriú Mac Giolla Eoin, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Aindriú Mac Giolla Eoin, 2025\\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ga\\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Is ainm toirmiscthe comhaid nó fillteáin é \"{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Is cineál comhaid toirmiscthe é \"{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`Ní cheadaítear \"{segment}\" taobh istigh d'ainm comhaid nó fillteáin.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} coimhlint comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} coimhlint comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} fágtha\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"cúpla soicind fágtha\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ag cur le chéile\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht iomlán\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cealaigh uaslódálacha\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Leanúint ar aghaidh\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Cruthaigh nua\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ag déanamh meastachán ar an am atá fágtha\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan láithreach \"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Theip ar na smután a chur le chéile le chéile\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Theip ar uaslódáil an chomhaid\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Níor cheart go gcríochnaíonn comhaid chomhad le \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ainm comhaid neamhbhailí\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta modhnaithe is déanaí anaithnid\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ainm comhaid nua\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"sos\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Íomhá réamhamharc\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Athainmnigh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh gach ticbhosca\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh gach comhad atá ann cheana féin\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Scipeáil\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Léim an comhad {count}\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Seachain an comhad seo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Méid anaithnid\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uaslódáil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Uaslódáil comhaid\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Uaslódáil fillteáin\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Íosluchtaigh ó ghléas\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Cuireadh an t-uaslódáil ar ceal\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Léiríodh an uaslódáil\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Léiríodh an uaslódáil \"{folder}\".'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uaslódáil dul chun cinn\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh.\"] } } } } }, { \"locale\": \"gd\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gd\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gd\\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"gl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Miguel Anxo Bouzada , 2025\", \"Language-Team\": \"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMiguel Anxo Bouzada , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Miguel Anxo Bouzada , 2025\\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» é un nome vedado para un ficheiro ou cartafol.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» é un tipo de ficheiro vedado.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflito de ficheiros\", \"{count} conflitos de ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiros en {dirname}\", \"{count} conflitos de ficheiros en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"falta {seconds} segundo\", \"faltan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"falta {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltan uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancela toda a operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envíos\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear un novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calculando canto tempo falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Produciuse un fallo ao ensamblar os anacos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Produciuse un fallo ao enviar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Os nomes de ficheiros non deben rematar con «{segment}».\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"O nome de ficheiro non é válido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nova\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"detido\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa da imaxe\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar todas as caixas de selección\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} ficheiro\", \"Omitir {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño descoñecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar cartafoles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Enviar dende o dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O envío foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O envío foi omitido\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"O envío de «{folder}» foi omitido\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso do envío\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar polo menos unha versión de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"he\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"he\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: he\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hi_IN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hi_IN\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hi_IN\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hr\", \"Plural-Forms\": \"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hr\\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hsb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hsb\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hsb\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gyuris Gellért , 2024\", \"Language-Team\": \"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hu_HU\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGyuris Gellért , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gyuris Gellért , 2024\\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hu_HU\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Tiltott fájl- vagy mappanév: „{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Tiltott fájltípus: „{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Nem megengedett egy fájl- vagy mappanévben: „{segment}\".'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fájlt érintő konfliktus\", \"{count} fájlt érintő konfliktus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fájlt érintő konfliktus a mappában: {dirname}\", \"{count}fájlt érintő konfliktus a mappában: {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{} másodperc van hátra\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} van hátra\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"pár másodperc van hátra\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Teljes művelet megszakítása\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Feltöltések megszakítása\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tovább\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Új létrehozása\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hátralévő idő becslése\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Jelenlegi változat\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Fájlnevek nem végződhetnek erre: „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Érvénytelen fájlnév\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Utolsó módosítás dátuma ismeretlen\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Új fájlnév\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"szüneteltetve\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Kép előnézete\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Átnevezés\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Minden jelölőnégyzet kijelölése\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Minden jelenlegi fájl kijelölése\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Minden új fájl kijelölése\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Kihagyás\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ezen fájl kihagyása\", \"{count}fájl kihagyása\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ismeretlen méret\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Feltöltés\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fájlok feltöltése\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappák feltöltése\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Feltöltés eszközről\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Feltöltés meg lett szakítva\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Feltöltés át lett ugorva\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}” feltöltése át lett ugorva\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Feltöltési folyamat\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat kívánja megtartani?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz minden fájlból legalább egy verziót ki kell választani.\"] } } } } }, { \"locale\": \"hy\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hy\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hy\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ia\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ia\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ia\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"id\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Linerly , 2023\", \"Language-Team\": \"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"id\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ , 2023\\nEmpty Slot Filler, 2023\\nLinerly , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Linerly , 2023\\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: id\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} berkas berkonflik\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} berkas berkonflik dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} detik tersisa\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tersisa\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"tinggal sebentar lagi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Batalkan unggahan\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"memperkirakan waktu yang tersisa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal perubahan terakhir tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"dijeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Gambar pratinjau\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua berkas yang ada\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua berkas baru\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Lewati {count} berkas\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukuran tidak diketahui\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Unggahan dibatalkan\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Unggah berkas\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Berkas mana yang Anda ingin tetap simpan?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan.\"] } } } } }, { \"locale\": \"ig\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ig\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ig\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"is\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Sveinn í Felli , 2025\", \"Language-Team\": \"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"is\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nSveinn í Felli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Sveinn í Felli , 2025\\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: is\\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er bannað sem heiti á skrá eða möppu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er bönnuð skráartegund.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ekki leyfilegt innan í heiti á skrá eða möppu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} árekstur skráa\", \"{count} árekstrar skráa\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} árekstur skráa í {dirname}\", \"{count} árekstrar skráa í {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekúnda eftir\", \"{seconds} sekúndur eftir\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} eftir\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"nokkrar sekúndur eftir\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"set saman\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Hætta við\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Hætta við alla aðgerðina\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hætta við innsendingar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Halda áfram\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Búa til nýtt\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"áætla tíma sem eftir er\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Fyrirliggjandi útgáfa\"] }, \"Failed assembling the chunks together\": { \"msgid\": \"Failed assembling the chunks together\", \"msgstr\": [\"Mistókst að setja saman bútana\"] }, \"Failed uploading the file\": { \"msgid\": \"Failed uploading the file\", \"msgstr\": [\"Mistókst að senda inn skrána\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Skráaheiti mega ekki enda á \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti innkomandi skrárinnar.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ógilt skráarheiti\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Síðasta breytingadagsetning er óþekkt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nýtt skráarheiti\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ný útgáfa\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"í bið\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forskoðun myndar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Endurnefna\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velja gátreiti\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velja allar fyrirliggjandi skrár\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velja allar nýjar skrár\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Sleppa\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sleppa þessari skrá\", \"Sleppa {count} skrám\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Óþekkt stærð\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Senda inn\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Senda inn skrár\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Senda inn möppur\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Senda inn frá tæki\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Hætt hefur verið við innsendingu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Innsendingu hefur verið sleppt\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Innsendingu á \"{folder}\" hefur verið sleppt'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Framvinda innsendingar\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður einnig skrifað yfir allar skrár í henni sem valda árekstrum.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður efnið skrifað inn í fyrirliggjandi möppu og farið í að leysa úr árekstrum.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvaða skrám vilt þú vilt halda eftir?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Þú getur annaðhvort endurnefnt skrána, sleppt þessari skrá eða hætt við alla þessa aðgerð.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram.\"] } } } } }, { \"locale\": \"it\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roberto Resoli, 2025\", \"Language-Team\": \"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"it\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFrancesco Sercia, 2024\\nalbanobattistella , 2024\\nLorenzo Taiocchi, 2025\\nesseti kappa, 2025\\nRoberto Resoli, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Roberto Resoli, 2025\\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: it\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" è un nome di file o cartella proibito.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"è un tipo di file proibito.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" non è consentito all'interno di un nome di file o cartella.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file in conflitto\", \"{count} file in conflitto\", \"{count} file in conflitto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondo rimanente \", \"{seconds} secondi rimanenti \", \"{seconds} secondi rimanenti \"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} rimanente\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alcuni secondi rimanenti\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblaggio\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annulla i caricamenti\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nuovo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calcolo il tempo rimanente\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Impossibile unire i pezzi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Impossibile caricare il file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['I nomi dei file non devono terminare con \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero \"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome file non valido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ultima modifica sconosciuta\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuovo nome file\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Anteprima immagine\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rinomina\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Salta\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sata {count} file\", \"Salta {count} file\", \"Salta {count} file\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Dimensione sconosciuta\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Caricamento\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Carica i file\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carica cartelle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carica dal dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Caricamento annullato\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Il caricamento è stato saltato\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Il caricamento di \"{folder}\" è stato saltato'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso del caricamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi mantenere?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"È possibile rinominare il file, ignorarlo o annullare l'intera operazione.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Devi selezionare almeno una versione di ogni file per continuare\"] } } } } }, { \"locale\": \"ja\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"kojima.imamura, 2025\", \"Language-Team\": \"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ja_JP\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nTakafumi AKAMATSU, 2024\\ndevi, 2024\\n貴宝, 2025\\nkshimohata, 2025\\nkojima.imamura, 2025\\n\" }, \"msgstr\": [\"Last-Translator: kojima.imamura, 2025\\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ja_JP\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" は禁止されているファイルまたはフォルダ名です。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" は禁止されているファイルタイプです。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ファイルまたはフォルダ名に \"{segment}\" を含めることはできません。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ファイル数の競合\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} で {count} 個のファイルが競合しています\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"残り{seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"残り {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"残り数秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"処理中\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセルする\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"アップロードをキャンセル\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"続ける\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新規作成\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"概算残り時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既存バージョン\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"チャンクの組み立てに失敗しました\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ファイルのアップロードに失敗しました\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ファイル名の末尾に \"{segment}\" を付けることはできません。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無効なファイル名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新しいファイル名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新しいバージョン\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"一時停止中\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"プレビュー画像\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"名前を変更\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべて選択\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"すべての既存ファイルを選択\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"スキップ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} 個のファイルをスキップする\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップする\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"サイズ不明\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"アップロード\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ファイルをアップロード\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"フォルダのアップロード\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"デバイスからのアップロード\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"アップロードはキャンセルされました\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"アップロードがスキップされました\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" のアップロードがスキップされました'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"アップロード進行状況\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを保持しますか?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。\"] } } } } }, { \"locale\": \"ka\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ka_GE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka_GE\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka_GE\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kab\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ZiriSut, 2023\", \"Language-Team\": \"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kab\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nZiriSut, 2023\\n\" }, \"msgstr\": [\"Last-Translator: ZiriSut, 2023\\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kab\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} tesdatin i d-yeqqimen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} i d-yeqqimen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"qqiment-d kra n tesdatin kan\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Rnu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Sefsex asali\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"asizel n wakud i d-yeqqimen\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"yeḥbes\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Sali-d ifuyla\"] } } } } }, { \"locale\": \"kk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kk\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kk\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"km\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"km\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: km\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kn\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kn\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ko\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"보헤민, 2025\", \"Language-Team\": \"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ko\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nshin2012 , 2025\\n이상오, 2025\\n보헤민, 2025\\n\" }, \"msgstr\": [\"Last-Translator: 보헤민, 2025\\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ko\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 및 폴더 이름입니다.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 형식입니다.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['파일이나 폴더 이름에 \"{segment}\"을(를) 사용할 수 없습니다.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}개의 파일이 충돌함\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 {count}개의 파일이 충돌함\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} 초 남음\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} 남음\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"곧 완료\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"취합 중\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업을 취소\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"업로드 취소\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"확인\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"새로 만들기\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"남은 시간 계산\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"현재 버전\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"조각을 취합하는 데 실패\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"파일을 업로드하는 데 실패\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['파일 이름은 \"{segment}\"(으)로 끝나야 합니다.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"잘못된 파일 이름\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"새 파일 이름\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"새 버전\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"일시정지됨\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"미리보기 이미지\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"이름 바꾸기\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일을 모두 선택\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"새로운 파일을 모두 선택\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"건너뛰기\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count}개 파일 건너뛰기\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뛰기\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"크기를 알 수 없음\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"업로드\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"파일 업로드\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"폴더 업로드\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"장치에서 업로드\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"업로드가 취소되었습니다.\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"업로드를 건너뛰었습니다.\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 업로드를 건너뛰었습니다.'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"업로드 진행도\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더가 선택되면, 그 안의 콘텐츠가 기존 폴더에 기록되고 재귀적 충돌 해결이 수행됩니다.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보존하시겠습니까?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"파일 이름을 바꾸거나, 이 파일을 건너뛰거나 모든 작업을 취소할 수 있습니다.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] } } } } }, { \"locale\": \"la\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"la\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: la\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lb\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lb\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"bone NI, 2025\", \"Language-Team\": \"Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lo\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nbone NI, 2025\\n\" }, \"msgstr\": [\"Last-Translator: bone NI, 2025\\nLanguage-Team: Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lo\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ແມ່ນປະເພດໄຟລ໌ທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{segment}\" ຢູ່​ໃນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີ.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ ໃນ {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"ເຫຼືອເວລາ {seconds} ວິນາທີ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"ເຫຼືອເວລາ {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ເຫຼືອເວລາອີກບໍ່ດົນ\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ກຳລັງຮວບຮວມ\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ຍົກເລີກການອັບໂຫຼດ\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ສ້າງໃໝ່\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ກຳລັງຄາດຄະເນເວລາທີ່ເຫຼືອ\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"ສະບັບທີ່ມີຢູ່ແລ້ວ\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"ການຮວບຮວມສ່ວນຕ່າງໆເຂົ້າກັນບໍ່ສຳເລັດ\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌ບໍ່ສຳເລັດ\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ຊື່ໄຟລ໌ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງສະບັບ, ໄຟລ໌ທີ່ເຂົ້າມາໃໝ່ຈະຖືກເພີ່ມຕົວເລກໃສ່ທ້າຍຊື່.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ບໍ່ຖືກຕ້ອງ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຊາບວັນທີແກ້ໄຂຫຼ້າສຸດ\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ໃໝ່\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"ສະບັບໃໝ່\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"ຢຸດຊົ່ວຄາວ\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"ເບິ່ງຕົວຢ່າງຮູບ\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"ປ່ຽນຊື່\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກທຸກຊ່ອງໝາຍຕິກ\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ແລ້ວທັງໝົດ\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"ຂ້າມ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"ຂ້າມ {count} ໄຟລ໌\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"ບໍ່ຊາບຂະໜາດ\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"ອັບໂຫຼດ\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"ອັບໂຫຼດໂຟລເດີ\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"ອັບໂຫຼດຈາກອຸປະກອນ\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຍົກເລີກແລ້ວ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຂ້າມໄປແລ້ວ\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['ການອັບໂຫຼດ \"{folder}\" ໄດ້ຖືກຂ້າມໄປແລ້ວ'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"ຄວາມຄືບໜ້າການອັບໂຫຼດ\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ໄຟລ໌ໃດໆທີ່ຊ້ຳກັນຢູ່ພາຍໃນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟລເດີທີ່ມີຢູ່ແລ້ວ ແລະ ຈະມີການແກ້ໄຂໄຟລ໌ທີ່ຊ້ຳກັນແບບຕໍ່ເນື່ອງໃນໂຟລເດີຍ່ອຍ.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ທ່ານສາມາດປ່ຽນຊື່ໄຟລ໌, ຂ້າມໄຟລ໌ນີ້ ຫຼື ຍົກເລີກການດຳເນີນການທັງໝົດ.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງສະບັບຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] } } } } }, { \"locale\": \"lt_LT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lt_LT\", \"Plural-Forms\": \"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lt_LT\\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Edgars Andersons, 2025\", \"Language-Team\": \"Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lv\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPapuass , 2024\\nArmīns Jeltajevs , 2024\\nEdgars Andersons, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Edgars Andersons, 2025\\nLanguage-Team: Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lv\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes vai mapes nosaukums.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes veids.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ir nav ļauts datnes vai mapes nosaukumā.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} nesaderīgu datņu\", \"{count} nesaderīga datne\", \"{count} nesaderīgas datnes\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} nesaderīgu datņu {dirname}\", \"{count} nesaderīga datne {dirname}\", \"{count} nesaderīgas datnes {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Atlikušas {seconds} sekundes\", \"Atlikusi {seconds} sekunde\", \"Atlikušas {seconds} sekundes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"atlicis {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"atlikušas dažas sekundes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sakopo\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Atcelt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Atcelt visu darbību\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Atcelt augšupielādes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Turpināt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Izveidot jaunu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"paredzamais atlikušais laiks\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Esošā versija\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Neizdevās apvienot gabalus\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Neizdevās augšupielādēt datni\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Datnes nosaukumi nedrīkst beigties ar \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ja atlasa abas versijas, ienākošās datnes nosaukumam tiks pievienots skaitlis.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nederīgs datnes nosaukums\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Pēdējais izmainīšanas datums nav zināms\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Jauns datnes nosaukums\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Jauna versija\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"apturēta\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Priekšskatīt attēlu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Pārdēvēt\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Atlasīt visas izvēles rūtiņas\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Atlasīt visas esošās datnes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Atlasīt visas jaunās datnes\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Izlaist\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Izlaist {count} datņu\", \"Izlaist {count} datni\", \"Izlaist {count} datnes\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Izlaist šo datni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nezināms izmērs\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Augšupielādēt\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Augšupielādēt datnes\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Augšupielādēt mapes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Augšupielādēt no ierīces\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Augšupielāde tika atcelta\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Augšupielāde tika izlaista\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" augšupielāde tika izlaista'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Augšupielādes virzība\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, tiks pārrakstītas arī jebkuras tajā esošās nesaderīgās datnes.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, saturs tiks rakstīts esošajā mapē, un tiks veikta rekursīva nesaderību novēršana.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Kuras datnes paturēt?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datni var vai nu pārdēvēt, vai izlaist vai atcelt visu darbību.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ir nepieciešams atlasīt vismaz vienu katras datnes versiju, lai turpinātu.\"] } } } } }, { \"locale\": \"mk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Сашко Тодоров , 2025\", \"Language-Team\": \"Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mk\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nСашко Тодоров , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Сашко Тодоров , 2025\\nLanguage-Team: Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mk\\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" е забрането име на датотека или име на папка.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" е забранет вид на датотека.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" не е дозволено во името датотека или папка.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфликт со датотека\", \"{count} конфликти со датотеки\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфликт со датотека во {dirname}\", \"{count} конфликти на датотеки во {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"уште {seconds} секунда\", \"уште {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"преостанува {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"уште неколку секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"склопување\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Откажи ја целата операција\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Прекини прикачување\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај нова\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"приближно преостанато време\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постоечка верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Неуспешно составување на парчињата заедно\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Неуспешно прикачување на датотека\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Имињата на датотеките не смеат да завршуваат со \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги изберете двете верзии, на новата датотека ќе ѝ биде додаден број на името.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Невалидно име на датотека\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Непознат датумот на последната измена\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име на датотека\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Преглед на слика\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Преименувај\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Означи ги сите полиња\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Избери ги сите постоечки датотеки\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Избери ги сите нови датотеки\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескокни\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескокни {count} датотека\", \"Прескокни {count} датотеки\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната големина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Прикачи\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Прикачување датотеки\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Прикачи папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Прикачи од уред\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Прикачувањето е откажано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Прикачувањето е прескокнато\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Прикачувањето на \"{folder}\" е прескокнато'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогрес на прикачување\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, сите конфликтни датотеки во неа исто така ќе бидат пребришани.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, содржината се запишува во постоечката папка и се извршува рекурзивно решавање на конфликтот.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакате да ги зачвате?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете да ја преименувате датотеката, да ја прескокнете датотека или да ја откажете целата операција.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да изберете барем една верзија од секоја датотека за да продолжите.\"] } } } } }, { \"locale\": \"mn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"BATKHUYAG Ganbold, 2023\", \"Language-Team\": \"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mn\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nBATKHUYAG Ganbold, 2023\\n\" }, \"msgstr\": [\"Last-Translator: BATKHUYAG Ganbold, 2023\\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mn\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунд үлдсэн\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} үлдсэн\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"хэдхэн секунд үлдсэн\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Нэмэх\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Илгээлтийг цуцлах\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Үлдсэн хугацааг тооцоолж байна\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"түр зогсоосон\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Файл илгээх\"] } } } } }, { \"locale\": \"mr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mr\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mr\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ms_MY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DT Navy, 2024\", \"Language-Team\": \"Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ms_MY\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nDT Navy, 2024\\n\" }, \"msgstr\": [\"Last-Translator: DT Navy, 2024\\nLanguage-Team: Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ms_MY\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" adalah fail dan nama folder yang dilarang'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" adalah jenis fail yang dilarang'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" adalah tidak dibenarkan dalam nama fail atau folder'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} files bertindih\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail bertindih dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saat tinggal\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tinggal\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"beberapa saat lagi\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"batal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batal keseluruhan operasi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"batal muat naik\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"teruskan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Buat baharu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"jangkaan masa tinggal\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"versi sedia ada\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nama fail tidak boleh berakhir dengan \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika dua versi dipilih, fail yang masuk akan ditambah bilangan pada namanya.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nama fail tidak sah\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tarikh terakhir diubah suai tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nama fail baharu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baharu\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Jeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pratonton gambar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Menamakan semula\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak pilihan\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua fail yang wujud\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"pilih semua fail baharu\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Langkau\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Langkau fail {count}\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Saiz tidak diketahui\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Muat naik\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Muat naik fail\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Muat naik folder\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Muat naik dari peranti\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Muat naik telah dibatalkan\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Muat naik telah dilangkau\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Muat naik \"{folder}\" telah dilangkau'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Kemajuan muat naik\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Apabila folder masuk dipilih, sebarang fail bertindih akan ditulis semula\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Apabila folder masuk dipilih, kandungan ditulis ke dalam folder sedia ada dan penyelesaian konflik rekursif dilakukan.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Fail yang mana ingin disimpan?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"And boleh menamakan semula fail, langkau fail tersebut atau membatalkan keseluruhan operasi\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih sekurangnya satu versi setiap fail untuk teruskan\"] } } } } }, { \"locale\": \"my\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"my\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: my\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roger Knutsen, 2024\", \"Language-Team\": \"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nb_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRoger Knutsen, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roger Knutsen, 2024\\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nb_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tillatt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder igjen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} igjen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"noen få sekunder igjen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hele operasjonen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt opplastninger\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsett\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opprett ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Estimerer tid igjen\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Gjeldende versjon\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavn må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldig filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Siste gang redigert ukjent\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny versjon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvis bilde\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøp\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velg alle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hopp over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Hopp over {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukjent størrelse\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Last opp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Last opp mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Last opp fra enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Opplastingen er kansellert\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Opplastingen er hoppet over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Opplasting av \"{folder}\" er hoppet over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fremdrift, opplasting\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du må velge minst en versjon av hver fil for å fortsette.\"] } } } } }, { \"locale\": \"ne\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ne\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ne\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Stephan Paternotte , 2025\", \"Language-Team\": \"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJoris deLeeuw, 2025\\nStephan Paternotte , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Stephan Paternotte , 2025\\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is een verboden bestands- of mapnaam.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is een verboden bestandstype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is niet toegestaan in een bestand of mapnaam.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} bestandsconflict\", \"{count} bestanden conflicteren\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} bestandsconflict in {dirname}\", \"{count} bestandenconflicten in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde resterend\", \"{seconds} seconden resterend\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} resterend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Nog een paar seconden over\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samenstellen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"De hele bewerking annuleren\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Uploaden annuleren\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Nieuw aanmaken\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"resterende tijd schatten\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Kon de stukken niet samenvoegen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Het uploaden van het bestand is mislukt\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Bestandsnamen mogen niet eindigen met \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als je beide versies selecteert, krijgt het binnenkomende bestand een nummer toegevoegd aan de naam.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ongeldige bestandsnaam\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatst gewijzigde datum onbekend\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nieuwe bestandsnaam\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"gepauzeerd\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Voorbeeldweergave\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Hernoemen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle opties selecteren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle bestanden selecteren\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle nieuwe bestanden selecteren\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Overslaan\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} bestand overslaan\", \"{count} bestanden overslaan\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Dit bestand overslaan\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Onbekende grootte\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uploaden\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload bestanden\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappen uploaden\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Uploaden vanaf apparaat\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload is geanulleerd\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload is overgeslagen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload van \"{folder}\" is overgeslagen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uploadvoortgang\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, worden alle conflicterende bestanden daarin ook overschreven.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, wordt de inhoud in de bestaande map geschreven en wordt er een recursieve conflictoplossing uitgevoerd.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wil je behouden?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Je kunt het bestand ofwel hernoemen, dit bestand overslaan of de hele bewerking annuleren.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Je moet minstens één versie van elk bestand selecteren om door te gaan.\"] } } } } }, { \"locale\": \"nn_NO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nn_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nn_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"oc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"oc\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: oc\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Valdnet, 2025\", \"Language-Team\": \"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pl\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPiotr Strebski , 2024\\nValdnet, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Valdnet, 2025\\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pl\\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" to zabroniona nazwa pliku lub katalogu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" jest zabronionym typem pliku.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Znak \"{segment}\" nie jest dozwolony w nazwie pliku lub katalogu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"konflikt 1 pliku\", \"{count} konfliktów plików\", \"{count} konfliktów plików\", \"{count} konfliktów plików\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} konfliktowy plik w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Pozostało {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Pozostało {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Pozostało kilka sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anuluj wysyłanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Utwórz nowe\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Szacowanie pozostałego czasu\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nazwy plików nie mogą kończyć się na \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nieprawidłowa nazwa pliku\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nieznana data ostatniej modyfikacji\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nowa nazwa pliku\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Wstrzymane\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Podgląd obrazu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Zmiana nazwy\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pomiń\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pomiń 1 plik\", \"Pomiń {count} plików\", \"Pomiń {count} plików\", \"Pomiń {count} plików\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nieznany rozmiar\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Wyślij\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Wyślij pliki\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Wyślij katalogi\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Wyślij z urządzenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Wysyłanie zostało anulowane\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Wysyłanie zostało pominięte\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Wysyłanie \"{folder}\" zostało pominięte'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postęp wysyłania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego zawartość jest zapisywana w istniejącym katalogu i przeprowadzane jest rekursywne rozwiązywanie konfliktów.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] } } } } }, { \"locale\": \"ps\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ps\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ps\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pt_BR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"F Bausch, 2025\", \"Language-Team\": \"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_BR\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nLeonardo Colman Lopes , 2024\\nRodrigo Sottomaior Macedo , 2024\\nF Bausch, 2025\\n\" }, \"msgstr\": [\"Last-Translator: F Bausch, 2025\\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_BR\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de arquivo proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido dentro de um nome de arquivo ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} arquivos em conflito\", \"{count} arquivos em conflito\", \"{count} arquivos em conflito\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo restante\", \"{seconds} segundos restantes\", \"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alguns segundos restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao montar os pedaços juntos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao fazer o upload do arquivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes dos arquivos não devem terminar com \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de arquivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de arquivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de seleção\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os arquivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os novos arquivos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pular\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pular {count} arquivo\", \"Pular {count} de arquivos\", \"Pular {count} arquivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pular este arquivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Fazer upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fazer upload de arquivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Fazer upload de pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Fazer upload do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O upload foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O upload foi pulado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O upload de \"{folder}\" foi pulado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso de upload\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, todos os arquivos conflitantes dentro dela também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] } } } } }, { \"locale\": \"pt_PT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"artur25 , 2025\", \"Language-Team\": \"Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_PT\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nguilherme ferreira, 2025\\nartur25 , 2025\\n\" }, \"msgstr\": [\"Last-Translator: artur25 , 2025\\nLanguage-Team: Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_PT\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um Nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de ficheiro proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido num nome de ficheiro ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"Conflito em {count} ficheiro\", \"Conflito em {count} ficheiros\", \"Conflito em {count} ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Falta {seconds} segundo\", \"Faltam {seconds} segundos\", \"Faltam {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"faltam {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltam uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montagem\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envios\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"tempo em falta estimado\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao juntar os fragmentos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao carregar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes de ficheiro não podem terminar em \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecionar ambas as versões, será adicionado um número ao nome do ficheiro recebido.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de ficheiro inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pré-visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de verificação\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorar {count} ficheiro\", \"Ignorar {count} ficheiros\", \"Ignorar {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Carregar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carregar pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carregar a partir do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O carregamento foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O carregamento foi ignorado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O carregamento da pasta \"{folder}\" foi ignorado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso do carregamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, quaisquer ficheiros em conflito no seu interior também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, o conteúdo é escrito na pasta existente e é efetuada uma resolução de conflitos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais ficheiros pretende manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode renomear o ficheiro, ignorá-lo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Precisa de selecionar pelo menos uma versão de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"ro\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mădălin Vasiliu , 2022\", \"Language-Team\": \"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ro\", \"Plural-Forms\": \"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMădălin Vasiliu , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Mădălin Vasiliu , 2022\\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ro\\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secunde rămase\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} rămas\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"câteva secunde rămase\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adaugă\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anulați încărcările\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimarea timpului rămas\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pus pe pauză\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Încarcă fișiere\"] } } } } }, { \"locale\": \"ru\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Igor Orlov, 2025\", \"Language-Team\": \"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ru\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nВлад, 2024\\nAlex , 2024\\nRoman Stepanov, 2024\\nMaksim Sukharev, 2024\\nАлександр, 2025\\nIgor Orlov, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Igor Orlov, 2025\\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ru\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» — это запрещенное имя файла или папки.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» — это запрещенный тип файла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» не допускается в имени файла или папки.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"конфликт {count} файла\", \"конфликт {count} файлов\", \"конфликт {count} файлов\", \"конфликт {count} файлов\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"конфликт {count} файла в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"осталась {seconds} секунда\", \"осталось {seconds} секунды\", \"осталось {seconds} секунд\", \"осталось {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"осталось {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"осталось несколько секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"сборка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Отменить\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отменить операцию целиком\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Отменить загрузки\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Создать новое\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оценка оставшегося времени\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не удалось собрать части вместе\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не удалось загрузить файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена файлов не должны заканчиваться на «{segment}»\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неверное имя файла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Новое имя файла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"приостановлено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Предварительный просмотр\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Переименовать\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Выбрать все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустить\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустить {count} файл\", \"Пропустить {count} файла\", \"Пропустить {count} файлов\", \"Пропустить {count} файлов\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустить этот файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Неизвестный размер\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Загрузить\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Загрузить файлы\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Загрузить папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Загрузить с устройства\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Загрузка была отменена\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Загрузка была пропущена\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Загрузка «{folder}» была пропущена\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогресс загрузки\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Вы можете переименовать файл, пропустить этот файл или отменить всю операцию.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла.\"] } } } } }, { \"locale\": \"sc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sc\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sc\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"si\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"si\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: si\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Anton Krajcik , 2025\", \"Language-Team\": \"Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sk_SK\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJozef Gaal , 2024\\nLinker Linker , 2024\\nAnton Krajcik , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Anton Krajcik , 2025\\nLanguage-Team: Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sk_SK\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ je zakázaný názov súboru alebo priečinka.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je zákazaný typ súboru.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}“ je zakázané v názve súboru alebo adresára.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} súbor má konflikt\", \"{count} súbory majú konflikt\", \"{count} súborov má konflikt\", \"{count} súborov má konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} súborový konflikt v {dirname}\", \"{count} súborové konflikty v {dirname}\", \"{count} súborových konfliktov v {dirname}\", \"{count} súborových konfliktov v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunda zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekundy zostávajú\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} zostáva\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zostáva niekoľko sekúnd\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zhromažďovanie\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušiť nahrávanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvoriť nové\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhadovanie zostávajúceho času\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Nepodarilo sa dať časti dohromady.\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Nepodarilo sa nahrať súbor\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Názvy súborov nesmú končiť znakom \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, k názvu prichádzajúceho súboru sa pridá číslo.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný názov súboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dátum poslednej úpravy neznámy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nový\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový názov súboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastavené\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhľad obrázka\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Premenovať\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označiť všetky výberové políčka\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskočiť\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskočiť {count} súbor\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súbory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznáma veľkosť\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrať\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrať súbory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrať priečinky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrať zo zariadenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávanie bolo zrušené\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrávanie bolo preskočené\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nahrávanie \"{folder}\" bolo preskočené'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Priebeh nahrávania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraný prichádzajúci priečinok, prepíšu sa aj všetky konfliktné súbory v ňom.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po výbere prichádzajúceho priečinka sa obsah zapíše do existujúceho priečinka a vykoná sa rekurzívne riešenie konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete ponechať?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Súbor môžete premenovať, preskočiť alebo zrušiť celú operáciu.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ak chcete pokračovať, musíte vybrať aspoň jednu verziu každého súboru.\"] } } } } }, { \"locale\": \"sl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Simon Bogina, 2024\", \"Language-Team\": \"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sl\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJan Kraljič , 2024\\nSimon Bogina, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Simon Bogina, 2024\\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sl\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" je prepovedano ime datoteka ali mape.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je prepovedan tip datoteke.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ni dovoljeno v imenu datoteke ali mape.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"1{count} datoteka je v konfliktu\", \"1{count} datoteki sta v konfiktu\", \"1{count} datotek je v konfliktu\", \"{count} datotek je v konfliktu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} datoteka je v konfiktu v {dirname}\", \"{count} datoteki sta v konfiktu v {dirname}\", \"{count} datotek je v konfiktu v {dirname}\", \"{count} konfliktov datotek v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"še {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"še {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"še nekaj sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Prekliči\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Prekliči celotni postopek\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Prekliči pošiljanje\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Nadaljuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Ustvari nov\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ocenjujem čas do konca\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Obstoječa različica\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Imena datotek se ne smejo končati s \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nepravilno ime datoteke\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum zadnje spremembe neznan\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo ime datoteke\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova različica\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"v premoru\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Predogled slike\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Preimenuj\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Izberi vsa potrditvena polja\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi vse obstoječe datoteke\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi vse nove datoteke\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskoči\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskoči datoteko\", \"Preskoči {count} datoteki\", \"Preskoči {count} datotek\", \"Preskoči {count} datotek\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznana velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Naloži\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Naloži datoteke\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Naloži mape\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Naloži iz naprave\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nalaganje je bilo preklicano\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nalaganje je bilo preskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nalaganje \"{folder}\" je bilo preskočeno'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Napredek nalaganja\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Katere datoteke želite obdržati?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Izbrati morate vsaj eno različico vsake datoteke da nadaljujete.\"] } } } } }, { \"locale\": \"sq\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sq\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sq\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Иван Пешић, 2025\", \"Language-Team\": \"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nИван Пешић, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Иван Пешић, 2025\\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” је забрањено име фајла или фолдера.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” је забрањен тип фајла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}” није дозвољено унутар имена фајла или фолдера.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} фајл конфликт\", \"{count} фајл конфликта\", \"{count} фајл конфликта\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} фајл конфликт у {dirname}\", \"{count} фајл конфликта у {dirname}\", \"{count} фајл конфликта у {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"преостало је {seconds} секунда\", \"преостало је {seconds} секунде\", \"преостало је {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} преостало\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"преостало је неколико секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"састављање\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отказује комплетну операцију\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Обустави отпремања\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Настави\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај ново\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"процена преосталог времена\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постојећа верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Није успело састављање делова\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Није успело отпремање фајла\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена фајлова не смеју да се завршавају на „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако изаберете обе верзије, на име долазног фајла ће се додати број.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неисправно име фајла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Није познат датум последње измене\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име фајла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Слика прегледа\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Промени име\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Штиклирај сва поља за штиклирање\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изабери све постојеће фајлове\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изабери све нове фајлове\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескочи\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескочи {count} фајл\", \"Прескочи {count} фајла\", \"Прескочи {count} фајлова\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескочи овај фајл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната величина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Отпреми\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Отпреми фајлове\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Отпреми фолдере\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Отпреми са уређаја\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Отпремање је отказано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Отпремање је прескочено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Отпремање „{folder}”је прескочено\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Напредак отпремања\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Које фајлове желите да задржите?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Морате да изаберете барем једну верзију сваког фајла да наставите.\"] } } } } }, { \"locale\": \"sr@latin\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr@latin\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr@latin\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Magnus Höglund, 2025\", \"Language-Team\": \"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sv\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMagnus Höglund, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Magnus Höglund, 2025\\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sv\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" är ett förbjudet fil- eller mappnamn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" är en förbjuden filtyp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" är inte tillåtet i ett fil- eller mappnamn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} filkonflikt\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} filkonflikt i {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder kvar\", \"{seconds} sekunder kvar\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kvarstår\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"några sekunder kvar\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"Sammanställer\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt uppladdningar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Skapa ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"uppskattar kvarstående tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Misslyckades med att sammanställa delarna\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunde inte ladda upp filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnamn får inte sluta med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ogiltigt filnamn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnamn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausad\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Förhandsgranska bild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Byt namn\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hoppa över\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Hoppa över {count} fil\", \"Hoppa över {count} filer\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över denna fil\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Okänd storlek\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Ladda upp\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Ladda upp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ladda upp mappar\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Ladda upp från enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Uppladdningen har avbrutits\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Uppladdningen har hoppats över\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Uppladdningen av \"{folder}\" har hoppats över'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uppladdningsförlopp\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs även alla konfliktande filer i den över.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] } } } } }, { \"locale\": \"sw\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sw\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sw\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ta\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ta\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ta\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"th\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Phongpanot Phairat , 2022\", \"Language-Team\": \"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"th_TH\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPhongpanot Phairat , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Phongpanot Phairat , 2022\\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: th_TH\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"เหลืออีก {seconds} วินาที\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"เหลืออีก {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"เหลืออีกไม่กี่วินาที\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"เพิ่ม\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ยกเลิกการอัปโหลด\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"กำลังคำนวณเวลาที่เหลือ\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"หยุดชั่วคราว\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"อัปโหลดไฟล์\"] } } } } }, { \"locale\": \"tk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tk\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tk\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"tr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Kaya Zeren , 2025\", \"Language-Team\": \"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tr\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nKaya Zeren , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Kaya Zeren , 2025\\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tr\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" dosya ya da klasör adına izin verilmiyor.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" dosya türüne izin verilmiyor.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Bir dosya ya da klasör adında \"{segment}\" ifadesine izin verilmiyor.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} dosya çakışması var\", \"{count} dosya çakışması var\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} klasöründe {count} dosya çakışması var\", \"{dirname} klasöründe {count} dosya çakışması var\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniye kaldı\", \"{seconds} saniye kaldı\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kaldı\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir kaç saniye kaldı\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"birleştiriliyor\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yüklemeleri iptal et\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yeni ekle\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"öngörülen kalan süre\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Parçalar birleştirilemedi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Dosya yüklenemedi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dosya adları \"{segment}\" ile bitmemeli.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Dosya adı geçersiz\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yeni dosya adı\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"duraklatıldı\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Görsel ön izlemesi\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Yeniden adlandır\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Atla\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} dosyayı atla\", \"{count} dosyayı atla\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Boyut bilinmiyor\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yükle\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dosyaları yükle\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Klasörleri yükle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Aygıttan yükle\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yükleme iptal edildi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yükleme atlandı\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" klasörünün yüklenmesi atlandı'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yükleme ilerlemesi\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz.\"] } } } } }, { \"locale\": \"ug\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ug\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ug\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"O St, 2025\", \"Language-Team\": \"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uk\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nO St, 2025\\n\" }, \"msgstr\": [\"Last-Translator: O St, 2025\\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uk\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [`\"{segment}\" недозволене ім'я файлу або каталогу.`] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" недозволений тип файлу.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" недозволене сполучення символів в назві файлу або каталогу.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфліктний файл\", \"{count} конфліктних файли\", \"{count} конфліктних файлів\", \"{count} конфліктних файлів\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфліктний файл у каталозі {dirname}\", \"{count} конфліктних файли у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунда залишилася\", \"{seconds} секунди залишилося\", \"{seconds} секунд залишилося\", \"{seconds} секунд залишилося\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Залишилося {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"залишилося кілька секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"збірка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати операцію повністю\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Скасувати завантаження\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Створити новий\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оцінка часу, що залишився\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Присутня версія\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не вдалося зібрати частинки докупи\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не вдалося завантажити файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Ім'я файлів не можуть закінчуватися на \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Недійсне ім'я файлу\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нове\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Нове ім'я файлу\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"призупинено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Попередній перегляд\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Перейменувати\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати усі присутні файли\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати усі нові файли\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустити\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустити {count} файл\", \"Пропустити {count} файли\", \"Пропустити {count} файлів\", \"Пропустити {count} файлів\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Невідомий розмір\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Завантажити\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Завантажити файли\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Завантажити каталоги\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Завантажити з пристрою\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Завантаження скасовано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Завантаження пропущено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Завантаження \"{folder}\" пропущено'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Поступ завантаження\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продовження потрібно вибрати принаймні одну версію для кожного файлу.\"] } } } } }, { \"locale\": \"ur_PK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ur_PK\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ur_PK\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uz\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Khurshid Ibatov , 2025\", \"Language-Team\": \"Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uz\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nKhurshid Ibatov , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Khurshid Ibatov , 2025\\nLanguage-Team: Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uz\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl yoki papka nomidir.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl turi hisoblanadi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" fayl yoki papka nomi ichida ruxsat berilmaydi.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fayllar ziddiyati\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count}fayl ziddiyatlari {dirname} da\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soniya qoldi\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} qoldi\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir necha soniya qoldi\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"yig'ish\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yuklashni bekor qilish\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yangi yaratish\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"qolgan vaqtni hisoblash\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Bo'laklarni birlashtirib bo'lmadi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fayl yuklanmadi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Fayl nomlari bilan tugamasligi kerak \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Fayl nomi noto‘g‘ri\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yangi nom faylga\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"tanaffus\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Rasmni oldindan ko'rish\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Qayta nomlash\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Oʻtkazib yuborish\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Oʻtkazib yuborish {count} fayllarini\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Oʻtkazib yuborish ushbu faylni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Noma'lum o'lcham\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yuklash\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fayllarni yuklash\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Jildlarni yuklash\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Qurilmadan yuklash\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yuklash bekor qilindi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yuklash oʻtkazib yuborildi\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [' \"{folder}\" ni yuklash bekor qilindi'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yuklash jarayoni\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Siz fayl nomini o'zgartirishingiz, ushbu faylni o'tkazib yuborishingiz yoki butun operatsiyani bekor qilishingiz mumkin.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] } } } } }, { \"locale\": \"vi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"nhatCreA, 2025\", \"Language-Team\": \"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"vi\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nnhatCreA, 2025\\n\" }, \"msgstr\": [\"Last-Translator: nhatCreA, 2025\\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: vi\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" là tên thư mục bị cấm đặt.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" là loại tệp bị cấm.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" không được phép đặt trong tên tệp hoặc thư mục.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tệp tin xung đột\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": ['\"{count}\" tệp tin lỗi ở thư mục \"{dirname}\"'] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} giây trước\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} trước\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"vài giây trước\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"đang cấu trúc\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Huỷ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Huỷ toàn bộ thao tác\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Huỷ tải lên\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tiếp Tục\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Tạo mới\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ước tính thời gian còn lại\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Phiên bản hiện tại\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Không thể assemble các chunks lại với nhau\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tải lên tệp tin thất bại\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tên tập tin không được kết thúc bằng \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Nếu bạn chọn cả hai, tệp tin đến sẽ có thêm một chữ số vào tên.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Tên tệp tin không hợp lệ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ngày sửa dổi lần cuối không xác định\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Tạo Mới\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Tên tệp tin mới\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Phiên bản mới\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"đã tạm dừng\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Xem trước ảnh\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Đổi tên\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Chọn tất cả\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Chọn tất cả các tập tin đang tồn tại\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Chọn tất cả các tập tin mới\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Bỏ qua\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bỏ qua {count} tệp\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bỏ qua tệp này\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Không rõ dung lượng\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Tải Lên\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Tải lên tệp tin\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Tải lên thư mục\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Tải lên từ thiết bị\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Tải lên đã bị huỷ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Tải lên đã bỏ qua\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Tải lên \"{folder}\" đã bị bỏ qua'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Tiến trình tải lên\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Khi bạn chọn một thư mục để đưa vào, bất kỳ tệp nào trong đó gây xung đột cũng sẽ bị ghi đè.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Khi chọn một thư mục để đưa vào, nội dung sẽ được ghi vào thư mục hiện có, và hệ thống sẽ tự động giải quyết các xung đột một cách chi tiết và cẩn thận.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Bạn muốn giữ tệp nào?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Bạn có thể đổi tên tệp, bỏ qua tệp này, hoặc hủy toàn bộ thao tác.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Bạn cần chọn ít nhất một phiên bản cho mỗi tệp để tiếp tục.\"] } } } } }, { \"locale\": \"zh_CN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DWXXX, 2025\", \"Language-Team\": \"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_CN\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\ngloryandel, 2024\\nDWXXX, 2025\\n\" }, \"msgstr\": [\"Last-Translator: DWXXX, 2025\\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_CN\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是被禁止的文件名或文件夹名。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是被禁止的文件类型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允许包含在文件名或文件夹名中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}文件冲突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"在{dirname}目录下有{count}个文件冲突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩余{seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩余 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"还剩几秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"聚合\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整个操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上传\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"继续\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新建\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估计剩余时间\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"服务端版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"组合区块失败\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"上传文件失败\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['文件名不得以 \"{segment}\" 结尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果同时选择两个版本,则上传文件的名称中将添加一个数字。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"无效文件名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"文件最后修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新文件名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"上传版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暂停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"图片预览\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"选择所有的选择框\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"保留所有服务端版本\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"保留所有上传版本\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳过\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"跳过 {count} 文件\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳过此文件\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"文件大小未知\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上传\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上传文件\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上传文件夹\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"从设备上传\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上传已取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上传已跳过\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['已跳过上传\"{folder}\"'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上传进度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你要保留哪些文件?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以重命名文件、跳过此文件或取消整个操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"每个文件至少选择保留一个版本\"] } } } } }, { \"locale\": \"zh_HK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Café Tango, 2025\", \"Language-Team\": \"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_HK\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nCafé Tango, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Café Tango, 2025\\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_HK\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案或資料夾名稱。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案類型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允許出現在檔案或資料夾名稱中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"組裝\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"創建新\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"無法組裝這些部分\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"無法上傳檔案\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['檔案名不得以 \"{segment}\" 結尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,傳入檔案的名稱將會新增編號。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無效的檔案名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期不詳\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新檔案名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本 \"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重新命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳過\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 個檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"略過這個檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"大小不詳\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上傳資料夾\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"從裝置上傳\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上傳已被取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上傳已被跳過\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 的上傳已被跳過'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以選擇重新命名檔案、跳過此檔案或取消整個操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }, { \"locale\": \"zh_TW\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"黃柏諺 , 2024\", \"Language-Team\": \"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_TW\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n黃柏諺 , 2024\\n\" }, \"msgstr\": [\"Last-Translator: 黃柏諺 , 2024\\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_TW\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,複製的檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"未知大小\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass UploadCancelledError extends Error {\n constructor(cause) {\n super(t(\"Upload has been cancelled\"), { cause });\n }\n}\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/upload\").detectUser().build();\naxiosRetry(axios, { retries: 0 });\nasync function uploadData(url, uploadData2, uploadOptions) {\n const options = {\n headers: {},\n onUploadProgress: () => {\n },\n onUploadRetry: () => {\n },\n retries: 5,\n ...uploadOptions\n };\n let data;\n if (uploadData2 instanceof Blob) {\n data = uploadData2;\n } else {\n data = await uploadData2();\n }\n if (options.destinationFile) {\n options.headers.Destination = options.destinationFile;\n }\n if (!options.headers[\"Content-Type\"]) {\n options.headers[\"Content-Type\"] = \"application/octet-stream\";\n }\n return await axios.request({\n method: \"PUT\",\n url,\n data,\n signal: options.signal,\n onUploadProgress: options.onUploadProgress,\n headers: options.headers,\n \"axios-retry\": {\n retries: options.retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3),\n retryCondition(error) {\n if (error.status === 507) {\n return false;\n }\n if (error.status === 423) {\n return true;\n }\n return isNetworkOrIdempotentRequestError(error);\n },\n onRetry: options.onUploadRetry\n }\n });\n}\nconst getChunk = function(file, start, length) {\n if (start === 0 && file.size <= length) {\n return Promise.resolve(new Blob([file], { type: file.type || \"application/octet-stream\" }));\n }\n return Promise.resolve(new Blob([file.slice(start, start + length)], { type: \"application/octet-stream\" }));\n};\nconst initChunkWorkspace = async function(destinationFile = void 0, retries = 5, isPublic = false, customHeaders = {}) {\n let chunksWorkspace;\n if (isPublic) {\n chunksWorkspace = `${getBaseUrl()}/public.php/dav/uploads/${getSharingToken()}`;\n } else {\n chunksWorkspace = generateRemoteUrl(`dav/uploads/${getCurrentUser()?.uid}`);\n }\n const hash = [...Array(16)].map(() => Math.floor(Math.random() * 16).toString(16)).join(\"\");\n const tempWorkspace = `web-file-upload-${hash}`;\n const url = `${chunksWorkspace}/${tempWorkspace}`;\n const headers = customHeaders;\n if (destinationFile) {\n headers.Destination = destinationFile;\n }\n await axios.request({\n method: \"MKCOL\",\n url,\n headers,\n \"axios-retry\": {\n retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n }\n });\n logger.debug(\"Created temporary upload workspace\", { url });\n return url;\n};\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst getMaxChunksSize = function(fileSize = void 0) {\n const maxChunkSize = window.OC?.appConfig?.files?.max_chunk_size;\n if (maxChunkSize <= 0) {\n return 0;\n }\n if (!Number(maxChunkSize)) {\n return 10 * 1024 * 1024;\n }\n const minimumChunkSize = Math.max(Number(maxChunkSize), 5 * 1024 * 1024);\n if (fileSize === void 0) {\n return minimumChunkSize;\n }\n return Math.max(minimumChunkSize, Math.ceil(fileSize / 1e4));\n};\nvar Status = /* @__PURE__ */ ((Status2) => {\n Status2[Status2[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n Status2[Status2[\"ASSEMBLING\"] = 2] = \"ASSEMBLING\";\n Status2[Status2[\"FINISHED\"] = 3] = \"FINISHED\";\n Status2[Status2[\"CANCELLED\"] = 4] = \"CANCELLED\";\n Status2[Status2[\"FAILED\"] = 5] = \"FAILED\";\n return Status2;\n})(Status || {});\nclass Upload {\n _source;\n _file;\n _isChunked;\n _chunks;\n _size;\n _uploaded = 0;\n _startTime = 0;\n _status = 0;\n _controller;\n _response = null;\n constructor(source, chunked = false, size, file) {\n const chunks = Math.min(getMaxChunksSize() > 0 ? Math.ceil(size / getMaxChunksSize()) : 1, 1e4);\n this._source = source;\n this._isChunked = chunked && getMaxChunksSize() > 0 && chunks > 1;\n this._chunks = this._isChunked ? chunks : 1;\n this._size = size;\n this._file = file;\n this._controller = new AbortController();\n }\n get source() {\n return this._source;\n }\n get file() {\n return this._file;\n }\n get isChunked() {\n return this._isChunked;\n }\n get chunks() {\n return this._chunks;\n }\n get size() {\n return this._size;\n }\n get startTime() {\n return this._startTime;\n }\n set response(response) {\n this._response = response;\n }\n get response() {\n return this._response;\n }\n get uploaded() {\n return this._uploaded;\n }\n /**\n * Update the uploaded bytes of this upload\n */\n set uploaded(length) {\n if (length >= this._size) {\n this._status = this._isChunked ? 2 : 3;\n this._uploaded = this._size;\n return;\n }\n this._status = 1;\n this._uploaded = length;\n if (this._startTime === 0) {\n this._startTime = (/* @__PURE__ */ new Date()).getTime();\n }\n }\n get status() {\n return this._status;\n }\n /**\n * Update this upload status\n */\n set status(status) {\n this._status = status;\n }\n /**\n * Returns the axios cancel token source\n */\n get signal() {\n return this._controller.signal;\n }\n /**\n * Cancel any ongoing requests linked to this upload\n */\n cancel() {\n this._controller.abort();\n this._status = 4;\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst isFileSystemDirectoryEntry = (o) => \"FileSystemDirectoryEntry\" in window && o instanceof FileSystemDirectoryEntry;\nconst isFileSystemFileEntry = (o) => \"FileSystemFileEntry\" in window && o instanceof FileSystemFileEntry;\nconst isFileSystemEntry = (o) => \"FileSystemEntry\" in window && o instanceof FileSystemEntry;\nclass Directory extends File {\n _originalName;\n _path;\n _children;\n constructor(path) {\n super([], basename(path), { type: \"httpd/unix-directory\", lastModified: 0 });\n this._children = /* @__PURE__ */ new Map();\n this._originalName = basename(path);\n this._path = path;\n }\n get size() {\n return this.children.reduce((sum, file) => sum + file.size, 0);\n }\n get lastModified() {\n return this.children.reduce((latest, file) => Math.max(latest, file.lastModified), 0);\n }\n // We need this to keep track of renamed files\n get originalName() {\n return this._originalName;\n }\n get children() {\n return Array.from(this._children.values());\n }\n get webkitRelativePath() {\n return this._path;\n }\n getChild(name) {\n return this._children.get(name) ?? null;\n }\n /**\n * Add multiple children at once\n * @param files The files to add\n */\n async addChildren(files) {\n for (const file of files) {\n await this.addChild(file);\n }\n }\n /**\n * Add a child to the directory.\n * If it is a nested child the parents will be created if not already exist.\n * @param file The child to add\n */\n async addChild(file) {\n const rootPath = this._path && `${this._path}/`;\n if (isFileSystemFileEntry(file)) {\n file = await new Promise((resolve, reject) => file.file(resolve, reject));\n } else if (isFileSystemDirectoryEntry(file)) {\n const reader = file.createReader();\n const entries = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));\n const child = new Directory(`${rootPath}${file.name}`);\n await child.addChildren(entries);\n this._children.set(file.name, child);\n return;\n }\n file = file;\n const filePath = file.webkitRelativePath ?? file.name;\n if (!filePath.includes(\"/\")) {\n this._children.set(file.name, file);\n } else {\n if (!filePath.startsWith(this._path)) {\n throw new Error(`File ${filePath} is not a child of ${this._path}`);\n }\n const relPath = filePath.slice(rootPath.length);\n const name = basename(relPath);\n if (name === relPath) {\n this._children.set(name, file);\n } else {\n const base = relPath.slice(0, relPath.indexOf(\"/\"));\n if (this._children.has(base)) {\n await this._children.get(base).addChild(file);\n } else {\n const child = new Directory(`${rootPath}${base}`);\n await child.addChild(file);\n this._children.set(base, child);\n }\n }\n }\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nvar EtaStatus = /* @__PURE__ */ ((EtaStatus2) => {\n EtaStatus2[EtaStatus2[\"Idle\"] = 0] = \"Idle\";\n EtaStatus2[EtaStatus2[\"Paused\"] = 1] = \"Paused\";\n EtaStatus2[EtaStatus2[\"Running\"] = 2] = \"Running\";\n return EtaStatus2;\n})(EtaStatus || {});\nclass Eta extends TypedEventTarget {\n /** Bytes done */\n _done = 0;\n /** Total bytes to do */\n _total = 0;\n /** Current progress (cached) as interval [0,1] */\n _progress = 0;\n /** Status of the ETA */\n _status = 0;\n /** Time of the last update */\n _startTime = -1;\n /** Total elapsed time for current ETA */\n _elapsedTime = 0;\n /** Current speed in bytes per second */\n _speed = -1;\n /** Expected duration to finish in seconds */\n _eta = Infinity;\n /**\n * Cutoff time for the low pass filter of the ETA.\n * A higher value will consider more history information for calculation,\n * and thus suppress spikes of the speed,\n * but will make the overall resposiveness slower.\n */\n _cutoffTime = 2.5;\n constructor(options = {}) {\n super();\n if (options.start) {\n this.resume();\n }\n if (options.total) {\n this.update(0, options.total);\n }\n this._cutoffTime = options.cutoffTime ?? 2.5;\n }\n /**\n * Add more transferred bytes.\n * @param done Additional bytes done.\n */\n add(done) {\n this.update(this._done + done);\n }\n /**\n * Update the transmission state.\n *\n * @param done The new value of transferred bytes.\n * @param total Optionally also update the total bytes we expect.\n */\n update(done, total) {\n if (this.status !== 2) {\n return;\n }\n if (total && total > 0) {\n this._total = total;\n }\n const deltaDone = done - this._done;\n const deltaTime = (Date.now() - this._startTime) / 1e3;\n this._startTime = Date.now();\n this._elapsedTime += deltaTime;\n this._done = done;\n this._progress = this._done / this._total;\n const historyNeeded = this._cutoffTime + deltaTime;\n if (this._elapsedTime > historyNeeded) {\n const alpha = deltaTime / (deltaTime + 1 / this._cutoffTime);\n const filtered = this._done - deltaDone + (1 - alpha) * deltaDone;\n this._speed = Math.round(filtered / this._elapsedTime);\n } else if (this._speed === -1 && this._elapsedTime > deltaTime) {\n const remaining = this._total - done;\n const eta = remaining / (done / this._elapsedTime);\n if (this._eta !== Infinity || eta <= 2 * this._cutoffTime) {\n this._eta = eta;\n }\n }\n if (this._speed > 0) {\n this._eta = Math.round((this._total - this._done) / this._speed);\n }\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\", { cancelable: false }));\n }\n reset() {\n this._done = 0;\n this._total = 0;\n this._progress = 0;\n this._elapsedTime = 0;\n this._eta = Infinity;\n this._speed = -1;\n this._startTime = -1;\n this._status = 0;\n this.dispatchTypedEvent(\"reset\", new CustomEvent(\"reset\"));\n }\n /**\n * Pause the ETA calculation.\n */\n pause() {\n if (this._status === 2) {\n this._status = 1;\n this._elapsedTime += (Date.now() - this._startTime) / 1e3;\n this.dispatchTypedEvent(\"pause\", new CustomEvent(\"pause\"));\n }\n }\n /**\n * Resume the ETA calculation.\n */\n resume() {\n if (this._status !== 2) {\n this._startTime = Date.now();\n this._status = 2;\n this.dispatchTypedEvent(\"resume\", new CustomEvent(\"resume\"));\n }\n }\n /**\n * Status of the Eta (paused, active, idle).\n */\n get status() {\n return this._status;\n }\n /**\n * Progress (percent done)\n */\n get progress() {\n return Math.round(this._progress * 1e4) / 100;\n }\n /**\n * Estimated time in seconds.\n */\n get time() {\n return this._eta;\n }\n /**\n * Human readable version of the estimated time.\n */\n get timeReadable() {\n if (this._eta === Infinity) {\n return t(\"estimating time left\");\n } else if (this._eta < 10) {\n return t(\"a few seconds left\");\n } else if (this._eta < 60) {\n return n(\"{seconds} seconds left\", \"{seconds} seconds left\", this._eta, { seconds: this._eta });\n }\n const hours = String(Math.floor(this._eta / 3600)).padStart(2, \"0\");\n const minutes = String(Math.floor(this._eta % 3600 / 60)).padStart(2, \"0\");\n const seconds = String(this._eta % 60).padStart(2, \"0\");\n return t(\"{time} left\", { time: `${hours}:${minutes}:${seconds}` });\n }\n /**\n * Transfer speed in bytes per second.\n * Returns `-1` if not yet estimated.\n */\n get speed() {\n return this._speed;\n }\n /**\n * Get the speed in human readable format using file sizes like 10KB/s.\n * Returns the empty string if not yet estimated.\n */\n get speedReadable() {\n return this._speed > 0 ? `${formatFileSize(this._speed, true)}∕s` : \"\";\n }\n}\nvar UploaderStatus = /* @__PURE__ */ ((UploaderStatus2) => {\n UploaderStatus2[UploaderStatus2[\"IDLE\"] = 0] = \"IDLE\";\n UploaderStatus2[UploaderStatus2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n UploaderStatus2[UploaderStatus2[\"PAUSED\"] = 2] = \"PAUSED\";\n return UploaderStatus2;\n})(UploaderStatus || {});\nclass Uploader {\n // Initialized via setter in the constructor\n _destinationFolder;\n _isPublic;\n _customHeaders;\n // Global upload queue\n _uploadQueue = [];\n _jobQueue = new PQueue({\n // Maximum number of concurrent uploads\n // @ts-expect-error TS2339 Object has no defined properties\n concurrency: getCapabilities().files?.chunked_upload?.max_parallel_count ?? 5\n });\n _queueSize = 0;\n _queueProgress = 0;\n _queueStatus = 0;\n _eta = new Eta();\n _notifiers = [];\n /**\n * Initialize uploader\n *\n * @param {boolean} isPublic are we in public mode ?\n * @param {Folder} destinationFolder the context folder to operate, relative to the root folder\n */\n constructor(isPublic = false, destinationFolder) {\n this._isPublic = isPublic;\n this._customHeaders = {};\n if (!destinationFolder) {\n const source = `${davRemoteURL}${davRootPath}`;\n let owner;\n if (isPublic) {\n owner = \"anonymous\";\n } else {\n const user = getCurrentUser()?.uid;\n if (!user) {\n throw new Error(\"User is not logged in\");\n }\n owner = user;\n }\n destinationFolder = new Folder({\n id: 0,\n owner,\n permissions: Permission.ALL,\n root: davRootPath,\n source\n });\n }\n this.destination = destinationFolder;\n logger.debug(\"Upload workspace initialized\", {\n destination: this.destination,\n root: this.root,\n isPublic,\n maxChunksSize: getMaxChunksSize()\n });\n }\n /**\n * Get the upload destination path relative to the root folder\n */\n get destination() {\n return this._destinationFolder;\n }\n /**\n * Set the upload destination path relative to the root folder\n */\n set destination(folder) {\n if (!folder || folder.type !== FileType.Folder || !folder.source) {\n throw new Error(\"Invalid destination folder\");\n }\n logger.debug(\"Destination set\", { folder });\n this._destinationFolder = folder;\n }\n /**\n * Get the root folder\n */\n get root() {\n return this._destinationFolder.source;\n }\n /**\n * Get registered custom headers for uploads\n */\n get customHeaders() {\n return structuredClone(this._customHeaders);\n }\n /**\n * Set a custom header\n * @param name The header to set\n * @param value The string value\n */\n setCustomHeader(name, value = \"\") {\n this._customHeaders[name] = value;\n }\n /**\n * Unset a custom header\n * @param name The header to unset\n */\n deleteCustomerHeader(name) {\n delete this._customHeaders[name];\n }\n /**\n * Get the upload queue\n */\n get queue() {\n return this._uploadQueue;\n }\n reset() {\n this._eta.reset();\n if (this._uploadQueue.length === 0 && this._jobQueue.size === 0) {\n return;\n }\n this._uploadQueue.splice(0, this._uploadQueue.length);\n this._jobQueue.clear();\n this._queueSize = 0;\n this._queueProgress = 0;\n this._queueStatus = 0;\n logger.debug(\"Uploader state reset\");\n }\n /**\n * Pause any ongoing upload(s)\n */\n pause() {\n this._eta.pause();\n this._jobQueue.pause();\n this._queueStatus = 2;\n this.updateStats();\n logger.debug(\"Uploader paused\");\n }\n /**\n * Resume any pending upload(s)\n */\n start() {\n this._eta.resume();\n this._jobQueue.start();\n this._queueStatus = 1;\n this.updateStats();\n logger.debug(\"Uploader resumed\");\n }\n /**\n * Get the estimation for the uploading time.\n */\n get eta() {\n return this._eta;\n }\n /**\n * Get the upload queue stats\n */\n get info() {\n return {\n size: this._queueSize,\n progress: this._queueProgress,\n status: this._queueStatus\n };\n }\n updateStats() {\n const size = this._uploadQueue.map((upload2) => upload2.size).reduce((partialSum, a) => partialSum + a, 0);\n const uploaded = this._uploadQueue.map((upload2) => upload2.uploaded).reduce((partialSum, a) => partialSum + a, 0);\n this._eta.update(uploaded, size);\n this._queueSize = size;\n this._queueProgress = uploaded;\n if (this._queueStatus !== 2) {\n const pending = this._uploadQueue.find(({ status }) => [Status.INITIALIZED, Status.UPLOADING, Status.ASSEMBLING].includes(status));\n if (this._jobQueue.size > 0 || pending) {\n this._queueStatus = 1;\n } else {\n this.eta.reset();\n this._queueStatus = 0;\n }\n }\n }\n addNotifier(notifier) {\n this._notifiers.push(notifier);\n }\n /**\n * Notify listeners of the upload completion\n * @param upload The upload that finished\n */\n _notifyAll(upload2) {\n for (const notifier of this._notifiers) {\n try {\n notifier(upload2);\n } catch (error) {\n logger.warn(\"Error in upload notifier\", { error, source: upload2.source });\n }\n }\n }\n /**\n * Uploads multiple files or folders while preserving the relative path (if available)\n * @param {string} destination The destination path relative to the root folder. e.g. /foo/bar (a file \"a.txt\" will be uploaded then to \"/foo/bar/a.txt\")\n * @param {Array} files The files and/or folders to upload\n * @param {Function} callback Callback that receives the nodes in the current folder and the current path to allow resolving conflicts, all nodes that are returned will be uploaded (if a folder does not exist it will be created)\n * @return Cancelable promise that resolves to an array of uploads\n *\n * @example\n * ```ts\n * // For example this is from handling the onchange event of an input[type=file]\n * async handleFiles(files: File[]) {\n * this.uploads = await this.uploader.batchUpload('uploads', files, this.handleConflicts)\n * }\n *\n * async handleConflicts(nodes: File[], currentPath: string) {\n * const conflicts = getConflicts(nodes, this.fetchContent(currentPath))\n * if (conflicts.length === 0) {\n * // No conflicts so upload all\n * return nodes\n * } else {\n * // Open the conflict picker to resolve conflicts\n * try {\n * const { selected, renamed } = await openConflictPicker(currentPath, conflicts, this.fetchContent(currentPath), { recursive: true })\n * return [...selected, ...renamed]\n * } catch (e) {\n * return false\n * }\n * }\n * }\n * ```\n */\n batchUpload(destination, files, callback) {\n if (!callback) {\n callback = async (files2) => files2;\n }\n return new PCancelable(async (resolve, reject, onCancel) => {\n const rootFolder = new Directory(\"\");\n await rootFolder.addChildren(files);\n const target = `${this.root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const upload2 = new Upload(target, false, 0, rootFolder);\n upload2.status = Status.UPLOADING;\n this._uploadQueue.push(upload2);\n logger.debug(\"Starting new batch upload\", { target });\n try {\n const client = davGetClient(this.root, this._customHeaders);\n const promise = this.uploadDirectory(destination, rootFolder, callback, client);\n onCancel(() => promise.cancel());\n const uploads = await promise;\n upload2.status = Status.FINISHED;\n resolve(uploads);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n logger.info(\"Upload cancelled by user\", { error });\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else {\n logger.error(\"Error in batch upload\", { error });\n upload2.status = Status.FAILED;\n reject(error);\n }\n } finally {\n this._uploadQueue.splice(this._uploadQueue.indexOf(upload2), 1);\n this._notifyAll(upload2);\n this.updateStats();\n }\n });\n }\n /**\n * Helper to create a directory wrapped inside an Upload class\n * @param destination Destination where to create the directory\n * @param directory The directory to create\n * @param client The cached WebDAV client\n */\n createDirectory(destination, directory, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n const rootPath = `${this.root.replace(/\\/$/, \"\")}/${folderPath.replace(/^\\//, \"\")}`;\n if (!directory.name) {\n throw new Error(\"Can not create empty directory\");\n }\n const currentUpload = new Upload(rootPath, false, 0, directory);\n this._uploadQueue.push(currentUpload);\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n currentUpload.signal.addEventListener(\"abort\", () => reject(t(\"Upload has been cancelled\")));\n await this._jobQueue.add(async () => {\n currentUpload.status = Status.UPLOADING;\n try {\n await client.createDirectory(folderPath, { signal: abort.signal });\n resolve(currentUpload);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n currentUpload.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else if (error && typeof error === \"object\" && \"status\" in error && error.status === 405) {\n logger.debug(\"Directory already exists, writing into it\", { directory: directory.name });\n currentUpload.status = Status.FINISHED;\n resolve(currentUpload);\n } else {\n currentUpload.status = Status.FAILED;\n reject(error);\n }\n } finally {\n this._notifyAll(currentUpload);\n this.updateStats();\n }\n });\n });\n }\n // Helper for uploading directories (recursively)\n uploadDirectory(destination, directory, callback, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n const selectedForUpload = await callback(directory.children, folderPath);\n if (selectedForUpload === false) {\n logger.debug(\"Upload canceled by user\", { directory });\n reject(new UploadCancelledError(\"Conflict resolution cancelled by user\"));\n return;\n } else if (selectedForUpload.length === 0 && directory.children.length > 0) {\n logger.debug(\"Skipping directory, as all files were skipped by user\", { directory });\n resolve([]);\n return;\n }\n const directories = [];\n const uploads = [];\n abort.signal.addEventListener(\"abort\", () => {\n directories.forEach((upload2) => upload2.cancel());\n uploads.forEach((upload2) => upload2.cancel());\n });\n logger.debug(\"Start directory upload\", { directory });\n try {\n if (directory.name) {\n uploads.push(this.createDirectory(destination, directory, client));\n await uploads.at(-1);\n }\n for (const node of selectedForUpload) {\n if (node instanceof Directory) {\n directories.push(this.uploadDirectory(folderPath, node, callback, client));\n } else {\n uploads.push(this.upload(`${folderPath}/${node.name}`, node));\n }\n }\n const resolvedUploads = await Promise.all(uploads);\n const resolvedDirectoryUploads = await Promise.all(directories);\n resolve([resolvedUploads, ...resolvedDirectoryUploads].flat());\n } catch (e) {\n abort.abort(e);\n reject(e);\n }\n });\n }\n /**\n * Upload a file to the given path\n * @param {string} destination the destination path relative to the root folder. e.g. /foo/bar.txt\n * @param {File|FileSystemFileEntry} fileHandle the file to upload\n * @param {string} root the root folder to upload to\n * @param retries number of retries\n */\n upload(destination, fileHandle, root, retries = 5) {\n root = root || this.root;\n const destinationPath = `${root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const { origin } = new URL(destinationPath);\n const encodedDestinationFile = origin + encodePath(destinationPath.slice(origin.length));\n this.eta.resume();\n logger.debug(`Uploading ${fileHandle.name} to ${encodedDestinationFile}`);\n const promise = new PCancelable(async (resolve, reject, onCancel) => {\n if (isFileSystemFileEntry(fileHandle)) {\n fileHandle = await new Promise((resolve2) => fileHandle.file(resolve2, reject));\n }\n const file = fileHandle;\n const supportsPublicChunking = getCapabilities().dav?.public_shares_chunking ?? false;\n const maxChunkSize = getMaxChunksSize(\"size\" in file ? file.size : void 0);\n const disabledChunkUpload = this._isPublic && !supportsPublicChunking || maxChunkSize === 0 || \"size\" in file && file.size < maxChunkSize;\n const upload2 = new Upload(destinationPath, !disabledChunkUpload, file.size, file);\n this._uploadQueue.push(upload2);\n this.updateStats();\n onCancel(upload2.cancel);\n if (!disabledChunkUpload) {\n logger.debug(\"Initializing chunked upload\", { file, upload: upload2 });\n const tempUrl = await initChunkWorkspace(encodedDestinationFile, retries, this._isPublic, this._customHeaders);\n const chunksQueue = [];\n for (let chunk = 0; chunk < upload2.chunks; chunk++) {\n const bufferStart = chunk * maxChunkSize;\n const bufferEnd = Math.min(bufferStart + maxChunkSize, upload2.size);\n const blob = () => getChunk(file, bufferStart, maxChunkSize);\n const request2 = () => {\n let chunkBytes = 0;\n return uploadData(\n `${tempUrl}/${chunk + 1}`,\n blob,\n {\n signal: upload2.signal,\n destinationFile: encodedDestinationFile,\n retries,\n onUploadProgress: ({ bytes }) => {\n const progressBytes = bytes * 0.9;\n chunkBytes += progressBytes;\n upload2.uploaded += progressBytes;\n this.updateStats();\n },\n onUploadRetry: () => {\n upload2.uploaded -= chunkBytes;\n chunkBytes = 0;\n this.updateStats();\n },\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"OC-Total-Length\": file.size,\n \"Content-Type\": \"application/octet-stream\"\n }\n }\n ).then(() => {\n upload2.uploaded += bufferEnd - bufferStart - chunkBytes;\n this.updateStats();\n }).catch((error) => {\n if (error?.response?.status === 507) {\n logger.error(\"Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks\", { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status.FAILED;\n throw error;\n }\n if (!isCancel(error)) {\n logger.error(`Chunk ${chunk + 1} ${bufferStart} - ${bufferEnd} uploading failed`, { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status.FAILED;\n }\n throw error;\n });\n };\n chunksQueue.push(this._jobQueue.add(request2));\n }\n const request = async () => {\n try {\n await Promise.all(chunksQueue);\n upload2.status = Status.ASSEMBLING;\n this.updateStats();\n upload2.response = await axios.request({\n method: \"MOVE\",\n url: `${tempUrl}/.file`,\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"OC-Total-Length\": file.size,\n Destination: encodedDestinationFile\n }\n });\n upload2.status = Status.FINISHED;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else {\n upload2.status = Status.FAILED;\n reject(t(\"Failed to assemble the chunks together\"));\n }\n axios.request({\n method: \"DELETE\",\n url: `${tempUrl}`\n });\n } finally {\n this._notifyAll(upload2);\n }\n };\n this._jobQueue.add(request);\n } else {\n logger.debug(\"Initializing regular upload\", { file, upload: upload2 });\n const blob = await getChunk(file, 0, upload2.size);\n const request = async () => {\n try {\n upload2.response = await uploadData(\n encodedDestinationFile,\n blob,\n {\n signal: upload2.signal,\n onUploadProgress: ({ bytes }) => {\n upload2.uploaded += bytes * 0.9;\n this.updateStats();\n },\n onUploadRetry: () => {\n upload2.uploaded = 0;\n this.updateStats();\n },\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"Content-Type\": file.type\n }\n }\n );\n upload2.uploaded = upload2.size;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n return;\n }\n if (error?.response) {\n upload2.response = error.response;\n }\n upload2.status = Status.FAILED;\n logger.error(`Failed uploading ${file.name}`, { error, file, upload: upload2 });\n reject(t(\"Failed to upload the file\"));\n }\n this._notifyAll(upload2);\n };\n this._jobQueue.add(request);\n this.updateStats();\n }\n this._jobQueue.onIdle().then(() => this.reset());\n return upload2;\n });\n return promise;\n }\n /**\n * Create modification time headers if valid value is available.\n * It can be invalid on Android devices if SD cards with NTFS / FAT are used,\n * as those files might use the NT epoch for time so the value will be negative.\n *\n * @param file The file to upload\n */\n _mtimeHeader(file) {\n const mtime = Math.floor(file.lastModified / 1e3);\n if (mtime > 0) {\n return { \"X-OC-Mtime\": mtime };\n }\n return {};\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction getUploader(isPublic = isPublicShare(), forceRecreate = false) {\n if (forceRecreate || window._nc_uploader === void 0) {\n window._nc_uploader = new Uploader(isPublic);\n }\n return window._nc_uploader;\n}\nfunction upload(destinationPath, file) {\n const uploader = getUploader();\n uploader.upload(destinationPath, file);\n return uploader;\n}\nfunction hasConflict(files, content) {\n return getConflicts(files, content).length > 0;\n}\nfunction getConflicts(files, content) {\n const contentNames = content.map((node) => node.basename);\n const conflicts = files.filter((node) => {\n const name = \"basename\" in node ? node.basename : node.name;\n return contentNames.indexOf(name) !== -1;\n });\n return conflicts;\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-DuPiUBHl.mjs\"));\n return new Promise((resolve, reject) => {\n const picker = new Vue({\n name: \"ConflictPickerRoot\",\n render: (h) => h(ConflictPicker, {\n props: {\n dirname,\n conflicts,\n content,\n recursiveUpload: options?.recursive === true\n },\n on: {\n submit(results) {\n resolve(results);\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n },\n cancel(error) {\n reject(error ?? new Error(\"Canceled\"));\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n }\n }\n })\n });\n picker.$mount();\n document.body.appendChild(picker.$el);\n });\n}\nfunction showInvalidFilenameDialog(error) {\n const InvalidFilenameDialog = defineAsyncComponent(() => import(\"./InvalidFilenameDialog-BM2VDeLo.mjs\"));\n const { promise, reject, resolve } = Promise.withResolvers();\n spawnDialog(\n InvalidFilenameDialog,\n {\n error,\n validateFilename\n },\n (...rest) => {\n const [{ skip, rename }] = rest;\n if (skip) {\n resolve(false);\n } else if (rename) {\n resolve(rename);\n } else {\n reject();\n }\n }\n );\n return promise;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction uploadConflictHandler(contentsCallback) {\n return async (nodes, path) => {\n try {\n const content = await contentsCallback(path).catch(() => []);\n const conflicts = getConflicts(nodes, content);\n if (conflicts.length > 0) {\n const { selected, renamed } = await openConflictPicker(path, conflicts, content, { recursive: true });\n nodes = [\n ...nodes.filter((node) => !conflicts.includes(node)),\n ...selected,\n ...renamed\n ];\n }\n const filesToUpload = [];\n for (const file of nodes) {\n try {\n validateFilename(file.name);\n filesToUpload.push(file);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n logger.error(`Unexpected error while validating ${file.name}`, { error });\n throw error;\n }\n let newName = await showInvalidFilenameDialog(error);\n if (newName !== false) {\n newName = getUniqueName(newName, nodes.map((node) => node.name));\n Object.defineProperty(file, \"name\", { value: newName });\n filesToUpload.push(file);\n }\n }\n }\n if (filesToUpload.length === 0 && nodes.length > 0) {\n const folder = basename(path);\n showInfo(\n folder ? t('Upload of \"{folder}\" has been skipped', { folder }) : t(\"Upload has been skipped\")\n );\n }\n return filesToUpload;\n } catch (error) {\n logger.debug(\"Upload has been cancelled\", { error });\n showWarning(t(\"Upload has been cancelled\"));\n return false;\n }\n };\n}\nfunction normalizeComponent(scriptExports, render6, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render6) {\n options.render = render6;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main$4 = {\n name: \"CancelIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon cancel-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst IconCancel = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconUpload = __component__$1.exports;\nconst _sfc_main = defineComponent({\n name: \"UploadPicker\",\n components: {\n IconCancel,\n IconFolderUpload,\n IconPlus,\n IconUpload,\n NcActionButton,\n NcActionCaption,\n NcActionSeparator,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcProgressBar\n },\n props: {\n accept: {\n type: Array,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the \"new\"-menu for this UploadPicker instance\n */\n noMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the button label\n */\n noLabel: {\n type: Boolean,\n default: false\n },\n /**\n * Make the \"New\"-button primary color.\n */\n primary: {\n type: Boolean,\n default: false\n },\n destination: {\n type: Folder,\n default: void 0\n },\n allowFolders: {\n type: Boolean,\n default: false\n },\n /**\n * List of file present in the destination folder\n * It is also possible to provide a function that takes a relative path to the current directory and returns the content of it\n * Note: If a function is passed it should return the current base directory when no path or an empty is passed\n */\n content: {\n type: [Array, Function],\n default: () => []\n },\n /**\n * Overwrite forbidden characters (by default the capabilities of the server are used)\n * @deprecated Deprecated and will be removed in the next major version\n */\n forbiddenCharacters: {\n type: Array,\n default: () => []\n }\n },\n setup() {\n return {\n t,\n // non reactive data / properties\n progressTimeId: `nc-uploader-progress-${Math.random().toString(36).slice(7)}`\n };\n },\n data() {\n return {\n newFileMenuEntries: [],\n openedMenu: false,\n uploadManager: getUploader()\n };\n },\n computed: {\n menuEntriesUpload() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.UploadFromDevice);\n },\n menuEntriesNew() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.CreateNew);\n },\n menuEntriesOther() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.Other);\n },\n /**\n * Check whether the current browser supports uploading directories\n * Hint: This does not check if the current connection supports this, as some browsers require a secure context!\n */\n canUploadFolders() {\n return this.allowFolders && \"webkitdirectory\" in document.createElement(\"input\");\n },\n queue() {\n return this.uploadManager.queue;\n },\n hasFailure() {\n return this.queue.some((upload2) => upload2.status === Status.FAILED);\n },\n isAssembling() {\n return this.queue.some((upload2) => upload2.status === Status.ASSEMBLING);\n },\n isUploading() {\n return this.queue.some((upload2) => upload2.status !== Status.CANCELLED);\n },\n isOnlyAssembling() {\n return this.isAssembling && this.queue.every((upload2) => (\n // ignore empty uploads or meta uploads\n upload2.size === 0 || upload2.status === Status.ASSEMBLING || upload2.status === Status.FINISHED\n ));\n },\n isPaused() {\n return this.uploadManager.info?.status === UploaderStatus.PAUSED;\n },\n buttonLabel() {\n return this.noMenu ? t(\"Upload\") : t(\"New\");\n },\n haveMenu() {\n return !((this.noMenu || this.newFileMenuEntries.length === 0) && !this.canUploadFolders);\n }\n },\n watch: {\n allowFolders: {\n immediate: true,\n handler() {\n if (typeof this.content !== \"function\" && this.allowFolders) {\n logger.error(\"[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function\");\n }\n }\n },\n destination(destination) {\n this.setDestination(destination);\n },\n isPaused(isPaused) {\n if (isPaused) {\n this.$emit(\"paused\", this.queue);\n } else {\n this.$emit(\"resumed\", this.queue);\n }\n }\n },\n beforeMount() {\n if (this.destination) {\n this.setDestination(this.destination);\n }\n this.uploadManager.addNotifier(this.onUploadCompletion);\n useHotKey(\"u\", this.onKeyDown, {\n stop: true,\n prevent: true,\n shift: true\n });\n useHotKey(\"Escape\", this.onKeyDown, {\n stop: true,\n prevent: true\n });\n logger.debug(\"UploadPicker initialised\");\n },\n methods: {\n etaTimeAndSpeed() {\n const speed = this.uploadManager.eta.speedReadable;\n if (speed) {\n return `${this.uploadManager.eta.timeReadable} (${speed})`;\n }\n return this.uploadManager.eta.timeReadable;\n },\n /**\n * Handle clicking a new-menu entry\n * @param entry The entry that was clicked\n */\n async onClick(entry) {\n entry.handler(\n this.destination,\n await this.getContent().catch(() => [])\n );\n },\n /**\n * Trigger file picker\n * @param uploadFolders Upload folders\n */\n onTriggerPick(uploadFolders = false) {\n const input = this.$refs.input;\n if (this.canUploadFolders) {\n input.webkitdirectory = uploadFolders;\n }\n this.$nextTick(() => input.click());\n },\n /**\n * Helper for backwards compatibility that queries the content of the current directory\n * @param path The current path\n */\n async getContent(path) {\n return Array.isArray(this.content) ? this.content : await this.content(path);\n },\n /**\n * Start uploading\n */\n async onPick() {\n const input = this.$refs.input;\n const files = input.files ? Array.from(input.files) : [];\n try {\n await this.uploadManager.batchUpload(\"\", files, uploadConflictHandler(this.getContent));\n } catch (error) {\n logger.debug(\"Error while uploading\", { error });\n } finally {\n this.resetForm();\n }\n },\n resetForm() {\n const form = this.$refs.form;\n form?.reset();\n },\n /**\n * Cancel ongoing queue\n */\n onCancel() {\n this.uploadManager.queue.forEach((upload2) => {\n upload2.cancel();\n });\n this.resetForm();\n },\n setDestination(destination) {\n if (!this.destination) {\n logger.debug(\"Invalid destination\");\n return;\n }\n this.uploadManager.destination = destination;\n this.newFileMenuEntries = getNewFileMenuEntries(destination);\n },\n onUploadCompletion(upload2) {\n if (upload2.status === Status.FAILED) {\n this.$emit(\"failed\", upload2);\n } else {\n this.$emit(\"uploaded\", upload2);\n }\n },\n onKeyDown(event) {\n if (event.key === \"u\") {\n if (this.haveMenu) {\n this.openedMenu = true;\n return;\n }\n this.onTriggerPick();\n }\n if (event.key === \"Escape\" && this.openedMenu) {\n this.openedMenu = false;\n }\n }\n }\n});\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _vm.destination ? _c(\"form\", { ref: \"form\", staticClass: \"upload-picker\", class: { \"upload-picker--uploading\": _vm.isUploading, \"upload-picker--paused\": _vm.isPaused }, attrs: { \"data-cy-upload-picker\": \"\" } }, [!_vm.haveMenu ? _c(\"NcButton\", { attrs: { \"aria-label\": _vm.buttonLabel, \"disabled\": _vm.disabled, \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }, !_vm.isUploading ? { key: \"default\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.buttonLabel) + \" \")];\n }, proxy: true } : null], null, true) }) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.buttonLabel, \"menu-name\": _vm.noLabel ? void 0 : _vm.buttonLabel, \"open\": _vm.openedMenu, \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"update:open\": function($event) {\n _vm.openedMenu = $event;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1991456921) }, [_c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Upload from device\") } }), _c(\"NcActionButton\", { attrs: { \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"close-after-click\": true }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 337456192) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload files\")) + \" \")]), _vm.canUploadFolders ? _c(\"NcActionButton\", { attrs: { \"close-after-click\": \"\", \"data-cy-upload-picker-add-folders\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-folder\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick(true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconFolderUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 931184598) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload folders\")) + \" \")]) : _vm._e(), !_vm.noMenu ? _vm._l(_vm.menuEntriesUpload, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n }) : _vm._e(), !_vm.noMenu && _vm.menuEntriesNew.length > 0 ? [_c(\"NcActionSeparator\"), _c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Create new\") } }), _vm._l(_vm.menuEntriesNew, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e(), !_vm.noMenu && _vm.menuEntriesOther.length > 0 ? [_c(\"NcActionSeparator\"), _vm._l(_vm.menuEntriesOther, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e()], 2), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.isUploading, expression: \"isUploading\" }], staticClass: \"upload-picker__progress\" }, [_c(\"NcProgressBar\", { attrs: { \"aria-label\": _vm.t(\"Upload progress\"), \"aria-describedby\": _vm.progressTimeId, \"data-cy-upload-picker-progress\": \"\", \"error\": _vm.hasFailure, \"value\": _vm.uploadManager.eta.progress, \"size\": \"medium\" } }), _c(\"p\", { attrs: { \"id\": _vm.progressTimeId, \"data-cy-upload-picker-progress-label\": \"\" } }, [_vm.isPaused ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"paused\")) + \" \")]) : _vm.isOnlyAssembling ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"assembling\")) + \" \")]) : _c(\"span\", { attrs: { \"title\": _vm.etaTimeAndSpeed() } }, [_vm._v(\" \" + _vm._s(_vm.uploadManager.eta.timeReadable) + \" \"), _vm.uploadManager.eta.speedReadable && _vm.uploadManager.eta.time >= 60 ? _c(\"span\", [_vm._v(\" (\" + _vm._s(_vm.uploadManager.eta.speedReadable) + \") \")]) : _vm._e()])])], 1), _vm.isUploading && !_vm.isOnlyAssembling ? _c(\"NcButton\", { staticClass: \"upload-picker__cancel\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.t(\"Cancel uploads\"), \"data-cy-upload-picker-cancel\": \"\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconCancel\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3076329829) }) : _vm._e(), _c(\"input\", { ref: \"input\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join?.(\", \"), \"multiple\": _vm.multiple, \"data-cy-upload-picker-input\": \"\", \"type\": \"file\" }, on: { \"change\": _vm.onPick } })], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a66c1264\"\n);\nconst UploadPicker = __component__.exports;\nexport {\n EtaStatus as E,\n Status as S,\n Upload as U,\n isFileSystemFileEntry as a,\n n as b,\n Uploader as c,\n UploaderStatus as d,\n getConflicts as e,\n uploadConflictHandler as f,\n getUploader as g,\n hasConflict as h,\n isFileSystemEntry as i,\n UploadPicker as j,\n logger as l,\n normalizeComponent as n,\n openConflictPicker as o,\n t,\n upload as u\n};\n//# sourceMappingURL=index-DPkUyJ8g.mjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1035\":\"da08d310d18692ca4e27\",\"1140\":\"dd55e1cf2dab9870eea9\",\"1764\":\"3654558a3474ec02b609\",\"2221\":\"5cdd551ed83d9a12c3ed\",\"2457\":\"ce6348bfa704a5bf56fb\",\"3145\":\"3908fb4074194097d3f5\",\"4271\":\"101cdb0f1357424796fd\",\"4723\":\"934c36402dc782526ac6\",\"5448\":\"71cfe268d6f1213c4735\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"8ac07126adf0759a3464\",\"6798\":\"55fb835b251fd3f7de19\",\"7471\":\"b4ac70873a3ab192efd0\",\"7859\":\"5bcb1bbacda3204063dd\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"0f63c2eb085d7b08be1b\",\"9281\":\"29ef7f217a0c6b239922\",\"9906\":\"24447948ddfe6cf1ef05\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2882;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t2882: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(50252)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","script","name","props","to","type","String","required","where","default","disabled","Boolean","data","nodes","waiting","observer","parent","watch","value","this$1","this","disable","$nextTick","teardownObserver","bootObserver","move","mounted","Array","from","$el","childNodes","maybeMove","beforeDestroy","getComponentChildrenNode","computed","classes","methods","document","querySelector","prepend","getFragment","appendChild","fragment","createDocumentFragment","forEach","node","onMutations","mutations","shouldMove","i","length","mutation","filteredAddedNodes","addedNodes","filter","includes","removedNodes","MutationObserver","observe","body","childList","subtree","attributes","characterData","childObserver","find","target","parentNode","removeChild","disconnect","$vnode","componentOptions","children","map","elm","normalizeComponent","template","style","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","options","render","staticRenderFns","_compiled","functional","_scopeId","context","ssrContext","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","HEAD","isOldIE","navigator","test","userAgent","toLowerCase","id","css","group","media","styles","ids","Set","has","code","source","sources","btoa","unescape","encodeURIComponent","JSON","stringify","element","createElement","setAttribute","undefined","head","getElementsByTagName","push","styleSheet","cssText","join","index","size","textNode","createTextNode","insertBefore","addStyle","__vue_script__","__vue_render__","_vm","_h","$createElement","_self","_c","class","_t","_withStripped","__vue_component__","inject","install","Vue","installed","component","GlobalVue","window","use","emits","title","fillColor","Number","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","width","ref","isWide","isMedium","isNarrow","ResizeObserver","contentBoxSize","inlineSize","contentRect","updateObserver","el","unobserve","useFileListWidth","onMounted","readonly","allViews","shallowRef","visibleViews","view","hidden","initialized","useViews","navigation","getNavigation","addEventListener","views","useVisibleViews","queue","getQueue","PQueue","concurrency","MoveCopyAction","loadState","Permission","NONE","HintException","Error","Directory","File","constructor","contents","super","_defineProperty","_contents","_computeDirectorySize","lastModified","Date","now","_computeDirectoryMtime","directory","reduce","acc","file","entry","async","traverseTree","isFile","Promise","resolve","reject","logger","debug","entries","dirReader","createReader","getEntries","readEntries","results","error","readDirectory","all","flat","createDirectoryIfNotExists","path","destination","davUrl","defaultRemoteURL","defaultRootPath","davRoot","root","davClient","getClient","exists","createDirectory","recursive","stat","details","getDefaultPropfind","emit","resultToNode","resolveConflict","files","conflicts","basename","uploads","selected","renamed","openConflictPicker","showInfo","t","info","warn","showWarning","dataTransferToFileTree","items","item","kind","getAsEntry","webkitGetAsEntry","warned","fileTree","DataTransferItem","getAsFile","showError","onDropExternalFiles","uploader","getUploader","hasConflict","uploadDirectoryContents","relativePath","upload","pause","start","errors","allSettled","result","status","showSuccess","onDropInternalFiles","isCopy","promises","fromAsync","method","overwrite","FileType","Folder","MOVE","some","dirname","startsWith","nameMapping","Map","otherNodes","getContents","getConflicts","nodesToRename","content","n","c","skipped","usedNames","newName","getUniqueName","ignoreFileExtension","set","actionFinished","mode","text","toast","showLoading","hideToast","createLoadingNotification","displayname","NodeStatus","LOADING","client","currentPath","destinationPath","get","COPY","copyFile","moveFile","response","parser","DOMParser","message","parseFromString","textContent","handleCopyMoveNodesTo","useDragAndDropStore","defineStore","state","dragging","actions","selection","reset","useSelectionStore","lastSelection","lastSelectedIndex","setLastIndex","useUploaderStore","args","store","defineComponent","components","NcActionButton","NcBreadcrumbs","NcBreadcrumb","NcIconSvgWrapper","setup","activeStore","useActiveStore","filesStore","useFilesStore","pathsStore","usePathsStore","draggingStore","selectionStore","uploaderStore","isMenuOpen","activeFolder","isSharingEnabled","getCapabilities","files_sharing","isPublic","isPublicShare","canShare","permissions","SHARE","openSharingSidebar","getSidebar","open","mdiAccountPlus","mdiChevronDown","mdiChevronUp","mdiReload","dirs","split","replace","sections","dir","getFileSourceFromPath","getNodeFromSource","exact","getDirDisplayName","getTo","disableDrop","isUploadInProgress","wrapUploadProgressBar","viewIcon","activeView","icon","selectedFiles","draggingFiles","getNode","getPath","$route","params","query","fileid","onDragOver","event","dataTransfer","ctrlKey","dropEffect","onDrop","preventDefault","controller","AbortController","signal","folder","canDrop","CREATE","button","titleForSection","section","ariaForSection","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","scopedSlots","_u","key","fn","proxy","_l","nativeOn","TrayArrowDownIcon","currentFolder","Object","dragover","canUpload","isQuotaExceeded","cantUploadLabel","resetDragOver","debounce","mainContent","getElementById","onDragLeave","onContentDrop","beforeUnmount","removeEventListener","isForeignFile","types","currentTarget","contains","relatedTarget","clear","stopPropagation","lastUpload","findLast","UploadStatus","FAILED","webkitRelativePath","headers","$router","directives","rawName","expression","isFileListFilterWithUi","useFiltersStore","chips","filters","activeChips","values","sortedFilters","sort","a","b","order","filtersWithUI","addFilter","onFilterUpdateChips","onFilterUpdate","detail","registry","getFilesRegistry","initialFilters","getFileListFilters","filterId","findIndex","splice","removeFilter","subscribe","onViewChanged","initialize","_defineComponent","__name","__props","filterStore","visualFilters","hasActiveFilters","selectedFilter","boundary","__sfc","menuTriggerId","mdiArrowLeft","mdiFilterVariant","NcButton","NcPopover","_setup","$style","fileListFilters","iconSvgInline","displayName","fileListFilters__popoverContainer","tagName","tag","domProps","fileListFilters__popoverFilterView","Function","updateRootElement","currentView","replaceChildren","openedSubmenu","enabledSubmenuActions","enabledFileActions","record","action","isValidMenu","onBackToMenuClick","menuAction","$refs","focus","executeAction","currentNode","activeNode","_children","enabled","activeAction","success","exec","ArrowLeftIcon","CustomElementRender","NcActions","NcActionSeparator","NcLoadingIcon","mixins","actionsMixins","opened","gridMode","isActive","isLoading","actionContext","enabledInlineActions","inline","enabledRenderActions","renderInline","enabledMenuActions","DefaultType","HIDDEN","self","topActionsIds","renderedNonDestructiveActions","destructive","renderedDestructiveActions","openedMenu","getBoundariesElement","created","useHotKey","onKeyDown","stop","prevent","actionDisplayName","isLoadingAction","onActionClick","onMenuClose","onMenuClosed","refInFor","NcCheckboxRadioSwitch","keyboardStore","altKey","metaKey","shiftKey","onEvent","_initialized","useKeyboardStore","isSelected","ariaLabel","loadingLabel","onToggleSelect","ctrl","shift","onSelectionChange","newSelectedIndex","isAlreadySelected","Math","min","end","max","filesToSelect","slice","resetSelection","indexOf","_k","keyCode","apply","arguments","useRenamingStore","renamingNode","newNodeName","isRenaming","$reset","rename","oldName","trim","userConfig","useUserConfigStore","show_dialog_file_extension","oldExtension","extname","newExtension","promise","withResolvers","spawnDialog","defineAsyncComponent","showFileExtensionDialog","show_hidden","filename","showHiddenFileDialog","oldEncodedSource","encodedSource","axios","url","Destination","Overwrite","fetchNode","oldSource","isAxiosError","cause","getFilenameValidity","escape","validateFilename","InvalidFilenameError","reason","InvalidFilenameErrorReason","Character","char","segment","ReservedName","Extension","match","extension","NcTextField","renamingStore","userConfigStore","defaultFileAction","isRenamingSmallScreen","renameLabel","linkTo","is","tabindex","immediate","handler","renaming","startRenaming","input","renameInput","validity","checkIfNodeExists","setCustomValidity","reportValidity","sourceName","setSelectionRange","dispatchEvent","Event","stopRenaming","onRename","renameForm","checkValidity","nameContainer","model","callback","$$v","show_files_extensions","StarSvg","mdiPlus","usePreviewImage","toValue","fallback","mime","previewUrl","generateUrl","URL","location","origin","href","crop","sizeX","sizeY","token","getSharingToken","searchParams","toString","etag","mtime","getTime","AccountGroupIcon","AccountPlusIcon","CollectivesIcon","FavoriteIcon","FileIcon","FolderIcon","FolderOpenIcon","KeyIcon","LinkIcon","NetworkIcon","TagIcon","RecentlyCreatedIcon","toRef","crop_image_previews","backgroundFailed","backgroundLoaded","isFavorite","favorite","isRecentlyCreated","crtime","oneDayAgo","setDate","getDate","isRecentView","fileOverlay","PlayCircleIcon","folderOverlay","shareTypes","ShareType","Link","Email","hasBlurhash","canvas","drawBlurhash","previewImg","src","onBackgroundLoad","onBackgroundError","height","pixels","decode","ctx","getContext","imageData","createImageData","putImageData","_m","useFileActions","getFileActions","useRouteParameters","route","useRoute","fileId","parseInt","isNaN","openFile","openfile","toLocaleLowerCase","openDetails","opendetails","useActionsMenuStore","available","sidebar","hotkey","description","getSummaryFor","fileCount","folderCount","summary","fileSummary","folderSummary","hiddenSummary","extend","FileMultipleIcon","isSingleNode","isSingleFolder","totalSize","total","formatFileSize","update","preview","cloneNode","Preview","DragAndDropPreview","directive","vOnClickOutside","NcFile","Node","isMtimeAvailable","compact","provide","uniqueId","str","hash","charCodeAt","hashCode","currentRouteFileId","isFailedSource","canDrag","UPDATE","every","actionsMenuStore","mtimeOpacity","maxOpacityTime","timeDiff","opacityTime","color","round","newSource","resetState","closest","removeProperty","onRightClick","getBoundingClientRect","setProperty","clientX","left","clientY","top","isMoreThanOneSelected","execDefaultAction","metaKeyPressed","READ","downloadAttribute","parse","scope","isDownloadable","openDetailsIfAvailable","sidebarAction","onDragStart","clearData","image","$mount","$on","$off","getDragAndDropPreview","setDragImage","onDragEnd","cachedContents","getNodesByPath","FileEntryActions","FileEntryCheckbox","FileEntryName","FileEntryPreview","NcDateTime","FileEntryMixin","isMimeAvailable","isSizeAvailable","storeToRefs","rowListeners","dragstart","contextmenu","dragleave","dragend","drop","columns","OC","MimeTypeList","names","baseType","ext","toUpperCase","sizeOpacity","pow","triggerDefaultAction","adaptColumnRenderToCustomElementRender","column","_g","inheritAttrs","r","_sfc_main","ariaLabelClose","actionsContainer","validator","iconPath","iconSvg","noClose","variant","slots","realVariant","canClose","hasActions","hasIcon","mdiClose","_sfc_render","_sfc_staticRenderFns","NcChip","exports","NcAvatar","fileListFilterChips","chip","onclick","user","searchStore","useSearchStore","getPinia","isVisible","onClick","header","queueUpdate","initialRender","mount","then","catch","destroyed","updated","classForColumn","FILE_LIST_HEAD_FIRST_BATCH_ACTION_ID","selectedNodes","boundariesElement","inlineActions","loading","execBatch","childrenActionsIds","menuActions","areSomeNodesLoading","firstActionId","at","firstButton","actionsMenu","onFirstButtonFocusOut","selectionSources","$set","failedSources","e","FILES_LIST_HEADER_SELECT_ALL_CHECKBOX_ID","translate","idx","initialViewConfig","useViewConfigStore","viewConfigs","getCurrentUser","put","viewId","onUpdate","getConfig","viewid","setSortingBy","toggleSortingDirection","sorting_direction","mapState","sortingMode","sorting_mode","defaultSortKey","isAscSorting","sortingDirection","toggleSortBy","MenuDown","MenuUp","filesSortingMixin","FilesListTableHeaderButton","selectAllBind","label","checked","isAllSelected","indeterminate","isSomeSelected","isNoneSelected","onToggleAll","selectAllCheckbox","onSelectAllCheckboxFocusOut","ariaSortForMode","firstBatchActionButton","dataComponent","dataKey","dataSources","extraProps","scrollToIndex","caption","fileListWidth","beforeHeight","footerHeight","headerHeight","tableHeight","resizeObserver","isReady","bufferItems","columnCount","itemHeight","itemWidth","visibleRows","floor","rowCount","startIndex","firstColumnIndex","shownItems","renderedItems","oldItemsKeys","$_recycledPool","unusedKeys","keys","pop","random","substr","totalRowCount","ceil","tbodyStyle","rowsAbove","rowsBelow","paddingBlock","minHeight","scrollTo","oldColumnCount","updateHeightVariables","onScroll","before","footer","lastVisibleIndex","totalRows","clampedIndex","scrollTop","indexToScrollPos","_onScrollHandle","requestAnimationFrame","scrollPosToIndex","scrollPos","topScroll","clientHeight","theadHeight","thead","filterHeight","$scopedSlots","sorted","FileListFilterChips","FileListFilterToSearch","FilesListHeader","FilesListTableFooter","FilesListTableHeader","VirtualList","FilesListTableHeaderActions","View","show_mime_column","getFileListHeaders","FileEntry","FileEntryGrid","cantUpload","defaultCaption","isEmpty","handleOpenQueries","unselectFile","handleOpenFile","openSidebarForFile","scrollToFile","defaultAction","useEnabledFileActions","OCP","Files","Router","goToRoute","tableElement","table","tableTop","tableBottom","grid_view","setActiveNode","nextIndex","nextNode","count","useSidebarStore","activeTab","isOpen","hasContext","currentContext","currentActions","getActions","currentTabs","getTabs","tabId","setActiveTab","newTabs","close","tabs","getSidebarTabs","tab","getSidebarActions","_router","afterEach","defaultView","default_view","quota","BreadCrumbs","DragAndDropNotice","FileListFilters","FilesListVirtual","ListViewIcon","NcAppContent","NcEmptyContent","Teleport","UploadPicker","ViewGridIcon","IconAlertCircleOutline","IconReload","filtersStore","viewConfigStore","enableGridView","forbiddenCharacters","dirContents","enabledFileListActions","getFileListActions","useEnabledFileListActions","stopWatching","nextTick","loadingAction","dirContentsFiltered","getContent","normalizedPath","normalize","pageHeading","dirContentsSorted","customColumn","reverse","sortNodes","sortFavoritesFirst","sort_favorites_first","sortFoldersFirst","sort_folders_first","sortingOrder","aa","relative","bb","isEmptyDir","isRefreshing","toPreviousDir","gridViewButtonLabel","showCustomEmptyView","emptyView","debouncedFetchContent","useThrottleFn","fetchContent","show","customEmptyView","newView","oldView","newDir","oldDir","filesListVirtual","filterDirContent","onUpdatedNode","onUpdateSearch","unmounted","unsubscribe","once","abort","updateNodes","setRoot","service","addPath","fatal","isWebDAVClientError","humanizeWebDAVError","onUpload","onUploadFail","CANCELLED","doc","toggleGridView","execFileListAction","emptyTitle","emptyCaption","getRemoteURL","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","collator","level","viewConfig","isExpanded","expanded","childViews","v","isDescendant","parentView","sortedChildViews","compare","hasChildViews","navigationRoute","childViewsLoaded","loadChildViews","maxLevel","onExpandCollapse","NcAppNavigationItem","sticky","childView","rootViews","sortViews","NcAppNavigationList","FilesNavigationListItem","filesNavigationList","remove","useRouter","beforeResolve","next","VIEW_ID","onUnmounted","onBeforeNavigation","isSearchView","searchLabel","mdiMagnify","mdiSearchWeb","NcAppNavigationSearch","throttle","delay","timeoutID","_ref","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","_key","elapsed","setTimeout","cancel","_ref2$upcomingOnly","upcomingOnly","ChartPie","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","usedQuotaByte","used","quotaByte","storageStatsTooltip","beforeMount","throttleUpdateStorageStats","free","showStorageFullWarning","debounceUpdateStorageStats","_ref$atBegin","atBegin","updateStorageStats","slot","NcAppSettingsSection","NcFormBox","NcFormBoxSwitch","mdiAccountOutline","mdiFolderOutline","NcRadioGroup","NcRadioGroupButton","folder_tree","setting","onBeforeMount","onBeforeUnmount","apiSettings","OCA","Settings","settings","localeCompare","FilesAppSettingsLegacyApiEntry","actionHotkeys","hotkeyToString","parts","alt","NcAppSettingsShortcutsSection","NcHotkey","NcHotkeyList","show_dialog_deletion","webDavUrl","generateRemoteUrl","uid","webDavDocsUrl","appPasswordUrl","isTwoFactorEnabled","NcFormBoxButton","NcFormBoxCopyButton","showKeyboardShortcuts","scrollIntoView","behavior","NcAppSettingsDialog","FilesAppSettingsAppearance","FilesAppSettingsGeneral","FilesAppSettingsLegacyApi","FilesAppSettingsShortcuts","FilesAppSettingsWarnings","FilesAppSettingsWebDav","settingsOpened","currentViewId","watchEffect","setActive","NcAppNavigation","IconCog","FilesNavigationList","FilesNavigationSearch","NavigationQuota","FilesAppSettings","isFavourited","mdiStar","NcUserBubble","filesSidebarSubname","filesSidebarSubname__separator","owner","filesSidebarSubname__userBubble","N","Symbol","toStringTag","initializedTabs","active","onInit","customElements","whenDefined","NcAppSidebarTab","background","Image","onload","onClosed","onOpened","onToggle","NcAppSidebar","FilesSidebarSubname","FilesSidebarTab","router","old","new","useHotKeys","NcContent","FilesList","FilesNavigation","FilesSidebar","originalPush","prototype","ignoreDuplicateNavigation","originalReplace","isNavigationFailure","NavigationFailureType","duplicated","base","linkActiveClass","routes","redirect","stringifyQuery","queryString","onError","aborted","parentIntercept","fromDir","toDir","fromSource","currentRoute","parentFolder","RouterService","goTo","__webpack_nonce__","getCSPNonce","assign","PiniaVuePlugin","_settings","register","Setting","_classPrivateFieldInitSpec","_name","_options","_classPrivateFieldSet","_classPrivateFieldGet","FilesApp","pinia","getRootPath","propfindPayload","contentsResponse","getDirectoryContents","includeSelf","defaultGetContents","getDirectoryByPath","rootPath","searchNodes","getLocalSearch","search","getDavNameSpaces","getDavProperties","escapeHTML","getBaseUrl","dummyFolder","onDeletedNode","onChangedView","roots","getNodes","getNodesById","getRoot","newNodes","deleteNodes","fromEntries","ourNode","_nc_files_pinia","createPinia","paths","getters","payload","deletePath","delete","onCreatedNode","addNodeToParentChildren","deleteNodeFromParentChildren","onMovedNode","oldPath","oldNode","parentSource","updateSearch","current","updateRouter","isSearch","initialUserConfig","___CSS_LOADER_EXPORT___","module","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","s","davProperties","prop","davNamespaces","ns","getRecentSearch","remoteURL","setHeaders","requesttoken","patch","headers2","fetch","getFavoriteNodes","filesRoot","userId","permString","P","WRITE","DELETE","parsePermissions","lastmod","creationdate","nodeData","getcontentlength","hasPreview","gtBuilder","detectLocale","addTranslation","locale","json","gt","ngettext","bind","gettext","UploadCancelledError","uploadData","uploadData2","uploadOptions","onUploadProgress","onUploadRetry","retries","Blob","destinationFile","request","retryDelay","retryCount","retryCondition","onRetry","getChunk","getMaxChunksSize","fileSize","maxChunkSize","appConfig","max_chunk_size","minimumChunkSize","Status","Status2","Upload","_source","_file","_isChunked","_chunks","_size","_uploaded","_startTime","_status","_controller","_response","chunked","chunks","isChunked","startTime","uploaded","isFileSystemFileEntry","o","FileSystemFileEntry","isFileSystemEntry","FileSystemEntry","_originalName","_path","sum","latest","originalName","getChild","addChildren","addChild","FileSystemDirectoryEntry","reader","child","filePath","relPath","Eta","_done","_total","_progress","_elapsedTime","_speed","_eta","Infinity","_cutoffTime","resume","cutoffTime","done","deltaDone","deltaTime","historyNeeded","alpha","filtered","eta","dispatchTypedEvent","CustomEvent","cancelable","progress","time","timeReadable","seconds","hours","padStart","minutes","speed","speedReadable","UploaderStatus","UploaderStatus2","Uploader","_destinationFolder","_isPublic","_customHeaders","_uploadQueue","_jobQueue","chunked_upload","max_parallel_count","_queueSize","_queueProgress","_queueStatus","_notifiers","destinationFolder","ALL","maxChunksSize","customHeaders","structuredClone","setCustomHeader","deleteCustomerHeader","updateStats","upload2","partialSum","pending","INITIALIZED","UPLOADING","ASSEMBLING","addNotifier","notifier","_notifyAll","batchUpload","files2","onCancel","rootFolder","uploadDirectory","FINISHED","folderPath","currentUpload","selectedForUpload","directories","fileHandle","encodedDestinationFile","resolve2","supportsPublicChunking","dav","public_shares_chunking","disabledChunkUpload","blob","bytes","_mtimeHeader","tempUrl","chunksWorkspace","initChunkWorkspace","chunksQueue","chunk","bufferStart","bufferEnd","request2","chunkBytes","progressBytes","onIdle","forceRecreate","_nc_uploader","contentNames","ConflictPicker","picker","recursiveUpload","submit","$destroy","showInvalidFilenameDialog","InvalidFilenameDialog","rest","skip","scriptExports","render6","functionalTemplate","injectStyles","IconCancel","IconFolderUpload","IconPlus","IconUpload","NcActionCaption","accept","multiple","noMenu","noLabel","primary","allowFolders","progressTimeId","newFileMenuEntries","uploadManager","menuEntriesUpload","category","UploadFromDevice","menuEntriesNew","CreateNew","menuEntriesOther","Other","canUploadFolders","hasFailure","isAssembling","isUploading","isOnlyAssembling","isPaused","PAUSED","buttonLabel","haveMenu","setDestination","onUploadCompletion","etaTimeAndSpeed","onTriggerPick","uploadFolders","webkitdirectory","click","isArray","onPick","contentsCallback","filesToUpload","defineProperty","resetForm","form","iconClass","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","fulfilled","j","getter","__esModule","definition","enumerable","f","chunkId","u","obj","hasOwnProperty","l","needAttach","scripts","getAttribute","charset","onScriptComplete","prev","onerror","timeout","doneFns","nmd","scriptUrl","globalThis","importScripts","currentScript","p","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files-main.js?v=1f28cf313a7b39a6b23a","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/node_modules/vue2-teleport/dist/teleport.esm.js","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?5dae","webpack:///nextcloud/node_modules/vue-material-design-icons/FormatListBulletedSquare.vue?vue&type=template&id=64cece03","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Reload.vue?2e35","webpack:///nextcloud/node_modules/vue-material-design-icons/Reload.vue?vue&type=template&id=39a07256","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGridOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGridOutline.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ViewGridOutline.vue?0216","webpack:///nextcloud/node_modules/vue-material-design-icons/ViewGridOutline.vue?vue&type=template&id=0c2dec16","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue","webpack:///nextcloud/apps/files/src/composables/useFileListWidth.ts","webpack:///nextcloud/apps/files/src/composables/useViews.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyActionUtils.ts","webpack:///nextcloud/apps/files/src/actions/moveOrCopyAction.ts","webpack:///nextcloud/apps/files/src/services/DropServiceUtils.ts","webpack:///nextcloud/apps/files/src/services/DropService.ts","webpack:///nextcloud/apps/files/src/store/dragging.ts","webpack:///nextcloud/apps/files/src/store/selection.ts","webpack:///nextcloud/apps/files/src/store/uploader.ts","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?1045","webpack://nextcloud/./apps/files/src/components/BreadCrumbs.vue?d357","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/TrayArrowDown.vue?a897","webpack:///nextcloud/node_modules/vue-material-design-icons/TrayArrowDown.vue?vue&type=template&id=5dbf2618","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?e578","webpack://nextcloud/./apps/files/src/components/DragAndDropNotice.vue?a2e0","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilters.vue","webpack:///nextcloud/apps/files/src/store/filters.ts","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilters.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilters.vue?5f13","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilters.vue?9837","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue","webpack:///nextcloud/apps/files/src/components/CustomElementRender.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/CustomElementRender.vue?5f5c","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/ArrowLeft.vue?f857","webpack:///nextcloud/node_modules/vue-material-design-icons/ArrowLeft.vue?vue&type=template&id=16833c02","webpack:///nextcloud/apps/files/src/mixins/actionsMixin.ts","webpack:///nextcloud/apps/files/src/utils/actionUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?bd19","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?9338","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryActions.vue?7b52","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryCheckbox.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/store/keyboard.ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryCheckbox.vue?a18b","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue","webpack:///nextcloud/apps/files/src/store/renaming.ts","webpack:///nextcloud/apps/files/src/utils/filenameValidity.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?88e4","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryName.vue?98a4","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountGroup.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountGroup.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountGroup.vue?1c79","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountGroup.vue?vue&type=template&id=fa2b1464","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/AccountPlus.vue?2818","webpack:///nextcloud/node_modules/vue-material-design-icons/AccountPlus.vue?vue&type=template&id=53a26aa0","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/FolderOpen.vue?6818","webpack:///nextcloud/node_modules/vue-material-design-icons/FolderOpen.vue?vue&type=template&id=ae0c5fc0","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Key.vue?157c","webpack:///nextcloud/node_modules/vue-material-design-icons/Key.vue?vue&type=template&id=499b3412","webpack:///nextcloud/node_modules/vue-material-design-icons/NetworkOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/NetworkOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/NetworkOutline.vue?5a96","webpack:///nextcloud/node_modules/vue-material-design-icons/NetworkOutline.vue?vue&type=template&id=8f00cb50","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/PlayCircle.vue?0c26","webpack:///nextcloud/node_modules/vue-material-design-icons/PlayCircle.vue?vue&type=template&id=3cc1493c","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/Tag.vue?6116","webpack:///nextcloud/node_modules/vue-material-design-icons/Tag.vue?vue&type=template&id=356230e0","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/FileEntry/CollectivesIcon.vue","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?1937","webpack://nextcloud/./apps/files/src/components/FileEntry/CollectivesIcon.vue?949d","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?227e","webpack://nextcloud/./apps/files/src/components/FileEntry/FavoriteIcon.vue?62c6","webpack:///nextcloud/apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue","webpack://nextcloud/./apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue?2c65","webpack://nextcloud/./apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue?75c1","webpack:///nextcloud/apps/files/src/composables/usePreviewImage.ts","webpack:///nextcloud/apps/files/src/services/LivePhotos.ts","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry/FileEntryPreview.vue?8c1f","webpack:///nextcloud/apps/files/src/composables/useFileActions.ts","webpack:///nextcloud/apps/files/src/composables/useRouteParameters.ts","webpack:///nextcloud/apps/files/src/store/actionsmenu.ts","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=script&lang=js","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/FileMultiple.vue?6e9d","webpack:///nextcloud/node_modules/vue-material-design-icons/FileMultiple.vue?vue&type=template&id=15fca808","webpack:///nextcloud/apps/files/src/utils/fileUtils.ts","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?34b2","webpack://nextcloud/./apps/files/src/components/DragAndDropPreview.vue?36f6","webpack:///nextcloud/apps/files/src/utils/dragUtils.ts","webpack:///nextcloud/apps/files/src/components/FileEntryMixin.ts","webpack:///nextcloud/apps/files/src/utils/hashUtils.ts","webpack:///nextcloud/apps/files/src/utils/permissions.ts","webpack:///nextcloud/apps/files/src/components/FileEntry.vue","webpack:///nextcloud/apps/files/src/components/FileEntry.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntry.vue?da7c","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue","webpack:///nextcloud/apps/files/src/components/FileEntryGrid.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FileEntryGrid.vue?bb8e","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterChips.vue","webpack://nextcloud/./node_modules/@nextcloud/vue/dist/assets/NcChip-DLfUzq07.css?b679","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/Components/NcChip.mjs","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterChips.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterChips.vue?d193","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterChips.vue?e408","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterToSearch.vue","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FileListFilter/FileListFilterToSearch.vue?feab","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesListHeader.vue","webpack://nextcloud/./apps/files/src/components/FilesListHeader.vue?349b","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?e251","webpack://nextcloud/./apps/files/src/components/FilesListTableFooter.vue?fa4c","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?3226","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderActions.vue?9494","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue","webpack:///nextcloud/apps/files/src/store/viewConfig.ts","webpack:///nextcloud/apps/files/src/mixins/filesSorting.ts","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?9000","webpack://nextcloud/./apps/files/src/components/FilesListTableHeaderButton.vue?e364","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?9675","webpack://nextcloud/./apps/files/src/components/FilesListTableHeader.vue?b1c9","webpack:///nextcloud/apps/files/src/components/VirtualList.vue?vue&type=script&lang=ts","webpack:///nextcloud/apps/files/src/components/VirtualList.vue","webpack://nextcloud/./apps/files/src/components/VirtualList.vue?37fa","webpack:///nextcloud/apps/files/src/composables/useFileListHeaders.ts","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?1471","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?f60a","webpack://nextcloud/./apps/files/src/components/FilesListVirtual.vue?3555","webpack:///nextcloud/apps/files/src/composables/useFileListActions.ts","webpack:///nextcloud/apps/files/src/store/sidebar.ts","webpack:///nextcloud/apps/files/src/utils/filesViews.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue","webpack:///nextcloud/apps/files/src/utils/davUtils.ts","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=script&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesList.vue?6ae6","webpack://nextcloud/./apps/files/src/views/FilesList.vue?1e5b","webpack:///nextcloud/apps/files/src/views/FilesNavigation.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CogOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/CogOutline.vue?vue&type=script&lang=js","webpack://nextcloud/./node_modules/vue-material-design-icons/CogOutline.vue?045c","webpack:///nextcloud/node_modules/vue-material-design-icons/CogOutline.vue?vue&type=template&id=96fed70c","webpack:///nextcloud/apps/files/src/components/FilesNavigationList.vue","webpack:///nextcloud/apps/files/src/services/FolderTree.ts","webpack:///nextcloud/apps/files/src/components/FilesNavigationListItem.vue","webpack:///nextcloud/apps/files/src/components/FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationListItem.vue?adcc","webpack:///nextcloud/apps/files/src/components/FilesNavigationList.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationList.vue?a941","webpack://nextcloud/./apps/files/src/components/FilesNavigationList.vue?110b","webpack:///nextcloud/apps/files/src/components/FilesNavigationSearch.vue","webpack:///nextcloud/apps/files/src/components/FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/composables/useBeforeNavigation.ts","webpack://nextcloud/./apps/files/src/components/FilesNavigationSearch.vue?a917","webpack:///nextcloud/node_modules/throttle-debounce/esm/index.js","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPieOutline.vue","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPieOutline.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=script&lang=js","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue","webpack://nextcloud/./node_modules/vue-material-design-icons/ChartPieOutline.vue?0c3f","webpack:///nextcloud/node_modules/vue-material-design-icons/ChartPieOutline.vue?vue&type=template&id=a29cc97a","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?b9c1","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?2966","webpack://nextcloud/./apps/files/src/components/NavigationQuota.vue?08cb","webpack:///nextcloud/apps/files/src/views/FilesAppSettings.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsAppearance.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsAppearance.vue?f01b","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsGeneral.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsGeneral.vue?3c4f","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApiEntry.vue","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApiEntry.vue?4bf8","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApi.vue","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsLegacyApi.vue?afdf","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsShortcuts.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsShortcuts.vue?09e9","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWarnings.vue","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsWarnings.vue?ccbe","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWebDav.vue","webpack:///nextcloud/apps/files/src/components/FilesAppSettings/FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true","webpack://nextcloud/./apps/files/src/components/FilesAppSettings/FilesAppSettingsWebDav.vue?7317","webpack:///nextcloud/apps/files/src/views/FilesAppSettings.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesAppSettings.vue?38e4","webpack:///nextcloud/apps/files/src/views/FilesNavigation.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesNavigation.vue?d107","webpack://nextcloud/./apps/files/src/views/FilesNavigation.vue?e4aa","webpack:///nextcloud/apps/files/src/views/FilesSidebar.vue","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?0f62","webpack://nextcloud/./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?bfcc","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/components/FilesSidebar/FilesSidebarTab.vue?4ce1","webpack:///nextcloud/apps/files/src/views/FilesSidebar.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/views/FilesSidebar.vue?66bc","webpack://nextcloud/./apps/files/src/views/FilesSidebar.vue?9144","webpack:///nextcloud/apps/files/src/FilesApp.vue","webpack:///nextcloud/apps/files/src/composables/useHotKeys.ts","webpack:///nextcloud/apps/files/src/FilesApp.vue?vue&type=script&setup=true&lang=ts","webpack://nextcloud/./apps/files/src/FilesApp.vue?597e","webpack:///nextcloud/apps/files/src/router/router.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/apps/files/src/main.ts","webpack:///nextcloud/apps/files/src/services/Settings.js","webpack:///nextcloud/apps/files/src/models/Setting.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files/src/services/WebDavSearch.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/search.ts","webpack:///nextcloud/apps/files/src/store/userconfig.ts","webpack:///nextcloud/apps/files/src/views/search.ts","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/assets/NcChip-DLfUzq07.css","webpack:///nextcloud/apps/files/src/components/BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=0&id=1a9725ff&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/components/FilesListVirtual.vue?vue&type=style&index=1&id=1a9725ff&prod&lang=scss","webpack:///nextcloud/apps/files/src/components/NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/views/FilesList.vue?vue&type=style&index=0&id=ed23df10&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss","webpack:///nextcloud/apps/files/src/views/FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css","webpack:///nextcloud/apps/files/src/components/FileListFilter/FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css","webpack:///nextcloud/apps/files/src/components/FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css","webpack:///nextcloud/apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css","webpack:///nextcloud/node_modules/@nextcloud/files/dist/dav.mjs","webpack:///nextcloud/node_modules/@nextcloud/upload/dist/chunks/index-DPkUyJ8g.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","//\n//\n//\n//\n//\n//\n\nvar script = {\n name: 'teleport',\n props: {\n to: {\n type: String,\n required: true,\n },\n where: {\n type: String,\n default: 'after',\n },\n disabled: Boolean,\n },\n data: function data() {\n return {\n nodes: [],\n waiting: false,\n observer: null,\n parent: null,\n };\n },\n watch: {\n to: 'maybeMove',\n where: 'maybeMove',\n disabled: function disabled(value) {\n var this$1 = this;\n\n if (value) {\n this.disable();\n // Ensure all event done.\n this.$nextTick(function () {\n this$1.teardownObserver();\n });\n } else {\n this.bootObserver();\n this.move();\n }\n },\n },\n mounted: function mounted() {\n // Store a reference to the nodes\n this.nodes = Array.from(this.$el.childNodes);\n\n if (!this.disabled) {\n this.bootObserver();\n }\n\n // Move slot content to target\n this.maybeMove();\n },\n beforeDestroy: function beforeDestroy() {\n // Fix nodes reference\n this.nodes = this.getComponentChildrenNode();\n\n // Move back\n this.disable();\n\n // Stop observing\n this.teardownObserver();\n },\n computed: {\n classes: function classes() {\n if (this.disabled) {\n return ['teleporter'];\n }\n\n return ['teleporter', 'hidden'];\n },\n },\n methods: {\n maybeMove: function maybeMove() {\n if (!this.disabled) {\n this.move();\n }\n },\n move: function move() {\n this.waiting = false;\n\n this.parent = document.querySelector(this.to);\n\n if (!this.parent) {\n this.disable();\n\n this.waiting = true;\n\n return;\n }\n\n if (this.where === 'before') {\n this.parent.prepend(this.getFragment());\n } else {\n this.parent.appendChild(this.getFragment());\n }\n },\n disable: function disable() {\n this.$el.appendChild(this.getFragment());\n this.parent = null;\n },\n // Using a fragment is faster because it'll trigger only a single reflow\n // See https://developer.mozilla.org/en-US/docs/Web/API/DocumentFragment\n getFragment: function getFragment() {\n var fragment = document.createDocumentFragment();\n\n this.nodes.forEach(function (node) { return fragment.appendChild(node); });\n\n return fragment;\n },\n onMutations: function onMutations(mutations) {\n var this$1 = this;\n\n // Makes sure the move operation is only done once\n var shouldMove = false;\n\n for (var i = 0; i < mutations.length; i++) {\n var mutation = mutations[i];\n var filteredAddedNodes = Array.from(mutation.addedNodes).filter(function (node) { return !this$1.nodes.includes(node); });\n\n if (Array.from(mutation.removedNodes).includes(this.parent)) {\n this.disable();\n this.waiting = !this.disabled;\n } else if (this.waiting && filteredAddedNodes.length > 0) {\n shouldMove = true;\n }\n }\n\n if (shouldMove) {\n this.move();\n }\n },\n bootObserver: function bootObserver() {\n var this$1 = this;\n\n if (this.observer) {\n return;\n }\n\n this.observer = new MutationObserver(function (mutations) { return this$1.onMutations(mutations); });\n\n this.observer.observe(document.body, {\n childList: true,\n subtree: true,\n attributes: false,\n characterData: false,\n });\n\n if (this.childObserver) {\n return;\n }\n // watch childNodes change\n this.childObserver = new MutationObserver(function (mutations) {\n var childChangeRecord = mutations.find(function (i) { return i.target === this$1.$el; });\n if (childChangeRecord) {\n // Remove old nodes before update position.\n this$1.nodes.forEach(function (node) { return node.parentNode && node.parentNode.removeChild(node); });\n this$1.nodes = this$1.getComponentChildrenNode();\n this$1.maybeMove();\n }\n });\n\n this.childObserver.observe(this.$el, {\n childList: true,\n subtree: false,\n attributes: false,\n characterData: false,\n });\n },\n teardownObserver: function teardownObserver() {\n if (this.observer) {\n this.observer.disconnect();\n this.observer = null;\n }\n if (this.childObserver) {\n this.childObserver.disconnect();\n this.childObserver = null;\n }\n },\n getComponentChildrenNode: function getComponentChildrenNode() {\n return this.$vnode.componentOptions.children\n .map(function (i) { return i.elm; })\n .filter(function (i) { return i; });\n },\n },\n};\n\nfunction normalizeComponent(template, style, script, scopeId, isFunctionalTemplate, moduleIdentifier /* server only */, shadowMode, createInjector, createInjectorSSR, createInjectorShadow) {\r\n if (typeof shadowMode !== 'boolean') {\r\n createInjectorSSR = createInjector;\r\n createInjector = shadowMode;\r\n shadowMode = false;\r\n }\r\n // Vue.extend constructor export interop.\r\n var options = typeof script === 'function' ? script.options : script;\r\n // render functions\r\n if (template && template.render) {\r\n options.render = template.render;\r\n options.staticRenderFns = template.staticRenderFns;\r\n options._compiled = true;\r\n // functional template\r\n if (isFunctionalTemplate) {\r\n options.functional = true;\r\n }\r\n }\r\n // scopedId\r\n if (scopeId) {\r\n options._scopeId = scopeId;\r\n }\r\n var hook;\r\n if (moduleIdentifier) {\r\n // server build\r\n hook = function (context) {\r\n // 2.3 injection\r\n context =\r\n context || // cached call\r\n (this.$vnode && this.$vnode.ssrContext) || // stateful\r\n (this.parent && this.parent.$vnode && this.parent.$vnode.ssrContext); // functional\r\n // 2.2 with runInNewContext: true\r\n if (!context && typeof __VUE_SSR_CONTEXT__ !== 'undefined') {\r\n context = __VUE_SSR_CONTEXT__;\r\n }\r\n // inject component styles\r\n if (style) {\r\n style.call(this, createInjectorSSR(context));\r\n }\r\n // register component module identifier for async chunk inference\r\n if (context && context._registeredComponents) {\r\n context._registeredComponents.add(moduleIdentifier);\r\n }\r\n };\r\n // used by ssr in case component is cached and beforeCreate\r\n // never gets called\r\n options._ssrRegister = hook;\r\n }\r\n else if (style) {\r\n hook = shadowMode\r\n ? function (context) {\r\n style.call(this, createInjectorShadow(context, this.$root.$options.shadowRoot));\r\n }\r\n : function (context) {\r\n style.call(this, createInjector(context));\r\n };\r\n }\r\n if (hook) {\r\n if (options.functional) {\r\n // register for functional component in vue file\r\n var originalRender = options.render;\r\n options.render = function renderWithStyleInjection(h, context) {\r\n hook.call(context);\r\n return originalRender(h, context);\r\n };\r\n }\r\n else {\r\n // inject component registration as beforeCreate hook\r\n var existing = options.beforeCreate;\r\n options.beforeCreate = existing ? [].concat(existing, hook) : [hook];\r\n }\r\n }\r\n return script;\r\n}\n\nvar isOldIE = typeof navigator !== 'undefined' &&\r\n /msie [6-9]\\\\b/.test(navigator.userAgent.toLowerCase());\r\nfunction createInjector(context) {\r\n return function (id, style) { return addStyle(id, style); };\r\n}\r\nvar HEAD;\r\nvar styles = {};\r\nfunction addStyle(id, css) {\r\n var group = isOldIE ? css.media || 'default' : id;\r\n var style = styles[group] || (styles[group] = { ids: new Set(), styles: [] });\r\n if (!style.ids.has(id)) {\r\n style.ids.add(id);\r\n var code = css.source;\r\n if (css.map) {\r\n // https://developer.chrome.com/devtools/docs/javascript-debugging\r\n // this makes source maps inside style tags work properly in Chrome\r\n code += '\\n/*# sourceURL=' + css.map.sources[0] + ' */';\r\n // http://stackoverflow.com/a/26603875\r\n code +=\r\n '\\n/*# sourceMappingURL=data:application/json;base64,' +\r\n btoa(unescape(encodeURIComponent(JSON.stringify(css.map)))) +\r\n ' */';\r\n }\r\n if (!style.element) {\r\n style.element = document.createElement('style');\r\n style.element.type = 'text/css';\r\n if (css.media)\r\n { style.element.setAttribute('media', css.media); }\r\n if (HEAD === undefined) {\r\n HEAD = document.head || document.getElementsByTagName('head')[0];\r\n }\r\n HEAD.appendChild(style.element);\r\n }\r\n if ('styleSheet' in style.element) {\r\n style.styles.push(code);\r\n style.element.styleSheet.cssText = style.styles\r\n .filter(Boolean)\r\n .join('\\n');\r\n }\r\n else {\r\n var index = style.ids.size - 1;\r\n var textNode = document.createTextNode(code);\r\n var nodes = style.element.childNodes;\r\n if (nodes[index])\r\n { style.element.removeChild(nodes[index]); }\r\n if (nodes.length)\r\n { style.element.insertBefore(textNode, nodes[index]); }\r\n else\r\n { style.element.appendChild(textNode); }\r\n }\r\n }\r\n}\n\n/* script */\nvar __vue_script__ = script;\n\n/* template */\nvar __vue_render__ = function() {\n var _vm = this;\n var _h = _vm.$createElement;\n var _c = _vm._self._c || _h;\n return _c(\"div\", { class: _vm.classes }, [_vm._t(\"default\")], 2)\n};\nvar __vue_staticRenderFns__ = [];\n__vue_render__._withStripped = true;\n\n /* style */\n var __vue_inject_styles__ = function (inject) {\n if (!inject) { return }\n inject(\"data-v-50f4b45b_0\", { source: \".hidden[data-v-50f4b45b] {\\n visibility: hidden;\\n display: none;\\n}\\n\\n/*# sourceMappingURL=Teleport.vue.map */\", map: {\"version\":3,\"sources\":[\"/home/shodan/Projects/vue2-teleport/src/Teleport.vue\",\"Teleport.vue\"],\"names\":[],\"mappings\":\"AA2LA;EACA,kBAAA;EACA,aAAA;AC1LA;;AAEA,uCAAuC\",\"file\":\"Teleport.vue\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\",\".hidden {\\n visibility: hidden;\\n display: none;\\n}\\n\\n/*# sourceMappingURL=Teleport.vue.map */\"]}, media: undefined });\n\n };\n /* scoped */\n var __vue_scope_id__ = \"data-v-50f4b45b\";\n /* module identifier */\n var __vue_module_identifier__ = undefined;\n /* functional template */\n var __vue_is_functional_template__ = false;\n /* style inject SSR */\n \n /* style inject shadow dom */\n \n\n \n var __vue_component__ = /*#__PURE__*/normalizeComponent(\n { render: __vue_render__, staticRenderFns: __vue_staticRenderFns__ },\n __vue_inject_styles__,\n __vue_script__,\n __vue_scope_id__,\n __vue_is_functional_template__,\n __vue_module_identifier__,\n false,\n createInjector,\n undefined,\n undefined\n );\n\n// Taken from https://vuejs.org/v2/cookbook/packaging-sfc-for-npm.html\n\n// Declare install function executed by Vue.use()\nfunction install (Vue) {\n if (install.installed) { return; }\n\n install.installed = true;\n Vue.component('Teleport', __vue_component__);\n}\n\n// Create module definition for Vue.use()\nvar plugin = {\n install: install,\n};\n\n// Auto-install when vue is found (eg. in browser via ","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FormatListBulletedSquare.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FormatListBulletedSquare.vue?vue&type=template&id=64cece03\"\nimport script from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\nexport * from \"./FormatListBulletedSquare.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon format-list-bulleted-square-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3,4H7V8H3V4M9,5V7H21V5H9M3,10H7V14H3V10M9,11V13H21V11H9M3,16H7V20H3V16M9,17V19H21V17H9\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Reload.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Reload.vue?vue&type=template&id=39a07256\"\nimport script from \"./Reload.vue?vue&type=script&lang=js\"\nexport * from \"./Reload.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon reload-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12C2 16.97 6.03 21 11 21C13.39 21 15.68 20.06 17.4 18.4L15.9 16.9C14.63 18.25 12.86 19 11 19C4.76 19 1.64 11.46 6.05 7.05C10.46 2.64 18 5.77 18 12H15L19 16H19.1L23 12H20C20 7.03 15.97 3 11 3C6.03 3 2 7.03 2 12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ViewGridOutline.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./ViewGridOutline.vue?vue&type=template&id=0c2dec16\"\nimport script from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ViewGridOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon view-grid-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M3 11H11V3H3M5 5H9V9H5M13 21H21V13H13M15 15H19V19H15M3 21H11V13H3M5 15H9V19H5M13 3V11H21V3M19 9H15V5H19Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcBreadcrumbs',{staticClass:\"files-list__breadcrumbs\",class:{ 'files-list__breadcrumbs--with-progress': _vm.wrapUploadProgressBar },attrs:{\"data-cy-files-content-breadcrumbs\":\"\",\"aria-label\":_vm.t('files', 'Current directory path')},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_vm._t(\"actions\")]},proxy:true}],null,true)},_vm._l((_vm.sections),function(section,index){return _c('NcBreadcrumb',_vm._b({key:section.dir,attrs:{\"dir\":\"auto\",\"to\":section.to,\"force-icon-text\":index === 0 && !_vm.isNarrow,\"force-menu\":\"\",\"open\":_vm.isMenuOpen,\"title\":_vm.titleForSection(index, section),\"aria-description\":_vm.ariaForSection(section)},on:{\"update:open\":function($event){_vm.isMenuOpen=$event},\"drop\":function($event){return _vm.onDrop($event, section.dir)}},nativeOn:{\"dragover\":function($event){return _vm.onDragOver($event, section.dir)}},scopedSlots:_vm._u([(index === 0)?{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"size\":20,\"svg\":_vm.viewIcon}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"menu-icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.isMenuOpen ? _vm.mdiChevronUp : _vm.mdiChevronDown}})]},proxy:true}:null,(index === _vm.sections.length - 1)?{key:\"default\",fn:function(){return [(_vm.canShare)?_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":_vm.openSharingSidebar},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiAccountPlus}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Share'))+\"\\n\\t\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('NcActionButton',{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.$emit('reload')}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"path\":_vm.mdiReload}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Reload content'))+\"\\n\\t\\t\\t\")])]},proxy:true}:null],null,true)},'NcBreadcrumb',section,false))}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed, onMounted, readonly, ref } from 'vue';\n/** The element we observe */\nlet element;\n/** The current width of the element */\nconst width = ref(0);\nconst isWide = computed(() => width.value >= 1024);\nconst isMedium = computed(() => width.value >= 512 && width.value < 1024);\nconst isNarrow = computed(() => width.value < 512);\nconst observer = new ResizeObserver(([element]) => {\n if (!element) {\n return;\n }\n const contentBoxSize = element.contentBoxSize?.[0];\n if (contentBoxSize) {\n // use the newer `contentBoxSize` property if available\n width.value = contentBoxSize.inlineSize;\n }\n else {\n // fall back to `contentRect`\n width.value = element.contentRect.width;\n }\n});\n/**\n * Update the observed element if needed and reconfigure the observer\n */\nfunction updateObserver() {\n const el = document.querySelector('#app-content-vue') ?? document.body;\n if (el !== element) {\n // if already observing: stop observing the old element\n if (element) {\n observer.unobserve(element);\n }\n // observe the new element if needed\n observer.observe(el);\n element = el;\n }\n}\n/**\n * Get the reactive width of the file list\n */\nexport function useFileListWidth() {\n // Update the observer when the component is mounted (e.g. because this is the files app)\n onMounted(updateObserver);\n // Update the observer also in setup context, so we already have an initial value\n updateObserver();\n return {\n width: readonly(width),\n isWide,\n isMedium,\n isNarrow,\n };\n}\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getNavigation } from '@nextcloud/files';\nimport { computed, shallowRef } from 'vue';\nconst allViews = shallowRef([]);\nconst visibleViews = computed(() => allViews.value?.filter((view) => !view.hidden) ?? []);\nlet initialized = false;\n/**\n * Get all currently registered views.\n * Unline `Navigation.views` this is reactive and will update when new views are added or existing views are removed.\n */\nexport function useViews() {\n if (!initialized) {\n const navigation = getNavigation();\n navigation.addEventListener('update', () => {\n allViews.value = [...navigation.views];\n });\n allViews.value = [...navigation.views];\n initialized = true;\n }\n return allViews;\n}\n/**\n * Get all non-hidden views.\n */\nexport function useVisibleViews() {\n useViews();\n return visibleViews;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport PQueue from 'p-queue';\nconst sharePermissions = loadState('files_sharing', 'sharePermissions', Permission.NONE);\n// This is the processing queue. We only want to allow 3 concurrent requests\nlet queue;\n// Maximum number of concurrent operations\nconst MAX_CONCURRENCY = 5;\n/**\n * Get the processing queue\n */\nexport function getQueue() {\n if (!queue) {\n queue = new PQueue({ concurrency: MAX_CONCURRENCY });\n }\n return queue;\n}\nexport var MoveCopyAction;\n(function (MoveCopyAction) {\n MoveCopyAction[\"MOVE\"] = \"Move\";\n MoveCopyAction[\"COPY\"] = \"Copy\";\n MoveCopyAction[\"MOVE_OR_COPY\"] = \"move-or-copy\";\n})(MoveCopyAction || (MoveCopyAction = {}));\n/**\n * Check if the given nodes can be moved\n *\n * @param nodes - The nodes to check\n */\nexport function canMove(nodes) {\n const minPermission = nodes.reduce((min, node) => Math.min(min, node.permissions), Permission.ALL);\n return Boolean(minPermission & Permission.DELETE);\n}\n/**\n * Check if the given nodes can be downloaded\n *\n * @param nodes - The nodes to check\n */\nexport function canDownload(nodes) {\n return nodes.every((node) => {\n const shareAttributes = JSON.parse(node.attributes?.['share-attributes'] ?? '[]');\n return !shareAttributes.some((attribute) => attribute.scope === 'permissions' && attribute.value === false && attribute.key === 'download');\n });\n}\n/**\n * Check if the given nodes can be copied\n *\n * @param nodes - The nodes to check\n */\nexport function canCopy(nodes) {\n // a shared file cannot be copied if the download is disabled\n if (!canDownload(nodes)) {\n return false;\n }\n // it cannot be copied if the user has only view permissions\n if (nodes.some((node) => node.permissions === Permission.NONE)) {\n return false;\n }\n // on public shares all files have the same permission so copy is only possible if write permission is granted\n if (isPublicShare()) {\n return Boolean(sharePermissions & Permission.CREATE);\n }\n // otherwise permission is granted\n return true;\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FolderMoveSvg from '@mdi/svg/svg/folder-move-outline.svg?raw';\nimport CopyIconSvg from '@mdi/svg/svg/folder-multiple-outline.svg?raw';\nimport { FilePickerClosed, getFilePickerBuilder, openConflictPicker, showError, showLoading } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { FileType, getUniqueName, NodeStatus, Permission } from '@nextcloud/files';\nimport { defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { n, t } from '@nextcloud/l10n';\nimport { basename, join } from '@nextcloud/paths';\nimport { getConflicts } from '@nextcloud/upload';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { getContents } from '../services/Files.ts';\nimport { canCopy, canMove, getQueue, MoveCopyAction } from './moveOrCopyActionUtils.ts';\n/**\n * Exception to hint the user about something.\n * The message is intended to be shown to the user.\n */\nexport class HintException extends Error {\n}\nexport const ACTION_COPY_MOVE = 'move-copy';\nexport const action = {\n id: ACTION_COPY_MOVE,\n order: 15,\n displayName({ nodes }) {\n switch (getActionForNodes(nodes)) {\n case MoveCopyAction.MOVE:\n return t('files', 'Move');\n case MoveCopyAction.COPY:\n return t('files', 'Copy');\n case MoveCopyAction.MOVE_OR_COPY:\n return t('files', 'Move or copy');\n }\n },\n iconSvgInline: () => FolderMoveSvg,\n enabled({ nodes, view }) {\n // We can not copy or move in single file shares\n if (view.id === 'public-file-share') {\n return false;\n }\n // We only support moving/copying files within the user folder\n if (!nodes.every((node) => node.root?.startsWith('/files/'))) {\n return false;\n }\n return nodes.length > 0 && (canMove(nodes) || canCopy(nodes));\n },\n async exec(context) {\n return this.execBatch(context)[0];\n },\n async execBatch({ nodes, folder }) {\n const action = getActionForNodes(nodes);\n const target = await openFilePickerForAction(action, folder.path, nodes);\n // Handle cancellation silently\n if (target === false) {\n return nodes.map(() => null);\n }\n try {\n const result = await Array.fromAsync(handleCopyMoveNodesTo(nodes, target.destination, target.action));\n return result.map(() => true);\n }\n catch (error) {\n logger.error(`Failed to ${target.action} node`, { nodes, error });\n if (error instanceof HintException && !!error.message) {\n showError(error.message);\n // Silent action as we handle the toast\n return nodes.map(() => null);\n }\n // We need to keep the selection on error!\n // So we do not return null, and for batch action\n return nodes.map(() => false);\n }\n },\n};\n/**\n * Handle the copy/move of a node to a destination\n * This can be imported and used by other scripts/components on server\n *\n * @param nodes The nodes to copy/move\n * @param destination The destination to copy/move the nodes to\n * @param method The method to use for the copy/move\n * @param overwrite Whether to overwrite the destination if it exists\n * @yields {AsyncGenerator} A promise that resolves when the copy/move is done\n */\nexport async function* handleCopyMoveNodesTo(nodes, destination, method, overwrite = false) {\n if (!destination) {\n return;\n }\n if (destination.type !== FileType.Folder) {\n throw new Error(t('files', 'Destination is not a folder'));\n }\n // Do not allow to MOVE a node to the same folder it is already located\n if (method === MoveCopyAction.MOVE && nodes.some((node) => node.dirname === destination.path)) {\n throw new Error(t('files', 'This file/folder is already in that directory'));\n }\n /**\n * Example:\n * - node: /foo/bar/file.txt -> path = /foo/bar/file.txt, destination: /foo\n * Allow move of /foo does not start with /foo/bar/file.txt so allow\n * - node: /foo , destination: /foo/bar\n * Do not allow as it would copy foo within itself\n * - node: /foo/bar.txt, destination: /foo\n * Allow copy a file to the same directory\n * - node: \"/foo/bar\", destination: \"/foo/bar 1\"\n * Allow to move or copy but we need to check with trailing / otherwise it would report false positive\n */\n if (nodes.some((node) => `${destination.path}/`.startsWith(`${node.path}/`))) {\n throw new Error(t('files', 'You cannot move a file/folder onto itself or into a subfolder of itself'));\n }\n const nameMapping = new Map();\n // Check for conflicts if we do not want to overwrite\n if (!overwrite) {\n const otherNodes = (await getContents(destination.path)).contents;\n const conflicts = getConflicts(nodes, otherNodes);\n const nodesToRename = [];\n if (conflicts.length > 0) {\n if (method === MoveCopyAction.MOVE) {\n // Let the user choose what to do with the conflicting files\n const content = otherNodes.filter((n) => conflicts.some((c) => c.basename === n.basename));\n const result = await openConflictPicker(destination.path, conflicts, content);\n if (!result) {\n // User cancelled\n return;\n }\n nodes = nodes.filter((n) => !result.skipped.includes(n));\n nodesToRename.push(...result.renamed);\n }\n else {\n // for COPY we always rename conflicting files\n nodesToRename.push(...conflicts);\n }\n const usedNames = [...otherNodes, ...nodes.filter((n) => !conflicts.includes(n))].map((n) => n.basename);\n for (const node of nodesToRename) {\n const newName = getUniqueName(node.basename, usedNames, { ignoreFileExtension: node.type === FileType.Folder });\n nameMapping.set(node.source, newName);\n usedNames.push(newName); // add the new name to avoid duplicates for following re-namimgs\n }\n }\n }\n const actionFinished = createLoadingNotification(method, nodes.map((node) => node.displayname), join(destination.dirname, destination.displayname));\n const queue = getQueue();\n try {\n for (const node of nodes) {\n // Set loading state\n Vue.set(node, 'status', NodeStatus.LOADING);\n yield queue.add(async () => {\n try {\n const client = getClient();\n const currentPath = join(defaultRootPath, node.path);\n const destinationPath = join(defaultRootPath, destination.path, nameMapping.get(node.source) ?? node.basename);\n if (method === MoveCopyAction.COPY) {\n await client.copyFile(currentPath, destinationPath);\n // If the node is copied into current directory the view needs to be updated\n if (node.dirname === destination.path) {\n const { data } = await client.stat(destinationPath, {\n details: true,\n data: getDefaultPropfind(),\n });\n emit('files:node:created', resultToNode(data));\n }\n }\n else {\n await client.moveFile(currentPath, destinationPath);\n // Delete the node as it will be fetched again\n // when navigating to the destination folder\n emit('files:node:deleted', node);\n }\n }\n catch (error) {\n logger.debug(`Error while trying to ${method === MoveCopyAction.COPY ? 'copy' : 'move'} node`, { node, error });\n if (error.response?.status === 412) {\n throw new HintException(t('files', 'A file or folder with that name already exists in this folder'));\n }\n else if (error.response?.status === 423) {\n throw new HintException(t('files', 'The files are locked'));\n }\n else if (error.response?.status === 404) {\n throw new HintException(t('files', 'The file does not exist anymore'));\n }\n else if ('response' in error && error.response) {\n const parser = new DOMParser();\n const text = await error.response.text();\n const message = parser.parseFromString(text ?? '', 'text/xml')\n .querySelector('message')?.textContent;\n if (message) {\n throw new HintException(message);\n }\n }\n throw error;\n }\n finally {\n Vue.set(node, 'status', undefined);\n }\n });\n }\n }\n finally {\n actionFinished();\n }\n}\n/**\n * Return the action that is possible for the given nodes\n *\n * @param nodes The nodes to check against\n * @return The action that is possible for the given nodes\n */\nfunction getActionForNodes(nodes) {\n if (canMove(nodes)) {\n if (canCopy(nodes)) {\n return MoveCopyAction.MOVE_OR_COPY;\n }\n return MoveCopyAction.MOVE;\n }\n // Assuming we can copy as the enabled checks for copy permissions\n return MoveCopyAction.COPY;\n}\n/**\n * Create a loading notification toast\n *\n * @param mode The move or copy mode\n * @param sources Names of the nodes that are copied / moved\n * @param destination Destination path\n * @return Function to hide the notification\n */\nfunction createLoadingNotification(mode, sources, destination) {\n const text = mode === MoveCopyAction.MOVE\n ? (sources.length === 1\n ? t('files', 'Moving \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n : n('files', 'Moving %n file to \"{destination}\" …', 'Moving %n files to \"{destination}\" …', sources.length, { destination }))\n : (sources.length === 1\n ? t('files', 'Copying \"{source}\" to \"{destination}\" …', { source: sources[0], destination })\n : n('files', 'Copying %n file to \"{destination}\" …', 'Copying %n files to \"{destination}\" …', sources.length, { destination }));\n const toast = showLoading(text);\n return () => toast && toast.hideToast();\n}\n/**\n * Open a file picker for the given action\n *\n * @param action The action to open the file picker for\n * @param dir The directory to start the file picker in\n * @param nodes The nodes to move/copy\n * @return The picked destination or false if cancelled by user\n */\nasync function openFilePickerForAction(action, dir = '/', nodes) {\n const { resolve, reject, promise } = Promise.withResolvers();\n const fileIDs = nodes.map((node) => node.fileid).filter(Boolean);\n const filePicker = getFilePickerBuilder(t('files', 'Choose destination'))\n .allowDirectories(true)\n .setFilter((n) => {\n // We don't want to show the current nodes in the file picker\n return !fileIDs.includes(n.fileid);\n })\n .setCanPick((n) => {\n const hasCreatePermissions = (n.permissions & Permission.CREATE) === Permission.CREATE;\n return hasCreatePermissions;\n })\n .setMimeTypeFilter([])\n .setMultiSelect(false)\n .startAt(dir)\n .setButtonFactory((selection, path) => {\n const buttons = [];\n const target = basename(path);\n const dirnames = nodes.map((node) => node.dirname);\n const paths = nodes.map((node) => node.path);\n if (action === MoveCopyAction.COPY || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Copy to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Copy'),\n variant: 'primary',\n icon: CopyIconSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.COPY,\n });\n },\n });\n }\n // Invalid MOVE targets (but valid copy targets)\n if (dirnames.includes(path)) {\n // This file/folder is already in that directory\n return buttons;\n }\n if (paths.includes(path)) {\n // You cannot move a file/folder onto itself\n return buttons;\n }\n if (selection.some((node) => (node.permissions & Permission.CREATE) === 0)) {\n // Missing 'CREATE' permissions for selected destination\n return buttons;\n }\n if (action === MoveCopyAction.MOVE || action === MoveCopyAction.MOVE_OR_COPY) {\n buttons.push({\n label: target ? t('files', 'Move to {target}', { target }, { escape: false, sanitize: false }) : t('files', 'Move'),\n variant: action === MoveCopyAction.MOVE ? 'primary' : 'secondary',\n icon: FolderMoveSvg,\n async callback(destination) {\n resolve({\n destination: destination[0],\n action: MoveCopyAction.MOVE,\n });\n },\n });\n }\n return buttons;\n })\n .build();\n filePicker.pick()\n .catch((error) => {\n logger.debug(error);\n if (error instanceof FilePickerClosed) {\n resolve(false);\n }\n else {\n reject(new Error(t('files', 'Move or copy operation failed')));\n }\n });\n return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showInfo, showWarning } from '@nextcloud/dialogs';\nimport { emit } from '@nextcloud/event-bus';\nimport { defaultRemoteURL, defaultRootPath, getClient, getDefaultPropfind, resultToNode } from '@nextcloud/files/dav';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { openConflictPicker } from '@nextcloud/upload';\nimport logger from '../logger.ts';\n/**\n * This represents a Directory in the file tree\n * We extend the File class to better handling uploading\n * and stay as close as possible as the Filesystem API.\n * This also allow us to hijack the size or lastModified\n * properties to compute them dynamically.\n */\nexport class Directory extends File {\n _contents;\n constructor(name, contents = []) {\n super([], name, { type: 'httpd/unix-directory' });\n this._contents = contents;\n }\n set contents(contents) {\n this._contents = contents;\n }\n get contents() {\n return this._contents;\n }\n get size() {\n return this._computeDirectorySize(this);\n }\n get lastModified() {\n if (this._contents.length === 0) {\n return Date.now();\n }\n return this._computeDirectoryMtime(this);\n }\n /**\n * Get the last modification time of a file tree\n * This is not perfect, but will get us a pretty good approximation\n *\n * @param directory the directory to traverse\n */\n _computeDirectoryMtime(directory) {\n return directory.contents.reduce((acc, file) => {\n return file.lastModified > acc\n // If the file is a directory, the lastModified will\n // also return the results of its _computeDirectoryMtime method\n // Fancy recursion, huh?\n ? file.lastModified\n : acc;\n }, 0);\n }\n /**\n * Get the size of a file tree\n *\n * @param directory the directory to traverse\n */\n _computeDirectorySize(directory) {\n return directory.contents.reduce((acc, entry) => {\n // If the file is a directory, the size will\n // also return the results of its _computeDirectorySize method\n // Fancy recursion, huh?\n return acc + entry.size;\n }, 0);\n }\n}\n/**\n * Traverse a file tree using the Filesystem API\n *\n * @param entry the entry to traverse\n */\nexport async function traverseTree(entry) {\n // Handle file\n if (entry.isFile) {\n return new Promise((resolve, reject) => {\n entry.file(resolve, reject);\n });\n }\n // Handle directory\n logger.debug('Handling recursive file tree', { entry: entry.name });\n const directory = entry;\n const entries = await readDirectory(directory);\n const contents = (await Promise.all(entries.map(traverseTree))).flat();\n return new Directory(directory.name, contents);\n}\n/**\n * Read a directory using Filesystem API\n *\n * @param directory the directory to read\n */\nfunction readDirectory(directory) {\n const dirReader = directory.createReader();\n return new Promise((resolve, reject) => {\n const entries = [];\n const getEntries = () => {\n dirReader.readEntries((results) => {\n if (results.length) {\n entries.push(...results);\n getEntries();\n }\n else {\n resolve(entries);\n }\n }, (error) => {\n reject(error);\n });\n };\n getEntries();\n });\n}\n/**\n * @param path - The path relative to the destination root\n * @param destination - The destination folder. When provided, directories are created relative\n * to its source URL instead of the default user root. This is needed for uploads into\n * non-default locations like team folders.\n */\nexport async function createDirectoryIfNotExists(path, destination) {\n const davUrl = destination?.source ?? join(defaultRemoteURL, defaultRootPath);\n const davRoot = destination?.root ?? defaultRootPath;\n const davClient = getClient(davUrl);\n const dirExists = await davClient.exists(path);\n if (!dirExists) {\n logger.debug('Directory does not exist, creating it', { path, davUrl });\n await davClient.createDirectory(path, { recursive: true });\n const stat = await davClient.stat(path, { details: true, data: getDefaultPropfind() });\n emit('files:node:created', resultToNode(stat.data, davRoot, davUrl));\n }\n}\n/**\n * Resolve conflicts between existing files and incoming files\n *\n * @param files - incoming files\n * @param destination - destination folder\n * @param contents - existing contents of the destination folder\n */\nexport async function resolveConflict(files, destination, contents) {\n try {\n // List all conflicting files\n const conflicts = files.filter((file) => {\n return contents.find((node) => node.basename === (file instanceof File ? file.name : file.basename));\n }).filter(Boolean);\n // List of incoming files that are NOT in conflict\n const uploads = files.filter((file) => {\n return !conflicts.includes(file);\n });\n // Let the user choose what to do with the conflicting files\n const { selected, renamed } = await openConflictPicker(destination.path, conflicts, contents);\n logger.debug('Conflict resolution', { uploads, selected, renamed });\n // If the user selected nothing, we cancel the upload\n if (selected.length === 0 && renamed.length === 0 && uploads.length === 0) {\n // User skipped\n showInfo(t('files', 'Conflicts resolution skipped'));\n logger.info('User skipped the conflict resolution');\n return [];\n }\n // Update the list of files to upload\n return [...uploads, ...selected, ...renamed];\n }\n catch (error) {\n // User cancelled\n logger.warn('User cancelled the upload', { error });\n showWarning(t('files', 'Upload cancelled'));\n }\n return [];\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { showError, showInfo, showSuccess, showWarning } from '@nextcloud/dialogs';\nimport { t } from '@nextcloud/l10n';\nimport { join } from '@nextcloud/paths';\nimport { getUploader, hasConflict } from '@nextcloud/upload';\nimport { handleCopyMoveNodesTo, HintException } from '../actions/moveOrCopyAction.ts';\nimport { MoveCopyAction } from '../actions/moveOrCopyActionUtils.ts';\nimport logger from '../logger.ts';\nimport { createDirectoryIfNotExists, Directory, resolveConflict, traverseTree } from './DropServiceUtils.ts';\n/**\n * This function converts a list of DataTransferItems to a file tree.\n * It uses the Filesystem API if available, otherwise it falls back to the File API.\n * The File API will NOT be available if the browser is not in a secure context (e.g. HTTP).\n * ⚠️ When using this method, you need to use it as fast as possible, as the DataTransferItems\n * will be cleared after the first access to the props of one of the entries.\n *\n * @param items the list of DataTransferItems\n */\nexport async function dataTransferToFileTree(items) {\n // Check if the browser supports the Filesystem API\n // We need to cache the entries to prevent Blink engine bug that clears\n // the list (`data.items`) after first access props of one of the entries\n const entries = items\n .filter((item) => {\n if (item.kind !== 'file') {\n logger.debug('Skipping dropped item', { kind: item.kind, type: item.type });\n return false;\n }\n return true;\n }).map((item) => {\n // MDN recommends to try both, as it might be renamed in the future\n return item?.getAsEntry?.()\n ?? item?.webkitGetAsEntry?.()\n ?? item;\n });\n let warned = false;\n const fileTree = new Directory('root');\n // Traverse the file tree\n for (const entry of entries) {\n // Handle browser issues if Filesystem API is not available. Fallback to File API\n if (entry instanceof DataTransferItem) {\n logger.warn('Could not get FilesystemEntry of item, falling back to file');\n const file = entry.getAsFile();\n if (file === null) {\n logger.warn('Could not process DataTransferItem', { type: entry.type, kind: entry.kind });\n showError(t('files', 'One of the dropped files could not be processed'));\n continue;\n }\n // Warn the user that the browser does not support the Filesystem API\n // we therefore cannot upload directories recursively.\n if (file.type === 'httpd/unix-directory' || !file.type) {\n if (!warned) {\n logger.warn('Browser does not support Filesystem API. Directories will not be uploaded');\n showWarning(t('files', 'Your browser does not support the Filesystem API. Directories will not be uploaded'));\n warned = true;\n }\n continue;\n }\n fileTree.contents.push(file);\n continue;\n }\n // Use Filesystem API\n try {\n fileTree.contents.push(await traverseTree(entry));\n }\n catch (error) {\n // Do not throw, as we want to continue with the other files\n logger.error('Error while traversing file tree', { error });\n }\n }\n return fileTree;\n}\n/**\n * Handle dropping external files\n *\n * @param root - The root directory which should be uploaded\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n */\nexport async function onDropExternalFiles(root, destination, contents) {\n const uploader = getUploader();\n // Check for conflicts on root elements\n if (await hasConflict(root.contents, contents)) {\n root.contents = await resolveConflict(root.contents, destination, contents);\n if (root.contents.length === 0) {\n // user cancelled the upload\n return [];\n }\n }\n else if (root.contents.length === 0) {\n logger.info('No files to upload', { root });\n showInfo(t('files', 'No files to upload'));\n return [];\n }\n // Let's process the files\n logger.debug(`Uploading files to ${destination.path}`, { root, contents: root.contents });\n const queue = [];\n const uploadDirectoryContents = async (directory, path) => {\n for (const file of directory.contents) {\n // This is the relative path to the resource\n // from the current uploader destination\n const relativePath = join(path, file.name);\n // If the file is a directory, we need to create it first\n // then browse its tree and upload its contents.\n if (file instanceof Directory) {\n try {\n logger.debug('Processing directory', { relativePath, destination });\n await createDirectoryIfNotExists(relativePath, destination);\n await uploadDirectoryContents(file, relativePath);\n }\n catch (error) {\n showError(t('files', 'Unable to create the directory {directory}', { directory: file.name }));\n logger.error('Unable to create the directory', { error, relativePath, directory: file });\n }\n continue;\n }\n // If we've reached a file, we can upload it\n logger.debug('Uploading file to ' + join(destination.path, relativePath), { file });\n // Overriding the root to avoid changing the current uploader context\n queue.push(uploader.upload(relativePath, file, destination.source));\n }\n };\n // Pause the uploader to prevent it from starting\n // while we compute the queue\n uploader.pause();\n // Upload the files. Using '/' as the starting point\n // as we already adjusted the uploader destination\n await uploadDirectoryContents(root, '/');\n uploader.start();\n // Wait for all promises to settle\n const results = await Promise.allSettled(queue);\n // Check for errors\n const errors = results.filter((result) => result.status === 'rejected');\n if (errors.length > 0) {\n logger.error('Error while uploading files', { errors });\n showError(t('files', 'Some files could not be uploaded'));\n return [];\n }\n logger.debug('Files uploaded successfully');\n showSuccess(t('files', 'Files uploaded successfully'));\n return Promise.all(queue);\n}\n/**\n * Handle dropping internal files\n *\n * @param nodes - The nodes being dropped\n * @param destination - The destination folder\n * @param contents - The contents of the destination folder\n * @param isCopy - Whether the operation is a copy\n */\nexport async function onDropInternalFiles(nodes, destination, contents, isCopy = false) {\n // Check for conflicts on root elements\n if (await hasConflict(nodes, contents)) {\n nodes = await resolveConflict(nodes, destination, contents);\n }\n if (nodes.length === 0) {\n logger.info('No files to process', { nodes });\n showInfo(t('files', 'No files to process'));\n return;\n }\n try {\n const promises = Array.fromAsync(handleCopyMoveNodesTo(nodes, destination, isCopy ? MoveCopyAction.COPY : MoveCopyAction.MOVE));\n await promises;\n logger.debug('Files copy/move successful');\n showSuccess(isCopy ? t('files', 'Files copied successfully') : t('files', 'Files moved successfully'));\n }\n catch (error) {\n logger.error('Error while processing dropped files', { error });\n if (error instanceof HintException) {\n showError(error.message);\n }\n else {\n showError(isCopy ? t('files', 'Some files could not be copied') : t('files', 'Some files could not be moved'));\n }\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useDragAndDropStore = defineStore('dragging', {\n state: () => ({\n dragging: [],\n }),\n actions: {\n /**\n * Set the selection of files being dragged currently\n *\n * @param selection array of node sources\n */\n set(selection = []) {\n Vue.set(this, 'dragging', selection);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'dragging', []);\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nexport const useSelectionStore = defineStore('selection', {\n state: () => ({\n selected: [],\n lastSelection: [],\n lastSelectedIndex: null,\n }),\n actions: {\n /**\n * Set the selection of fileIds\n *\n * @param selection\n */\n set(selection = []) {\n Vue.set(this, 'selected', [...new Set(selection)]);\n },\n /**\n * Set the last selected index\n *\n * @param lastSelectedIndex\n */\n setLastIndex(lastSelectedIndex = null) {\n // Update the last selection if we provided a new selection starting point\n Vue.set(this, 'lastSelection', lastSelectedIndex ? this.selected : []);\n Vue.set(this, 'lastSelectedIndex', lastSelectedIndex);\n },\n /**\n * Reset the selection\n */\n reset() {\n Vue.set(this, 'selected', []);\n Vue.set(this, 'lastSelection', []);\n Vue.set(this, 'lastSelectedIndex', null);\n },\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getUploader } from '@nextcloud/upload';\nimport { defineStore } from 'pinia';\nlet uploader;\n/**\n *\n * @param args\n */\nexport function useUploaderStore(...args) {\n // Only init on runtime\n uploader = getUploader();\n const store = defineStore('uploader', {\n state: () => ({\n queue: uploader.queue,\n }),\n });\n return store(...args);\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./BreadCrumbs.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!./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=86e9be62&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=86e9be62&scoped=true\"\nimport script from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nexport * from \"./BreadCrumbs.vue?vue&type=script&lang=ts\"\nimport style0 from \"./BreadCrumbs.vue?vue&type=style&index=0&id=86e9be62&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 \"86e9be62\",\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('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.dragover),expression:\"dragover\"}],staticClass:\"files-list__drag-drop-notice\",attrs:{\"data-cy-files-drag-drop-area\":\"\"},on:{\"drop\":_vm.onDrop}},[_c('div',{staticClass:\"files-list__drag-drop-notice-wrapper\"},[(_vm.canUpload && !_vm.isQuotaExceeded)?[_c('TrayArrowDownIcon',{attrs:{\"size\":48}}),_vm._v(\" \"),_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Drag and drop files here to upload'))+\"\\n\\t\\t\\t\")])]:[_c('h3',{staticClass:\"files-list-drag-drop-notice__title\"},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.cantUploadLabel)+\"\\n\\t\\t\\t\")])]],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./TrayArrowDown.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./TrayArrowDown.vue?vue&type=template&id=5dbf2618\"\nimport script from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\nexport * from \"./TrayArrowDown.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tray-arrow-down-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M2 12H4V17H20V12H22V17C22 18.11 21.11 19 20 19H4C2.9 19 2 18.11 2 17V12M12 15L17.55 9.54L16.13 8.13L13 11.25V2H11V11.25L7.88 8.13L6.46 9.55L12 15Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropNotice.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!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropNotice.vue?vue&type=template&id=1e2b9696&scoped=true\"\nimport script from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropNotice.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropNotice.vue?vue&type=style&index=0&id=1e2b9696&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 \"1e2b9696\",\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('div',{class:_vm.$style.fileListFilters,attrs:{\"data-test-id\":\"files-list-filters\"}},[(_setup.isWide)?_vm._l((_setup.visualFilters),function(filter){return _c(_setup.NcPopover,{key:filter.id,attrs:{\"boundary\":_setup.boundary},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\")])]},proxy:true},{key:\"default\",fn:function(){return [_c('div',{class:_vm.$style.fileListFilters__popoverContainer},[_c(filter.tagName,{tag:\"component\",domProps:{\"filter\":filter}})],1)]},proxy:true}],null,true)})}):_c(_setup.NcPopover,{attrs:{\"boundary\":_setup.boundary,\"popup-role\":_setup.selectedFilter ? 'dialog' : 'menu'},on:{\"update:shown\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"trigger\",fn:function(){return [_c(_setup.NcButton,{attrs:{\"id\":_setup.menuTriggerId,\"aria-label\":_setup.t('files', 'Filters'),\"pressed\":_setup.hasActiveFilters,\"variant\":\"tertiary\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFilterVariant}})]},proxy:true}])})]},proxy:true},{key:\"default\",fn:function(){return [(_setup.selectedFilter)?_c('div',{class:_vm.$style.fileListFilters__popoverFilterView},[_c(_setup.NcButton,{attrs:{\"wide\":\"\",\"variant\":\"tertiary\"},on:{\"click\":function($event){_setup.selectedFilter = undefined}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"directional\":\"\",\"path\":_setup.mdiArrowLeft}})]},proxy:true}],null,false,1066031977)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Back to filters'))+\"\\n\\t\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.selectedFilter.tagName,{tag:\"component\",domProps:{\"filter\":_setup.selectedFilter}})],1):[_c('ul',{class:_vm.$style.fileListFilters__popoverContainer,attrs:{\"aria-labelledby\":_setup.menuTriggerId,\"role\":\"menu\"}},_vm._l((_setup.visualFilters),function(filter){return _c('li',{key:filter.id,attrs:{\"role\":\"presentation\"}},[_c(_setup.NcButton,{attrs:{\"role\":\"menuitem\",\"alignment\":\"start\",\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"click\":function($event){_setup.selectedFilter = filter}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":filter.iconSvgInline}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t\"+_vm._s(filter.displayName)+\"\\n\\t\\t\\t\\t\\t\\t\")])],1)}),0)]]},proxy:true}])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { getFileListFilters, getFilesRegistry } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, ref } from 'vue';\nimport logger from '../logger.ts';\n/**\n * Check if the given value is an instance file list filter with mount function\n *\n * @param value The filter to check\n */\nfunction isFileListFilterWithUi(value) {\n return 'tagName' in value;\n}\nexport const useFiltersStore = defineStore('filters', () => {\n const chips = ref({});\n const filters = ref([]);\n /**\n * Currently active filter chips\n */\n const activeChips = computed(() => Object.values(chips.value).flat());\n /**\n * Filters sorted by order\n */\n const sortedFilters = computed(() => filters.value.sort((a, b) => a.order - b.order));\n /**\n * All filters that provide a UI for visual controlling the filter state\n */\n const filtersWithUI = computed(() => sortedFilters.value.filter(isFileListFilterWithUi));\n /**\n * Register a new filter on the store.\n * This will subscribe the store to the filters events.\n *\n * @param filter The filter to add\n */\n function addFilter(filter) {\n filter.addEventListener('update:chips', onFilterUpdateChips);\n filter.addEventListener('update:filter', onFilterUpdate);\n filters.value.push(filter);\n logger.debug('New file list filter registered', { id: filter.id });\n }\n /**\n * Unregister a filter from the store.\n * This will remove the filter from the store and unsubscribe the store from the filer events.\n *\n * @param filterId Id of the filter to remove\n */\n function removeFilter(filterId) {\n const index = filters.value.findIndex(({ id }) => id === filterId);\n if (index > -1) {\n const [filter] = filters.value.splice(index, 1);\n filter.removeEventListener('update:chips', onFilterUpdateChips);\n filter.removeEventListener('update:filter', onFilterUpdate);\n logger.debug('Files list filter unregistered', { id: filterId });\n }\n }\n /**\n * Event handler for filter update events\n *\n */\n function onFilterUpdate() {\n emit('files:filters:changed');\n }\n /**\n * Event handler for filter chips updates\n *\n * @param event The update event\n */\n function onFilterUpdateChips(event) {\n const id = event.target.id;\n chips.value = {\n ...chips.value,\n [id]: [...event.detail],\n };\n logger.debug('File list filter chips updated', { filter: id, chips: event.detail });\n }\n initialize();\n return {\n // state\n chips,\n filters,\n filtersWithUI,\n // getters / computed\n activeChips,\n sortedFilters,\n };\n /**\n * Initialize the store by registering event listeners and loading initial filters.\n *\n * @internal\n */\n function initialize() {\n const registry = getFilesRegistry();\n const initialFilters = getFileListFilters();\n // handle adding and removing filters after initialization\n registry.addEventListener('register:listFilter', (event) => {\n addFilter(event.detail);\n });\n registry.addEventListener('unregister:listFilter', (event) => {\n removeFilter(event.detail);\n });\n // register the initial filters\n for (const filter of initialFilters) {\n addFilter(filter);\n }\n // subscribe to file list view changes to reset the filters\n subscribe('files:navigation:changed', onViewChanged);\n }\n /**\n * Event handler that resets all filters if the file list view was changed.\n *\n * @internal\n */\n function onViewChanged() {\n logger.debug('Reset all file list filters - view changed');\n for (const filter of filters.value) {\n if (filter.reset !== undefined) {\n filter.reset();\n }\n }\n }\n});\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilters.vue?vue&type=template&id=4b9fd4ac\"\nimport script from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilters.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilters.vue?vue&type=style&index=0&id=4b9fd4ac&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\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('VirtualList',{ref:\"table\",attrs:{\"data-component\":_vm.userConfig.grid_view ? _vm.FileEntryGrid : _vm.FileEntry,\"data-key\":\"source\",\"data-sources\":_vm.nodes,\"grid-mode\":_vm.userConfig.grid_view,\"extra-props\":{\n\t\tisMimeAvailable: _vm.isMimeAvailable,\n\t\tisMtimeAvailable: _vm.isMtimeAvailable,\n\t\tisSizeAvailable: _vm.isSizeAvailable,\n\t\tnodes: _vm.nodes,\n\t},\"scroll-to-index\":_vm.scrollToIndex,\"caption\":_vm.caption},scopedSlots:_vm._u([{key:\"filters\",fn:function(){return [_c('FileListFilterToSearch'),_c('FileListFilterChips')]},proxy:true},(!_vm.isNoneSelected)?{key:\"header-overlay\",fn:function(){return [_c('span',{staticClass:\"files-list__selected\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.n('files', '{count} selected', '{count} selected', _vm.selectedNodes.length, { count: _vm.selectedNodes.length }))+\"\\n\\t\\t\")]),_vm._v(\" \"),_c('FilesListTableHeaderActions',{attrs:{\"current-view\":_vm.currentView,\"selected-nodes\":_vm.selectedNodes}})]},proxy:true}:null,{key:\"before\",fn:function(){return _vm._l((_vm.headers),function(header){return _c('FilesListHeader',{key:header.id,attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"header\":header}})})},proxy:true},{key:\"header\",fn:function(){return [_c('FilesListTableHeader',{ref:\"thead\",attrs:{\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes}})]},proxy:true},{key:\"empty\",fn:function(){return [_vm._t(\"empty\")]},proxy:true},{key:\"footer\",fn:function(){return [_c('FilesListTableFooter',{attrs:{\"current-view\":_vm.currentView,\"is-mime-available\":_vm.isMimeAvailable,\"is-mtime-available\":_vm.isMtimeAvailable,\"is-size-available\":_vm.isSizeAvailable,\"nodes\":_vm.nodes,\"summary\":_vm.summary}})]},proxy:true}],null,true)})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./CustomElementRender.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./CustomElementRender.vue?vue&type=template&id=5eb63caa\"\nimport script from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\nexport * from \"./CustomElementRender.vue?vue&type=script&lang=ts\"\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('td',{staticClass:\"files-list__row-actions\",attrs:{\"data-cy-files-list-row-actions\":\"\"}},[_vm._l((_vm.enabledRenderActions),function(action){return _c('CustomElementRender',{key:action.id,staticClass:\"files-list__row-action--inline\",class:'files-list__row-action-' + action.id,attrs:{\"active-folder\":_vm.activeStore.activeFolder,\"active-view\":_vm.activeStore.activeView,\"render\":action.renderInline,\"source\":_vm.source}})}),_vm._v(\" \"),_c('NcActions',{ref:\"actionsMenu\",attrs:{\"boundaries-element\":_vm.getBoundariesElement,\"container\":_vm.getBoundariesElement,\"force-name\":true,\"variant\":\"tertiary\",\"force-menu\":_vm.enabledInlineActions.length === 0 /* forceMenu only if no inline actions */,\"inline\":_vm.enabledInlineActions.length,\"open\":_vm.openedMenu},on:{\"close\":_vm.onMenuClose,\"closed\":_vm.onMenuClosed}},[_vm._l((_vm.renderedNonDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action\",class:{\n\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.renderedDestructiveActions.length > 0)?[_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.renderedDestructiveActions),function(action,index){return _c('NcActionButton',{key:action.id,ref:`action-${action.id}`,refInFor:true,staticClass:\"files-list__row-action files-list__row-action--destructive\",class:{\n\t\t\t\t\t[`files-list__row-action-${action.id}`]: true,\n\t\t\t\t\t'files-list__row-action--inline': index < _vm.enabledInlineActions.length,\n\t\t\t\t\t'files-list__row-action--menu': _vm.isValidMenu(action),\n\t\t\t\t},attrs:{\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-row-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{staticClass:\"files-list__row-action-icon\",attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e(),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-action-back\",attrs:{\"data-cy-files-list-row-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-action--submenu\",class:`files-list__row-action-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-row-action\":action.id,\"aria-label\":action.title?.(_vm.actionContext),\"title\":action.title?.(_vm.actionContext)},on:{\"click\":function($event){return _vm.onActionClick(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.isLoadingAction(action))?_c('NcLoadingIcon'):_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ArrowLeft.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./ArrowLeft.vue?vue&type=template&id=16833c02\"\nimport script from \"./ArrowLeft.vue?vue&type=script&lang=js\"\nexport * from \"./ArrowLeft.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon arrow-left-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M20,11V13H8L13.5,18.5L12.08,19.92L4.16,12L12.08,4.08L13.5,5.5L8,11H20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineComponent } from 'vue';\nexport default defineComponent({\n data() {\n return {\n openedSubmenu: null,\n };\n },\n computed: {\n enabledSubmenuActions() {\n return this.enabledFileActions\n .reduce((record, action) => {\n if (action.parent !== undefined) {\n if (!record[action.parent]) {\n record[action.parent] = [];\n }\n record[action.parent].push(action);\n }\n return record;\n }, {});\n },\n },\n methods: {\n /**\n * Check if a menu is valid, meaning it is\n * defined and has at least one action\n *\n * @param action The action to check\n */\n isValidMenu(action) {\n return this.enabledSubmenuActions[action.id]?.length > 0;\n },\n async onBackToMenuClick(action) {\n if (!action) {\n return;\n }\n this.openedSubmenu = null;\n // Wait for first render\n await this.$nextTick();\n // Focus the previous menu action button\n this.$nextTick(() => {\n // Focus the action button, test both batch and single action references\n // as this mixin is used in both single and batch actions.\n const menuAction = this.$refs[`action-batch-${action.id}`]?.[0]\n || this.$refs[`action-${action.id}`]?.[0];\n if (menuAction) {\n menuAction.$el.querySelector('button')?.focus();\n }\n });\n },\n },\n});\n","import { showError, showSuccess } from '@nextcloud/dialogs';\nimport { NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from '../store/active.ts';\n/**\n * Execute an action on the current active node\n *\n * @param action The action to execute\n */\nexport async function executeAction(action) {\n const activeStore = useActiveStore();\n const currentFolder = activeStore.activeFolder;\n const currentNode = activeStore.activeNode;\n const currentView = activeStore.activeView;\n if (!currentFolder || !currentNode || !currentView) {\n logger.error('No active folder, node or view', { folder: currentFolder, node: currentNode, view: currentView });\n return;\n }\n if (currentNode.status === NodeStatus.LOADING) {\n logger.debug('Node is already loading', { node: currentNode });\n return;\n }\n // @ts-expect-error _children is private\n const contents = currentFolder?._children || [];\n const context = {\n nodes: [currentNode],\n view: currentView,\n folder: currentFolder,\n contents,\n };\n if (!action.enabled(context)) {\n logger.debug('Action is not not available for the current context', { action, node: currentNode, view: currentView });\n return;\n }\n let displayName = action.id;\n try {\n displayName = action.displayName(context) || displayName;\n }\n catch (error) {\n logger.error('Error while getting action display name', { action, error });\n }\n try {\n // Set the loading marker\n Vue.set(currentNode, 'status', NodeStatus.LOADING);\n activeStore.activeAction = action;\n const success = await action.exec(context);\n // If the action returns null, we stay silent\n if (success === null || success === undefined) {\n return;\n }\n if (success) {\n showSuccess(t('files', '{displayName}: done', { displayName }));\n return;\n }\n showError(t('files', '{displayName}: failed', { displayName }));\n }\n catch (error) {\n logger.error('Error while executing action', { action, error });\n showError(t('files', '{displayName}: failed', { displayName }));\n }\n finally {\n // Reset the loading marker\n Vue.set(currentNode, 'status', undefined);\n activeStore.activeAction = undefined;\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.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!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&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/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryActions.vue?vue&type=template&id=5f3391ea&scoped=true\"\nimport script from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryActions.vue?vue&type=style&index=0&id=5f3391ea&prod&lang=scss\"\nimport style1 from \"./FileEntryActions.vue?vue&type=style&index=1&id=5f3391ea&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 \"5f3391ea\",\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('td',{staticClass:\"files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[(_vm.isLoading)?_c('NcLoadingIcon',{attrs:{\"name\":_vm.loadingLabel}}):_c('NcCheckboxRadioSwitch',{attrs:{\"aria-label\":_vm.ariaLabel,\"model-value\":_vm.isSelected,\"data-cy-files-list-row-checkbox\":\"\"},on:{\"update:modelValue\":_vm.onSelectionChange}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryCheckbox.vue?vue&type=script&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\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 *\n * @param args\n */\nexport function useKeyboardStore(...args) {\n const store = defineStore('keyboard', {\n state: () => ({\n altKey: false,\n ctrlKey: false,\n metaKey: false,\n shiftKey: false,\n }),\n actions: {\n onEvent(event) {\n if (!event) {\n event = window.event;\n }\n Vue.set(this, 'altKey', !!event.altKey);\n Vue.set(this, 'ctrlKey', !!event.ctrlKey);\n Vue.set(this, 'metaKey', !!event.metaKey);\n Vue.set(this, 'shiftKey', !!event.shiftKey);\n },\n },\n });\n const keyboardStore = store(...args);\n // Make sure we only register the listeners once\n if (!keyboardStore._initialized) {\n window.addEventListener('keydown', keyboardStore.onEvent);\n window.addEventListener('keyup', keyboardStore.onEvent);\n window.addEventListener('mousemove', keyboardStore.onEvent);\n keyboardStore._initialized = true;\n }\n return keyboardStore;\n}\n","import { render, staticRenderFns } from \"./FileEntryCheckbox.vue?vue&type=template&id=b10e52a2\"\nimport script from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryCheckbox.vue?vue&type=script&lang=ts\"\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 (_vm.isRenaming)?_c('form',{directives:[{name:\"on-click-outside\",rawName:\"v-on-click-outside\",value:(_vm.onRename),expression:\"onRename\"}],ref:\"renameForm\",staticClass:\"files-list__row-rename\",attrs:{\"aria-label\":_vm.t('files', 'Rename file')},on:{\"submit\":function($event){$event.preventDefault();$event.stopPropagation();return _vm.onRename.apply(null, arguments)}}},[_c('NcTextField',{ref:\"renameInput\",attrs:{\"label\":_vm.renameLabel,\"autofocus\":\"\",\"required\":\"\",\"minlength\":1,\"enterkeyhint\":\"done\"},on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;return _vm.stopRenaming.apply(null, arguments)}},model:{value:(_vm.newName),callback:function ($$v) {_vm.newName=$$v},expression:\"newName\"}})],1):_c(_vm.linkTo.is,_vm._b({ref:\"basename\",tag:\"component\",staticClass:\"files-list__row-name-link\",attrs:{\"data-cy-files-list-row-name-link\":\"\"}},'component',_vm.linkTo.params,false),[_c('span',{staticClass:\"files-list__row-name-text\",attrs:{\"dir\":\"auto\"}},[_c('span',{staticClass:\"files-list__row-name-\",domProps:{\"textContent\":_vm._s(_vm.basename)}}),_vm._v(\" \"),(_vm.userConfigStore.userConfig.show_files_extensions)?_c('span',{staticClass:\"files-list__row-name-ext\",domProps:{\"textContent\":_vm._s(_vm.extension)}}):_vm._e()])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport axios, { isAxiosError } from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { FileType, NodeStatus } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { basename, dirname, extname } from '@nextcloud/paths';\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog';\nimport { defineStore } from 'pinia';\nimport Vue, { defineAsyncComponent, ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useUserConfigStore } from './userconfig.ts';\nexport const useRenamingStore = defineStore('renaming', () => {\n /**\n * The currently renamed node\n */\n const renamingNode = ref();\n /**\n * The new name of the currently renamed node\n */\n const newNodeName = ref('');\n /**\n * Internal flag to only allow calling `rename` once.\n */\n const isRenaming = ref(false);\n /**\n * Execute the renaming.\n * This will rename the node set as `renamingNode` to the configured new name `newName`.\n *\n * @return true if success, false if skipped (e.g. new and old name are the same)\n * @throws {Error} if renaming fails, details are set in the error message\n */\n async function rename() {\n if (renamingNode.value === undefined) {\n throw new Error('No node is currently being renamed');\n }\n const oldName = renamingNode.value.basename;\n let newName = newNodeName.value.trim();\n if (newName === oldName) {\n return false;\n }\n // Only rename once so we use this as some kind of mutex\n if (isRenaming.value) {\n return false;\n }\n isRenaming.value = true;\n const userConfig = useUserConfigStore();\n let node = renamingNode.value;\n Vue.set(node, 'status', NodeStatus.LOADING);\n try {\n if (userConfig.userConfig.show_dialog_file_extension) {\n const oldExtension = extname(oldName);\n const newExtension = extname(newName);\n // Check for extension change for files\n if (node.type === FileType.File\n && oldExtension !== newExtension\n && !(await showFileExtensionDialog(oldExtension, newExtension))) {\n // user selected to use the old extension\n newName = basename(newName, newExtension) + oldExtension;\n if (oldName === newName) {\n return false;\n }\n }\n if (!userConfig.userConfig.show_hidden\n && newName.startsWith('.')\n && !oldName.startsWith('.')\n && !(await showHiddenFileDialog(newName))) {\n return false;\n }\n }\n const oldEncodedSource = node.encodedSource;\n // rename the node\n node.rename(newName);\n logger.debug('Moving file to', { destination: node.encodedSource, oldEncodedSource });\n // create MOVE request\n await axios({\n method: 'MOVE',\n url: oldEncodedSource,\n headers: {\n Destination: node.encodedSource,\n Overwrite: 'F',\n },\n });\n // Update mime type if extension changed\n // as other related informations might have changed\n // on the backend but it is really hard to know on the front\n if (extname(oldName) !== extname(newName)) {\n node = await fetchNode(node.path);\n }\n // Success 🎉\n emit('files:node:updated', node);\n emit('files:node:renamed', node);\n emit('files:node:moved', {\n node,\n oldSource: `${dirname(node.source)}/${oldName}`,\n });\n // Reset the state not changed\n if (renamingNode.value === node) {\n $reset();\n }\n return true;\n }\n catch (error) {\n logger.error('Error while renaming file', { error });\n // Rename back as it failed\n node.rename(oldName);\n if (isAxiosError(error)) {\n // TODO: 409 means current folder does not exist, redirect ?\n if (error?.response?.status === 404) {\n throw new Error(t('files', 'Could not rename \"{oldName}\", it does not exist any more', { oldName }), { cause: error });\n }\n else if (error?.response?.status === 412) {\n throw new Error(t('files', 'The name \"{newName}\" is already used in the folder \"{dir}\". Please choose a different name.', {\n newName,\n dir: basename(renamingNode.value.dirname),\n }), { cause: error });\n }\n }\n // Unknown error\n throw new Error(t('files', 'Could not rename \"{oldName}\"', { oldName }), { cause: error });\n }\n finally {\n Vue.set(node, 'status', undefined);\n isRenaming.value = false;\n }\n }\n /**\n * Reset the store state\n */\n function $reset() {\n newNodeName.value = '';\n renamingNode.value = undefined;\n }\n // Make sure we only register the listeners once\n subscribe('files:node:rename', (node) => {\n renamingNode.value = node;\n newNodeName.value = node.basename;\n });\n return {\n $reset,\n newNodeName,\n rename,\n renamingNode,\n };\n});\n/**\n * Show a dialog asking user for confirmation about changing the file extension.\n *\n * @param oldExtension the old file name extension\n * @param newExtension the new file name extension\n */\nasync function showFileExtensionDialog(oldExtension, newExtension) {\n const { promise, resolve } = Promise.withResolvers();\n await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileExtension.vue')), { oldExtension, newExtension }, resolve);\n return promise;\n}\n/**\n * Show a dialog asking user for confirmation about renaming a file to a hidden file.\n *\n * @param filename - The new filename\n */\nasync function showHiddenFileDialog(filename) {\n const { promise, resolve } = Promise.withResolvers();\n await spawnDialog(defineAsyncComponent(() => import('../views/DialogConfirmFileHidden.vue')), { filename }, resolve);\n return promise;\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { InvalidFilenameError, InvalidFilenameErrorReason, validateFilename } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\n/**\n * Get the validity of a filename (empty if valid).\n * This can be used for `setCustomValidity` on input elements\n *\n * @param name The filename\n * @param escape Escape the matched string in the error (only set when used in HTML)\n */\nexport function getFilenameValidity(name, escape = false) {\n if (name.trim() === '') {\n return t('files', 'Filename must not be empty.');\n }\n try {\n validateFilename(name);\n return '';\n }\n catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n throw error;\n }\n switch (error.reason) {\n case InvalidFilenameErrorReason.Character:\n return t('files', '\"{char}\" is not allowed inside a filename.', { char: error.segment }, undefined, { escape });\n case InvalidFilenameErrorReason.ReservedName:\n return t('files', '\"{segment}\" is a reserved name and not allowed for filenames.', { segment: error.segment }, undefined, { escape: false });\n case InvalidFilenameErrorReason.Extension:\n if (error.segment.match(/\\.[a-z]/i)) {\n return t('files', '\"{extension}\" is not an allowed filetype.', { extension: error.segment }, undefined, { escape: false });\n }\n return t('files', 'Filenames must not end with \"{extension}\".', { extension: error.segment }, undefined, { escape: false });\n default:\n return t('files', 'Invalid filename.');\n }\n }\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryName.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!./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileEntryName.vue?vue&type=template&id=3e8ca2b0&scoped=true\"\nimport script from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryName.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FileEntryName.vue?vue&type=style&index=0&id=3e8ca2b0&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 \"3e8ca2b0\",\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('span',{staticClass:\"files-list__row-icon\"},[(_vm.source.type === 'folder')?[(_vm.dragover)?_vm._m(0):[_vm._m(1),_vm._v(\" \"),(_vm.folderOverlay)?_c(_vm.folderOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay\"}):_vm._e()]]:(_vm.previewUrl)?_c('span',{staticClass:\"files-list__row-icon-preview-container\"},[(_vm.hasBlurhash && (_vm.backgroundFailed === true || !_vm.backgroundLoaded))?_c('canvas',{ref:\"canvas\",staticClass:\"files-list__row-icon-blurhash\",attrs:{\"aria-hidden\":\"true\"}}):_vm._e(),_vm._v(\" \"),(_vm.backgroundFailed !== true)?_c('img',{key:_vm.source.fileid,ref:\"previewImg\",staticClass:\"files-list__row-icon-preview\",class:{ 'files-list__row-icon-preview--loaded': _vm.backgroundFailed === false },attrs:{\"alt\":\"\",\"loading\":\"lazy\",\"src\":_vm.previewUrl},on:{\"error\":_vm.onBackgroundError,\"load\":_vm.onBackgroundLoad}}):_vm._e()]):_vm._m(2),_vm._v(\" \"),(_vm.isFavorite)?_c('span',{staticClass:\"files-list__row-icon-favorite\"},[_vm._m(3)],1):(_vm.isRecentView && _vm.isRecentlyCreated)?_c('span',{staticClass:\"files-list__row-icon-recently-created\"},[_vm._m(4)],1):_vm._e(),_vm._v(\" \"),(_vm.fileOverlay)?_c(_vm.fileOverlay,{tag:\"component\",staticClass:\"files-list__row-icon-overlay files-list__row-icon-overlay--file\"}):_vm._e()],2)\n}\nvar staticRenderFns = [function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderOpenIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FolderIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FileIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('FavoriteIcon')\n},function (){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('RecentlyCreatedIcon')\n}]\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountGroup.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./AccountGroup.vue?vue&type=template&id=fa2b1464\"\nimport script from \"./AccountGroup.vue?vue&type=script&lang=js\"\nexport * from \"./AccountGroup.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-group-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./AccountPlus.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./AccountPlus.vue?vue&type=template&id=53a26aa0\"\nimport script from \"./AccountPlus.vue?vue&type=script&lang=js\"\nexport * from \"./AccountPlus.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon account-plus-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,14C12.33,14 7,15.33 7,18V20H23V18C23,15.33 17.67,14 15,14M6,10V7H4V10H1V12H4V15H6V12H9V10M15,12A4,4 0 0,0 19,8A4,4 0 0,0 15,4A4,4 0 0,0 11,8A4,4 0 0,0 15,12Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FolderOpen.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./FolderOpen.vue?vue&type=template&id=ae0c5fc0\"\nimport script from \"./FolderOpen.vue?vue&type=script&lang=js\"\nexport * from \"./FolderOpen.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon folder-open-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M19,20H4C2.89,20 2,19.1 2,18V6C2,4.89 2.89,4 4,4H10L12,6H19A2,2 0 0,1 21,8H21L4,8V18L6.14,10H23.21L20.93,18.5C20.7,19.37 19.92,20 19,20Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Key.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Key.vue?vue&type=template&id=499b3412\"\nimport script from \"./Key.vue?vue&type=script&lang=js\"\nexport * from \"./Key.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon key-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M7 14C5.9 14 5 13.1 5 12S5.9 10 7 10 9 10.9 9 12 8.1 14 7 14M12.6 10C11.8 7.7 9.6 6 7 6C3.7 6 1 8.7 1 12S3.7 18 7 18C9.6 18 11.8 16.3 12.6 14H16V18H20V14H23V10H12.6Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./NetworkOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./NetworkOutline.vue?vue&type=template&id=8f00cb50\"\nimport script from \"./NetworkOutline.vue?vue&type=script&lang=js\"\nexport * from \"./NetworkOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon network-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,20A1,1 0 0,0 14,19H13V17H17A2,2 0 0,0 19,15V5A2,2 0 0,0 17,3H7A2,2 0 0,0 5,5V15A2,2 0 0,0 7,17H11V19H10A1,1 0 0,0 9,20H2V22H9A1,1 0 0,0 10,23H14A1,1 0 0,0 15,22H22V20H15M7,15V5H17V15H7Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./PlayCircle.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./PlayCircle.vue?vue&type=template&id=3cc1493c\"\nimport script from \"./PlayCircle.vue?vue&type=script&lang=js\"\nexport * from \"./PlayCircle.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon play-circle-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M10,16.5V7.5L16,12M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10,10 0 0,0 12,2Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./Tag.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./Tag.vue?vue&type=template&id=356230e0\"\nimport script from \"./Tag.vue?vue&type=script&lang=js\"\nexport * from \"./Tag.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon tag-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M5.5,7A1.5,1.5 0 0,1 4,5.5A1.5,1.5 0 0,1 5.5,4A1.5,1.5 0 0,1 7,5.5A1.5,1.5 0 0,1 5.5,7M21.41,11.58L12.41,2.58C12.05,2.22 11.55,2 11,2H4C2.89,2 2,2.89 2,4V11C2,11.55 2.22,12.05 2.59,12.41L11.58,21.41C11.95,21.77 12.45,22 13,22C13.55,22 14.05,21.77 14.41,21.41L21.41,14.41C21.78,14.05 22,13.55 22,13C22,12.44 21.77,11.94 21.41,11.58Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_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!./CollectivesIcon.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!./CollectivesIcon.vue?vue&type=script&lang=js\"","\n\n\n\n","import { render, staticRenderFns } from \"./CollectivesIcon.vue?vue&type=template&id=dc7ddfee\"\nimport script from \"./CollectivesIcon.vue?vue&type=script&lang=js\"\nexport * from \"./CollectivesIcon.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',_vm._b({staticClass:\"material-design-icon collectives-icon\",attrs:{\"aria-hidden\":!_vm.title,\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 16 16\"}},[_c('path',{attrs:{\"d\":\"M2.9,8.8c0-1.2,0.4-2.4,1.2-3.3L0.3,6c-0.2,0-0.3,0.3-0.1,0.4l2.7,2.6C2.9,9,2.9,8.9,2.9,8.8z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M8,3.7c0.7,0,1.3,0.1,1.9,0.4L8.2,0.6c-0.1-0.2-0.3-0.2-0.4,0L6.1,4C6.7,3.8,7.3,3.7,8,3.7z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M3.7,11.5L3,15.2c0,0.2,0.2,0.4,0.4,0.3l3.3-1.7C5.4,13.4,4.4,12.6,3.7,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M15.7,6l-3.7-0.5c0.7,0.9,1.2,2,1.2,3.3c0,0.1,0,0.2,0,0.3l2.7-2.6C15.9,6.3,15.9,6.1,15.7,6z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M12.3,11.5c-0.7,1.1-1.8,1.9-3,2.2l3.3,1.7c0.2,0.1,0.4-0.1,0.4-0.3L12.3,11.5z\"}}),_vm._v(\" \"),_c('path',{attrs:{\"d\":\"M9.6,10.1c-0.4,0.5-1,0.8-1.6,0.8c-1.1,0-2-0.9-2.1-2C5.9,7.7,6.8,6.7,8,6.7c0.6,0,1.1,0.3,1.5,0.7 c0.1,0.1,0.1,0.1,0.2,0.1h1.4c0.2,0,0.4-0.2,0.3-0.5c-0.7-1.3-2.1-2.2-3.8-2.1C5.8,5,4.3,6.6,4.1,8.5C4,10.8,5.8,12.7,8,12.7 c1.6,0,2.9-0.9,3.5-2.3c0.1-0.2-0.1-0.4-0.3-0.4H9.9C9.8,10,9.7,10,9.6,10.1z\"}})])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"favorite-marker-icon\",attrs:{\"name\":_vm.t('files', 'Favorite'),\"svg\":_vm.StarSvg}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FavoriteIcon.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!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FavoriteIcon.vue?vue&type=template&id=4505d262&scoped=true\"\nimport script from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./FavoriteIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FavoriteIcon.vue?vue&type=style&index=0&id=4505d262&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 \"4505d262\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcIconSvgWrapper',{staticClass:\"recently-created-marker-icon\",attrs:{\"name\":_vm.t('files', 'Recently created'),\"path\":_vm.mdiPlus}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../../node_modules/css-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/sass-loader/dist/cjs.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./RecentlyCreatedIcon.vue?vue&type=template&id=251f6582&scoped=true\"\nimport script from \"./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"\nexport * from \"./RecentlyCreatedIcon.vue?vue&type=script&lang=ts\"\nimport style0 from \"./RecentlyCreatedIcon.vue?vue&type=style&index=0&id=251f6582&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 \"251f6582\",\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType } from '@nextcloud/files';\nimport { generateUrl } from '@nextcloud/router';\nimport { getSharingToken, isPublicShare } from '@nextcloud/sharing/public';\nimport { toValue } from '@vueuse/core';\nimport { computed } from 'vue';\n/**\n * Get the preview URL for a given node.\n *\n * @param node - The node to get the preview for\n * @param options - The preview options\n * @param options.crop - Whether to crop the preview (default: true)\n * @param options.fallback - Whether to use a mime type icon as fallback (default: true)\n * @param options.size - The size of the preview in pixels (default: 128). Can be a number or a tuple [width, height]\n */\nexport function usePreviewImage(node, options = {}) {\n return computed(() => {\n const source = toValue(node);\n if (!source) {\n return;\n }\n if (source.type === FileType.Folder) {\n return;\n }\n const fallback = toValue(options).fallback ?? true;\n if (source.attributes['has-preview'] !== true\n && source.mime !== undefined\n && source.mime !== 'application/octet-stream') {\n if (!fallback) {\n return;\n }\n const previewUrl = generateUrl('/core/mimeicon?mime={mime}', {\n mime: source.mime,\n });\n const url = new URL(window.location.origin + previewUrl);\n return url.href;\n }\n const crop = toValue(options).crop ?? true;\n const [sizeX, sizeY] = [toValue(options).size ?? 128].flat();\n try {\n const previewUrl = source.attributes.previewUrl\n || (isPublicShare()\n ? generateUrl('/apps/files_sharing/publicpreview/{token}?file={file}', {\n token: getSharingToken(),\n file: source.path,\n })\n : generateUrl('/core/preview?fileId={fileid}', {\n fileid: String(source.fileid),\n }));\n const url = new URL(window.location.origin + previewUrl);\n // Request tiny previews\n url.searchParams.set('x', sizeX.toString());\n url.searchParams.set('y', (sizeY ?? sizeX).toString());\n url.searchParams.set('mimeFallback', fallback.toString());\n // Etag to force refresh preview on change\n const etag = source.attributes.etag || source.mtime?.getTime() || '';\n url.searchParams.set('v', etag.slice(0, 6));\n // Handle cropping\n url.searchParams.set('a', crop ? '0' : '1');\n return url.href;\n }\n catch {\n return;\n }\n });\n}\n","import { registerDavProperty } from '@nextcloud/files/dav';\n/**\n *\n */\nexport function initLivePhotos() {\n registerDavProperty('nc:metadata-files-live-photo', { nc: 'http://nextcloud.org/ns' });\n}\n/**\n * @param node - The node\n */\nexport function isLivePhoto(node) {\n return node.attributes['metadata-files-live-photo'] !== undefined;\n}\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryPreview.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryPreview.vue?vue&type=template&id=285bdd62\"\nimport script from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryPreview.vue?vue&type=script&lang=ts\"\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","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, readonly, ref } from 'vue';\nconst actions = ref();\n/**\n * Get the registered and sorted file actions.\n */\nexport function useFileActions() {\n if (!actions.value) {\n // if not initialized by other component yet, initialize and subscribe to registry changes\n actions.value = getFileActions();\n getFilesRegistry().addEventListener('register:action', () => {\n actions.value = getFileActions();\n });\n }\n return readonly(actions);\n}\n/**\n * Get the enabled file actions for the given context.\n *\n * @param context - The context to check the enabled state of the actions against\n */\nexport function useEnabledFileActions(context) {\n const actions = useFileActions();\n return computed(() => actions.value\n .filter((action) => action.enabled === undefined\n || action.enabled(toValue(context)))\n .sort((a, b) => (a.order ?? 0) - (b.order ?? 0)));\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { computed } from 'vue';\nimport { useRoute } from 'vue-router/composables';\n/**\n * Get information about the current route\n */\nexport function useRouteParameters() {\n const route = useRoute();\n /**\n * Get the path of the current active directory\n */\n const directory = computed(() => String(route.query.dir || '/')\n // Remove any trailing slash but leave root slash\n .replace(/^(.+)\\/$/, '$1'));\n /**\n * Get the current fileId used on the route\n */\n const fileId = computed(() => {\n const fileId = Number.parseInt(route.params.fileid ?? '0') || null;\n return Number.isNaN(fileId) ? null : fileId;\n });\n /**\n * State of `openFile` route param\n */\n const openFile = computed(() => 'openfile' in route.query\n && (typeof route.query.openfile !== 'string'\n || route.query.openfile.toLocaleLowerCase() !== 'false'));\n // if `opendetails` is set it is considered truthy, but allow to explicitly set it to 'false'\n const openDetails = computed(() => 'opendetails' in route.query\n && (typeof route.query.opendetails !== 'string'\n || route.query.opendetails.toLocaleLowerCase() !== 'false'));\n return {\n /** Path of currently open directory */\n directory,\n /** Current active fileId */\n fileId,\n /** Should the active node should be opened (`openFile` route param) */\n openFile,\n /** Should the details sidebar be shown (`openDetails` route param) */\n openDetails,\n };\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { defineStore } from 'pinia';\nexport const useActionsMenuStore = defineStore('actionsmenu', {\n state: () => ({\n opened: null,\n }),\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport InformationSvg from '@mdi/svg/svg/information-outline.svg?raw';\nimport { getSidebar, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport logger from '../logger.ts';\nexport const ACTION_DETAILS = 'details';\nexport const action = {\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: ({ nodes }) => {\n const node = nodes[0];\n if (nodes.length !== 1 || !node) {\n return false;\n }\n const sidebar = getSidebar();\n if (!sidebar.available) {\n return false;\n }\n if (isPublicShare()) {\n return false;\n }\n return node.root.startsWith('/files/') && node.permissions !== Permission.NONE;\n },\n async exec({ nodes }) {\n const sidebar = getSidebar();\n const [node] = nodes;\n try {\n // If the sidebar is already open for the current file, do nothing\n if (sidebar.node?.source === node.source) {\n logger.debug('Sidebar already open for this file', { node });\n return null;\n }\n sidebar.open(node, 'sharing');\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\n hotkey: {\n key: 'D',\n description: t('files', 'Open the details sidebar'),\n },\n};\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./FileMultiple.vue?vue&type=script&lang=js\"","\n\n","import { render, staticRenderFns } from \"./FileMultiple.vue?vue&type=template&id=15fca808\"\nimport script from \"./FileMultiple.vue?vue&type=script&lang=js\"\nexport * from \"./FileMultiple.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon file-multiple-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M15,7H20.5L15,1.5V7M8,0H16L22,6V18A2,2 0 0,1 20,20H8C6.89,20 6,19.1 6,18V2A2,2 0 0,1 8,0M4,4V22H20V24H4A2,2 0 0,1 2,22V4H4Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType, } from '@nextcloud/files';\nimport { n } from '@nextcloud/l10n';\n/**\n * Extract dir and name from file path\n *\n * @param path - The full path\n * @return [dirPath, fileName]\n */\nexport function extractFilePaths(path) {\n const pathSections = path.split('/');\n const fileName = pathSections[pathSections.length - 1];\n const dirPath = pathSections.slice(0, pathSections.length - 1).join('/');\n return [dirPath, fileName];\n}\n/**\n * Generate a translated summary of an array of nodes\n *\n * @param nodes - The nodes to summarize\n * @param hidden - The number of hidden nodes\n */\nexport function getSummaryFor(nodes, hidden = 0) {\n const fileCount = nodes.filter((node) => node.type === FileType.File).length;\n const folderCount = nodes.filter((node) => node.type === FileType.Folder).length;\n const summary = [];\n if (fileCount > 0 || folderCount === 0) {\n const fileSummary = n('files', '%n file', '%n files', fileCount);\n summary.push(fileSummary);\n }\n if (folderCount > 0) {\n const folderSummary = n('files', '%n folder', '%n folders', folderCount);\n summary.push(folderSummary);\n }\n if (hidden > 0) {\n // TRANSLATORS: This is the number of hidden files or folders\n const hiddenSummary = n('files', '%n hidden', '%n hidden', hidden);\n summary.push(hiddenSummary);\n }\n return summary.join(' · ');\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list-drag-image\"},[_c('span',{staticClass:\"files-list-drag-image__icon\"},[_c('span',{ref:\"previewImg\"}),_vm._v(\" \"),(_vm.isSingleFolder)?_c('FolderIcon'):_c('FileMultipleIcon')],1),_vm._v(\" \"),_c('span',{staticClass:\"files-list-drag-image__name\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./DragAndDropPreview.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!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./DragAndDropPreview.vue?vue&type=template&id=6c14765c\"\nimport script from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nexport * from \"./DragAndDropPreview.vue?vue&type=script&lang=ts\"\nimport style0 from \"./DragAndDropPreview.vue?vue&type=style&index=0&id=6c14765c&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","import Vue from 'vue';\nimport DragAndDropPreview from '../components/DragAndDropPreview.vue';\nconst Preview = Vue.extend(DragAndDropPreview);\nlet preview;\n/**\n *\n * @param nodes\n */\nexport async function getDragAndDropPreview(nodes) {\n return new Promise((resolve) => {\n if (!preview) {\n preview = new Preview().$mount();\n document.body.appendChild(preview.$el);\n }\n preview.update(nodes);\n preview.$on('loaded', () => {\n resolve(preview.$el);\n preview.$off('loaded');\n });\n });\n}\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { FileType, Folder, File as NcFile, Node, NodeStatus, Permission } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { generateUrl } from '@nextcloud/router';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { vOnClickOutside } from '@vueuse/components';\nimport { extname } from 'path';\nimport Vue, { computed, defineComponent } from 'vue';\nimport { action as sidebarAction } from '../actions/sidebarAction.ts';\nimport logger from '../logger.ts';\nimport { dataTransferToFileTree, onDropExternalFiles, onDropInternalFiles } from '../services/DropService.ts';\nimport { getDragAndDropPreview } from '../utils/dragUtils.ts';\nimport { hashCode } from '../utils/hashUtils.ts';\nimport { isDownloadable } from '../utils/permissions.ts';\nVue.directive('onClickOutside', vOnClickOutside);\nexport default defineComponent({\n props: {\n source: {\n type: [Folder, NcFile, Node],\n required: true,\n },\n nodes: {\n type: Array,\n required: true,\n },\n isMtimeAvailable: {\n type: Boolean,\n default: false,\n },\n compact: {\n type: Boolean,\n default: false,\n },\n },\n provide() {\n return {\n defaultFileAction: computed(() => this.defaultFileAction),\n enabledFileActions: computed(() => this.enabledFileActions),\n };\n },\n data() {\n return {\n dragover: false,\n gridMode: false,\n };\n },\n computed: {\n fileid() {\n return this.source.fileid ?? 0;\n },\n uniqueId() {\n return hashCode(this.source.source);\n },\n isLoading() {\n return this.source.status === NodeStatus.LOADING;\n },\n /**\n * The display name of the current node\n * Either the nodes filename or a custom display name (e.g. for shares)\n */\n displayName() {\n // basename fallback needed for apps using old `@nextcloud/files` prior 3.6.0\n return this.source.displayname || this.source.basename;\n },\n /**\n * The display name without extension\n */\n basename() {\n if (this.extension === '') {\n return this.displayName;\n }\n return this.displayName.slice(0, 0 - this.extension.length);\n },\n /**\n * The extension of the file\n */\n extension() {\n if (this.source.type === FileType.Folder) {\n return '';\n }\n return extname(this.displayName);\n },\n draggingFiles() {\n return this.draggingStore.dragging;\n },\n selectedFiles() {\n return this.selectionStore.selected;\n },\n isSelected() {\n return this.selectedFiles.includes(this.source.source);\n },\n isRenaming() {\n return this.renamingStore.renamingNode === this.source;\n },\n isRenamingSmallScreen() {\n return this.isRenaming && this.isNarrow;\n },\n isActive() {\n // Not using activeNode here because we want to\n // be reactive to the url change directly\n return String(this.fileid) === String(this.currentRouteFileId);\n },\n /**\n * Check if the source is in a failed state after an API request\n */\n isFailedSource() {\n return this.source.status === NodeStatus.FAILED;\n },\n canDrag() {\n if (this.isRenaming) {\n return false;\n }\n // Ignore if the node is not available\n if (this.isFailedSource) {\n return false;\n }\n const canDrag = (node) => {\n return (node?.permissions & Permission.UPDATE) !== 0;\n };\n // If we're dragging a selection, we need to check all files\n if (this.selectedFiles.length > 0) {\n const nodes = this.selectedFiles.map((source) => this.filesStore.getNode(source));\n return nodes.every(canDrag);\n }\n return canDrag(this.source);\n },\n canDrop() {\n if (this.source.type !== FileType.Folder) {\n return false;\n }\n // Ignore if the node is not available\n if (this.isFailedSource) {\n return false;\n }\n // If the current folder is also being dragged, we can't drop it on itself\n if (this.draggingFiles.includes(this.source.source)) {\n return false;\n }\n return (this.source.permissions & Permission.CREATE) !== 0;\n },\n openedMenu: {\n get() {\n return this.actionsMenuStore.opened === this.uniqueId.toString();\n },\n set(opened) {\n // If the menu is opened on another file entry, we ignore closed events\n if (opened === false && this.actionsMenuStore.opened !== this.uniqueId.toString()) {\n return;\n }\n // If opened, we specify the current file id\n // else we set it to null to close the menu\n this.actionsMenuStore.opened = opened\n ? this.uniqueId.toString()\n : null;\n },\n },\n mtime() {\n // If the mtime is not a valid date, return it as is\n if (this.source.mtime && !isNaN(this.source.mtime.getDate())) {\n return this.source.mtime;\n }\n if (this.source.crtime && !isNaN(this.source.crtime.getDate())) {\n return this.source.crtime;\n }\n return null;\n },\n mtimeOpacity() {\n if (!this.mtime) {\n return {};\n }\n // The time when we start reducing the opacity\n const maxOpacityTime = 31 * 24 * 60 * 60 * 1000; // 31 days\n // everything older than the maxOpacityTime will have the same value\n const timeDiff = Date.now() - this.mtime.getTime();\n if (timeDiff < 0) {\n // this means we have an invalid mtime which is in the future!\n return {};\n }\n // inversed time difference from 0 to maxOpacityTime (which would mean today)\n const opacityTime = Math.max(0, maxOpacityTime - timeDiff);\n // 100 = today, 0 = 31 days ago or older\n const percentage = Math.round(opacityTime * 100 / maxOpacityTime);\n return {\n color: `color-mix(in srgb, var(--color-main-text) ${percentage}%, var(--color-text-maxcontrast))`,\n };\n },\n /**\n * Sorted actions that are enabled for this node\n */\n enabledFileActions() {\n if (this.source.status === NodeStatus.FAILED) {\n return [];\n }\n return this.actions\n .filter((action) => {\n if (!action.enabled) {\n return true;\n }\n // In case something goes wrong, since we don't want to break\n // the entire list, we filter out actions that throw an error.\n try {\n return action.enabled({\n nodes: [this.source],\n view: this.activeView,\n folder: this.activeFolder,\n contents: this.nodes,\n });\n }\n catch (error) {\n logger.error('Error while checking action', { action, error });\n return false;\n }\n })\n .sort((a, b) => (a.order || 0) - (b.order || 0));\n },\n defaultFileAction() {\n return this.enabledFileActions.find((action) => action.default !== undefined);\n },\n },\n watch: {\n /**\n * When the source changes, reset the preview\n * and fetch the new one.\n *\n * @param newSource The new value of the source prop\n * @param oldSource The previous value\n */\n source(newSource, oldSource) {\n if (newSource.source !== oldSource.source) {\n this.resetState();\n }\n },\n openedMenu() {\n // Checking if the menu is really closed and not\n // just a change in the open state to another file entry.\n if (this.actionsMenuStore.opened === null) {\n // Reset any right menu position potentially set\n logger.debug('All actions menu closed, resetting right menu position...');\n const root = this.$el?.closest('main.app-content');\n if (root !== null) {\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n }\n },\n },\n beforeDestroy() {\n this.resetState();\n },\n methods: {\n resetState() {\n // Reset the preview state\n this.$refs?.preview?.reset?.();\n // Close menu\n this.openedMenu = false;\n },\n // Open the actions menu on right click\n onRightClick(event) {\n // If already opened, fallback to default browser\n if (this.openedMenu) {\n return;\n }\n // Ignore right click if the node is not available\n if (this.isFailedSource) {\n return;\n }\n // The grid mode is compact enough to not care about\n // the actions menu mouse position\n if (!this.gridMode) {\n // Actions menu is contained within the app content\n const root = this.$el?.closest('main.app-content');\n const contentRect = root.getBoundingClientRect();\n // Using Math.min/max to prevent the menu from going out of the AppContent\n // 200 = max width of the menu\n logger.debug('Setting actions menu position...');\n root.style.setProperty('--mouse-pos-x', Math.max(0, event.clientX - contentRect.left - 200) + 'px');\n root.style.setProperty('--mouse-pos-y', Math.max(0, event.clientY - contentRect.top) + 'px');\n }\n else {\n // Reset any right menu position potentially set\n const root = this.$el?.closest('main.app-content');\n root.style.removeProperty('--mouse-pos-x');\n root.style.removeProperty('--mouse-pos-y');\n }\n // If the clicked row is in the selection, open global menu\n const isMoreThanOneSelected = this.selectedFiles.length > 1;\n this.actionsMenuStore.opened = this.isSelected && isMoreThanOneSelected ? 'global' : this.uniqueId.toString();\n // Prevent any browser defaults\n event.preventDefault();\n event.stopPropagation();\n },\n execDefaultAction(event) {\n // Ignore click if we are renaming\n if (this.isRenaming) {\n return;\n }\n // Ignore right click (button & 2) and any auxiliary button expect mouse-wheel (button & 4)\n if (Boolean(event.button & 2) || event.button > 4) {\n return;\n }\n // Ignore if the node is not available\n if (this.isFailedSource) {\n return;\n }\n // if ctrl+click / cmd+click (MacOS uses the meta key) or middle mouse button (button & 4), open in new tab\n // also if there is no default action use this as a fallback\n const metaKeyPressed = event.ctrlKey || event.metaKey || event.button === 1;\n if (metaKeyPressed || !this.defaultFileAction) {\n // If no download permission, then we can not allow to download (direct link) the files\n if (!isDownloadable(this.source)) {\n return;\n }\n const url = isPublicShare()\n ? this.source.encodedSource\n : generateUrl('/f/{fileId}', { fileId: this.fileid });\n event.preventDefault();\n event.stopPropagation();\n // Open the file in a new tab if the meta key or the middle mouse button is clicked\n window.open(url, metaKeyPressed ? '_blank' : '_self');\n return;\n }\n // every special case handled so just execute the default action\n event.preventDefault();\n event.stopPropagation();\n // Execute the first default action if any\n this.defaultFileAction.exec({\n nodes: [this.source],\n folder: this.activeFolder,\n contents: this.nodes,\n view: this.activeView,\n });\n },\n openDetailsIfAvailable(event) {\n event.preventDefault();\n event.stopPropagation();\n if (sidebarAction?.enabled?.({\n nodes: [this.source],\n folder: this.activeFolder,\n contents: this.nodes,\n view: this.activeView,\n })) {\n sidebarAction.exec({\n nodes: [this.source],\n folder: this.activeFolder,\n contents: this.nodes,\n view: this.activeView,\n });\n }\n },\n onDragOver(event) {\n this.dragover = this.canDrop;\n if (!this.canDrop) {\n event.dataTransfer.dropEffect = 'none';\n return;\n }\n // Handle copy/move drag and drop\n if (event.ctrlKey) {\n event.dataTransfer.dropEffect = 'copy';\n }\n else {\n event.dataTransfer.dropEffect = 'move';\n }\n },\n onDragLeave(event) {\n // Counter bubbling, make sure we're ending the drag\n // only when we're leaving the current element\n const currentTarget = event.currentTarget;\n if (currentTarget?.contains(event.relatedTarget)) {\n return;\n }\n this.dragover = false;\n },\n async onDragStart(event) {\n event.stopPropagation();\n if (!this.canDrag || !this.fileid) {\n event.preventDefault();\n event.stopPropagation();\n return;\n }\n logger.debug('Drag started', { event });\n // Make sure that we're not dragging a file like the preview\n event.dataTransfer?.clearData?.();\n // Reset any renaming\n this.renamingStore.$reset();\n // Dragging set of files, if we're dragging a file\n // that is already selected, we use the entire selection\n if (this.selectedFiles.includes(this.source.source)) {\n this.draggingStore.set(this.selectedFiles);\n }\n else {\n this.draggingStore.set([this.source.source]);\n }\n const nodes = this.draggingStore.dragging\n .map((source) => this.filesStore.getNode(source));\n const image = await getDragAndDropPreview(nodes);\n event.dataTransfer?.setDragImage(image, -10, -10);\n },\n onDragEnd() {\n this.draggingStore.reset();\n this.dragover = false;\n logger.debug('Drag ended');\n },\n async onDrop(event) {\n // skip if native drop like text drag and drop from files names\n if (!this.draggingFiles && !event.dataTransfer?.items?.length) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n // If another button is pressed, cancel it. This\n // allows cancelling the drag with the right click.\n if (!this.canDrop || event.button) {\n return;\n }\n // Caching the selection\n const selection = this.draggingFiles;\n const items = Array.from(event.dataTransfer?.items || []);\n if (selection.length === 0 && items.some((item) => item.kind === 'file')) {\n // Snapshot DataTransfer items immediately so Blink clears data.items\n // after the first async yield. Then convert FileSystemEntry to File\n // inside dataTransferToFileTree (duck-typed via entry.isFile) rather\n // than deferring to @nextcloud/upload's batchUpload, whose\n // instanceof-based conversion silently no-ops on some Chromium builds.\n // See https://github.com/nextcloud/server/issues/60139\n const fileTree = await dataTransferToFileTree(items);\n // canDrop already gates this branch on FileType.Folder, but the\n // type system can't see that — narrow defensively so a future\n // loosening of canDrop can't silently lie via the cast below.\n // Use the `type` field rather than `instanceof Folder`: apps\n // bundle their own copy of @nextcloud/files, so a Folder from\n // an app would not be `instanceof` the server's Folder class.\n if (this.source.type !== FileType.Folder) {\n logger.error('onDrop: external drop target is not a Folder', { source: this.source });\n this.dragover = false;\n return;\n }\n // Fetch destination contents for conflict resolution\n const cachedContents = this.filesStore.getNodesByPath(this.activeView.id, this.source.path);\n const contents = cachedContents.length === 0\n ? (await this.activeView.getContents(this.source.path)).contents\n : cachedContents;\n logger.debug('Start uploading dropped files', { target: this.source.path, fileTree });\n await onDropExternalFiles(fileTree, this.source, contents);\n this.dragover = false;\n return;\n }\n // We might not have the target directory fetched yet\n const cachedContents = this.filesStore.getNodesByPath(this.activeView.id, this.source.path);\n const contents = cachedContents.length === 0\n ? (await this.activeView.getContents(this.source.path)).contents\n : cachedContents;\n const isCopy = event.ctrlKey;\n this.dragover = false;\n logger.debug('Dropped', { event, folder: this.source, selection });\n const nodes = selection.map((source) => this.filesStore.getNode(source));\n await onDropInternalFiles(nodes, this.source, contents, isCopy);\n // Reset selection after we dropped the files\n // if the dropped files are within the selection\n if (selection.some((source) => this.selectedFiles.includes(source))) {\n logger.debug('Dropped selection, resetting select store...');\n this.selectionStore.reset();\n }\n },\n t,\n },\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * Simple non-secure hashing function similar to Java's `hashCode`\n *\n * @param str The string to hash\n * @return a non secure hash of the string\n */\nexport function hashCode(str) {\n let hash = 0;\n for (let i = 0; i < str.length; i++) {\n hash = ((hash << 5) - hash + str.charCodeAt(i)) | 0;\n }\n return (hash >>> 0);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { Permission } from '@nextcloud/files';\n/**\n * Check permissions on the node if it can be downloaded\n *\n * @param node The node to check\n * @return True if downloadable, false otherwise\n */\nexport function isDownloadable(node) {\n if ((node.permissions & Permission.READ) === 0) {\n return false;\n }\n // check hide-download property of shares\n if (node.attributes['hide-download'] === true\n || node.attributes['hide-download'] === 'true') {\n return false;\n }\n // If the mount type is a share, ensure it got download permissions.\n if (node.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(node.attributes['share-attributes'] || '[]');\n const downloadAttribute = shareAttributes.find(({ scope, key }) => scope === 'permissions' && key === 'download');\n if (downloadAttribute !== undefined) {\n return downloadAttribute.value === true;\n }\n }\n return true;\n}\n/**\n * Check permissions on the node if it can be synced/open locally\n *\n * @param node The node to check\n * @return True if syncable, false otherwise\n */\nexport function isSyncable(node) {\n if (!node.isDavResource) {\n return false;\n }\n if ((node.permissions & Permission.WRITE) === 0) {\n return false;\n }\n // Syncable has the same permissions as downloadable for now\n return isDownloadable(node);\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('tr',_vm._g({staticClass:\"files-list__row\",class:{\n\t\t'files-list__row--dragover': _vm.dragover,\n\t\t'files-list__row--loading': _vm.isLoading,\n\t\t'files-list__row--active': _vm.isActive,\n\t},attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag}},_vm.rowListeners),[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"source\":_vm.source,\"dragover\":_vm.dragover},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),_c('FileEntryActions',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.isRenamingSmallScreen),expression:\"!isRenamingSmallScreen\"}],ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}}),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('td',{staticClass:\"files-list__row-mime\",attrs:{\"title\":_vm.mime,\"data-cy-files-list-row-mime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.mime))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__row-size\",style:(_vm.sizeOpacity),attrs:{\"data-cy-files-list-row-size\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('span',[_vm._v(_vm._s(_vm.size))])]):_vm._e(),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_c('span',[_vm._v(_vm._s(_vm.t('files', 'Unknown date')))])],1):_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.activeView.id}-${column.id}`,attrs:{\"data-cy-files-list-row-column-custom\":column.id},on:{\"click\":_vm.openDetailsIfAvailable}},[_c('CustomElementRender',{attrs:{\"active-folder\":_vm.activeFolder,\"active-view\":_vm.activeView,\"render\":_vm.adaptColumnRenderToCustomElementRender(column),\"source\":_vm.source}})],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntry.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntry.vue?vue&type=template&id=4fc1f0a8\"\nimport script from \"./FileEntry.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntry.vue?vue&type=script&lang=ts\"\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('tr',{staticClass:\"files-list__row\",class:{ 'files-list__row--active': _vm.isActive, 'files-list__row--dragover': _vm.dragover, 'files-list__row--loading': _vm.isLoading },attrs:{\"data-cy-files-list-row\":\"\",\"data-cy-files-list-row-fileid\":_vm.fileid,\"data-cy-files-list-row-name\":_vm.source.basename,\"draggable\":_vm.canDrag},on:{\"contextmenu\":_vm.onRightClick,\"dragover\":_vm.onDragOver,\"dragleave\":_vm.onDragLeave,\"dragstart\":_vm.onDragStart,\"dragend\":_vm.onDragEnd,\"drop\":_vm.onDrop}},[(_vm.isFailedSource)?_c('span',{staticClass:\"files-list__row--failed\"}):_vm._e(),_vm._v(\" \"),_c('FileEntryCheckbox',{attrs:{\"fileid\":_vm.fileid,\"is-loading\":_vm.isLoading,\"nodes\":_vm.nodes,\"source\":_vm.source}}),_vm._v(\" \"),_c('td',{staticClass:\"files-list__row-name\",attrs:{\"data-cy-files-list-row-name\":\"\"}},[_c('FileEntryPreview',{ref:\"preview\",attrs:{\"dragover\":_vm.dragover,\"grid-mode\":true,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}}),_vm._v(\" \"),_c('FileEntryName',{ref:\"name\",attrs:{\"basename\":_vm.basename,\"extension\":_vm.extension,\"source\":_vm.source},nativeOn:{\"auxclick\":function($event){return _vm.execDefaultAction.apply(null, arguments)},\"click\":function($event){return _vm.execDefaultAction.apply(null, arguments)}}})],1),_vm._v(\" \"),(!_vm.compact && _vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__row-mtime\",style:(_vm.mtimeOpacity),attrs:{\"data-cy-files-list-row-mtime\":\"\"},on:{\"click\":_vm.openDetailsIfAvailable}},[(_vm.mtime)?_c('NcDateTime',{attrs:{\"ignore-seconds\":\"\",\"timestamp\":_vm.mtime}}):_vm._e()],1):_vm._e(),_vm._v(\" \"),_c('FileEntryActions',{ref:\"actions\",class:`files-list__row-actions-${_vm.uniqueId}`,attrs:{\"opened\":_vm.openedMenu,\"grid-mode\":true,\"source\":_vm.source},on:{\"update:opened\":function($event){_vm.openedMenu=$event}}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileEntryGrid.vue?vue&type=script&lang=ts\"","import { render, staticRenderFns } from \"./FileEntryGrid.vue?vue&type=template&id=c13970d8\"\nimport script from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\nexport * from \"./FileEntryGrid.vue?vue&type=script&lang=ts\"\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 (_setup.activeChips.length > 0)?_c('ul',{class:_vm.$style.fileListFilterChips,attrs:{\"aria-label\":_setup.t('files', 'Active filters')}},_vm._l((_setup.activeChips),function(chip,index){return _c('li',{key:index},[_c(_setup.NcChip,{attrs:{\"aria-label-close\":_setup.t('files', 'Remove filter'),\"icon-svg\":chip.icon,\"text\":chip.text},on:{\"close\":chip.onclick},scopedSlots:_vm._u([(chip.user)?{key:\"icon\",fn:function(){return [_c(_setup.NcAvatar,{attrs:{\"disable-menu\":\"\",\"hide-status\":\"\",\"size\":24,\"user\":chip.user}})]},proxy:true}:null],null,true)})],1)}),0):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../css-loader/dist/cjs.js!./NcChip-DLfUzq07.css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../css-loader/dist/cjs.js!./NcChip-DLfUzq07.css\";\n export default content && content.locals ? content.locals : undefined;\n","import '../assets/NcChip-DLfUzq07.css';\nimport { c as mdiClose } from \"../chunks/mdi-DkJglNiS.mjs\";\nimport { useSlots, computed } from \"vue\";\nimport { N as NcActionButton } from \"../chunks/NcActionButton-K4jUGMlW.mjs\";\nimport { N as NcActions } from \"../chunks/NcActions-Ca_2vj8f.mjs\";\nimport { N as NcIconSvgWrapper } from \"../chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { r as register, m as t18, a as t } from \"../chunks/_l10n-DVz9Qdzk.mjs\";\nimport { n as normalizeComponent } from \"../chunks/_plugin-vue2_normalizer-DU4iP6Vu.mjs\";\nregister(t18);\nconst _sfc_main = {\n __name: \"NcChip\",\n props: {\n /**\n * aria label to set on the close button\n *\n * @default 'Close'\n */\n ariaLabelClose: {\n type: String,\n default: t(\"Close\")\n },\n /**\n * Container for the actions\n */\n actionsContainer: {\n type: String,\n default: \"body\"\n },\n /**\n * Main text of the chip.\n */\n text: {\n type: String,\n default: \"\"\n },\n /**\n * Set the chips design variant-\n *\n * This sets the background style of the chip, similar to NcButton's `variant`.\n *\n * @deprecated will be removed with v9 - use `variant` instead.\n */\n type: {\n type: String,\n default: \"secondary\",\n validator: (value) => [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(value)\n },\n /**\n * SVG path of the icon to use, this takes precedence over `iconSVG`.\n * For example icon paths from `@mdi/js` can be used.\n */\n iconPath: {\n type: String,\n default: null\n },\n /**\n * Inline SVG to use as the icon\n */\n iconSvg: {\n type: String,\n default: null\n },\n /**\n * Set to true to prevent the close button to be shown\n */\n noClose: {\n type: Boolean,\n default: false\n },\n /**\n * Set the chips design variant-\n *\n * This sets the background style of the chip, similar to NcButton's `variant`.\n *\n * @since 8.24.0\n */\n variant: {\n type: String,\n default: \"secondary\",\n validator: (value) => [\"primary\", \"secondary\", \"tertiary\", \"error\", \"warning\", \"success\"].includes(value)\n }\n },\n emits: [\"close\"],\n setup(__props, { emit }) {\n const props = __props;\n const slots = useSlots();\n const realVariant = computed(() => props.type !== \"secondary\" ? props.type : props.variant);\n const canClose = computed(() => !props.noClose);\n const hasActions = () => Boolean(slots.actions?.());\n const hasIcon = () => Boolean(props.iconPath || props.iconSvg || !!slots.icon?.());\n return { __sfc: true, props, emit, slots, realVariant, canClose, hasActions, hasIcon, mdiClose, NcActionButton, NcActions, NcIconSvgWrapper };\n }\n};\nvar _sfc_render = function render() {\n var _vm = this, _c = _vm._self._c, _setup = _vm._self._setupProxy;\n return _c(\"div\", { staticClass: \"nc-chip\", class: {\n [`nc-chip--${_setup.realVariant}`]: true,\n \"nc-chip--no-actions\": _vm.noClose && !_setup.hasActions(),\n \"nc-chip--no-icon\": !_setup.hasIcon()\n } }, [_setup.hasIcon() ? _c(\"span\", { staticClass: \"nc-chip__icon\" }, [_vm._t(\"icon\", function() {\n return [_vm.iconPath || _vm.iconSvg ? _c(_setup.NcIconSvgWrapper, { attrs: { \"inline\": \"\", \"path\": _vm.iconPath, \"svg\": _vm.iconPath ? void 0 : _vm.iconSvg, \"size\": 18 } }) : _vm._e()];\n })], 2) : _vm._e(), _c(\"span\", { staticClass: \"nc-chip__text\" }, [_vm._t(\"default\", function() {\n return [_vm._v(_vm._s(_vm.text))];\n })], 2), _setup.canClose || _setup.hasActions() ? _c(_setup.NcActions, { staticClass: \"nc-chip__actions\", attrs: { \"container\": _vm.actionsContainer, \"force-menu\": !_setup.canClose, \"variant\": \"tertiary-no-background\" } }, [_setup.canClose ? _c(_setup.NcActionButton, { attrs: { \"close-after-click\": \"\" }, on: { \"click\": function($event) {\n return _setup.emit(\"close\");\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(_setup.NcIconSvgWrapper, { attrs: { \"path\": _setup.mdiClose, \"size\": 20 } })];\n }, proxy: true }], null, false, 2547223506) }, [_vm._v(\" \" + _vm._s(_vm.ariaLabelClose) + \" \")]) : _vm._e(), _vm._t(\"actions\")], 2) : _vm._e()], 1);\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"c8e429a5\"\n);\nconst NcChip = __component__.exports;\nexport {\n NcChip as default\n};\n//# sourceMappingURL=NcChip.mjs.map\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilterChips.vue?vue&type=template&id=690b69f8\"\nimport script from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterChips.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilterChips.vue?vue&type=style&index=0&id=690b69f8&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\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 (_setup.isVisible)?_c(_setup.NcButton,{attrs:{\"size\":\"small\"},on:{\"click\":_setup.onClick}},[_vm._v(\"\\n\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\")]):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FileListFilterToSearch.vue?vue&type=template&id=f1a11948\"\nimport script from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterToSearch.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListHeader.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.enabled),expression:\"enabled\"}],class:`files-list__header-${_vm.header.id}`},[_c('span',{ref:\"mount\"})])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesListHeader.vue?vue&type=template&id=272fbca3\"\nimport script from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListHeader.vue?vue&type=script&lang=ts\"\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('tr',[_c('th',{staticClass:\"files-list__row-checkbox\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(_vm._s(_setup.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.isMimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mime\"}):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-size\"},[_c('span',[_vm._v(_vm._s(_setup.totalSize))])]):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('td',{staticClass:\"files-list__column files-list__row-mtime\"}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.columns),function(column){return _c('th',{key:column.id,class:_setup.classForColumn(column)},[_c('span',[_vm._v(_vm._s(column.summary?.(_vm.nodes, _vm.currentView)))])])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableFooter.vue?vue&type=script&setup=true&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!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableFooter.vue?vue&type=template&id=378a6e4a&scoped=true\"\nimport script from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesListTableFooter.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesListTableFooter.vue?vue&type=style&index=0&id=378a6e4a&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 \"378a6e4a\",\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('div',{staticClass:\"files-list__column files-list__row-actions-batch\",attrs:{\"data-cy-files-list-selection-actions\":\"\"}},[_c('NcActions',{ref:\"actionsMenu\",attrs:{\"open\":_vm.openedMenu,\"container\":\"#app-content-vue\",\"boundaries-element\":_vm.boundariesElement,\"disabled\":!!_vm.loading || _vm.areSomeNodesLoading,\"force-name\":true,\"inline\":_vm.enabledInlineActions.length,\"menu-name\":_vm.enabledInlineActions.length <= 1 ? _vm.t('files', 'Actions') : undefined},on:{\"update:open\":function($event){_vm.openedMenu=$event},\"close\":function($event){_vm.openedSubmenu = null}}},[_vm._l((_vm.enabledMenuActions),function(action,idx){return _c('NcActionButton',{key:action.id,ref:`action-batch-${action.id}`,refInFor:true,class:{\n\t\t\t\t[`files-list__row-actions-batch-${action.id}`]: true,\n\t\t\t\t[`files-list__row-actions-batch--menu`]: _vm.isValidMenu(action),\n\t\t\t},attrs:{\"id\":idx === 0 ? _vm.FILE_LIST_HEAD_FIRST_BATCH_ACTION_ID : undefined,\"close-after-click\":!_vm.isValidMenu(action),\"data-cy-files-list-selection-action\":action.id,\"is-menu\":_vm.isValidMenu(action),\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},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('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\")])}),_vm._v(\" \"),(_vm.openedSubmenu && _vm.enabledSubmenuActions[_vm.openedSubmenu?.id])?[_c('NcActionButton',{staticClass:\"files-list__row-actions-batch-back\",attrs:{\"data-cy-files-list-selection-action\":\"menu-back\"},on:{\"click\":function($event){return _vm.onBackToMenuClick(_vm.openedSubmenu)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('ArrowLeftIcon')]},proxy:true}],null,false,3001860362)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Back'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c('NcActionSeparator'),_vm._v(\" \"),_vm._l((_vm.enabledSubmenuActions[_vm.openedSubmenu?.id]),function(action){return _c('NcActionButton',{key:action.id,staticClass:\"files-list__row-actions-batch--submenu\",class:`files-list__row-actions-batch-${action.id}`,attrs:{\"close-after-click\":\"\",\"data-cy-files-list-selection-action\":action.id,\"aria-label\":action.displayName(_vm.actionContext) + ' ' + _vm.t('files', '(selected)') /** TRANSLATORS: Selected like 'selected files and folders' */,\"title\":action.title?.(_vm.actionContext)},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('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.actionContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(action.displayName(_vm.actionContext))+\"\\n\\t\\t\\t\")])})]:_vm._e()],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderActions.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!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderActions.vue?vue&type=template&id=53193162&scoped=true\"\nimport script from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderActions.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderActions.vue?vue&type=style&index=0&id=53193162&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 \"53193162\",\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:[{\n\t\t'files-list__column-sort-button--active': _vm.sortingMode === _vm.mode,\n\t\t'files-list__column-sort-button--size': _vm.sortingMode === 'size',\n\t}],attrs:{\"alignment\":_vm.mode === 'size' ? 'end' : 'start-reverse',\"variant\":\"tertiary\",\"title\":_vm.name},on:{\"click\":function($event){return _vm.toggleSortBy(_vm.mode)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.sortingMode !== _vm.mode || _vm.isAscSorting)?_c('MenuUp',{staticClass:\"files-list__column-sort-button-icon\"}):_c('MenuDown',{staticClass:\"files-list__column-sort-button-icon\"})]},proxy:true}])},[_vm._v(\" \"),_c('span',{staticClass:\"files-list__column-sort-button-text\"},[_vm._v(_vm._s(_vm.name))])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialViewConfig = loadState('files', 'viewConfigs', {});\nexport const useViewConfigStore = defineStore('viewconfig', () => {\n const viewConfigs = ref({ ...initialViewConfig });\n /**\n * Get the config for a specific view\n *\n * @param viewid Id of the view to fet the config for\n */\n function getConfig(viewid) {\n return viewConfigs.value[viewid] || {};\n }\n /**\n * Update the view config local store\n *\n * @param viewId The id of the view to update\n * @param key The config key to update\n * @param value The new value\n */\n function onUpdate(viewId, key, value) {\n if (!(viewId in viewConfigs.value)) {\n set(viewConfigs.value, viewId, {});\n }\n set(viewConfigs.value[viewId], key, value);\n }\n /**\n * Update the view config local store AND on server side\n *\n * @param view Id of the view to update\n * @param key Config key to update\n * @param value New value\n */\n async function update(view, key, value) {\n if (getCurrentUser() !== null) {\n await axios.put(generateUrl('/apps/files/api/v1/views'), {\n value,\n view,\n key,\n });\n }\n emit('files:view-config:updated', { view, key, value });\n }\n /**\n * Set the sorting key AND sort by ASC\n * The key param must be a valid key of a File object\n * If not found, will be searched within the File attributes\n *\n * @param key Key to sort by\n * @param view View to set the sorting key for\n */\n function setSortingBy(key = 'basename', view = 'files') {\n // Save new config\n update(view, 'sorting_mode', key);\n update(view, 'sorting_direction', 'asc');\n }\n /**\n * Toggle the sorting direction\n *\n * @param viewId id of the view to set the sorting order for\n */\n function toggleSortingDirection(viewId = 'files') {\n const config = viewConfigs.value[viewId] || { sorting_direction: 'asc' };\n const newDirection = config.sorting_direction === 'asc' ? 'desc' : 'asc';\n // Save new config\n update(viewId, 'sorting_direction', newDirection);\n }\n // Initialize event listener\n subscribe('files:view-config:updated', ({ view, key, value }) => onUpdate(view, key, value));\n return {\n viewConfigs,\n getConfig,\n setSortingBy,\n toggleSortingDirection,\n update,\n };\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { mapState } from 'pinia';\nimport Vue from 'vue';\nimport { useActiveStore } from '../store/active.ts';\nimport { useViewConfigStore } from '../store/viewConfig.ts';\nexport default Vue.extend({\n setup() {\n const activeStore = useActiveStore();\n return {\n activeStore,\n };\n },\n computed: {\n ...mapState(useViewConfigStore, ['getConfig', 'setSortingBy', 'toggleSortingDirection']),\n /**\n * Get the sorting mode for the current view\n */\n sortingMode() {\n return this.getConfig(this.activeStore.activeView?.id)?.sorting_mode\n || this.activeStore.activeView?.defaultSortKey\n || 'basename';\n },\n /**\n * Get the sorting direction for the current view\n */\n isAscSorting() {\n const sortingDirection = this.getConfig(this.activeStore.activeView?.id)?.sorting_direction;\n return sortingDirection !== 'desc';\n },\n },\n methods: {\n toggleSortBy(key) {\n // If we're already sorting by this key, flip the direction\n if (this.sortingMode === key) {\n this.toggleSortingDirection(this.activeStore.activeView?.id);\n return;\n }\n // else sort ASC by this new key\n this.setSortingBy(key, this.activeStore.activeView?.id);\n },\n },\n});\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeaderButton.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!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeaderButton.vue?vue&type=template&id=4a8557e6&scoped=true\"\nimport script from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeaderButton.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeaderButton.vue?vue&type=style&index=0&id=4a8557e6&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 \"4a8557e6\",\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',{staticClass:\"files-list__row-head\"},[_c('th',{staticClass:\"files-list__column files-list__row-checkbox\",on:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"esc\",27,$event.key,[\"Esc\",\"Escape\"]))return null;if($event.ctrlKey||$event.shiftKey||$event.altKey||$event.metaKey)return null;return _vm.resetSelection.apply(null, arguments)}}},[_c('NcCheckboxRadioSwitch',_vm._b({attrs:{\"id\":_vm.FILES_LIST_HEADER_SELECT_ALL_CHECKBOX_ID,\"data-cy-files-list-selection-checkbox\":\"\"},on:{\"update:model-value\":_vm.onToggleAll}},'NcCheckboxRadioSwitch',_vm.selectAllBind,false))],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__column files-list__row-name files-list__column--sortable\",attrs:{\"aria-sort\":_vm.ariaSortForMode('basename')}},[_c('span',{staticClass:\"files-list__row-icon\"}),_vm._v(\" \"),_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Name'),\"mode\":\"basename\"}})],1),_vm._v(\" \"),_c('th',{staticClass:\"files-list__row-actions\"},[_c('span',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.t('files', 'Actions'))+\"\\n\\t\\t\")])]),_vm._v(\" \"),(_vm.isMimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mime\",class:{ 'files-list__column--sortable': _vm.isMimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'File type'),\"mode\":\"mime\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isSizeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-size\",class:{ 'files-list__column--sortable': _vm.isSizeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('size')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Size'),\"mode\":\"size\"}})],1):_vm._e(),_vm._v(\" \"),(_vm.isMtimeAvailable)?_c('th',{staticClass:\"files-list__column files-list__row-mtime\",class:{ 'files-list__column--sortable': _vm.isMtimeAvailable },attrs:{\"aria-sort\":_vm.ariaSortForMode('mtime')}},[_c('FilesListTableHeaderButton',{attrs:{\"name\":_vm.t('files', 'Modified'),\"mode\":\"mtime\"}})],1):_vm._e(),_vm._v(\" \"),_vm._l((_vm.columns),function(column){return _c('th',{key:column.id,class:_vm.classForColumn(column),attrs:{\"aria-sort\":_vm.ariaSortForMode(column.id)}},[(!!column.sort)?_c('FilesListTableHeaderButton',{attrs:{\"name\":column.title,\"mode\":column.id}}):_c('span',[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(column.title)+\"\\n\\t\\t\")])],1)})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListTableHeader.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!./FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListTableHeader.vue?vue&type=template&id=5a72550e&scoped=true\"\nimport script from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nexport * from \"./FilesListTableHeader.vue?vue&type=script&lang=ts\"\nimport style0 from \"./FilesListTableHeader.vue?vue&type=style&index=0&id=5a72550e&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 \"5a72550e\",\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./VirtualList.vue?vue&type=script&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{staticClass:\"files-list\",class:{ 'files-list--grid': _vm.gridMode },attrs:{\"data-cy-files-list\":\"\"},on:{\"&scroll\":function($event){return _vm.onScroll.apply(null, arguments)}}},[_c('div',{ref:\"before\",staticClass:\"files-list__before\"},[_vm._t(\"before\")],2),_vm._v(\" \"),_c('div',{ref:\"filters\",staticClass:\"files-list__filters\"},[_vm._t(\"filters\")],2),_vm._v(\" \"),(!!_vm.$scopedSlots['header-overlay'])?_c('div',{staticClass:\"files-list__thead-overlay\"},[_vm._t(\"header-overlay\")],2):_vm._e(),_vm._v(\" \"),(_vm.dataSources.length === 0)?_c('div',{staticClass:\"files-list__empty\"},[_vm._t(\"empty\")],2):_vm._e(),_vm._v(\" \"),_c('table',{staticClass:\"files-list__table\",class:{\n\t\t\t'files-list__table--with-thead-overlay': !!_vm.$scopedSlots['header-overlay'],\n\t\t\t'files-list__table--hidden': _vm.dataSources.length === 0,\n\t\t},attrs:{\"aria-hidden\":_vm.dataSources.length === 0,\"inert\":_vm.dataSources.length === 0}},[(_vm.caption)?_c('caption',{staticClass:\"hidden-visually\"},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(_vm.caption)+\"\\n\\t\\t\")]):_vm._e(),_vm._v(\" \"),_c('thead',{ref:\"thead\",staticClass:\"files-list__thead\",attrs:{\"data-cy-files-list-thead\":\"\"}},[_vm._t(\"header\")],2),_vm._v(\" \"),_c('tbody',{staticClass:\"files-list__tbody\",style:(_vm.tbodyStyle),attrs:{\"data-cy-files-list-tbody\":\"\"}},_vm._l((_vm.renderedItems),function({ key, item },i){return _c(_vm.dataComponent,_vm._b({key:key,tag:\"component\",attrs:{\"source\":item,\"index\":i}},'component',_vm.extraProps,false))}),1),_vm._v(\" \"),_c('tfoot',{ref:\"footer\",staticClass:\"files-list__tfoot\",attrs:{\"data-cy-files-list-tfoot\":\"\"}},[_vm._t(\"footer\")],2)])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./VirtualList.vue?vue&type=template&id=097bcb72\"\nimport script from \"./VirtualList.vue?vue&type=script&lang=ts\"\nexport * from \"./VirtualList.vue?vue&type=script&lang=ts\"\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","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListHeaders, getFilesRegistry } from '@nextcloud/files';\nimport { computed, ref } from 'vue';\nconst headers = ref();\nconst sorted = computed(() => [...(headers.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list headers.\n */\nexport function useFileListHeaders() {\n if (!headers.value) {\n // if not initialized by other component yet, initialize and subscribe to registry changes\n headers.value = getFileListHeaders();\n getFilesRegistry().addEventListener('register:listHeader', () => {\n headers.value = getFileListHeaders();\n });\n }\n return sorted;\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.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!./FilesListVirtual.vue?vue&type=style&index=0&id=1a9725ff&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=1a9725ff&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/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesListVirtual.vue?vue&type=style&index=1&id=1a9725ff&prod&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=1&id=1a9725ff&prod&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesListVirtual.vue?vue&type=template&id=1a9725ff&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=1a9725ff&prod&scoped=true&lang=scss\"\nimport style1 from \"./FilesListVirtual.vue?vue&type=style&index=1&id=1a9725ff&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 \"1a9725ff\",\n null\n \n)\n\nexport default component.exports","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileListActions, getFilesRegistry } from '@nextcloud/files';\nimport { toValue } from '@vueuse/core';\nimport { computed, ref } from 'vue';\nconst actions = ref();\nconst sorted = computed(() => [...(actions.value ?? [])].sort((a, b) => a.order - b.order));\n/**\n * Get the registered and sorted file list actions.\n */\nexport function useFileListActions() {\n if (!actions.value) {\n // if not initialized by other component yet, initialize and subscribe to registry changes\n actions.value = getFileListActions();\n getFilesRegistry().addEventListener('register:listAction', () => {\n actions.value = getFileListActions();\n });\n }\n return sorted;\n}\n/**\n * Get the enabled file list actions for the given folder, contents and view.\n *\n * @param folder - The current folder\n * @param contents - The contents of the current folder\n * @param view - The current view\n */\nexport function useEnabledFileListActions(folder, contents, view) {\n const actions = useFileListActions();\n return computed(() => {\n if (toValue(folder) === undefined || toValue(view) === undefined) {\n return [];\n }\n return actions.value.filter((action) => action.enabled === undefined\n || action.enabled({ folder: toValue(folder), contents: toValue(contents), view: toValue(view) }));\n });\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { getSidebarActions, getSidebarTabs } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, readonly, ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from './active.ts';\nimport { useFilesStore } from './files.ts';\nexport const useSidebarStore = defineStore('sidebar', () => {\n const activeTab = ref();\n const isOpen = ref(false);\n const activeStore = useActiveStore();\n const currentNode = computed(() => isOpen.value ? activeStore.activeNode : undefined);\n const hasContext = computed(() => !!(currentNode.value && activeStore.activeFolder && activeStore.activeView));\n const currentContext = computed(() => {\n if (!hasContext.value) {\n return;\n }\n return {\n node: currentNode.value,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n };\n });\n const currentActions = computed(() => currentContext.value ? getActions(currentContext.value) : []);\n const currentTabs = computed(() => currentContext.value ? getTabs(currentContext.value) : []);\n /**\n * Open the sidebar for a given node and optional tab ID.\n *\n * @param node - The node to display in the sidebar.\n * @param tabId - Optional ID of the tab to activate.\n */\n function open(node, tabId) {\n if (!(node && activeStore.activeFolder && activeStore.activeView)) {\n logger.debug('sidebar: cannot open sidebar because the active folder or view is not set.', {\n node,\n activeFolder: activeStore.activeFolder,\n activeView: activeStore.activeView,\n });\n throw new Error('Cannot open sidebar because the active folder or view is not set.');\n }\n if (isOpen.value && currentNode.value?.source === node.source) {\n logger.debug('sidebar: already open for current node');\n if (tabId) {\n logger.debug('sidebar: already open for current node - switching tab', { tabId });\n setActiveTab(tabId);\n }\n return;\n }\n const newTabs = getTabs({\n node,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n });\n if (tabId && !newTabs.find(({ id }) => id === tabId)) {\n logger.warn(`sidebar: cannot open tab '${tabId}' because it is not available for the current context.`);\n activeTab.value = newTabs[0]?.id;\n }\n else {\n activeTab.value = tabId ?? newTabs[0]?.id;\n }\n logger.debug(`sidebar: opening for ${node.displayname}`, { node });\n activeStore.activeNode = node;\n isOpen.value = true;\n }\n /**\n * Close the sidebar.\n */\n function close() {\n isOpen.value = false;\n }\n /**\n * Get the available tabs for the sidebar.\n * If a context is provided, only tabs enabled for that context are returned.\n *\n * @param context - Optional context to filter the available tabs.\n */\n function getTabs(context) {\n let tabs = getSidebarTabs();\n if (context) {\n tabs = tabs.filter((tab) => tab.enabled === undefined || tab.enabled(context));\n }\n return tabs.sort((a, b) => a.order - b.order);\n }\n /**\n * Get the available actions for the sidebar.\n * If a context is provided, only actions enabled for that context are returned.\n *\n * @param context - Optional context to filter the available actions.\n */\n function getActions(context) {\n let actions = getSidebarActions();\n if (context) {\n actions = actions.filter((action) => action.enabled === undefined || action.enabled(context));\n }\n return actions.sort((a, b) => a.order - b.order);\n }\n /**\n * Set the active tab in the sidebar.\n *\n * @param tabId - The ID of the tab to activate.\n */\n function setActiveTab(tabId) {\n if (!currentTabs.value.find(({ id }) => id === tabId)) {\n throw new Error(`Cannot set sidebar tab '${tabId}' because it is not available for the current context.`);\n }\n activeTab.value = tabId;\n }\n // update the current node if updated\n subscribe('files:node:updated', (node) => {\n if (node.source === currentNode.value?.source) {\n activeStore.activeNode = node;\n }\n });\n // close the sidebar if the current node is deleted\n subscribe('files:node:deleted', (node) => {\n if (node.fileid === currentNode.value?.fileid) {\n close();\n }\n });\n subscribe('viewer:sidebar:open', ({ source }) => {\n const filesStore = useFilesStore();\n const node = filesStore.getNode(source);\n if (node) {\n logger.debug('sidebar: opening for node from Viewer.', { node });\n open(node);\n }\n else {\n logger.error(`sidebar: cannot open for node '${source}' because it was not found in the current view.`);\n }\n });\n let initialized = false;\n // close sidebar when parameter is removed from url\n subscribe('files:list:updated', () => {\n if (!initialized) {\n initialized = true;\n window.OCP.Files.Router._router.afterEach((to, from) => {\n if ((from.query && ('opendetails' in from.query))\n && (to.query && !('opendetails' in to.query))) {\n logger.debug('sidebar: closing because \"opendetails\" query parameter was removed from URL.');\n close();\n }\n });\n }\n });\n // watch open state and update URL query parameters\n watch(isOpen, (isOpen) => {\n const params = { ...(window.OCP?.Files?.Router?.params ?? {}) };\n const query = { ...(window.OCP?.Files?.Router?.query ?? {}) };\n logger.debug(`sidebar: current node changed: ${isOpen ? 'open' : 'closed'}`, { query, params, node: activeStore.activeNode });\n if (!isOpen && ('opendetails' in query)) {\n delete query.opendetails;\n window.OCP.Files.Router.goToRoute(null, params, query, true);\n }\n if (isOpen && !('opendetails' in query)) {\n window.OCP.Files.Router.goToRoute(null, params, {\n ...query,\n opendetails: 'true',\n }, true);\n }\n });\n return {\n activeTab,\n currentActions,\n currentContext,\n currentNode,\n currentTabs,\n hasContext,\n isOpen: readonly(isOpen),\n open,\n close,\n getActions,\n getTabs,\n setActiveTab,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { loadState } from '@nextcloud/initial-state';\n/**\n * Check whether the personal files view can be shown\n */\nexport function hasPersonalFilesView() {\n const storageStats = loadState('files', 'storageStats', { quota: -1 });\n // Don't show this view if the user has no storage quota\n return storageStats.quota !== 0;\n}\n/**\n * Get the default files view\n */\nexport function defaultView() {\n const { default_view: defaultView } = loadState('files', 'config', { default_view: 'files' });\n // the default view - only use the personal one if it is enabled\n if (defaultView !== 'personal' || hasPersonalFilesView()) {\n return defaultView;\n }\n return 'files';\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('NcAppContent',{attrs:{\"page-heading\":_vm.pageHeading,\"data-cy-files-content\":\"\"}},[_c('div',{staticClass:\"files-list__header\",class:{ 'files-list__header--public': _vm.isPublic }},[_c(_vm.isNarrow ? 'Teleport' : 'div',{tag:\"component\",attrs:{\"to\":_vm.isNarrow ? 'body' : undefined}},[(_vm.canUpload && !_vm.isQuotaExceeded && _vm.currentFolder)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",class:{ 'files-list__header-upload-button--narrow': _vm.isNarrow },attrs:{\"allow-folders\":\"\",\"no-label\":_vm.isNarrow,\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\",\"primary\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_vm._e()],1),_vm._v(\" \"),_c('BreadCrumbs',{attrs:{\"path\":_vm.directory},on:{\"reload\":_vm.fetchContent}}),_vm._v(\" \"),(_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__refresh-icon\",attrs:{\"name\":_vm.t('files', 'File list is reloading')}}):_vm._e(),_vm._v(\" \"),_c('NcActions',{staticClass:\"files-list__header-actions\",attrs:{\"inline\":1,\"variant\":\"tertiary\",\"force-name\":\"\"}},_vm._l((_vm.enabledFileListActions),function(action){return _c('NcActionButton',{key:action.id,attrs:{\"disabled\":!!_vm.loadingAction,\"data-cy-files-list-action\":action.id,\"close-after-click\":\"\"},on:{\"click\":function($event){return _vm.execFileListAction(action)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.loadingAction === action.id)?_c('NcLoadingIcon',{attrs:{\"size\":18}}):(action.iconSvgInline !== undefined && _vm.currentView)?_c('NcIconSvgWrapper',{attrs:{\"svg\":action.iconSvgInline(_vm.currentView)}}):_vm._e()]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_vm.actionDisplayName(action))+\"\\n\\t\\t\\t\")])}),1),_vm._v(\" \"),_c('FileListFilters'),_vm._v(\" \"),(_vm.enableGridView)?_c('NcButton',{staticClass:\"files-list__header-grid-button\",attrs:{\"aria-label\":_vm.gridViewButtonLabel,\"title\":_vm.gridViewButtonLabel,\"variant\":\"tertiary\"},on:{\"click\":_vm.toggleGridView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [(_vm.userConfig.grid_view)?_c('ListViewIcon'):_c('ViewGridIcon')]},proxy:true}],null,false,1682960703)}):_vm._e()],1),_vm._v(\" \"),(!_vm.loading && _vm.canUpload && _vm.currentFolder)?_c('DragAndDropNotice',{attrs:{\"current-folder\":_vm.currentFolder}}):_vm._e(),_vm._v(\" \"),(!_vm.currentView)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):_c('FilesListVirtual',{ref:\"filesListVirtual\",attrs:{\"current-folder\":_vm.currentFolder,\"current-view\":_vm.currentView,\"nodes\":_vm.dirContentsSorted,\"summary\":_vm.summary},scopedSlots:_vm._u([{key:\"empty\",fn:function(){return [(_vm.loading && !_vm.isRefreshing)?_c('NcLoadingIcon',{staticClass:\"files-list__loading-icon\",attrs:{\"size\":38,\"name\":_vm.t('files', 'Loading current folder')}}):(_vm.error)?_c('NcEmptyContent',{attrs:{\"name\":_vm.error,\"data-cy-files-content-error\":\"\"},scopedSlots:_vm._u([{key:\"action\",fn:function(){return [_c('NcButton',{attrs:{\"variant\":\"secondary\"},on:{\"click\":_vm.fetchContent},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('IconReload',{attrs:{\"size\":20}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Retry'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true},{key:\"icon\",fn:function(){return [_c('IconAlertCircleOutline')]},proxy:true}])}):(_vm.currentView?.emptyView)?_c('div',{staticClass:\"files-list__empty-view-wrapper\"},[_c('div',{ref:\"customEmptyView\"})]):_c('NcEmptyContent',{attrs:{\"name\":_vm.currentView?.emptyTitle || _vm.t('files', 'No files in here'),\"description\":_vm.currentView?.emptyCaption || _vm.t('files', 'Upload some content or sync with your devices!'),\"data-cy-files-content-empty\":\"\"},scopedSlots:_vm._u([(_vm.directory !== '/')?{key:\"action\",fn:function(){return [(_vm.canUpload && !_vm.isQuotaExceeded)?_c('UploadPicker',{staticClass:\"files-list__header-upload-button\",attrs:{\"allow-folders\":\"\",\"content\":_vm.getContent,\"destination\":_vm.currentFolder,\"forbidden-characters\":_vm.forbiddenCharacters,\"multiple\":\"\"},on:{\"failed\":_vm.onUploadFail,\"uploaded\":_vm.onUpload}}):_c('NcButton',{attrs:{\"to\":_vm.toPreviousDir,\"variant\":\"primary\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\"+_vm._s(_vm.t('files', 'Go back'))+\"\\n\\t\\t\\t\\t\\t\")])]},proxy:true}:null,{key:\"icon\",fn:function(){return [_c('NcIconSvgWrapper',{attrs:{\"svg\":_vm.currentView?.icon}})]},proxy:true}],null,true)})]},proxy:true}])})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { t } from '@nextcloud/l10n';\n/**\n * Whether error is a WebDAVClientError\n *\n * @param error - Any exception\n * @return - Whether error is a WebDAVClientError\n */\nfunction isWebDAVClientError(error) {\n return error instanceof Error && 'status' in error && 'response' in error;\n}\n/**\n * Get a localized error message from webdav request\n *\n * @param error - An exception from webdav request\n * @return Localized error message for end user\n */\nexport function humanizeWebDAVError(error) {\n if (error instanceof Error) {\n if (isWebDAVClientError(error)) {\n const status = error.status || error.response?.status || 0;\n if ([400, 404, 405].includes(status)) {\n return t('files', 'Folder not found');\n }\n else if (status === 403) {\n return t('files', 'This operation is forbidden');\n }\n else if (status === 500) {\n return t('files', 'This folder is unavailable, please try again later or contact the administration');\n }\n else if (status === 503) {\n return t('files', 'Storage is temporarily not available');\n }\n }\n // We don't need to show abortion error to the user as those are expected.\n if (error.name === 'AbortError') {\n return null;\n }\n return t('files', 'Unexpected error: {error}', { error: error.message });\n }\n return t('files', 'Unknown error');\n}\n","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../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=ed23df10&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=ed23df10&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=ed23df10&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=ed23df10&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 \"ed23df10\",\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(_setup.NcAppNavigation,{staticClass:\"files-navigation\",attrs:{\"data-cy-files-navigation\":\"\",\"aria-label\":_setup.t('files', 'Files')},scopedSlots:_vm._u([{key:\"search\",fn:function(){return [_c(_setup.FilesNavigationSearch)]},proxy:true},{key:\"default\",fn:function(){return [_c(_setup.FilesNavigationList),_vm._v(\" \"),_c(_setup.FilesAppSettings,{attrs:{\"open\":_setup.settingsOpened,\"data-cy-files-navigation-settings\":\"\"},on:{\"update:open\":function($event){_setup.settingsOpened=$event},\"close\":function($event){_setup.settingsOpened = false}}})]},proxy:true},{key:\"footer\",fn:function(){return [_c('ul',{staticClass:\"app-navigation-entry__settings\"},[_c(_setup.NavigationQuota),_vm._v(\" \"),_c(_setup.NcAppNavigationItem,{attrs:{\"name\":_setup.t('files', 'Files settings'),\"data-cy-files-navigation-settings-button\":\"\"},on:{\"click\":function($event){$event.preventDefault();$event.stopPropagation();_setup.settingsOpened = true}}},[_c(_setup.IconCog,{attrs:{\"slot\":\"icon\",\"size\":20},slot:\"icon\"})],1)],1)]},proxy:true}])})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./CogOutline.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./CogOutline.vue?vue&type=template&id=96fed70c\"\nimport script from \"./CogOutline.vue?vue&type=script&lang=js\"\nexport * from \"./CogOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon cog-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M12,8A4,4 0 0,1 16,12A4,4 0 0,1 12,16A4,4 0 0,1 8,12A4,4 0 0,1 12,8M12,10A2,2 0 0,0 10,12A2,2 0 0,0 12,14A2,2 0 0,0 14,12A2,2 0 0,0 12,10M10,22C9.75,22 9.54,21.82 9.5,21.58L9.13,18.93C8.5,18.68 7.96,18.34 7.44,17.94L4.95,18.95C4.73,19.03 4.46,18.95 4.34,18.73L2.34,15.27C2.21,15.05 2.27,14.78 2.46,14.63L4.57,12.97L4.5,12L4.57,11L2.46,9.37C2.27,9.22 2.21,8.95 2.34,8.73L4.34,5.27C4.46,5.05 4.73,4.96 4.95,5.05L7.44,6.05C7.96,5.66 8.5,5.32 9.13,5.07L9.5,2.42C9.54,2.18 9.75,2 10,2H14C14.25,2 14.46,2.18 14.5,2.42L14.87,5.07C15.5,5.32 16.04,5.66 16.56,6.05L19.05,5.05C19.27,4.96 19.54,5.05 19.66,5.27L21.66,8.73C21.79,8.95 21.73,9.22 21.54,9.37L19.43,11L19.5,12L19.43,13L21.54,14.63C21.73,14.78 21.79,15.05 21.66,15.27L19.66,18.73C19.54,18.95 19.27,19.04 19.05,18.95L16.56,17.95C16.04,18.34 15.5,18.68 14.87,18.93L14.5,21.58C14.46,21.82 14.25,22 14,22H10M11.25,4L10.88,6.61C9.68,6.86 8.62,7.5 7.85,8.39L5.44,7.35L4.69,8.65L6.8,10.2C6.4,11.37 6.4,12.64 6.8,13.8L4.68,15.36L5.43,16.66L7.86,15.62C8.63,16.5 9.68,17.14 10.87,17.38L11.24,20H12.76L13.13,17.39C14.32,17.14 15.37,16.5 16.14,15.62L18.57,16.66L19.32,15.36L17.2,13.81C17.6,12.64 17.6,11.37 17.2,10.2L19.31,8.65L18.56,7.35L16.15,8.39C15.38,7.5 14.32,6.86 13.12,6.62L12.75,4H11.25Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationList,{class:_vm.$style.filesNavigationList,attrs:{\"aria-label\":_setup.t('files', 'Views')}},_vm._l((_setup.rootViews),function(view){return _c(_setup.FilesNavigationListItem,{key:view.id,attrs:{\"view\":view}})}),1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { getRemoteURL } from '@nextcloud/files/dav';\nimport { getCanonicalLocale, getLanguage } from '@nextcloud/l10n';\nimport { dirname, encodePath, join } from '@nextcloud/paths';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { getContents as getFiles } from './Files.ts';\nexport const folderTreeId = 'folders';\nexport const sourceRoot = `${getRemoteURL()}/files/${getCurrentUser()?.uid}`;\nconst collator = Intl.Collator([getLanguage(), getCanonicalLocale()], {\n numeric: true,\n usage: 'sort',\n});\nconst compareNodes = (a, b) => collator.compare(a.displayName ?? a.basename, b.displayName ?? b.basename);\n/**\n * Get all tree nodes recursively\n *\n * @param tree - The tree to process\n * @param currentPath - The current path\n * @param nodes - The nodes collected so far\n */\nfunction getTreeNodes(tree, currentPath = '/', nodes = []) {\n const sortedTree = tree.toSorted(compareNodes);\n for (const { id, basename, displayName, children } of sortedTree) {\n const path = join(currentPath, basename);\n const source = `${sourceRoot}${path}`;\n const node = {\n source,\n encodedSource: encodeSource(source),\n path,\n fileid: id,\n basename,\n };\n if (displayName) {\n node.displayName = displayName;\n }\n nodes.push(node);\n if (children.length > 0) {\n getTreeNodes(children, path, nodes);\n }\n }\n return nodes;\n}\n/**\n * Get folder tree nodes\n *\n * @param path - The path to get the tree from\n * @param depth - The depth to fetch\n * @param withParents - Whether to include parent folders in the response\n */\nexport async function getFolderTreeNodes(path = '/', depth = 1, withParents = false) {\n const { data: tree } = await axios.get(generateOcsUrl('/apps/files/api/v1/folder-tree'), {\n params: new URLSearchParams({ path, depth: String(depth), withParents: String(withParents) }),\n });\n const nodes = getTreeNodes(tree, withParents ? '/' : path);\n return nodes;\n}\nexport const getContents = (path, options) => getFiles(path, options);\n/**\n * Encode source URL\n *\n * @param source - The source URL\n */\nexport function encodeSource(source) {\n const { origin } = new URL(source);\n return origin + encodePath(source.slice(origin.length));\n}\n/**\n * Get parent source URL\n *\n * @param source - The source URL\n */\nexport function getSourceParent(source) {\n const parent = dirname(source);\n if (parent === sourceRoot) {\n return folderTreeId;\n }\n return `${folderTreeId}::${encodeSource(parent)}`;\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppNavigationItem,{staticClass:\"files-navigation__item\",attrs:{\"allow-collapse\":\"\",\"loading\":_setup.isLoading,\"data-cy-files-navigation-item\":_vm.view.id,\"exact\":_setup.hasChildViews,\"name\":_vm.view.name,\"open\":_setup.isExpanded,\"pinned\":_vm.view.sticky,\"to\":_setup.navigationRoute},on:{\"update:open\":_setup.onExpandCollapse},scopedSlots:_vm._u([(_vm.view.icon)?{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.view.icon}})]},proxy:true}:null],null,true)},[_vm._v(\" \"),(!_setup.hasChildViews && !_setup.childViewsLoaded && _vm.view.loadChildViews)?_c('li',{directives:[{name:\"show\",rawName:\"v-show\",value:(false),expression:\"false\"}],attrs:{\"role\":\"presentation\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.sortedChildViews),function(childView){return _c('FilesNavigationListItem',{key:childView.id,attrs:{\"level\":_vm.level + 1,\"view\":childView}})})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesNavigationListItem.vue?vue&type=template&id=008accd4\"\nimport script from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationListItem.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigationList.vue?vue&type=template&id=1b62d532\"\nimport script from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationList.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigationList.vue?vue&type=style&index=0&id=1b62d532&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\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(_setup.NcAppNavigationSearch,{attrs:{\"label\":_setup.searchLabel},scopedSlots:_vm._u([{key:\"actions\",fn:function(){return [_c(_setup.NcActions,{attrs:{\"aria-label\":_setup.t('files', 'Search scope options'),\"disabled\":_setup.isSearchView},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.searchStore.scope === 'globally' ? _setup.mdiSearchWeb : _setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'filter'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiMagnify}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search here'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcActionButton,{attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){_setup.searchStore.scope = 'globally'}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiSearchWeb}})]},proxy:true}])},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('files', 'Search everywhere'))+\"\\n\\t\\t\\t\")])],1)]},proxy:true}]),model:{value:(_setup.searchStore.query),callback:function ($$v) {_vm.$set(_setup.searchStore, \"query\", $$v)},expression:\"searchStore.query\"}})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"","/**\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { onUnmounted } from 'vue';\nimport { useRouter } from 'vue-router/composables';\n/**\n * Helper until we use Vue-Router v4 (Vue3).\n *\n * @param fn - The navigation guard\n */\nexport function onBeforeNavigation(fn) {\n const router = useRouter();\n const remove = router.beforeResolve(fn);\n onUnmounted(remove);\n}\n","import { render, staticRenderFns } from \"./FilesNavigationSearch.vue?vue&type=template&id=7f26c822\"\nimport script from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigationSearch.vue?vue&type=script&setup=true&lang=ts\"\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","/* eslint-disable no-undefined,no-param-reassign,no-shadow */\n\n/**\n * Throttle execution of a function. Especially useful for rate limiting\n * execution of handlers on events like resize and scroll.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher)\n * are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through,\n * as-is, to `callback` when the throttled-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.noTrailing] - Optional, defaults to false. If noTrailing is true, callback will only execute every `delay` milliseconds\n * while the throttled-function is being called. If noTrailing is false or unspecified, callback will be executed\n * one final time after the last throttled-function call. (After the throttled-function has not been called for\n * `delay` milliseconds, the internal counter is reset).\n * @param {boolean} [options.noLeading] - Optional, defaults to false. If noLeading is false, the first throttled-function call will execute callback\n * immediately. If noLeading is true, the first the callback execution will be skipped. It should be noted that\n * callback will never executed if both noLeading = true and noTrailing = true.\n * @param {boolean} [options.debounceMode] - If `debounceMode` is true (at begin), schedule `clear` to execute after `delay` ms. If `debounceMode` is\n * false (at end), schedule `callback` to execute after `delay` ms.\n *\n * @returns {Function} A new, throttled, function.\n */\nfunction throttle (delay, callback, options) {\n var _ref = options || {},\n _ref$noTrailing = _ref.noTrailing,\n noTrailing = _ref$noTrailing === void 0 ? false : _ref$noTrailing,\n _ref$noLeading = _ref.noLeading,\n noLeading = _ref$noLeading === void 0 ? false : _ref$noLeading,\n _ref$debounceMode = _ref.debounceMode,\n debounceMode = _ref$debounceMode === void 0 ? undefined : _ref$debounceMode;\n /*\n * After wrapper has stopped being called, this timeout ensures that\n * `callback` is executed at the proper times in `throttle` and `end`\n * debounce modes.\n */\n var timeoutID;\n var cancelled = false;\n\n // Keep track of the last time `callback` was executed.\n var lastExec = 0;\n\n // Function to clear existing timeout\n function clearExistingTimeout() {\n if (timeoutID) {\n clearTimeout(timeoutID);\n }\n }\n\n // Function to cancel next exec\n function cancel(options) {\n var _ref2 = options || {},\n _ref2$upcomingOnly = _ref2.upcomingOnly,\n upcomingOnly = _ref2$upcomingOnly === void 0 ? false : _ref2$upcomingOnly;\n clearExistingTimeout();\n cancelled = !upcomingOnly;\n }\n\n /*\n * The `wrapper` function encapsulates all of the throttling / debouncing\n * functionality and when executed will limit the rate at which `callback`\n * is executed.\n */\n function wrapper() {\n for (var _len = arguments.length, arguments_ = new Array(_len), _key = 0; _key < _len; _key++) {\n arguments_[_key] = arguments[_key];\n }\n var self = this;\n var elapsed = Date.now() - lastExec;\n if (cancelled) {\n return;\n }\n\n // Execute `callback` and update the `lastExec` timestamp.\n function exec() {\n lastExec = Date.now();\n callback.apply(self, arguments_);\n }\n\n /*\n * If `debounceMode` is true (at begin) this is used to clear the flag\n * to allow future `callback` executions.\n */\n function clear() {\n timeoutID = undefined;\n }\n if (!noLeading && debounceMode && !timeoutID) {\n /*\n * Since `wrapper` is being called for the first time and\n * `debounceMode` is true (at begin), execute `callback`\n * and noLeading != true.\n */\n exec();\n }\n clearExistingTimeout();\n if (debounceMode === undefined && elapsed > delay) {\n if (noLeading) {\n /*\n * In throttle mode with noLeading, if `delay` time has\n * been exceeded, update `lastExec` and schedule `callback`\n * to execute after `delay` ms.\n */\n lastExec = Date.now();\n if (!noTrailing) {\n timeoutID = setTimeout(debounceMode ? clear : exec, delay);\n }\n } else {\n /*\n * In throttle mode without noLeading, if `delay` time has been exceeded, execute\n * `callback`.\n */\n exec();\n }\n } else if (noTrailing !== true) {\n /*\n * In trailing throttle mode, since `delay` time has not been\n * exceeded, schedule `callback` to execute `delay` ms after most\n * recent execution.\n *\n * If `debounceMode` is true (at begin), schedule `clear` to execute\n * after `delay` ms.\n *\n * If `debounceMode` is false (at end), schedule `callback` to\n * execute after `delay` ms.\n */\n timeoutID = setTimeout(debounceMode ? clear : exec, debounceMode === undefined ? delay - elapsed : delay);\n }\n }\n wrapper.cancel = cancel;\n\n // Return the wrapper function.\n return wrapper;\n}\n\n/* eslint-disable no-undefined */\n\n/**\n * Debounce execution of a function. Debouncing, unlike throttling,\n * guarantees that a function is only executed a single time, either at the\n * very beginning of a series of calls, or at the very end.\n *\n * @param {number} delay - A zero-or-greater delay in milliseconds. For event callbacks, values around 100 or 250 (or even higher) are most useful.\n * @param {Function} callback - A function to be executed after delay milliseconds. The `this` context and all arguments are passed through, as-is,\n * to `callback` when the debounced-function is executed.\n * @param {object} [options] - An object to configure options.\n * @param {boolean} [options.atBegin] - Optional, defaults to false. If atBegin is false or unspecified, callback will only be executed `delay` milliseconds\n * after the last debounced-function call. If atBegin is true, callback will be executed only at the first debounced-function call.\n * (After the throttled-function has not been called for `delay` milliseconds, the internal counter is reset).\n *\n * @returns {Function} A new, debounced function.\n */\nfunction debounce (delay, callback, options) {\n var _ref = options || {},\n _ref$atBegin = _ref.atBegin,\n atBegin = _ref$atBegin === void 0 ? false : _ref$atBegin;\n return throttle(delay, callback, {\n debounceMode: atBegin !== false\n });\n}\n\nexport { debounce, throttle };\n//# sourceMappingURL=index.js.map\n","\n\n","import mod from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../vue-loader/lib/index.js??vue-loader-options!./ChartPieOutline.vue?vue&type=script&lang=js\"","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\n\n\n\n\n","import { render, staticRenderFns } from \"./ChartPieOutline.vue?vue&type=template&id=a29cc97a\"\nimport script from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\nexport * from \"./ChartPieOutline.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',_vm._b({staticClass:\"material-design-icon chart-pie-outline-icon\",attrs:{\"aria-hidden\":_vm.title ? null : 'true',\"aria-label\":_vm.title,\"role\":\"img\"},on:{\"click\":function($event){return _vm.$emit('click', $event)}}},'span',_vm.$attrs,false),[_c('svg',{staticClass:\"material-design-icon__svg\",attrs:{\"fill\":_vm.fillColor,\"width\":_vm.size,\"height\":_vm.size,\"viewBox\":\"0 0 24 24\"}},[_c('path',{attrs:{\"d\":\"M13 11H19.95Q19.58 8.25 17.66 6.34 15.75 4.43 13 4.05M11 19.95V4.05Q8 4.43 6 6.69 4 8.95 4 12T6 17.31Q8 19.58 11 19.95M13 19.95Q15.75 19.6 17.68 17.68 19.6 15.75 19.95 13H13M12 12M12 22Q9.93 22 8.1 21.21 6.28 20.43 4.93 19.08 3.58 17.73 2.79 15.9 2 14.08 2 12T2.79 8.1Q3.58 6.28 4.93 4.93 6.28 3.58 8.1 2.79 9.93 2 12 2T15.89 2.79Q17.7 3.58 19.06 4.94 20.43 6.3 21.21 8.11 22 9.93 22 12 22 14.05 21.21 15.88 20.43 17.7 19.08 19.06 17.73 20.43 15.9 21.21 14.08 22 12 22Z\"}},[(_vm.title)?_c('title',[_vm._v(_vm._s(_vm.title))]):_vm._e()])])])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/sass-loader/dist/cjs.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./NavigationQuota.vue?vue&type=style&index=0&id=062ef4b2&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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=062ef4b2&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=062ef4b2&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=062ef4b2&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 \"062ef4b2\",\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-description\":_vm.t('files', 'Storage information'),\"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\",\"aria-label\":_vm.t('files', 'Storage quota'),\"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 }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsDialog,{attrs:{\"legacy\":false,\"name\":_setup.t('files', 'Files settings'),\"no-version\":\"\",\"open\":_vm.open,\"show-navigation\":\"\"},on:{\"update:open\":function($event){return _setup.emit('close')}}},[_c(_setup.FilesAppSettingsGeneral),_vm._v(\" \"),_c(_setup.FilesAppSettingsAppearance),_vm._v(\" \"),_c(_setup.FilesAppSettingsLegacyApi),_vm._v(\" \"),_c(_setup.FilesAppSettingsWarnings),_vm._v(\" \"),_c(_setup.FilesAppSettingsWebDav),_vm._v(\" \"),_c(_setup.FilesAppSettingsShortcuts)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"appearance\",\"name\":_setup.t('files', 'Appearance')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show hidden files')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_hidden', $event)}},model:{value:(_setup.store.userConfig.show_hidden),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_hidden\", $$v)},expression:\"store.userConfig.show_hidden\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file type column')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_mime_column', $event)}},model:{value:(_setup.store.userConfig.show_mime_column),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_mime_column\", $$v)},expression:\"store.userConfig.show_mime_column\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Show file extensions')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_files_extensions', $event)}},model:{value:(_setup.store.userConfig.show_files_extensions),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_files_extensions\", $$v)},expression:\"store.userConfig.show_files_extensions\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Crop image previews')},on:{\"update:modelValue\":function($event){return _setup.store.update('crop_image_previews', $event)}},model:{value:(_setup.store.userConfig.crop_image_previews),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"crop_image_previews\", $$v)},expression:\"store.userConfig.crop_image_previews\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsAppearance.vue?vue&type=template&id=1d0fcc36\"\nimport script from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsAppearance.vue?vue&type=script&setup=true&lang=ts\"\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(_setup.NcAppSettingsSection,{attrs:{\"id\":\"settings\",\"name\":_setup.t('files', 'General')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort favorites first')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_favorites_first', $event)}},model:{value:(_setup.store.userConfig.sort_favorites_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_favorites_first\", $$v)},expression:\"store.userConfig.sort_favorites_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Sort folders before files')},on:{\"update:modelValue\":function($event){return _setup.store.update('sort_folders_first', $event)}},model:{value:(_setup.store.userConfig.sort_folders_first),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"sort_folders_first\", $$v)},expression:\"store.userConfig.sort_folders_first\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Enable folder tree view')},on:{\"update:modelValue\":function($event){return _setup.store.update('folder_tree', $event)}},model:{value:(_setup.store.userConfig.folder_tree),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"folder_tree\", $$v)},expression:\"store.userConfig.folder_tree\"}})],1),_vm._v(\" \"),_c(_setup.NcRadioGroup,{attrs:{\"label\":_setup.t('files', 'Default view')},on:{\"update:modelValue\":function($event){return _setup.store.update('default_view', $event)}},model:{value:(_setup.store.userConfig.default_view),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"default_view\", $$v)},expression:\"store.userConfig.default_view\"}},[_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'All files'),\"value\":\"files\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiFolderOutline}})]},proxy:true}])}),_vm._v(\" \"),_c(_setup.NcRadioGroupButton,{attrs:{\"label\":_setup.t('files', 'Personal files'),\"value\":\"personal\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"path\":_setup.mdiAccountOutline}})]},proxy:true}])})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsGeneral.vue?vue&type=template&id=286756ea\"\nimport script from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsGeneral.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{ref:\"el\"})\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=template&id=6d8612e1\"\nimport script from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApiEntry.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return (_setup.apiSettings.length !== 0)?_c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"api-settings\",\"name\":_setup.t('files', 'Additional settings')}},_vm._l((_setup.apiSettings),function(setting){return _c(_setup.FilesAppSettingsLegacyApiEntry,{key:setting.name,attrs:{\"setting\":setting}})}),1):_vm._e()\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsLegacyApi.vue?vue&type=template&id=f4559f9c\"\nimport script from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsLegacyApi.vue?vue&type=script&setup=true&lang=ts\"\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(_setup.NcAppSettingsShortcutsSection,[_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Actions')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'File actions'),\"hotkey\":\"A\"}}),_vm._v(\" \"),_vm._l((_setup.actionHotkeys),function(hotkey){return _c(_setup.NcHotkey,{key:hotkey.id,attrs:{\"label\":hotkey.label,\"hotkey\":hotkey.hotkey}})})],2),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Selection')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select all files'),\"hotkey\":\"Control A\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Deselect all'),\"hotkey\":\"Escape\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select or deselect'),\"hotkey\":\"Control Space\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Select a range'),\"hotkey\":\"Control Shift Space\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'Navigation')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to parent folder'),\"hotkey\":\"Alt ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file above'),\"hotkey\":\"ArrowUp\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go to file below'),\"hotkey\":\"ArrowDown\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go left in grid'),\"hotkey\":\"ArrowLeft\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Go right in grid'),\"hotkey\":\"ArrowRight\"}})],1),_vm._v(\" \"),_c(_setup.NcHotkeyList,{attrs:{\"label\":_setup.t('files', 'View')}},[_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Toggle grid view'),\"hotkey\":\"V\"}}),_vm._v(\" \"),_c(_setup.NcHotkey,{attrs:{\"label\":_setup.t('files', 'Show those shortcuts'),\"hotkey\":\"?\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettingsShortcuts.vue?vue&type=template&id=5a8abf86\"\nimport script from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettingsShortcuts.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c(_setup.NcAppSettingsSection,{attrs:{\"id\":\"warning\",\"name\":_setup.t('files', 'Warnings')}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before changing a file extension')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_file_extension', $event)}},model:{value:(_setup.store.userConfig.show_dialog_file_extension),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_file_extension\", $$v)},expression:\"store.userConfig.show_dialog_file_extension\"}}),_vm._v(\" \"),_c(_setup.NcFormBoxSwitch,{attrs:{\"label\":_setup.t('files', 'Warn before deleting a file')},on:{\"update:modelValue\":function($event){return _setup.store.update('show_dialog_deletion', $event)}},model:{value:(_setup.store.userConfig.show_dialog_deletion),callback:function ($$v) {_vm.$set(_setup.store.userConfig, \"show_dialog_deletion\", $$v)},expression:\"store.userConfig.show_dialog_deletion\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { render, staticRenderFns } from \"./FilesAppSettingsWarnings.vue?vue&type=template&id=02608f74\"\nimport script from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWarnings.vue?vue&type=script&lang=ts&setup=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 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(_setup.NcAppSettingsSection,{attrs:{\"id\":\"webdav\",\"name\":\"WebDAV\"}},[_c(_setup.NcFormBox,[_c(_setup.NcFormBoxCopyButton,{attrs:{\"label\":_setup.t('files', 'WebDAV URL'),\"value\":_setup.webDavUrl}}),_vm._v(\" \"),(_setup.isTwoFactorEnabled)?_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'Create an app password'),\"description\":_setup.t('files', 'Required for WebDAV authentication because Two-Factor Authentication is enabled for this account.'),\"href\":_setup.appPasswordUrl,\"target\":\"_blank\"}}):_vm._e(),_vm._v(\" \"),_c(_setup.NcFormBoxButton,{attrs:{\"label\":_setup.t('files', 'How to access files using WebDAV'),\"href\":_setup.webDavDocsUrl,\"target\":\"_blank\"}})],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"","import { render, staticRenderFns } from \"./FilesAppSettingsWebDav.vue?vue&type=template&id=601f53e8\"\nimport script from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=true\"\nexport * from \"./FilesAppSettingsWebDav.vue?vue&type=script&lang=ts&setup=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 null,\n null\n \n)\n\nexport default component.exports","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesAppSettings.vue?vue&type=template&id=72195bd8\"\nimport script from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesAppSettings.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesNavigation.vue?vue&type=script&setup=true&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!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&prod&scoped=true&lang=scss\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesNavigation.vue?vue&type=template&id=b3d7fbf2&scoped=true\"\nimport script from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesNavigation.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesNavigation.vue?vue&type=style&index=0&id=b3d7fbf2&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 \"b3d7fbf2\",\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(_setup.NcAppSidebar,{attrs:{\"data-cy-sidebar\":\"\",\"force-menu\":\"\",\"active\":_setup.sidebar.activeTab,\"background\":_setup.background,\"empty\":!_setup.sidebar.hasContext,\"loading\":!_setup.sidebar.hasContext,\"name\":_setup.sidebar.currentNode?.displayname ?? _setup.t('files', 'Loading …'),\"no-toggle\":\"\",\"open\":_setup.sidebar.isOpen},on:{\"update:active\":function($event){return _vm.$set(_setup.sidebar, \"activeTab\", $event)},\"closed\":_setup.onClosed,\"opened\":_setup.onOpened,\"update:open\":_setup.onToggle},scopedSlots:_vm._u([(_setup.sidebar.currentNode)?{key:\"subname\",fn:function(){return [_c(_setup.FilesSidebarSubname,{attrs:{\"node\":_setup.sidebar.currentNode}})]},proxy:true}:null,(_setup.sidebar.currentContext)?{key:\"secondary-actions\",fn:function(){return _vm._l((_setup.sidebar.currentActions),function(action){return _c(_setup.NcActionButton,{key:action.id,attrs:{\"close-after-click\":\"\"},on:{\"click\":function($event){return action.onClick(_setup.sidebar.currentContext)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":action.iconSvgInline(_setup.sidebar.currentContext)}})]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\\t\"+_vm._s(action.displayName(_setup.sidebar.currentContext))+\"\\n\\t\\t\")])})},proxy:true}:null],null,true)},[_vm._v(\" \"),_vm._v(\" \"),(_setup.sidebar.hasContext)?_vm._l((_setup.sidebar.currentTabs),function(tab){return _c(_setup.FilesSidebarTab,{key:tab.id,attrs:{\"active\":_setup.sidebar.activeTab === tab.id,\"tab\":tab}})}):_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('div',{class:_vm.$style.filesSidebarSubname},[(_setup.isFavourited)?_c(_setup.NcIconSvgWrapper,{attrs:{\"inline\":\"\",\"path\":_setup.mdiStar,\"name\":_setup.t('files', 'Favorite')}}):_vm._e(),_vm._v(\" \"),_c('span',[_vm._v(_vm._s(_setup.size))]),_vm._v(\" \"),(_vm.node.mtime)?_c('span',[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcDateTime,{attrs:{\"timestamp\":_vm.node.mtime}})],1):_vm._e(),_vm._v(\" \"),(_vm.node.owner)?[_c('span',{class:_vm.$style.filesSidebarSubname__separator},[_vm._v(\"•\")]),_vm._v(\" \"),_c(_setup.NcUserBubble,{class:_vm.$style.filesSidebarSubname__userBubble,attrs:{\"title\":_setup.t('files', 'Owner'),\"user\":_vm.node.owner,\"display-name\":_vm.node.attributes['owner-display-name']}})]:_vm._e()],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=script&setup=true&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??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebarSubname.vue?vue&type=template&id=7bd1e3c0\"\nimport script from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarSubname.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebarSubname.vue?vue&type=style&index=0&id=7bd1e3c0&prod&module=true&lang=css\"\n\n\n\n\nfunction injectStyles (context) {\n \n this[\"$style\"] = (style0.locals || style0)\n\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 injectStyles,\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(_setup.NcAppSidebarTab,{attrs:{\"id\":_vm.tab.id,\"order\":_vm.tab.order,\"name\":_vm.tab.displayName},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcIconSvgWrapper,{attrs:{\"svg\":_vm.tab.iconSvgInline}})]},proxy:true}])},[_vm._v(\" \"),(_setup.loading || !_setup.context)?_c(_setup.NcEmptyContent,{scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon)]},proxy:true}],null,false,1675040227)}):_c(_vm.tab.tagName,{tag:\"component\",domProps:{\"active\":_vm.active,\"node\":_setup.context.node,\"folder\":_setup.context.folder,\"view\":_setup.context.view}})],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","import { N as NcActionButton } from \"./chunks/NcActionButton-K4jUGMlW.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-B95wg_Q6.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-23CmleUh.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-B_9GOTi6.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-Dd3CsuiD.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-Ca_2vj8f.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-YqvZGY07.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-HZ-Lp090.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-BPqJExo6.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-Bt51pgle.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-DcKt7SjF.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationNew } from \"./chunks/NcAppNavigationNew-B5ikLvxM.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-BqhwbJsJ.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-B6u1Ln1_.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-BfysBg80.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-D0M18YFD.mjs\";\nimport { N as NcAppSettingsSection } from \"./chunks/NcAppSettingsSection-BjQllLEA.mjs\";\nimport { N as NcAppSettingsShortcutsSection } from \"./chunks/NcAppSettingsShortcutsSection-DblUBaWP.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-Bljse39J.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAssistantButton } from \"./chunks/NcAssistantButton-BdUkhzq1.mjs\";\nimport NcAssistantContent from \"./Components/NcAssistantContent.mjs\";\nimport { N as NcAssistantIcon } from \"./chunks/NcAssistantIcon-DCx6AaSW.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-CGnqUtoy.mjs\";\nimport { u } from \"./chunks/NcAvatar-CGnqUtoy.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-KSj0HXbX.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-DH2FV6QI.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-DrYYSHAS.mjs\";\nimport { N as NcButton } from \"./chunks/NcButton-BgppWSl9.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-D4IV4zWy.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-BbmBJ4ET.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-Bzzw1uKu.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-DpGM2KRx.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-oxV8oMlX.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-NOuL4APU.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-CBW263ij.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-enXYuwj8.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-BCCBuI6f.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-DpA4mqr-.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-C4jCrwQY.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport { N as NcFilePicker } from \"./chunks/NcFilePicker-DCPi6JGg.mjs\";\nimport { N as NcFormBox } from \"./chunks/NcFormBox-DtoCXLMx.mjs\";\nimport { N as NcFormBoxButton } from \"./chunks/NcFormBoxButton-BQi11xQX.mjs\";\nimport { N as NcFormBoxCopyButton } from \"./chunks/NcFormBoxCopyButton-BkunQ3me.mjs\";\nimport { N as NcFormBoxSwitch } from \"./chunks/NcFormBoxSwitch-E6sxPL4n.mjs\";\nimport { N as NcFormGroup } from \"./chunks/NcFormGroup-DblLoFMf.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport { N as NcHeaderButton } from \"./chunks/NcHeaderButton-DXdY8gct.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-BZnnbLTo.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-CxTT94_h.mjs\";\nimport { N as NcHotkey } from \"./chunks/NcHotkey-CLLtt9LG.mjs\";\nimport { N as NcHotkeyList } from \"./chunks/NcHotkeyList-Co7MBL5U.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-j5EyU7QH.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-D0JDzXkL.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-D35XZDGI.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-HQK5d_nv.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-UAg26Qdd.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-D7zYeXBH.mjs\";\nimport { N as NcRadioGroup } from \"./chunks/NcRadioGroup-BbBX9X2J.mjs\";\nimport { N as NcRadioGroupButton } from \"./chunks/NcRadioGroupButton-BkxlxjIA.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-BdmY-Mly.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-BCqXu_og.mjs\";\nimport { r } from \"./chunks/index-BCqXu_og.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-BcTSkyeW.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a, g, b, c, s, d } from \"./chunks/referencePickerModal-BQExd0w6.mjs\";\nimport { N, h, c as c2, i, e, r as r2, f, a as a2 } from \"./chunks/customPickerElements-DLFtgReB.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit-parents\";\nimport \"./chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-DZgAb6-3.mjs\";\nimport { N as NcSelect } from \"./chunks/NcSelect-FwcxH76q.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-ByDOTNvC.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-U7AIamCl.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-yZfa_z_z.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-5r-vvEVy.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-BwnkZzWL.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-Dz_b9rcq.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-CUM0vkbN.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-fGUiK7p2.mjs\";\nimport { N as NcThemeProvider } from \"./chunks/NcThemeProvider-BA_zMjAf.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-Cok_NaVd.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-Csw7PXyG.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-Cq1RnTfF.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useFormatDateTime, useFormatRelativeTime, useFormatTime } from \"./Composables/useFormatDateTime.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e as e2, g as g2, s as s2 } from \"./chunks/emoji-Dtn2mDf7.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { usernameToColor } from \"./Functions/usernameToColor.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport directive$1 from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsSectionShortcuts: NcAppSettingsShortcutsSection,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsShortcutsSection as NcAppSettingsSectionShortcuts,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e2 as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b as getProvider,\n c as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n c2 as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n e as registerCustomPickerElement,\n r2 as registerWidget,\n f as renderCustomPickerElement,\n a2 as renderWidget,\n r as richEditor,\n s as searchProvider,\n s2 as setCurrentSkinTone,\n d as sortProviders,\n spawnDialog,\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","import mod from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../../node_modules/babel-loader/lib/index.js!../../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesSidebarTab.vue?vue&type=template&id=7dfe8568\"\nimport script from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebarTab.vue?vue&type=script&setup=true&lang=ts\"\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","import mod from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../../node_modules/babel-loader/lib/index.js!../../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesSidebar.vue?vue&type=script&setup=true&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!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n \n \n\nvar options = {};\n\noptions.styleTagTransform = styleTagTransformFn;\noptions.setAttributes = setAttributes;\noptions.insert = insertFn.bind(null, \"head\");\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!./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&prod&lang=scss&scoped=true\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FilesSidebar.vue?vue&type=template&id=f91af60e&scoped=true\"\nimport script from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesSidebar.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FilesSidebar.vue?vue&type=style&index=0&id=f91af60e&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 \"f91af60e\",\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(_setup.NcContent,{attrs:{\"app-name\":\"files\"}},[(!_setup.isPublic)?_c(_setup.FilesNavigation):_vm._e(),_vm._v(\" \"),_c(_setup.FilesList,{attrs:{\"is-public\":_setup.isPublic}}),_vm._v(\" \"),(!_setup.isPublic)?_c(_setup.FilesSidebar):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getFileActions } from '@nextcloud/files';\nimport { useHotKey } from '@nextcloud/vue/composables/useHotKey';\nimport { dirname } from 'path';\nimport { useRoute, useRouter } from 'vue-router/composables';\nimport logger from '../logger.ts';\nimport { useUserConfigStore } from '../store/userconfig.ts';\nimport { executeAction } from '../utils/actionUtils.ts';\nimport { useRouteParameters } from './useRouteParameters.ts';\n/**\n * This register the hotkeys for the Files app.\n * As much as possible, we try to have all the hotkeys in one place.\n * Please make sure to add tests for the hotkeys after adding a new one.\n */\nexport function useHotKeys() {\n const userConfigStore = useUserConfigStore();\n const { directory } = useRouteParameters();\n const router = useRouter();\n const route = useRoute();\n const actions = getFileActions();\n for (const action of actions) {\n if (!action.hotkey) {\n continue;\n }\n const key = action.hotkey.key.match(/^[a-z]$/)\n ? action.hotkey.key.toUpperCase()\n : action.hotkey.key;\n logger.debug(`Register hotkey for action \"${action.id}\"`);\n useHotKey(key, () => executeAction(action), {\n stop: true,\n prevent: true,\n alt: action.hotkey.alt,\n ctrl: action.hotkey.ctrl,\n shift: action.hotkey.shift,\n });\n }\n // alt+up go to parent directory\n useHotKey('ArrowUp', goToParentDir, {\n stop: true,\n prevent: true,\n alt: true,\n });\n // v toggle grid view\n useHotKey('v', toggleGridView, {\n stop: true,\n prevent: true,\n });\n logger.debug('Hotkeys registered');\n /**\n * Use the router to go to the parent directory\n */\n function goToParentDir() {\n const dir = dirname(directory.value);\n logger.debug('Navigating to parent directory', { dir });\n router.push({ params: { ...route.params }, query: { ...route.query, dir } });\n }\n /**\n * Toggle the grid view\n */\n function toggleGridView() {\n const value = userConfigStore.userConfig.grid_view;\n logger.debug('Toggling grid view', { old: value, new: !value });\n userConfigStore.update('grid_view', !value);\n }\n}\n","import mod from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"; export default mod; export * from \"-!../../../node_modules/babel-loader/lib/index.js!../../../node_modules/ts-loader/index.js??clonedRuleSet-6.use[1]!../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FilesApp.vue?vue&type=script&setup=true&lang=ts\"","import { render, staticRenderFns } from \"./FilesApp.vue?vue&type=template&id=e1f85142\"\nimport script from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FilesApp.vue?vue&type=script&setup=true&lang=ts\"\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","/*\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { generateUrl } from '@nextcloud/router';\nimport { relative } from 'path';\nimport queryString from 'query-string';\nimport Vue from 'vue';\nimport Router, { isNavigationFailure, NavigationFailureType } from 'vue-router';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { usePathsStore } from '../store/paths.ts';\nimport { defaultView } from '../utils/filesViews.ts';\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = (function (...args) {\n if (args.length > 1) {\n return originalPush.call(this, ...args);\n }\n return originalPush.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\nconst originalReplace = Router.prototype.replace;\nRouter.prototype.replace = (function (...args) {\n if (args.length > 1) {\n return originalReplace.call(this, ...args);\n }\n return originalReplace.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\n/**\n * Ignore duplicated-navigation error but forward real exceptions\n *\n * @param error The thrown error\n */\nfunction ignoreDuplicateNavigation(error) {\n if (isNavigationFailure(error, NavigationFailureType.duplicated)) {\n logger.debug('Ignoring duplicated navigation from vue-router', { error });\n }\n else {\n throw error;\n }\n}\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl('/apps/files'),\n linkActiveClass: 'active',\n routes: [\n {\n path: '/',\n // Pretending we're using the default view\n redirect: { name: 'filelist', params: { view: defaultView() } },\n },\n {\n path: '/:view/:fileid(\\\\d+)?',\n name: 'filelist',\n props: true,\n },\n ],\n // Custom stringifyQuery to prevent encoding of slashes in the url\n stringifyQuery(query) {\n const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n return result ? ('?' + result) : '';\n },\n});\n// Handle aborted navigation (NavigationGuards) gracefully\nrouter.onError((error) => {\n if (isNavigationFailure(error, NavigationFailureType.aborted)) {\n logger.debug('Navigation was aboorted', { error });\n }\n else {\n throw error;\n }\n});\n// If navigating back from a folder to a parent folder,\n// we need to keep the current dir fileid so it's highlighted\n// and scrolled into view.\nrouter.beforeResolve((to, from, next) => {\n if (to.params?.parentIntercept) {\n delete to.params.parentIntercept;\n return next();\n }\n if (to.params.view !== from.params.view) {\n // skip if different views\n return next();\n }\n const fromDir = (from.query?.dir || '/');\n const toDir = (to.query?.dir || '/');\n // We are going back to a parent directory\n if (relative(fromDir, toDir) === '..') {\n const { getNode } = useFilesStore();\n const { getPath } = usePathsStore();\n if (!from.params.view) {\n logger.error('No current view id found, cannot navigate to parent directory', { fromDir, toDir });\n return next();\n }\n // Get the previous parent's file id\n const fromSource = getPath(from.params.view, fromDir);\n if (!fromSource) {\n logger.error('No source found for the parent directory', { fromDir, toDir });\n return next();\n }\n const fileId = getNode(fromSource)?.fileid;\n if (!fileId) {\n logger.error('No fileid found for the parent directory', { fromDir, toDir, fromSource });\n return next();\n }\n logger.debug('Navigating back to parent directory', { fromDir, toDir, fileId });\n return next({\n name: 'filelist',\n query: to.query,\n params: {\n ...to.params,\n fileid: String(fileId),\n // Prevents the beforeEach from being called again\n parentIntercept: 'true',\n },\n // Replace the current history entry\n replace: true,\n });\n }\n // else, we just continue\n next();\n});\nsubscribe('files:node:deleted', (node) => {\n if (router.currentRoute.params.fileid === String(node.fileid)) {\n const params = { ...router.currentRoute.params };\n const { getPath } = usePathsStore(getPinia());\n const { getNode } = useFilesStore(getPinia());\n const source = getPath(router.currentRoute.params.view, node.dirname);\n const parentFolder = getNode(source);\n if (source && parentFolder) {\n params.fileid = String(parentFolder.fileid);\n }\n else {\n delete params.fileid;\n }\n const query = { ...router.currentRoute.query };\n delete query.opendetails;\n delete query.openfile;\n router.replace({\n ...router.currentRoute,\n name: router.currentRoute.name,\n params,\n query,\n });\n }\n});\nexport default router;\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class RouterService {\n // typescript compiles this to `#router` to make it private even in JS,\n // but in TS it needs to be called without the visibility specifier\n router;\n constructor(router) {\n this.router = router;\n }\n get name() {\n return this.router.currentRoute.name;\n }\n get query() {\n return this.router.currentRoute.query || {};\n }\n get params() {\n return this.router.currentRoute.params || {};\n }\n /**\n * This is a protected getter only for internal use\n *\n */\n get _router() {\n return this.router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this.router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name - The route name or null to keep current route and just update params/query\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n name ??= this.router.currentRoute.name;\n const location = { name, query, params };\n if (replace) {\n return this._router.replace(location);\n }\n return this._router.push(location);\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCSPNonce } from '@nextcloud/auth';\nimport { PiniaVuePlugin } from 'pinia';\nimport Vue from 'vue';\nimport FilesApp from './FilesApp.vue';\nimport SettingsModel from './models/Setting.ts';\nimport router from './router/router.ts';\nimport RouterService from './services/RouterService.ts';\nimport SettingsService from './services/Settings.js';\nimport { getPinia } from './store/index.ts';\n__webpack_nonce__ = getCSPNonce();\n// Init private and public Files namespace\nwindow.OCA.Files = window.OCA.Files ?? {};\nwindow.OCP.Files = window.OCP.Files ?? {};\n// Expose router\nif (!window.OCP.Files.Router) {\n const Router = new RouterService(router);\n Object.assign(window.OCP.Files, { Router });\n}\n// Init Pinia store\nVue.use(PiniaVuePlugin);\n// Init Files App Settings Service\nconst Settings = new SettingsService();\nObject.assign(window.OCA.Files, { Settings });\nObject.assign(window.OCA.Files.Settings, { Setting: SettingsModel });\nconst FilesAppVue = Vue.extend(FilesApp);\nnew FilesAppVue({\n router: window.OCP.Files.Router._router,\n pinia: getPinia(),\n}).$mount('#content');\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport logger from '../logger.ts'\n\nexport default class Settings {\n\t_settings\n\n\tconstructor() {\n\t\tthis._settings = []\n\t\tlogger.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\tlogger.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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class Setting {\n #name;\n #options;\n /**\n * Create a new files app setting\n *\n * @param name - The name of this setting\n * @param options - The setting options\n * @param options.el - Function that returns an unmounted dom element to be added\n * @param options.open - Callback for when setting is added\n * @param options.close - Callback for when setting is closed\n * @param options.order - The order of this setting, lower numbers are shown first\n * @since 19.0.0\n */\n constructor(name, options) {\n this.#name = name;\n this.#options = {\n open: () => { },\n close: () => { },\n order: 0,\n ...options,\n };\n if (typeof this.#options.el !== 'function') {\n throw new Error('Setting must have an `el` function that returns a DOM element');\n }\n if (typeof this.#name !== 'string') {\n throw new Error('Setting must have a `name` string');\n }\n if (typeof this.#options.order !== 'number') {\n throw new Error('Setting must have an `order` number');\n }\n }\n get name() {\n return this.#name;\n }\n get el() {\n return this.#options.el;\n }\n get open() {\n return this.#options.open;\n }\n get close() {\n return this.#options.close;\n }\n get order() {\n return this.#options.order;\n }\n}\n","import { getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { join } from 'path';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\nimport { client } from './WebdavClient.ts';\nimport { searchNodes } from './WebDavSearch.ts';\n/**\n * Get contents implementation for the files view.\n * This also allows to fetch local search results when the user is currently filtering.\n *\n * @param path - The path to query\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function getContents(path = '/', options) {\n const searchStore = useSearchStore(getPinia());\n if (searchStore.query.length < 3) {\n return await defaultGetContents(path, options);\n }\n return await getLocalSearch(path, searchStore.query, options?.signal);\n}\n/**\n * Generic `getContents` implementation for the users files.\n *\n * @param path - The path to get the contents\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function defaultGetContents(path, options) {\n path = join(getRootPath(), path);\n const propfindPayload = getDefaultPropfind();\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: options?.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root?.filename !== path && `${root?.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n return {\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n };\n}\n/**\n * Get the local search results for the current folder.\n *\n * @param path - The path\n * @param query - The current search query\n * @param signal - The aboort signal\n */\nasync function getLocalSearch(path, query, signal) {\n const filesStore = useFilesStore(getPinia());\n let folder = filesStore.getDirectoryByPath('files', path);\n if (!folder) {\n const rootPath = join(getRootPath(), path);\n const stat = await client.stat(rootPath, { details: true });\n folder = resultToNode(stat.data);\n }\n const contents = await searchNodes(query, { dir: path, signal });\n return {\n folder,\n contents,\n };\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { defaultRootPath, getDavNameSpaces, getDavProperties, resultToNode } from '@nextcloud/files/dav';\nimport { getBaseUrl } from '@nextcloud/router';\nimport escapeHTML from 'escape-html';\nimport logger from '../logger.ts';\nimport { client } from './WebdavClient.ts';\n/**\n * Search for nodes matching the given query.\n *\n * @param query - Search query\n * @param options - Options\n * @param options.dir - The base directory to scope the search to\n * @param options.signal - Abort signal for the request\n */\nexport async function searchNodes(query, { dir, signal }) {\n const user = getCurrentUser();\n if (!user) {\n // the search plugin only works for user roots\n return [];\n }\n query = query.trim();\n if (query.length < 3) {\n // the search plugin only works with queries of at least 3 characters\n return [];\n }\n if (dir && !dir.startsWith('/')) {\n dir = `/${dir}`;\n }\n logger.debug('Searching for nodes', { query, dir });\n const { data } = await client.search('/', {\n details: true,\n signal,\n data: `\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${getDavProperties()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${user.uid}${dir ? escapeHTML(dir) : ''}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${query.replace('%', '')}%\n\t\t\t \n\t\t \n\t\t \n\t\n`,\n });\n // check if the request was aborted\n if (signal?.aborted) {\n return [];\n }\n // otherwise return the result mapped to Nextcloud nodes\n return data.results.map((result) => resultToNode(result, defaultRootPath, getBaseUrl()));\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n id: 0,\n source: getRemoteURL() + getRootPath(),\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n /**\n * The currently active action\n */\n const activeAction = shallowRef();\n /**\n * The current active node within the folder\n */\n const activeNode = ref();\n /**\n * The current active view\n */\n const activeView = shallowRef();\n /**\n * The currently active folder\n */\n const activeFolder = ref(dummyFolder);\n // Set the active node on the router params\n watch(activeNode, () => {\n if (typeof activeNode.value?.fileid !== 'number' || activeNode.value.fileid === activeFolder.value?.fileid) {\n return;\n }\n logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.fileid });\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: String(activeNode.value.fileid) }, { ...window.OCP.Files.Router.query }, true);\n });\n initialize();\n /**\n * Unset the active node if deleted\n *\n * @param node - The node thats deleted\n */\n function onDeletedNode(node) {\n if (activeNode.value && activeNode.value.source === node.source) {\n activeNode.value = undefined;\n }\n }\n /**\n * Callback to update the current active view\n *\n * @param view - The new active view\n */\n function onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n activeView.value = view ?? undefined;\n activeNode.value = undefined;\n }\n /**\n * Initalize the store - connect all event listeners.\n *\n */\n function initialize() {\n const navigation = getNavigation();\n onChangedView(navigation.active);\n // Make sure we only register the listeners once\n subscribe('files:node:deleted', onDeletedNode);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n onChangedView(event.detail);\n });\n }\n return {\n activeAction,\n activeFolder,\n activeNode,\n activeView,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue, { ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useActiveStore } from './active.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n * Store for files and folders in the files app.\n */\nexport const useFilesStore = defineStore('files', () => {\n const files = ref({});\n const roots = ref({});\n // initialize the store once its used first time\n initalizeStore();\n /**\n * Get a file or folder by its source\n *\n * @param source - The file source\n */\n function getNode(source) {\n return files.value[source];\n }\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n *\n * @param sources - The file sources\n */\n function getNodes(sources) {\n return sources\n .map((source) => files.value[source])\n .filter(Boolean);\n }\n /**\n * Get files or folders by their ID\n * Multiple nodes can have the same ID but different sources\n * (e.g. in a shared context)\n *\n * @param id - The file ID\n */\n function getNodesById(id) {\n return Object.values(files.value)\n .filter((node) => node.id === id);\n }\n /**\n * Get the root folder of a service\n *\n * @param service - The service (files view)\n * @return The root folder if set\n */\n function getRoot(service) {\n return roots.value[service];\n }\n /**\n * Get cached directory matching a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return The folder if found\n */\n function getDirectoryByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = getNode(source);\n }\n }\n return folder;\n }\n /**\n * Get cached child nodes within a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return Array of cached nodes within the path\n */\n function getNodesByPath(service, path) {\n const folder = getDirectoryByPath(service, path);\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => getNode(source))\n .filter(Boolean);\n }\n /**\n * Update or set nodes in the store\n *\n * @param nodes - The nodes to update or set\n */\n function updateNodes(nodes) {\n // Update the store all at once\n const newNodes = nodes.reduce((acc, node) => {\n if (files.value[node.source]?.id && !node.id) {\n logger.error('Trying to update/set a node without id', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n files.value = { ...files.value, ...newNodes };\n // handle updating the active node\n const activeStore = useActiveStore();\n if (activeStore.activeNode && activeStore.activeNode.source in newNodes) {\n activeStore.activeNode = files.value[activeStore.activeNode.source];\n }\n }\n /**\n * Delete nodes from the store\n *\n * @param nodes - The nodes to delete\n */\n function deleteNodes(nodes) {\n const entries = Object.entries(files.value)\n .filter(([, node]) => !nodes.some((n) => n.source === node.source));\n files.value = Object.fromEntries(entries);\n }\n /**\n * Set the root folder for a service\n *\n * @param options - The options for setting the root\n * @param options.service - The service (files view)\n * @param options.root - The root folder\n */\n function setRoot({ service, root }) {\n roots.value = { ...roots.value, [service]: root };\n }\n return {\n files,\n roots,\n deleteNodes,\n getDirectoryByPath,\n getNode,\n getNodes,\n getNodesById,\n getNodesByPath,\n getRoot,\n setRoot,\n updateNodes,\n };\n // Internal helper functions\n /**\n * Initialize the store by subscribing to events\n */\n function initalizeStore() {\n subscribe('files:node:created', onCreatedNode);\n subscribe('files:node:deleted', onDeletedNode);\n subscribe('files:node:updated', onUpdatedNode);\n subscribe('files:node:moved', onMovedNode);\n // legacy sidebar\n subscribe('files:favorites:added', onAddFavorite);\n subscribe('files:favorites:removed', onRemoveFavorite);\n }\n /**\n * Called when a node is deleted, removes the node from the store\n *\n * @param node - The deleted node\n */\n function onDeletedNode(node) {\n deleteNodes([node]);\n }\n /**\n * Handler for when a node is created\n *\n * @param node - The created node\n */\n function onCreatedNode(node) {\n updateNodes([node]);\n }\n /**\n * Handler for when a node is moved, updates the path of the node in the store\n *\n * @param context - The context of the moved node\n * @param context.node - The moved node\n * @param context.oldSource - The old source of the node before it was moved\n */\n function onMovedNode({ node, oldSource }) {\n // Update the path of the node\n delete files.value[oldSource];\n updateNodes([node]);\n }\n /**\n * Handler for when a node is updated, updates the node in the store\n *\n * @param node - The updated node\n */\n async function onUpdatedNode(node) {\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = node.id\n ? getNodesById(node.id)\n : getNodes([node.source]);\n if (nodes.length > 1) {\n await Promise.all(nodes.map((node) => fetchNode(node.path))).then(updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.id, source: node.source });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (nodes.length === 1 && node.source === nodes[0].source) {\n updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n const newNode = await fetchNode(node.path);\n updateNodes([newNode]);\n }\n /**\n * Handlers for legacy sidebar (no real nodes support)\n *\n * @param node - The node that was added to favorites\n */\n function onAddFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 1);\n }\n }\n /**\n * Handler for when a node is removed from favorites\n *\n * @param node - The removed favorite\n */\n function onRemoveFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 0);\n }\n }\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({\n source: oldSource,\n owner: node.owner,\n mime: node.mime,\n root: node.root,\n });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport debounce from 'debounce';\nimport { defineStore } from 'pinia';\nimport { ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { VIEW_ID } from '../views/search.ts';\nexport const useSearchStore = defineStore('search', () => {\n /**\n * The current search query\n */\n const query = ref('');\n /**\n * Scope of the search.\n * Scopes:\n * - filter: only filter current file list\n * - globally: search everywhere\n */\n const scope = ref('filter');\n // reset the base if query is cleared\n watch(scope, updateSearch);\n watch(query, (old, current) => {\n // skip if only whitespaces changed\n if (old.trim() === current.trim()) {\n return;\n }\n updateSearch();\n });\n // initialize the search store\n initialize();\n /**\n * Debounced update of the current route\n *\n */\n const updateRouter = debounce((isSearch) => {\n const router = window.OCP.Files.Router;\n router.goToRoute(undefined, {\n view: VIEW_ID,\n }, {\n query: query.value,\n }, isSearch);\n });\n /**\n * Handle updating the filter if needed.\n * Also update the search view by updating the current route if needed.\n *\n */\n function updateSearch() {\n // emit the search event to update the filter\n emit('files:search:updated', { query: query.value, scope: scope.value });\n const router = window.OCP.Files.Router;\n // if we are on the search view and the query was unset or scope was set to 'filter' we need to move back to the files view\n if (router.params.view === VIEW_ID && (query.value === '' || scope.value === 'filter')) {\n scope.value = 'filter';\n return router.goToRoute(undefined, {\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n });\n }\n // for the filter scope we do not need to adjust the current route anymore\n // also if the query is empty we do not need to do anything\n if (scope.value === 'filter' || !query.value) {\n return;\n }\n const isSearch = router.params.view === VIEW_ID;\n logger.debug('Update route for updated search query', { query: query.value, isSearch });\n updateRouter(isSearch);\n }\n /**\n * Event handler that resets the store if the file list view was changed.\n *\n * @param view - The new view that is active\n */\n function onViewChanged(view) {\n if (view.id !== VIEW_ID) {\n query.value = '';\n scope.value = 'filter';\n }\n }\n /**\n * Initialize the store from the router if needed\n */\n function initialize() {\n subscribe('files:navigation:changed', onViewChanged);\n const router = window.OCP.Files.Router;\n // if we initially load the search view (e.g. hard page refresh)\n // then we need to initialize the store from the router\n if (router.params.view === VIEW_ID) {\n query.value = [router.query.query].flat()[0] ?? '';\n if (query.value) {\n scope.value = 'globally';\n logger.debug('Directly navigated to search view', { query: query.value });\n }\n else {\n // we do not have any query so we need to move to the files list\n logger.info('Directly navigated to search view without any query, redirect to files view.');\n router.goToRoute(undefined, {\n ...router.params,\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n }, true);\n }\n }\n }\n return {\n query,\n scope,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport { defineStore } from 'pinia';\nimport { ref, set } from 'vue';\nconst initialUserConfig = loadState('files', 'config', {\n crop_image_previews: true,\n default_view: 'files',\n folder_tree: true,\n grid_view: false,\n show_files_extensions: true,\n show_hidden: false,\n show_mime_column: true,\n sort_favorites_first: true,\n sort_folders_first: true,\n show_dialog_deletion: false,\n show_dialog_file_extension: true,\n});\nexport const useUserConfigStore = defineStore('userconfig', () => {\n const userConfig = ref({ ...initialUserConfig });\n /**\n * Update the user config local store\n *\n * @param key The config key\n * @param value The new value\n */\n function onUpdate(key, value) {\n set(userConfig.value, key, value);\n }\n /**\n * Update the user config local store AND on server side\n *\n * @param key The config key\n * @param value The new value\n */\n async function update(key, value) {\n // only update if a user is logged in (not the case for public shares)\n if (getCurrentUser() !== null) {\n await axios.put(generateUrl('/apps/files/api/v1/config/{key}', { key }), {\n value,\n });\n }\n emit('files:config:updated', { key, value });\n }\n // Register the event listener\n subscribe('files:config:updated', ({ key, value }) => onUpdate(key, value));\n return {\n userConfig,\n update,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MagnifySvg from '@mdi/svg/svg/magnify.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getContents } from '../services/Search.ts';\nimport { VIEW_ID as FILES_VIEW_ID } from './files.ts';\nexport const VIEW_ID = 'search';\n/**\n * Register the search-in-files view\n */\nexport function registerSearchView() {\n let instance;\n let view;\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: VIEW_ID,\n name: t('files', 'Search'),\n caption: t('files', 'Search results within your files.'),\n async emptyView(el) {\n if (!view) {\n view = (await import('./SearchEmptyView.vue')).default;\n }\n else {\n instance.$destroy();\n }\n instance = new Vue(view);\n instance.$mount(el);\n },\n icon: MagnifySvg,\n order: 10,\n parent: FILES_VIEW_ID,\n // it should be shown expanded\n expanded: true,\n // this view is hidden by default and only shown when active\n hidden: true,\n getContents,\n }));\n}\n","// Imports\nimport ___CSS_LOADER_API_SOURCEMAP_IMPORT___ from \"../../../../css-loader/dist/runtime/sourceMaps.js\";\nimport ___CSS_LOADER_API_IMPORT___ from \"../../../../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 * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/**\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n/*\n* Ensure proper alignment of the vue material icons\n*/\n.material-design-icon[data-v-c8e429a5] {\n display: flex;\n align-self: center;\n justify-self: center;\n align-items: center;\n justify-content: center;\n}\n.nc-chip[data-v-c8e429a5] {\n --chip-size: 24px;\n --chip-radius: calc(var(--chip-size) / 2);\n height: var(--chip-size);\n max-width: fit-content;\n display: flex;\n flex-direction: row;\n align-items: center;\n border-radius: var(--chip-radius);\n background-color: var(--color-background-hover);\n}\n.nc-chip--primary[data-v-c8e429a5] {\n background-color: var(--color-primary-element);\n color: var(--color-primary-element-text);\n}\n.nc-chip--secondary[data-v-c8e429a5] {\n background-color: var(--color-primary-element-light);\n color: var(--color-primary-element-light-text);\n}\n.nc-chip--error[data-v-c8e429a5] {\n background-color: var(--color-error);\n color: var(--color-error-text);\n}\n.nc-chip--warning[data-v-c8e429a5] {\n background-color: var(--color-warning);\n color: var(--color-warning-text);\n}\n.nc-chip--success[data-v-c8e429a5] {\n background-color: var(--color-success);\n color: var(--color-success-text);\n}\n.nc-chip--no-actions .nc-chip__text[data-v-c8e429a5] {\n padding-inline-end: calc(2 * var(--default-grid-baseline));\n}\n.nc-chip--no-icon .nc-chip__text[data-v-c8e429a5] {\n padding-inline-start: calc(2 * var(--default-grid-baseline));\n}\n.nc-chip__text[data-v-c8e429a5] {\n flex: 1 auto;\n overflow: hidden;\n text-overflow: ellipsis;\n text-wrap: nowrap;\n}\n.nc-chip__icon[data-v-c8e429a5] {\n flex: 0 0 var(--chip-size);\n margin-inline-end: var(--default-grid-baseline);\n line-height: 1;\n display: flex;\n align-items: center;\n justify-content: center;\n overflow: hidden;\n height: var(--chip-size);\n width: var(--chip-size);\n}\n.nc-chip__actions[data-v-c8e429a5] {\n flex: 0 0 var(--chip-size);\n --default-clickable-area: var(--chip-size);\n --border-radius-element: var(--chip-radius);\n}`, \"\",{\"version\":3,\"sources\":[\"webpack://./node_modules/@nextcloud/vue/dist/assets/NcChip-DLfUzq07.css\"],\"names\":[],\"mappings\":\"AAAA;;;EAGE;AACF;;;EAGE;AACF;;CAEC;AACD;EACE,aAAa;EACb,kBAAkB;EAClB,oBAAoB;EACpB,mBAAmB;EACnB,uBAAuB;AACzB;AACA;EACE,iBAAiB;EACjB,yCAAyC;EACzC,wBAAwB;EACxB,sBAAsB;EACtB,aAAa;EACb,mBAAmB;EACnB,mBAAmB;EACnB,iCAAiC;EACjC,+CAA+C;AACjD;AACA;EACE,8CAA8C;EAC9C,wCAAwC;AAC1C;AACA;EACE,oDAAoD;EACpD,8CAA8C;AAChD;AACA;EACE,oCAAoC;EACpC,8BAA8B;AAChC;AACA;EACE,sCAAsC;EACtC,gCAAgC;AAClC;AACA;EACE,sCAAsC;EACtC,gCAAgC;AAClC;AACA;EACE,0DAA0D;AAC5D;AACA;EACE,4DAA4D;AAC9D;AACA;EACE,YAAY;EACZ,gBAAgB;EAChB,uBAAuB;EACvB,iBAAiB;AACnB;AACA;EACE,0BAA0B;EAC1B,+CAA+C;EAC/C,cAAc;EACd,aAAa;EACb,mBAAmB;EACnB,uBAAuB;EACvB,gBAAgB;EAChB,wBAAwB;EACxB,uBAAuB;AACzB;AACA;EACE,0BAA0B;EAC1B,0CAA0C;EAC1C,2CAA2C;AAC7C\",\"sourcesContent\":[\"/**\\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/**\\n * SPDX-FileCopyrightText: 2021 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n/*\\n* Ensure proper alignment of the vue material icons\\n*/\\n.material-design-icon[data-v-c8e429a5] {\\n display: flex;\\n align-self: center;\\n justify-self: center;\\n align-items: center;\\n justify-content: center;\\n}\\n.nc-chip[data-v-c8e429a5] {\\n --chip-size: 24px;\\n --chip-radius: calc(var(--chip-size) / 2);\\n height: var(--chip-size);\\n max-width: fit-content;\\n display: flex;\\n flex-direction: row;\\n align-items: center;\\n border-radius: var(--chip-radius);\\n background-color: var(--color-background-hover);\\n}\\n.nc-chip--primary[data-v-c8e429a5] {\\n background-color: var(--color-primary-element);\\n color: var(--color-primary-element-text);\\n}\\n.nc-chip--secondary[data-v-c8e429a5] {\\n background-color: var(--color-primary-element-light);\\n color: var(--color-primary-element-light-text);\\n}\\n.nc-chip--error[data-v-c8e429a5] {\\n background-color: var(--color-error);\\n color: var(--color-error-text);\\n}\\n.nc-chip--warning[data-v-c8e429a5] {\\n background-color: var(--color-warning);\\n color: var(--color-warning-text);\\n}\\n.nc-chip--success[data-v-c8e429a5] {\\n background-color: var(--color-success);\\n color: var(--color-success-text);\\n}\\n.nc-chip--no-actions .nc-chip__text[data-v-c8e429a5] {\\n padding-inline-end: calc(2 * var(--default-grid-baseline));\\n}\\n.nc-chip--no-icon .nc-chip__text[data-v-c8e429a5] {\\n padding-inline-start: calc(2 * var(--default-grid-baseline));\\n}\\n.nc-chip__text[data-v-c8e429a5] {\\n flex: 1 auto;\\n overflow: hidden;\\n text-overflow: ellipsis;\\n text-wrap: nowrap;\\n}\\n.nc-chip__icon[data-v-c8e429a5] {\\n flex: 0 0 var(--chip-size);\\n margin-inline-end: var(--default-grid-baseline);\\n line-height: 1;\\n display: flex;\\n align-items: center;\\n justify-content: center;\\n overflow: hidden;\\n height: var(--chip-size);\\n width: var(--chip-size);\\n}\\n.nc-chip__actions[data-v-c8e429a5] {\\n flex: 0 0 var(--chip-size);\\n --default-clickable-area: var(--chip-size);\\n --border-radius-element: var(--chip-radius);\\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__breadcrumbs[data-v-86e9be62]{flex:1 1 100% !important;width:100%;height:100%;margin:0;min-width:0}.files-list__breadcrumbs[data-v-86e9be62] a{cursor:pointer !important}.files-list__breadcrumbs--with-progress[data-v-86e9be62]{flex-direction:column !important;align-items:flex-start !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/BreadCrumbs.vue\"],\"names\":[],\"mappings\":\"AACA,0CAEC,wBAAA,CACA,UAAA,CACA,WAAA,CACA,QAAA,CACA,WAAA,CAGC,6CACC,yBAAA,CAIF,yDACC,gCAAA,CACA,iCAAA\",\"sourcesContent\":[\"\\n.files-list__breadcrumbs {\\n\\t// Take as much space as possible\\n\\tflex: 1 1 100% !important;\\n\\twidth: 100%;\\n\\theight: 100%;\\n\\tmargin: 0;\\n\\tmin-width: 0;\\n\\n\\t:deep() {\\n\\t\\ta {\\n\\t\\t\\tcursor: pointer !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&--with-progress {\\n\\t\\tflex-direction: column !important;\\n\\t\\talign-items: flex-start !important;\\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__drag-drop-notice[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;width:100%;min-height:102px;margin:0;user-select:none;color:var(--color-text-maxcontrast);background-color:var(--color-main-background);border-color:#000}.files-list__drag-drop-notice h3[data-v-1e2b9696]{margin-inline-start:16px;color:inherit}.files-list__drag-drop-notice-wrapper[data-v-1e2b9696]{display:flex;align-items:center;justify-content:center;height:15vh;max-height:70%;padding:0 5vw;border:2px var(--color-border-dark) dashed;border-radius:var(--border-radius-large)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropNotice.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CAEA,gBAAA,CACA,QAAA,CACA,gBAAA,CACA,mCAAA,CACA,6CAAA,CACA,iBAAA,CAEA,kDACC,wBAAA,CACA,aAAA,CAGD,uDACC,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,WAAA,CACA,cAAA,CACA,aAAA,CACA,0CAAA,CACA,wCAAA\",\"sourcesContent\":[\"\\n.files-list__drag-drop-notice {\\n\\tdisplay: flex;\\n\\talign-items: center;\\n\\tjustify-content: center;\\n\\twidth: 100%;\\n\\t// Breadcrumbs height + row thead height\\n\\tmin-height: calc(58px + 44px);\\n\\tmargin: 0;\\n\\tuser-select: none;\\n\\tcolor: var(--color-text-maxcontrast);\\n\\tbackground-color: var(--color-main-background);\\n\\tborder-color: black;\\n\\n\\th3 {\\n\\t\\tmargin-inline-start: 16px;\\n\\t\\tcolor: inherit;\\n\\t}\\n\\n\\t&-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\theight: 15vh;\\n\\t\\tmax-height: 70%;\\n\\t\\tpadding: 0 5vw;\\n\\t\\tborder: 2px var(--color-border-dark) dashed;\\n\\t\\tborder-radius: var(--border-radius-large);\\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-drag-image{position:absolute;top:-9999px;inset-inline-start:-9999px;display:flex;overflow:hidden;align-items:center;height:34px;padding:6px 12px;background:var(--color-main-background)}.files-list-drag-image__icon,.files-list-drag-image .files-list__row-icon-preview-container{display:flex;overflow:hidden;align-items:center;justify-content:center;width:22px;height:22px;border-radius:var(--border-radius)}.files-list-drag-image__icon{overflow:visible;margin-inline-end:12px}.files-list-drag-image__icon img{max-width:100%;max-height:100%}.files-list-drag-image__icon .material-design-icon{color:var(--color-text-maxcontrast)}.files-list-drag-image__icon .material-design-icon.folder-icon{color:var(--color-primary-element)}.files-list-drag-image__icon>span{display:flex}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:6px;margin-inline-start:-16px}.files-list-drag-image__icon>span>.files-list__row-icon-preview-container+.files-list__row-icon-preview-container+.files-list__row-icon-preview-container{margin-top:12px}.files-list-drag-image__icon>span:not(:empty)+*{display:none}.files-list-drag-image__name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/DragAndDropPreview.vue\"],\"names\":[],\"mappings\":\"AAIA,uBACC,iBAAA,CACA,WAAA,CACA,0BAAA,CACA,YAAA,CACA,eAAA,CACA,kBAAA,CACA,WAAA,CACA,gBAAA,CACA,uCAAA,CAEA,4FAEC,YAAA,CACA,eAAA,CACA,kBAAA,CACA,sBAAA,CACA,UAAA,CACA,WAAA,CACA,kCAAA,CAGD,6BACC,gBAAA,CACA,sBAAA,CAEA,iCACC,cAAA,CACA,eAAA,CAGD,mDACC,mCAAA,CACA,+DACC,kCAAA,CAKF,kCACC,YAAA,CAIA,kHACC,cA/CU,CAgDV,yBAAA,CACA,0JACC,eAAA,CAMF,gDACC,YAAA,CAKH,6BACC,eAAA,CACA,kBAAA,CACA,sBAAA\",\"sourcesContent\":[\"\\n$size: 28px;\\n$stack-shift: 6px;\\n\\n.files-list-drag-image {\\n\\tposition: absolute;\\n\\ttop: -9999px;\\n\\tinset-inline-start: -9999px;\\n\\tdisplay: flex;\\n\\toverflow: hidden;\\n\\talign-items: center;\\n\\theight: $size + $stack-shift;\\n\\tpadding: $stack-shift $stack-shift * 2;\\n\\tbackground: var(--color-main-background);\\n\\n\\t&__icon,\\n\\t.files-list__row-icon-preview-container {\\n\\t\\tdisplay: flex;\\n\\t\\toverflow: hidden;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: $size - $stack-shift;\\n\\t\\theight: $size - $stack-shift;;\\n\\t\\tborder-radius: var(--border-radius);\\n\\t}\\n\\n\\t&__icon {\\n\\t\\toverflow: visible;\\n\\t\\tmargin-inline-end: $stack-shift * 2;\\n\\n\\t\\timg {\\n\\t\\t\\tmax-width: 100%;\\n\\t\\t\\tmax-height: 100%;\\n\\t\\t}\\n\\n\\t\\t.material-design-icon {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t&.folder-icon {\\n\\t\\t\\t\\tcolor: var(--color-primary-element);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Previews container\\n\\t\\t> span {\\n\\t\\t\\tdisplay: flex;\\n\\n\\t\\t\\t// Stack effect if more than one element\\n\\t\\t\\t// Max 3 elements\\n\\t\\t\\t> .files-list__row-icon-preview-container + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\tmargin-top: $stack-shift;\\n\\t\\t\\t\\tmargin-inline-start: $stack-shift * 2 - $size;\\n\\t\\t\\t\\t& + .files-list__row-icon-preview-container {\\n\\t\\t\\t\\t\\tmargin-top: $stack-shift * 2;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t// If we have manually clone the preview,\\n\\t\\t\\t// let's hide any fallback icons\\n\\t\\t\\t&:not(:empty) + * {\\n\\t\\t\\t\\tdisplay: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&__name {\\n\\t\\toverflow: hidden;\\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, `.favorite-marker-icon[data-v-4505d262]{color:var(--color-favorite);min-width:unset !important;min-height:unset !important}.favorite-marker-icon[data-v-4505d262] svg{width:20px !important;height:20px !important;max-width:unset !important;max-height:unset !important}.favorite-marker-icon[data-v-4505d262] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FavoriteIcon.vue\"],\"names\":[],\"mappings\":\"AACA,uCACC,2BAAA,CAEA,0BAAA,CACG,2BAAA,CAGF,4CAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,iDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.favorite-marker-icon {\\n\\tcolor: var(--color-favorite);\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n min-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 20px !important;\\n\\t\\t\\theight: 20px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Sow a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\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, `main.app-content[style*=mouse-pos-x] .v-popper__popper{transform:translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper[data-popper-placement=top]{transform:translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important}main.app-content[style*=mouse-pos-x] .v-popper__popper .v-popper__arrow-container{display:none}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AAGA,uDACC,6EAAA,CAGA,kFAEC,iGAAA,CAGD,kFACC,YAAA\",\"sourcesContent\":[\"\\n// Allow right click to define the position of the menu\\n// only if defined\\nmain.app-content[style*=\\\"mouse-pos-x\\\"] .v-popper__popper {\\n\\ttransform: translate3d(var(--mouse-pos-x), var(--mouse-pos-y), 0px) !important;\\n\\n\\t// If the menu is too close to the bottom, we move it up\\n\\t&[data-popper-placement=\\\"top\\\"] {\\n\\t\\t// 34px added to align with the top of the cursor\\n\\t\\ttransform: translate3d(var(--mouse-pos-x), calc(var(--mouse-pos-y) - 50vh + 34px), 0px) !important;\\n\\t}\\n\\t// Hide arrow if floating\\n\\t.v-popper__arrow-container {\\n\\t\\tdisplay: none;\\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__row-action[data-v-5f3391ea]{--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}.files-list__row-action.files-list__row-action--inline[data-v-5f3391ea]{--max-icon-size: var(--default-clickable-area)}.files-list__row-action .files-list__row-action-icon[data-v-5f3391ea] svg{max-height:var(--max-icon-size) !important;max-width:var(--max-icon-size) !important}.files-list__row-action.files-list__row-action--destructive[data-v-5f3391ea] ::deep(button){color:var(--color-text-error) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryActions.vue\"],\"names\":[],\"mappings\":\"AACA,yCACC,uFAAA,CAGA,wEACC,8CAAA,CAID,0EACC,0CAAA,CACA,yCAAA,CAIA,4FACC,wCAAA\",\"sourcesContent\":[\"\\n.files-list__row-action {\\n\\t--max-icon-size: calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));\\n\\n\\t// inline icons can have clickable area size so they still fit into the row\\n\\t&.files-list__row-action--inline {\\n\\t\\t--max-icon-size: var(--default-clickable-area);\\n\\t}\\n\\n\\t// Some icons exceed the default size so we need to enforce a max width and height\\n\\t.files-list__row-action-icon :deep(svg) {\\n\\t\\tmax-height: var(--max-icon-size) !important;\\n\\t\\tmax-width: var(--max-icon-size) !important;\\n\\t}\\n\\n\\t&.files-list__row-action--destructive {\\n\\t\\t::deep(button) {\\n\\t\\t\\tcolor: var(--color-text-error) !important;\\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, `button.files-list__row-name-link[data-v-3e8ca2b0]{background-color:unset;border:none;font-weight:normal}button.files-list__row-name-link[data-v-3e8ca2b0]:active{background-color:unset !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/FileEntryName.vue\"],\"names\":[],\"mappings\":\"AACA,kDACC,sBAAA,CACA,WAAA,CACA,kBAAA,CAEA,yDAEC,iCAAA\",\"sourcesContent\":[\"\\nbutton.files-list__row-name-link {\\n\\tbackground-color: unset;\\n\\tborder: none;\\n\\tfont-weight: normal;\\n\\n\\t&:active {\\n\\t\\t// No active styles - handled by the row entry\\n\\t\\tbackground-color: unset !important;\\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, `.recently-created-marker-icon[data-v-251f6582]{color:var(--color-element-success);min-width:unset !important;min-height:unset !important}.recently-created-marker-icon[data-v-251f6582] svg{width:20px !important;height:20px !important;max-width:unset !important;max-height:unset !important}.recently-created-marker-icon[data-v-251f6582] svg path{stroke:var(--color-main-background);stroke-width:8px;stroke-linejoin:round;paint-order:stroke}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileEntry/RecentlyCreatedIcon.vue\"],\"names\":[],\"mappings\":\"AACA,+CACC,kCAAA,CAEA,0BAAA,CACA,2BAAA,CAGC,oDAEC,qBAAA,CACA,sBAAA,CAGA,0BAAA,CACA,2BAAA,CAGA,yDACC,mCAAA,CACA,gBAAA,CACA,qBAAA,CACA,kBAAA\",\"sourcesContent\":[\"\\n.recently-created-marker-icon {\\n\\tcolor: var(--color-element-success);\\n\\t// Override NcIconSvgWrapper defaults (clickable area)\\n\\tmin-width: unset !important;\\n\\tmin-height: unset !important;\\n\\n\\t:deep() {\\n\\t\\tsvg {\\n\\t\\t\\t// We added a stroke for a11y so we must increase the size to include the stroke\\n\\t\\t\\twidth: 20px !important;\\n\\t\\t\\theight: 20px !important;\\n\\n\\t\\t\\t// Override NcIconSvgWrapper defaults of 20px\\n\\t\\t\\tmax-width: unset !important;\\n\\t\\t\\tmax-height: unset !important;\\n\\n\\t\\t\\t// Show a border around the icon for better contrast\\n\\t\\t\\tpath {\\n\\t\\t\\t\\tstroke: var(--color-main-background);\\n\\t\\t\\t\\tstroke-width: 8px;\\n\\t\\t\\t\\tstroke-linejoin: round;\\n\\t\\t\\t\\tpaint-order: stroke;\\n\\t\\t\\t}\\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, `tr[data-v-378a6e4a]{margin-bottom:var(--body-container-margin);border-top:1px solid var(--color-border);background-color:rgba(0,0,0,0) !important;border-bottom:none !important}tr td[data-v-378a6e4a]{user-select:none;color:var(--color-text-maxcontrast) !important}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableFooter.vue\"],\"names\":[],\"mappings\":\"AAEA,oBACC,0CAAA,CACA,wCAAA,CAEA,yCAAA,CACA,6BAAA,CAEA,uBACC,gBAAA,CAEA,8CAAA\",\"sourcesContent\":[\"\\n// Scoped row\\ntr {\\n\\tmargin-bottom: var(--body-container-margin);\\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\\ttd {\\n\\t\\tuser-select: none;\\n\\t\\t// Make sure the cell colors don't apply to column headers\\n\\t\\tcolor: var(--color-text-maxcontrast) !important;\\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[data-v-5a72550e]{user-select:none;color:var(--color-text-maxcontrast) !important}.files-list__column--sortable[data-v-5a72550e]{cursor:pointer}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeader.vue\"],\"names\":[],\"mappings\":\"AACA,qCACC,gBAAA,CAEA,8CAAA,CAEA,+CACC,cAAA\",\"sourcesContent\":[\"\\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-53193162]{flex:1 1 100% !important;max-width:100%}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderActions.vue\"],\"names\":[],\"mappings\":\"AACA,gDACC,wBAAA,CACA,cAAA\",\"sourcesContent\":[\"\\n.files-list__row-actions-batch {\\n\\tflex: 1 1 100% !important;\\n\\tmax-width: 100%;\\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[data-v-4a8557e6]{margin:0 calc(var(--button-padding, var(--cell-margin))*-1);min-width:calc(100% - 3*var(--cell-margin)) !important}.files-list__column-sort-button-text[data-v-4a8557e6]{color:var(--color-text-maxcontrast);font-weight:normal}.files-list__column-sort-button-icon[data-v-4a8557e6]{color:var(--color-text-maxcontrast);opacity:0;transition:opacity var(--animation-quick);inset-inline-start:-10px}.files-list__column-sort-button--size .files-list__column-sort-button-icon[data-v-4a8557e6]{inset-inline-start:10px}.files-list__column-sort-button--active .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:hover .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:focus .files-list__column-sort-button-icon[data-v-4a8557e6],.files-list__column-sort-button:active .files-list__column-sort-button-icon[data-v-4a8557e6]{opacity:1}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListTableHeaderButton.vue\"],\"names\":[],\"mappings\":\"AACA,iDAEC,2DAAA,CACA,sDAAA,CAEA,sDACC,mCAAA,CACA,kBAAA,CAGD,sDACC,mCAAA,CACA,SAAA,CACA,yCAAA,CACA,wBAAA,CAGD,4FACC,uBAAA,CAGD,mXAIC,SAAA\",\"sourcesContent\":[\"\\n.files-list__column-sort-button {\\n\\t// Compensate for cells margin\\n\\tmargin: 0 calc(var(--button-padding, var(--cell-margin)) * -1);\\n\\tmin-width: calc(100% - 3 * var(--cell-margin))!important;\\n\\n\\t&-text {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\tfont-weight: normal;\\n\\t}\\n\\n\\t&-icon {\\n\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\topacity: 0;\\n\\t\\ttransition: opacity var(--animation-quick);\\n\\t\\tinset-inline-start: -10px;\\n\\t}\\n\\n\\t&--size &-icon {\\n\\t\\tinset-inline-start: 10px;\\n\\t}\\n\\n\\t&--active &-icon,\\n\\t&:hover &-icon,\\n\\t&:focus &-icon,\\n\\t&:active &-icon {\\n\\t\\topacity: 1;\\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-1a9725ff]{--row-height: 44px;--cell-margin: 14px;--checkbox-padding: calc((var(--row-height) - var(--checkbox-size)) / 2);--checkbox-size: 24px;--clickable-area: var(--default-clickable-area);--icon-preview-size: 24px;--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));display:flex;flex-direction:column;overflow:auto;height:100%;will-change:scroll-position}.files-list[data-v-1a9725ff]:has(.files-list__filters:empty){--fixed-block-start-position: 0px}.files-list[data-v-1a9725ff] tbody{will-change:padding;contain:layout paint style;display:flex;flex-direction:column;width:100%;position:relative}.files-list[data-v-1a9725ff] tbody tr{contain:strict}.files-list[data-v-1a9725ff] tbody tr:hover,.files-list[data-v-1a9725ff] tbody tr:focus{background-color:var(--color-background-dark)}.files-list[data-v-1a9725ff] .files-list__before{display:flex;flex-direction:column}.files-list[data-v-1a9725ff] .files-list__selected{padding-inline-end:12px;white-space:nowrap;font-variant-numeric:tabular-nums}.files-list[data-v-1a9725ff] .files-list__table{display:block}.files-list[data-v-1a9725ff] .files-list__table.files-list__table--with-thead-overlay{margin-block-start:calc(-1*var(--row-height))}.files-list[data-v-1a9725ff] .files-list__table--hidden{visibility:hidden;z-index:-1;opacity:0}.files-list[data-v-1a9725ff] .files-list__filters{display:flex;gap:var(--default-grid-baseline);box-sizing:border-box;position:sticky;top:0;background-color:var(--color-main-background);z-index:10;padding-inline:var(--row-height) var(--default-grid-baseline, 4px);height:var(--fixed-block-start-position);width:100%}.files-list[data-v-1a9725ff] .files-list__filters:not(:empty){padding-block:calc(var(--default-grid-baseline, 4px)/2)}.files-list[data-v-1a9725ff] .files-list__thead-overlay{position:sticky;top:var(--fixed-block-start-position);margin-inline-start:var(--row-height);z-index:20;display:flex;align-items:center;background-color:var(--color-main-background);border-block-end:1px solid var(--color-border);height:var(--row-height);flex:0 0 var(--row-height)}.files-list[data-v-1a9725ff] .files-list__thead,.files-list[data-v-1a9725ff] .files-list__tfoot{display:flex;flex-direction:column;width:100%;background-color:var(--color-main-background)}.files-list[data-v-1a9725ff] .files-list__thead{position:sticky;z-index:10;top:var(--fixed-block-start-position)}.files-list[data-v-1a9725ff] .files-list__empty{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;height:100%}.files-list[data-v-1a9725ff] tr{position:relative;display:flex;align-items:center;width:100%;border-block-end:1px solid var(--color-border);box-sizing:border-box;user-select:none;height:var(--row-height)}.files-list[data-v-1a9725ff] td,.files-list[data-v-1a9725ff] th{display:flex;align-items:center;flex:0 0 auto;justify-content:start;width:var(--row-height);height:var(--row-height);margin:0;padding:0;color:var(--color-text-maxcontrast);border:none}.files-list[data-v-1a9725ff] td span,.files-list[data-v-1a9725ff] th span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.files-list[data-v-1a9725ff] .files-list__row--failed{position:absolute;display:block;top:0;inset-inline:0;bottom:0;opacity:.1;z-index:-1;background:var(--color-error)}.files-list[data-v-1a9725ff] .files-list__row-checkbox{justify-content:center}.files-list[data-v-1a9725ff] .files-list__row-checkbox .checkbox-radio-switch{display:flex;justify-content:center;--icon-size: var(--checkbox-size)}.files-list[data-v-1a9725ff] .files-list__row-checkbox .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[data-v-1a9725ff] .files-list__row-checkbox .checkbox-radio-switch .checkbox-radio-switch__icon{margin:0 !important}.files-list[data-v-1a9725ff] .files-list__row:hover,.files-list[data-v-1a9725ff] .files-list__row:focus,.files-list[data-v-1a9725ff] .files-list__row:active,.files-list[data-v-1a9725ff] .files-list__row--active,.files-list[data-v-1a9725ff] .files-list__row--dragover{background-color:var(--color-background-hover);--color-text-maxcontrast: var(--color-main-text)}.files-list[data-v-1a9725ff] .files-list__row:hover>*,.files-list[data-v-1a9725ff] .files-list__row:focus>*,.files-list[data-v-1a9725ff] .files-list__row:active>*,.files-list[data-v-1a9725ff] .files-list__row--active>*,.files-list[data-v-1a9725ff] .files-list__row--dragover>*{--color-border: var(--color-border-dark)}.files-list[data-v-1a9725ff] .files-list__row:hover .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row:focus .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row:active .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row--active .favorite-marker-icon svg path,.files-list[data-v-1a9725ff] .files-list__row--dragover .favorite-marker-icon svg path{stroke:var(--color-background-hover)}.files-list[data-v-1a9725ff] .files-list__row--dragover *{pointer-events:none}.files-list[data-v-1a9725ff] .files-list__row-icon{position:relative;display:flex;overflow:visible;align-items:center;flex:0 0 var(--icon-preview-size);justify-content:center;width:var(--icon-preview-size);height:100%;margin-inline-end:var(--checkbox-padding);color:var(--color-primary-element)}.files-list[data-v-1a9725ff] .files-list__row-icon *{cursor:pointer}.files-list[data-v-1a9725ff] .files-list__row-icon>span{justify-content:flex-start}.files-list[data-v-1a9725ff] .files-list__row-icon>span:not(.files-list__row-icon-favorite):not(.files-list__row-icon-recently-created) svg{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-icon,.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-open-icon{margin:-3px}.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-icon svg,.files-list[data-v-1a9725ff] .files-list__row-icon>span.folder-open-icon svg{width:calc(var(--icon-preview-size) + 6px);height:calc(var(--icon-preview-size) + 6px)}.files-list[data-v-1a9725ff] .files-list__row-icon-preview-container{position:relative;overflow:hidden;width:var(--icon-preview-size);height:var(--icon-preview-size);border-radius:var(--border-radius)}.files-list[data-v-1a9725ff] .files-list__row-icon-blurhash{position:absolute;inset-block-start:0;inset-inline-start:0;height:100%;width:100%;object-fit:cover}.files-list[data-v-1a9725ff] .files-list__row-icon-preview{object-fit:contain;object-position:center;height:100%;width:100%}.files-list[data-v-1a9725ff] .files-list__row-icon-preview:not(.files-list__row-icon-preview--loaded){background:var(--color-loading-dark)}.files-list[data-v-1a9725ff] .files-list__row-icon-favorite,.files-list[data-v-1a9725ff] .files-list__row-icon-recently-created{position:absolute;top:0px;inset-inline-end:-10px}.files-list[data-v-1a9725ff] .files-list__row-icon-overlay{position:absolute;max-height:calc(var(--icon-preview-size)*.6);max-width:calc(var(--icon-preview-size)*.6);color:var(--color-primary-element-text);margin-block-start:2px}.files-list[data-v-1a9725ff] .files-list__row-icon-overlay--file{color:var(--color-main-text);background:var(--color-main-background);border-radius:100%}.files-list[data-v-1a9725ff] .files-list__row-name{overflow:hidden;flex:1 1 auto}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link{display:flex;align-items:center;text-align:start;width:100%;height:100%;min-width:0;margin:0;padding:0}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link:focus-visible{outline:none !important}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link:focus .files-list__row-name-text{outline:var(--border-width-input-focused) solid var(--color-main-text) !important;border-radius:var(--border-radius-element)}.files-list[data-v-1a9725ff] .files-list__row-name button.files-list__row-name-link:focus:not(:focus-visible) .files-list__row-name-text{outline:none !important}.files-list[data-v-1a9725ff] .files-list__row-name .files-list__row-name-text{color:var(--color-main-text);padding:var(--default-grid-baseline) calc(2*var(--default-grid-baseline));padding-inline-start:-10px;display:inline-flex}.files-list[data-v-1a9725ff] .files-list__row-name .files-list__row-name-ext{color:var(--color-text-maxcontrast);overflow:visible}.files-list[data-v-1a9725ff] .files-list__row-rename{width:100%;max-width:600px}.files-list[data-v-1a9725ff] .files-list__row-rename input{width:100%;margin-inline-start:-8px;padding:2px 6px;border-width:2px}.files-list[data-v-1a9725ff] .files-list__row-rename input:invalid{border-color:var(--color-border-error);color:var(--color-text-error)}.files-list[data-v-1a9725ff] .files-list__row-actions{width:auto}.files-list[data-v-1a9725ff] .files-list__row-actions~td,.files-list[data-v-1a9725ff] .files-list__row-actions~th{margin:0 var(--cell-margin)}.files-list[data-v-1a9725ff] .files-list__row-actions button .button-vue__text{font-weight:normal}.files-list[data-v-1a9725ff] .files-list__row-action--inline{margin-inline-end:7px}.files-list[data-v-1a9725ff] .files-list__row-mime,.files-list[data-v-1a9725ff] .files-list__row-mtime,.files-list[data-v-1a9725ff] .files-list__row-size{color:var(--color-text-maxcontrast)}.files-list[data-v-1a9725ff] .files-list__row-size{width:calc(var(--row-height)*2);justify-content:flex-end}.files-list[data-v-1a9725ff] .files-list__row-mtime{width:calc(var(--row-height)*2.5)}.files-list[data-v-1a9725ff] .files-list__row-mime{width:calc(var(--row-height)*3.5)}.files-list[data-v-1a9725ff] .files-list__row-column-custom{width:calc(var(--row-height)*2.5)}@media screen and (max-width: 512px){.files-list[data-v-1a9725ff] .files-list__filters{padding-inline:var(--default-grid-baseline, 4px)}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"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\",\"sourcesContent\":[\"\\n.files-list {\\n\\t--row-height: 44px;\\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: var(--default-clickable-area);\\n\\t--icon-preview-size: 24px;\\n\\n\\t--fixed-block-start-position: calc(var(--clickable-area-small) + var(--default-grid-baseline, 4px));\\n\\tdisplay: flex;\\n\\tflex-direction: column;\\n\\toverflow: auto;\\n\\theight: 100%;\\n\\twill-change: scroll-position;\\n\\n\\t&:has(&__filters:empty) {\\n\\t\\t--fixed-block-start-position: 0px;\\n\\t}\\n\\n\\t& :deep() {\\n\\t\\t// Table head, body and footer\\n\\t\\ttbody {\\n\\t\\t\\twill-change: padding;\\n\\t\\t\\tcontain: layout paint style;\\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\\n\\t\\t\\t/* Hover effect on tbody lines only */\\n\\t\\t\\ttr {\\n\\t\\t\\t\\tcontain: strict;\\n\\t\\t\\t\\t&:hover,\\n\\t\\t\\t\\t&:focus {\\n\\t\\t\\t\\t\\tbackground-color: var(--color-background-dark);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Before table and thead\\n\\t\\t.files-list__before {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t}\\n\\n\\t\\t.files-list__selected {\\n\\t\\t\\tpadding-inline-end: 12px;\\n\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\tfont-variant-numeric: tabular-nums;\\n\\t\\t}\\n\\n\\t\\t.files-list__table {\\n\\t\\t\\tdisplay: block;\\n\\n\\t\\t\\t&.files-list__table--with-thead-overlay {\\n\\t\\t\\t\\t// Hide the table header below the overlay\\n\\t\\t\\t\\tmargin-block-start: calc(-1 * var(--row-height));\\n\\t\\t\\t}\\n\\n\\t\\t\\t// Visually hide the table when there are no files\\n\\t\\t\\t&--hidden {\\n\\t\\t\\t\\tvisibility: hidden;\\n\\t\\t\\t\\tz-index: -1;\\n\\t\\t\\t\\topacity: 0;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__filters {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tgap: var(--default-grid-baseline);\\n\\t\\t\\tbox-sizing: border-box;\\n\\n\\t\\t\\t// Pinned on top when scrolling above table header\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\t// ensure there is a background to hide the file list on scroll\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tz-index: 10;\\n\\t\\t\\t// fixed the size\\n\\t\\t\\tpadding-inline: var(--row-height) var(--default-grid-baseline, 4px);\\n\\t\\t\\theight: var(--fixed-block-start-position);\\n\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t&:not(:empty) {\\n\\t\\t\\t\\tpadding-block: calc(var(--default-grid-baseline, 4px) / 2);\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__thead-overlay {\\n\\t\\t\\t// Pinned on top when scrolling\\n\\t\\t\\tposition: sticky;\\n\\t\\t\\ttop: var(--fixed-block-start-position);\\n\\t\\t\\t// Save space for a row checkbox\\n\\t\\t\\tmargin-inline-start: var(--row-height);\\n\\t\\t\\t// More than .files-list__thead\\n\\t\\t\\tz-index: 20;\\n\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\n\\t\\t\\t// Reuse row styles\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tflex: 0 0 var(--row-height);\\n\\t\\t}\\n\\n\\t\\t.files-list__thead,\\n\\t\\t.files-list__tfoot {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tbackground-color: var(--color-main-background);\\n\\t\\t}\\n\\n\\t\\t// Table header\\n\\t\\t.files-list__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: var(--fixed-block-start-position);\\n\\t\\t}\\n\\n\\t\\t// Empty content\\n\\t\\t.files-list__empty {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\tflex-direction: column;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\theight: 100%;\\n\\t\\t}\\n\\n\\t\\ttr {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tborder-block-end: 1px solid var(--color-border);\\n\\t\\t\\tbox-sizing: border-box;\\n\\t\\t\\tuser-select: none;\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t}\\n\\n\\t\\ttd, th {\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\tflex: 0 0 auto;\\n\\t\\t\\tjustify-content: start;\\n\\t\\t\\twidth: var(--row-height);\\n\\t\\t\\theight: var(--row-height);\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\tpadding: 0;\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\tborder: none;\\n\\n\\t\\t\\t// Columns should try to add any text\\n\\t\\t\\t// node wrapped in a span. That should help\\n\\t\\t\\t// with the ellipsis on overflow.\\n\\t\\t\\tspan {\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twhite-space: nowrap;\\n\\t\\t\\t\\ttext-overflow: ellipsis;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row--failed {\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tdisplay: block;\\n\\t\\t\\ttop: 0;\\n\\t\\t\\tinset-inline: 0;\\n\\t\\t\\tbottom: 0;\\n\\t\\t\\topacity: .1;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-error);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-checkbox {\\n\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t.checkbox-radio-switch {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\tjustify-content: center;\\n\\n\\t\\t\\t\\t--icon-size: var(--checkbox-size);\\n\\n\\t\\t\\t\\tlabel.checkbox-radio-switch__label {\\n\\t\\t\\t\\t\\twidth: var(--clickable-area);\\n\\t\\t\\t\\t\\theight: var(--clickable-area);\\n\\t\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\t\\tpadding: calc((var(--clickable-area) - var(--checkbox-size)) / 2);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t.checkbox-radio-switch__icon {\\n\\t\\t\\t\\t\\tmargin: 0 !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row {\\n\\t\\t\\t&:hover, &:focus, &:active, &--active, &--dragover {\\n\\t\\t\\t\\t// WCAG AA compliant\\n\\t\\t\\t\\tbackground-color: var(--color-background-hover);\\n\\t\\t\\t\\t// text-maxcontrast have been designed to pass WCAG AA over\\n\\t\\t\\t\\t// a white background, we need to adjust then.\\n\\t\\t\\t\\t--color-text-maxcontrast: var(--color-main-text);\\n\\t\\t\\t\\t> * {\\n\\t\\t\\t\\t\\t--color-border: var(--color-border-dark);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Hover state of the row should also change the favorite markers background\\n\\t\\t\\t\\t.favorite-marker-icon svg path {\\n\\t\\t\\t\\t\\tstroke: var(--color-background-hover);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&--dragover * {\\n\\t\\t\\t\\t// Prevent dropping on row children\\n\\t\\t\\t\\tpointer-events: none;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry preview or mime icon\\n\\t\\t.files-list__row-icon {\\n\\t\\t\\tposition: relative;\\n\\t\\t\\tdisplay: flex;\\n\\t\\t\\toverflow: visible;\\n\\t\\t\\talign-items: center;\\n\\t\\t\\t// No shrinking or growing allowed\\n\\t\\t\\tflex: 0 0 var(--icon-preview-size);\\n\\t\\t\\tjustify-content: center;\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: 100%;\\n\\t\\t\\t// Show same padding as the checkbox right padding for visual balance\\n\\t\\t\\tmargin-inline-end: var(--checkbox-padding);\\n\\t\\t\\tcolor: var(--color-primary-element);\\n\\n\\t\\t\\t// Icon is also clickable\\n\\t\\t\\t* {\\n\\t\\t\\t\\tcursor: pointer;\\n\\t\\t\\t}\\n\\n\\t\\t\\t& > span {\\n\\t\\t\\t\\tjustify-content: flex-start;\\n\\n\\t\\t\\t\\t&:not(.files-list__row-icon-favorite):not(.files-list__row-icon-recently-created) svg {\\n\\t\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Slightly increase the size of the folder icon\\n\\t\\t\\t\\t&.folder-icon,\\n\\t\\t\\t\\t&.folder-open-icon {\\n\\t\\t\\t\\t\\tmargin: -3px;\\n\\t\\t\\t\\t\\tsvg {\\n\\t\\t\\t\\t\\t\\twidth: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t\\theight: calc(var(--icon-preview-size) + 6px);\\n\\t\\t\\t\\t\\t}\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview-container {\\n\\t\\t\\t\\tposition: relative; // Needed for the blurshash to be positioned correctly\\n\\t\\t\\t\\toverflow: hidden;\\n\\t\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t\\t\\tborder-radius: var(--border-radius);\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-blurhash {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tinset-block-start: 0;\\n\\t\\t\\t\\tinset-inline-start: 0;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\tobject-fit: cover;\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-preview {\\n\\t\\t\\t\\t// Center and contain the preview\\n\\t\\t\\t\\tobject-fit: contain;\\n\\t\\t\\t\\tobject-position: center;\\n\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\twidth: 100%;\\n\\n\\t\\t\\t\\t/* Preview not loaded animation effect */\\n\\t\\t\\t\\t&:not(.files-list__row-icon-preview--loaded) {\\n\\t\\t\\t\\t\\tbackground: var(--color-loading-dark);\\n\\t\\t\\t\\t\\t// animation: preview-gradient-fade 1.2s ease-in-out infinite;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t&-favorite,\\n\\t\\t\\t&-recently-created {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\ttop: 0px;\\n\\t\\t\\t\\tinset-inline-end: -10px;\\n\\t\\t\\t}\\n\\n\\t\\t\\t// File and folder overlay\\n\\t\\t\\t&-overlay {\\n\\t\\t\\t\\tposition: absolute;\\n\\t\\t\\t\\tmax-height: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tmax-width: calc(var(--icon-preview-size) * 0.6);\\n\\t\\t\\t\\tcolor: var(--color-primary-element-text);\\n\\t\\t\\t\\t// better alignment with the folder icon\\n\\t\\t\\t\\tmargin-block-start: 2px;\\n\\n\\t\\t\\t\\t// Improve icon contrast with a background for files\\n\\t\\t\\t\\t&--file {\\n\\t\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t\\t\\t\\tborder-radius: 100%;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Entry link\\n\\t\\t.files-list__row-name {\\n\\t\\t\\t// Prevent link from overflowing\\n\\t\\t\\toverflow: hidden;\\n\\t\\t\\t// Take as much space as possible\\n\\t\\t\\tflex: 1 1 auto;\\n\\n\\t\\t\\tbutton.files-list__row-name-link {\\n\\t\\t\\t\\tdisplay: flex;\\n\\t\\t\\t\\talign-items: center;\\n\\t\\t\\t\\ttext-align: start;\\n\\t\\t\\t\\t// Fill cell height and width\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\theight: 100%;\\n\\t\\t\\t\\t// Necessary for flex grow to work\\n\\t\\t\\t\\tmin-width: 0;\\n\\t\\t\\t\\tmargin: 0;\\n\\t\\t\\t\\tpadding: 0;\\n\\n\\t\\t\\t\\t// Already added to the inner text, see rule below\\n\\t\\t\\t\\t&:focus-visible {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\n\\t\\t\\t\\t// Keyboard indicator a11y\\n\\t\\t\\t\\t&:focus .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: var(--border-width-input-focused) solid var(--color-main-text) !important;\\n\\t\\t\\t\\t\\tborder-radius: var(--border-radius-element);\\n\\t\\t\\t\\t}\\n\\t\\t\\t\\t&:focus:not(:focus-visible) .files-list__row-name-text {\\n\\t\\t\\t\\t\\toutline: none !important;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-text {\\n\\t\\t\\t\\tcolor: var(--color-main-text);\\n\\t\\t\\t\\t// Make some space for the outline\\n\\t\\t\\t\\tpadding: var(--default-grid-baseline) calc(2 * var(--default-grid-baseline));\\n\\t\\t\\t\\tpadding-inline-start: -10px;\\n\\t\\t\\t\\t// Align two name and ext\\n\\t\\t\\t\\tdisplay: inline-flex;\\n\\t\\t\\t}\\n\\n\\t\\t\\t.files-list__row-name-ext {\\n\\t\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t\\t\\t// always show the extension\\n\\t\\t\\t\\toverflow: visible;\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t// Rename form\\n\\t\\t.files-list__row-rename {\\n\\t\\t\\twidth: 100%;\\n\\t\\t\\tmax-width: 600px;\\n\\t\\t\\tinput {\\n\\t\\t\\t\\twidth: 100%;\\n\\t\\t\\t\\t// Align with text, 0 - padding - border\\n\\t\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\t\\tpadding: 2px 6px;\\n\\t\\t\\t\\tborder-width: 2px;\\n\\n\\t\\t\\t\\t&:invalid {\\n\\t\\t\\t\\t\\t// Show red border on invalid input\\n\\t\\t\\t\\t\\tborder-color: var(--color-border-error);\\n\\t\\t\\t\\t\\tcolor: var(--color-text-error);\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\t// take as much space as necessary\\n\\t\\t\\twidth: auto;\\n\\n\\t\\t\\t// Add margin to all cells after the actions\\n\\t\\t\\t& ~ td,\\n\\t\\t\\t& ~ th {\\n\\t\\t\\t\\tmargin: 0 var(--cell-margin);\\n\\t\\t\\t}\\n\\n\\t\\t\\tbutton {\\n\\t\\t\\t\\t.button-vue__text {\\n\\t\\t\\t\\t\\t// Remove bold from default button styling\\n\\t\\t\\t\\t\\tfont-weight: normal;\\n\\t\\t\\t\\t}\\n\\t\\t\\t}\\n\\t\\t}\\n\\n\\t\\t.files-list__row-action--inline {\\n\\t\\t\\tmargin-inline-end: 7px;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime,\\n\\t\\t.files-list__row-mtime,\\n\\t\\t.files-list__row-size {\\n\\t\\t\\tcolor: var(--color-text-maxcontrast);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-size {\\n\\t\\t\\twidth: calc(var(--row-height) * 2);\\n\\t\\t\\t// Right align content/text\\n\\t\\t\\tjustify-content: flex-end;\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mtime {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-mime {\\n\\t\\t\\twidth: calc(var(--row-height) * 3.5);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-column-custom {\\n\\t\\t\\twidth: calc(var(--row-height) * 2.5);\\n\\t\\t}\\n\\t}\\n}\\n\\n@media screen and (max-width: 512px) {\\n\\t.files-list :deep(.files-list__filters) {\\n\\t\\t// Reduce padding on mobile\\n\\t\\tpadding-inline: var(--default-grid-baseline, 4px);\\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--grid tbody.files-list__tbody{--item-padding: 16px;--icon-preview-size: 166px;--name-height: var(--default-clickable-area);--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);--checkbox-padding: 0px;display:grid;grid-template-columns:repeat(auto-fill, var(--row-width));align-content:center;align-items:center;justify-content:space-around;justify-items:center}.files-list--grid tbody.files-list__tbody tr{display:flex;flex-direction:column;width:var(--row-width);height:var(--row-height);border:none;border-radius:var(--border-radius-large);padding:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox{position:absolute;z-index:9;top:calc(var(--item-padding)/2);inset-inline-start:calc(var(--item-padding)/2);overflow:hidden;--checkbox-container-size: 44px;width:var(--checkbox-container-size);height:var(--checkbox-container-size)}.files-list--grid tbody.files-list__tbody .files-list__row-checkbox .checkbox-radio-switch__content::after{content:\"\";width:16px;height:16px;position:absolute;inset-inline-start:50%;margin-inline-start:-8px;z-index:-1;background:var(--color-main-background)}.files-list--grid tbody.files-list__tbody .files-list__row-icon-favorite,.files-list--grid tbody.files-list__tbody .files-list__row-icon-recently-created{position:absolute;top:0;inset-inline-end:0;display:flex;align-items:center;justify-content:center;width:var(--clickable-area);height:var(--clickable-area)}.files-list--grid tbody.files-list__tbody .files-list__row-name{display:flex;flex-direction:column;width:var(--icon-preview-size);height:calc(var(--icon-preview-size) + var(--name-height));overflow:visible}.files-list--grid tbody.files-list__tbody .files-list__row-name span.files-list__row-icon{width:var(--icon-preview-size);height:var(--icon-preview-size)}.files-list--grid tbody.files-list__tbody .files-list__row-name .files-list__row-name-text{margin:0;margin-inline-start:-4px;padding:0px 4px}.files-list--grid tbody.files-list__tbody .files-list__row-mtime{width:var(--icon-preview-size);height:var(--mtime-height);font-size:var(--font-size-small)}.files-list--grid tbody.files-list__tbody .files-list__row-actions{position:absolute;inset-inline-end:calc(var(--clickable-area)/4);inset-block-end:calc(var(--mtime-height)/2);width:var(--clickable-area);height:var(--clickable-area)}@media screen and (max-width: 768px){.files-list--grid tbody.files-list__tbody{--mtime-height: 0px}.files-list--grid tbody.files-list__tbody .files-list__row-actions{inset-block-end:var(--item-padding)}.files-list--grid tbody.files-list__tbody .files-list__row-name-text{padding-inline-end:var(--clickable-area) !important}}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesListVirtual.vue\"],\"names\":[],\"mappings\":\"AAEA,0CACC,oBAAA,CACA,0BAAA,CACA,4CAAA,CACA,2EAAA,CACA,qEAAA,CACA,iHAAA,CACA,uBAAA,CACA,YAAA,CACA,yDAAA,CAEA,oBAAA,CACA,kBAAA,CACA,4BAAA,CACA,oBAAA,CAEA,6CACC,YAAA,CACA,qBAAA,CACA,sBAAA,CACA,wBAAA,CACA,WAAA,CACA,wCAAA,CACA,2BAAA,CAID,oEACC,iBAAA,CACA,SAAA,CACA,+BAAA,CACA,8CAAA,CACA,eAAA,CACA,+BAAA,CACA,oCAAA,CACA,qCAAA,CAGA,2GACC,UAAA,CACA,UAAA,CACA,WAAA,CACA,iBAAA,CACA,sBAAA,CACA,wBAAA,CACA,UAAA,CACA,uCAAA,CAKF,0JAEC,iBAAA,CACA,KAAA,CACA,kBAAA,CACA,YAAA,CACA,kBAAA,CACA,sBAAA,CACA,2BAAA,CACA,4BAAA,CAGD,gEACC,YAAA,CACA,qBAAA,CACA,8BAAA,CACA,0DAAA,CAEA,gBAAA,CAEA,0FACC,8BAAA,CACA,+BAAA,CAGD,2FACC,QAAA,CAEA,wBAAA,CACA,eAAA,CAIF,iEACC,8BAAA,CACA,0BAAA,CACA,gCAAA,CAGD,mEACC,iBAAA,CACA,8CAAA,CACA,2CAAA,CACA,2BAAA,CACA,4BAAA,CAIF,qCAEC,0CACC,mBAAA,CAGA,mEACC,mCAAA,CAID,qEACC,mDAAA,CAAA\",\"sourcesContent\":[\"\\n// Grid mode\\n.files-list--grid tbody.files-list__tbody {\\n\\t--item-padding: 16px;\\n\\t--icon-preview-size: 166px;\\n\\t--name-height: var(--default-clickable-area);\\n\\t--mtime-height: calc(var(--font-size-small) + var(--default-grid-baseline));\\n\\t--row-width: calc(var(--icon-preview-size) + var(--item-padding) * 2);\\n\\t--row-height: calc(var(--icon-preview-size) + var(--name-height) + var(--mtime-height) + var(--item-padding) * 2);\\n\\t--checkbox-padding: 0px;\\n\\tdisplay: grid;\\n\\tgrid-template-columns: repeat(auto-fill, var(--row-width));\\n\\n\\talign-content: center;\\n\\talign-items: center;\\n\\tjustify-content: space-around;\\n\\tjustify-items: center;\\n\\n\\ttr {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--row-width);\\n\\t\\theight: var(--row-height);\\n\\t\\tborder: none;\\n\\t\\tborder-radius: var(--border-radius-large);\\n\\t\\tpadding: var(--item-padding);\\n\\t}\\n\\n\\t// Checkbox in the top left\\n\\t.files-list__row-checkbox {\\n\\t\\tposition: absolute;\\n\\t\\tz-index: 9;\\n\\t\\ttop: calc(var(--item-padding) / 2);\\n\\t\\tinset-inline-start: calc(var(--item-padding) / 2);\\n\\t\\toverflow: hidden;\\n\\t\\t--checkbox-container-size: 44px;\\n\\t\\twidth: var(--checkbox-container-size);\\n\\t\\theight: var(--checkbox-container-size);\\n\\n\\t\\t// Add a background to the checkbox so we do not see the image through it.\\n\\t\\t.checkbox-radio-switch__content::after {\\n\\t\\t\\tcontent: '';\\n\\t\\t\\twidth: 16px;\\n\\t\\t\\theight: 16px;\\n\\t\\t\\tposition: absolute;\\n\\t\\t\\tinset-inline-start: 50%;\\n\\t\\t\\tmargin-inline-start: -8px;\\n\\t\\t\\tz-index: -1;\\n\\t\\t\\tbackground: var(--color-main-background);\\n\\t\\t}\\n\\t}\\n\\n\\t// Icon in the top right\\n\\t.files-list__row-icon-favorite,\\n\\t.files-list__row-icon-recently-created {\\n\\t\\tposition: absolute;\\n\\t\\ttop: 0;\\n\\t\\tinset-inline-end: 0;\\n\\t\\tdisplay: flex;\\n\\t\\talign-items: center;\\n\\t\\tjustify-content: center;\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n\\n\\t.files-list__row-name {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: calc(var(--icon-preview-size) + var(--name-height));\\n\\t\\t// Ensure that the name outline is visible.\\n\\t\\toverflow: visible;\\n\\n\\t\\tspan.files-list__row-icon {\\n\\t\\t\\twidth: var(--icon-preview-size);\\n\\t\\t\\theight: var(--icon-preview-size);\\n\\t\\t}\\n\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tmargin: 0;\\n\\t\\t\\t// Ensure that the outline is not too close to the text.\\n\\t\\t\\tmargin-inline-start: -4px;\\n\\t\\t\\tpadding: 0px 4px;\\n\\t\\t}\\n\\t}\\n\\n\\t.files-list__row-mtime {\\n\\t\\twidth: var(--icon-preview-size);\\n\\t\\theight: var(--mtime-height);\\n\\t\\tfont-size: var(--font-size-small);\\n\\t}\\n\\n\\t.files-list__row-actions {\\n\\t\\tposition: absolute;\\n\\t\\tinset-inline-end: calc(var(--clickable-area) / 4);\\n\\t\\tinset-block-end: calc(var(--mtime-height) / 2);\\n\\t\\twidth: var(--clickable-area);\\n\\t\\theight: var(--clickable-area);\\n\\t}\\n}\\n\\n@media screen and (max-width: 768px) {\\n\\t// there is no mtime\\n\\t.files-list--grid tbody.files-list__tbody {\\n\\t\\t--mtime-height: 0px;\\n\\n\\t\\t// so we move the action to the name\\n\\t\\t.files-list__row-actions {\\n\\t\\t\\tinset-block-end: var(--item-padding);\\n\\t\\t}\\n\\n\\t\\t// and we need to keep space on the name for the actions\\n\\t\\t.files-list__row-name-text {\\n\\t\\t\\tpadding-inline-end: var(--clickable-area) !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, `.app-navigation-entry__settings-quota[data-v-062ef4b2]{--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2)}.app-navigation-entry__settings-quota--not-unlimited[data-v-062ef4b2] .app-navigation-entry__name{line-height:1;margin-top:var(--app-navigation-quota-margin)}.app-navigation-entry__settings-quota progress[data-v-062ef4b2]{position:absolute;bottom:var(--app-navigation-quota-margin);margin-inline-start:var(--default-clickable-area);width:calc(100% - 1.5*var(--default-clickable-area))}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/NavigationQuota.vue\"],\"names\":[],\"mappings\":\"AAEA,uDAEC,+EAAA,CAEA,kGACC,aAAA,CACA,6CAAA,CAGD,gEACC,iBAAA,CACA,yCAAA,CACA,iDAAA,CACA,oDAAA\",\"sourcesContent\":[\"\\n// User storage stats display\\n.app-navigation-entry__settings-quota {\\n\\t// Align title with progress and icon\\n\\t--app-navigation-quota-margin: calc((var(--default-clickable-area) - 24px) / 2); // 20px icon size and 4px progress bar\\n\\n\\t&--not-unlimited :deep(.app-navigation-entry__name) {\\n\\t\\tline-height: 1;\\n\\t\\tmargin-top: var(--app-navigation-quota-margin);\\n\\t}\\n\\n\\tprogress {\\n\\t\\tposition: absolute;\\n\\t\\tbottom: var(--app-navigation-quota-margin);\\n\\t\\tmargin-inline-start: var(--default-clickable-area);\\n\\t\\twidth: calc(100% - (1.5 * var(--default-clickable-area)));\\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, `.toast-loading-icon{margin-inline-start:-4px;min-width:26px}.app-content[data-v-ed23df10]{display:flex;overflow:hidden;flex-direction:column;max-height:100%;position:relative !important}.files-list__header[data-v-ed23df10]{display:flex;gap:var(--default-grid-baseline);align-items:center;flex:0 0;max-width:100%;margin-block:var(--app-navigation-padding, 4px);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px)}.files-list__header--public[data-v-ed23df10]{margin-inline:0 var(--app-navigation-padding, 4px)}.files-list__header>*[data-v-ed23df10]{flex:0 0}.files-list__header-actions[data-v-ed23df10]{min-width:fit-content !important}.files-list__header-upload-button--narrow[data-v-ed23df10]{position:fixed;inset-block-end:calc(1.5*var(--default-grid-baseline));inset-inline-end:calc(1.5*var(--default-grid-baseline))}.files-list__before[data-v-ed23df10]{display:flex;flex-direction:column;gap:calc(var(--default-grid-baseline)*2);margin-inline:calc(var(--default-clickable-area) + 2*var(--app-navigation-padding))}.files-list__empty-view-wrapper[data-v-ed23df10]{display:flex;height:100%}.files-list__refresh-icon[data-v-ed23df10]{flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);height:var(--default-clickable-area)}.files-list__loading-icon[data-v-ed23df10]{margin:auto}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesList.vue\"],\"names\":[],\"mappings\":\"AACA,oBAEC,wBAAA,CAEA,cAAA,CAGD,8BAEC,YAAA,CACA,eAAA,CACA,qBAAA,CACA,eAAA,CACA,4BAAA,CAIA,qCACC,YAAA,CACA,gCAAA,CACA,kBAAA,CAEA,QAAA,CACA,cAAA,CAEA,+CAAA,CACA,2HAAA,CAEA,6CAEC,kDAAA,CAGD,uCAGC,QAAA,CAGD,6CACC,gCAAA,CAIF,2DAEC,cAAA,CACA,sDAAA,CACA,uDAAA,CAGD,qCACC,YAAA,CACA,qBAAA,CACA,wCAAA,CACA,mFAAA,CAGD,iDACC,YAAA,CACA,WAAA,CAGD,2CACC,sCAAA,CACA,mCAAA,CACA,oCAAA,CAGD,2CACC,WAAA\",\"sourcesContent\":[\"\\n:global(.toast-loading-icon) {\\n\\t// Reduce start margin (it was made for text but this is an icon)\\n\\tmargin-inline-start: -4px;\\n\\t// 16px icon + 5px on both sides\\n\\tmin-width: 26px;\\n}\\n\\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\\tposition: relative !important;\\n}\\n\\n.files-list {\\n\\t&__header {\\n\\t\\tdisplay: flex;\\n\\t\\tgap: var(--default-grid-baseline);\\n\\t\\talign-items: center;\\n\\t\\t// Do not grow or shrink (vertically)\\n\\t\\tflex: 0 0;\\n\\t\\tmax-width: 100%;\\n\\t\\t// Align with the navigation toggle icon\\n\\t\\tmargin-block: var(--app-navigation-padding, 4px);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding, 4px)) var(--app-navigation-padding, 4px);\\n\\n\\t\\t&--public {\\n\\t\\t\\t// There is no navigation toggle on public shares\\n\\t\\t\\tmargin-inline: 0 var(--app-navigation-padding, 4px);\\n\\t\\t}\\n\\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\\n\\t\\t&-actions {\\n\\t\\t\\tmin-width: fit-content !important;\\n\\t\\t}\\n\\t}\\n\\n\\t&__header-upload-button--narrow {\\n\\t\\t// this is teleported to body on narrow screens\\n\\t\\tposition: fixed;\\n\\t\\tinset-block-end: calc(1.5 * var(--default-grid-baseline));\\n\\t\\tinset-inline-end: calc(1.5 * var(--default-grid-baseline));\\n\\t}\\n\\n\\t&__before {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\tgap: calc(var(--default-grid-baseline) * 2);\\n\\t\\tmargin-inline: calc(var(--default-clickable-area) + 2 * var(--app-navigation-padding));\\n\\t}\\n\\n\\t&__empty-view-wrapper {\\n\\t\\tdisplay: flex;\\n\\t\\theight: 100%;\\n\\t}\\n\\n\\t&__refresh-icon {\\n\\t\\tflex: 0 0 var(--default-clickable-area);\\n\\t\\twidth: var(--default-clickable-area);\\n\\t\\theight: var(--default-clickable-area);\\n\\t}\\n\\n\\t&__loading-icon {\\n\\t\\tmargin: auto;\\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, `.app-navigation[data-v-b3d7fbf2] .app-navigation-entry.active .button-vue.icon-collapse:not(:hover){color:var(--color-primary-element-text)}.app-navigation>ul.app-navigation__list[data-v-b3d7fbf2]{padding-bottom:var(--default-grid-baseline, 4px)}.app-navigation-entry__settings[data-v-b3d7fbf2]{height:auto !important;overflow:hidden !important;padding-top:0 !important;flex:0 0 auto}.files-navigation[data-v-b3d7fbf2] .app-navigation__content > ul.app-navigation__list{will-change:scroll-position}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesNavigation.vue\"],\"names\":[],\"mappings\":\"AAEC,oGACC,uCAAA,CAGD,yDAEC,gDAAA,CAIF,iDACC,sBAAA,CACA,0BAAA,CACA,wBAAA,CAEA,aAAA,CAIA,sFACC,2BAAA\",\"sourcesContent\":[\"\\n.app-navigation {\\n\\t:deep(.app-navigation-entry.active .button-vue.icon-collapse:not(:hover)) {\\n\\t\\tcolor: var(--color-primary-element-text);\\n\\t}\\n\\n\\t> ul.app-navigation__list {\\n\\t\\t// Use flex gap value for more elegant spacing\\n\\t\\tpadding-bottom: var(--default-grid-baseline, 4px);\\n\\t}\\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\\n.files-navigation {\\n\\t:deep(.app-navigation__content > ul.app-navigation__list) {\\n\\t\\twill-change: scroll-position;\\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, `.app-sidebar--has-preview[data-v-f91af60e] .app-sidebar-header__figure{background-size:cover}.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/plain\"] .app-sidebar-header__figure,.app-sidebar--has-preview[data-v-f91af60e][data-mimetype=\"text/markdown\"] .app-sidebar-header__figure{background-size:contain}.app-sidebar--full[data-v-f91af60e]{position:fixed !important;z-index:2025 !important;top:0 !important;height:100% !important}.app-sidebar[data-v-f91af60e] .app-sidebar-header__description{margin:0 16px 4px 16px !important}.app-sidebar .svg-icon[data-v-f91af60e] svg{width:20px;height:20px;fill:currentColor}.sidebar__description[data-v-f91af60e]{display:flex;flex-direction:column;width:100%;gap:8px 0}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/views/FilesSidebar.vue\"],\"names\":[],\"mappings\":\"AAGE,uEACC,qBAAA,CAKA,yMACC,uBAAA,CAKH,oCACC,yBAAA,CACA,uBAAA,CACA,gBAAA,CACA,sBAAA,CAIA,+DACC,iCAAA,CAKD,4CACC,UAAA,CACA,WAAA,CACA,iBAAA,CAKH,uCACE,YAAA,CACA,qBAAA,CACA,UAAA,CACA,SAAA\",\"sourcesContent\":[\"\\n.app-sidebar {\\n\\t&--has-preview:deep {\\n\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\tbackground-size: cover;\\n\\t\\t}\\n\\n\\t\\t&[data-mimetype=\\\"text/plain\\\"],\\n\\t\\t&[data-mimetype=\\\"text/markdown\\\"] {\\n\\t\\t\\t.app-sidebar-header__figure {\\n\\t\\t\\t\\tbackground-size: contain;\\n\\t\\t\\t}\\n\\t\\t}\\n\\t}\\n\\n\\t&--full {\\n\\t\\tposition: fixed !important;\\n\\t\\tz-index: 2025 !important;\\n\\t\\ttop: 0 !important;\\n\\t\\theight: 100% !important;\\n\\t}\\n\\n\\t:deep {\\n\\t\\t.app-sidebar-header__description {\\n\\t\\t\\tmargin: 0 16px 4px 16px !important;\\n\\t\\t}\\n\\t}\\n\\n\\t.svg-icon {\\n\\t\\t:deep(svg) {\\n\\t\\t\\twidth: 20px;\\n\\t\\t\\theight: 20px;\\n\\t\\t\\tfill: currentColor;\\n\\t\\t}\\n\\t}\\n}\\n\\n.sidebar__description {\\n\\t\\tdisplay: flex;\\n\\t\\tflex-direction: column;\\n\\t\\twidth: 100%;\\n\\t\\tgap: 8px 0;\\n\\t}\\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._fileListFilterChips_yBylg {\n\tdisplay: flex;\n\tgap: var(--default-grid-baseline);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilterChips.vue\"],\"names\":[],\"mappings\":\";AAwCA;CACA,aAAA;CACA,iCAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilterChips\": `_fileListFilterChips_yBylg`\n};\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._fileListFilters_dNswU {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: var(--default-grid-baseline);\n\tmargin-inline-end: var(--default-grid-baseline);\n\theight: 100%;\n\twidth: 100%;\n}\n._fileListFilters__popoverFilterView_fJWbD {\n\tbox-sizing: border-box;\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(2 * var(--default-grid-baseline));\n\tpadding: calc(var(--default-grid-baseline) / 2);\n\tmin-width: calc(7 * var(--default-clickable-area));\n}\n._fileListFilters__popoverContainer_A30Cl {\n\tbox-sizing: border-box;\n\tpadding: calc(var(--default-grid-baseline) / 2);\n\tmin-width: calc(7 * var(--default-clickable-area));\n}\n._fileListFilters__filter_bCU2H {\n\tdisplay: flex;\n\talign-items: start;\n\tjustify-content: start;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n> * {\n\t\tflex: 0 1 fit-content;\n}\n}\n._fileListFilters__active_ECsmY {\n\tdisplay: flex;\n\tflex-direction: row;\n\tgap: calc(var(--default-grid-baseline, 4px) * 2);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FileListFilter/FileListFilters.vue\"],\"names\":[],\"mappings\":\";AAkGA;CACA,aAAA;CACA,mBAAA;CACA,iCAAA;CACA,+CAAA;CACA,YAAA;CACA,WAAA;AACA;AAEA;CACA,sBAAA;CACA,aAAA;CACA,sBAAA;CACA,2CAAA;CACA,+CAAA;CACA,kDAAA;AACA;AAEA;CACA,sBAAA;CACA,+CAAA;CACA,kDAAA;AACA;AAEA;CACA,aAAA;CACA,kBAAA;CACA,sBAAA;CACA,gDAAA;AAEA;EACA,qBAAA;AACA;AACA;AAEA;CACA,aAAA;CACA,mBAAA;CACA,gDAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilters\": `_fileListFilters_dNswU`,\n\t\"fileListFilters__popoverFilterView\": `_fileListFilters__popoverFilterView_fJWbD`,\n\t\"fileListFilters__popoverContainer\": `_fileListFilters__popoverContainer_A30Cl`,\n\t\"fileListFilters__filter\": `_fileListFilters__filter_bCU2H`,\n\t\"fileListFilters__active\": `_fileListFilters__active_ECsmY`\n};\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._filesNavigationList_MBZVA {\n\theight: 100%; /* Fill all available space for sticky views */\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesNavigationList.vue\"],\"names\":[],\"mappings\":\";AAsDA;CACA,YAAA,EAAA,8CAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filesNavigationList\": `_filesNavigationList_MBZVA`\n};\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._filesSidebarSubname_yXZVi {\n\tdisplay: flex;\n\talign-items: center;\n\tflex-wrap: wrap;\n\tgap: 0 8px;\n}\n._filesSidebarSubname__separator__OQUr {\n\tdisplay: inline-block;\n\tfont-weight: bold !important;\n}\n._filesSidebarSubname__userBubble_XTdWm {\n\tdisplay: inline-flex !important;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files/src/components/FilesSidebar/FilesSidebarSubname.vue\"],\"names\":[],\"mappings\":\";AAiDA;CACA,aAAA;CACA,mBAAA;CACA,eAAA;CACA,UAAA;AACA;AAEA;CACA,qBAAA;CACA,4BAAA;AACA;AAEA;CACA,+BAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"filesSidebarSubname\": `_filesSidebarSubname_yXZVi`,\n\t\"filesSidebarSubname__separator\": `_filesSidebarSubname__separator__OQUr`,\n\t\"filesSidebarSubname__userBubble\": `_filesSidebarSubname__userBubble_XTdWm`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\")) {\n permissions |= Permission.WRITE;\n }\n if (permString.includes(\"CK\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"NV\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n}\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n if (scopedGlobals.davProperties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n scopedGlobals.davProperties.push(prop);\n scopedGlobals.davNamespaces = namespaces;\n return true;\n}\nfunction getDavProperties() {\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n}\nasync function getFavoriteNodes(options = {}) {\n const client = options.client ?? getClient();\n const path = options.path ?? \"/\";\n const davRoot = options.davRoot ?? defaultRootPath;\n const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n signal: options.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n defaultDavNamespaces,\n defaultDavProperties,\n defaultRemoteURL,\n defaultRootPath,\n getClient,\n getDavNameSpaces,\n getDavProperties,\n getDefaultPropfind,\n getFavoriteNodes,\n getFavoritesReport,\n getRecentSearch,\n getRemoteURL,\n getRootPath,\n parsePermissions,\n registerDavProperty,\n resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","import '../assets/index-BGmULkk-.css';\nimport { getSharingToken, isPublicShare } from \"@nextcloud/sharing/public\";\nimport { getCurrentUser } from \"@nextcloud/auth\";\nimport { formatFileSize, Folder, davRemoteURL, davRootPath, Permission, FileType, davGetClient, validateFilename, InvalidFilenameError, getUniqueName, getNewFileMenuEntries, NewMenuEntryCategory } from \"@nextcloud/files\";\nimport { basename, encodePath } from \"@nextcloud/paths\";\nimport { normalize } from \"path\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport axios, { isCancel } from \"@nextcloud/axios\";\nimport PCancelable from \"p-cancelable\";\nimport PQueue from \"p-queue\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getBaseUrl, generateRemoteUrl } from \"@nextcloud/router\";\nimport axiosRetry, { exponentialDelay, isNetworkOrIdempotentRequestError } from \"axios-retry\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport { TypedEventTarget } from \"typescript-event-target\";\nimport Vue, { defineAsyncComponent, defineComponent } from \"vue\";\nimport { showInfo, showWarning } from \"@nextcloud/dialogs\";\nimport { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { useHotKey } from \"@nextcloud/vue/dist/Composables/useHotKey.js\";\nimport NcActionButton from \"@nextcloud/vue/dist/Components/NcActionButton.js\";\nimport NcActionCaption from \"@nextcloud/vue/dist/Components/NcActionCaption.js\";\nimport NcActionSeparator from \"@nextcloud/vue/dist/Components/NcActionSeparator.js\";\nimport NcActions from \"@nextcloud/vue/dist/Components/NcActions.js\";\nimport NcButton from \"@nextcloud/vue/dist/Components/NcButton.js\";\nimport NcIconSvgWrapper from \"@nextcloud/vue/dist/Components/NcIconSvgWrapper.js\";\nimport NcProgressBar from \"@nextcloud/vue/dist/Components/NcProgressBar.js\";\nconst gtBuilder = getGettextBuilder().detectLocale();\n[{ \"locale\": \"af\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"af\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Afrikaans (https://www.transifex.com/nextcloud/teams/64236/af/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: af\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ar\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Ali , 2025\", \"Language-Team\": \"Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ar\", \"Plural-Forms\": \"nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nabu.s3ud, 2024\\nAli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Ali , 2025\\nLanguage-Team: Arabic (https://app.transifex.com/nextcloud/teams/64236/ar/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ar\\nPlural-Forms: nplurals=6; plural=n==0 ? 0 : n==1 ? 1 : n==2 ? 2 : n%100>=3 && n%100<=10 ? 3 : n%100>=11 && n%100<=99 ? 4 : 5;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" هو اسم ممنوع لملف أو مجلد.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" هو نوع ممنوع أن يكون لملف.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" هو غير مسموح به في اسم ملف أو مجلد.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ملف متعارض\", \"{count} ملف متعارض\", \"{count} ملفان متعارضان\", \"{count} ملف متعارض\", \"{count} ملفات متعارضة\", \"{count} ملفات متعارضة\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ملف متعارض في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفان متعارضان في {dirname}\", \"{count} ملف متعارض في {dirname}\", \"{count} ملفات متعارضة في {dirname}\", \"{count} ملفات متعارضة في {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\", \"مازال {seconds} ثوانٍ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} متبقية\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"بضع ثوانٍ متبقية\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"تجميع\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"إلغاء\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"إلغِ العملية بالكامل\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"إلغاء عمليات رفع الملفات\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"إستمر\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"إنشاء جديد\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تقدير الوقت المتبقي\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"الإصدار الحالي\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"تعذّرت إعادة تجميع الكتل معاً \"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"تعذّر رفع الملف\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['غير مسموح ان ينتهي اسم الملف بـ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"إذا اخترت الاحتفاظ بالنسختين فسيتم إلحاق رقم عداد آخر اسم الملف الوارد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"اسم ملف غير صحيح\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"تاريخ آخر تعديل غير معروف\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"اسم ملف جديد\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخة جديدة\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مُجمَّد\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"معاينة الصورة\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغيير التسمية\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"حدِّد كل صناديق الخيارات\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"حدِّد كل الملفات الموجودة\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"حدِّد كل الملفات الجديدة\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"تخطِّي\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\", \"تخطَّ {count} ملف\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"حجم غير معلوم\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"رفع الملفات\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"رفع ملفات\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"رفع مجلدات\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"الرفع من جهاز \"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"تمّ إلغاء عملية رفع الملفات\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"تمّ تجاوز الرفع\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['رفع \"{folder}\" تمّ تجاوزه'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"تقدُّم الرفع \"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"عند تحديد مجلد وارد، أي ملفات متعارضة بداخله ستتم الكتابة فوقها.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"عند تحديد مجلد وارد، ستتم كتابة المحتوى في المجلد الموجود و سيتم تنفيذ حل التعارض بشكل تعاوُدي.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"أيُّ الملفات ترغب في الإبقاء عليها؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"يمكنك إمّا تغيير اسم الملف، أو تجاوزه، أو إلغاء العملية برُمَّتها.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"يجب أن تختار نسخة واحدة على الأقل من كل ملف للاستمرار.\"] } } } } }, { \"locale\": \"ast\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"enolp , 2023\", \"Language-Team\": \"Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ast\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nenolp , 2023\\n\" }, \"msgstr\": [\"Last-Translator: enolp , 2023\\nLanguage-Team: Asturian (https://app.transifex.com/nextcloud/teams/64236/ast/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ast\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ficheru en coflictu\", \"{count} ficheros en coflictu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} ficheru en coflictu en {dirname}\", \"{count} ficheros en coflictu en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Queden {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Tiempu que queda: {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden unos segundos\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Encaboxar les xubes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Siguir\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando'l tiempu que falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión esistente\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Si seleiciones dambes versiones, el ficheru copiáu va tener un númberu amestáu al so nome.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"La data de la última modificación ye desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en posa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar la imaxe\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar toles caxelles\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleicionar tolos ficheros esistentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleicionar tolos ficheros nuevos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Saltar esti ficheru\", \"Saltar {count} ficheros\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamañu desconocíu\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Encaboxóse la xuba\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Xubir ficheros\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Xuba en cursu\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué ficheros quies caltener?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Tienes de seleicionar polo menos una versión de cada ficheru pa siguir.\"] } } } } }, { \"locale\": \"az\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Rashad Aliyev , 2023\", \"Language-Team\": \"Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"az\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nRashad Aliyev , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Rashad Aliyev , 2023\\nLanguage-Team: Azerbaijani (https://app.transifex.com/nextcloud/teams/64236/az/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: az\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniyə qalıb\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} qalıb\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir neçə saniyə qalıb\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Əlavə et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yükləməni imtina et\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Təxmini qalan vaxt\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauzadadır\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Faylları yüklə\"] } } } } }, { \"locale\": \"be\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"be\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Belarusian (https://www.transifex.com/nextcloud/teams/64236/be/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: be\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bg\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bg_BG\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bulgarian (Bulgaria) (https://www.transifex.com/nextcloud/teams/64236/bg_BG/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bg_BG\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bn_BD\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bn_BD\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bengali (Bangladesh) (https://www.transifex.com/nextcloud/teams/64236/bn_BD/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bn_BD\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"br\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"br\", \"Plural-Forms\": \"nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Breton (https://www.transifex.com/nextcloud/teams/64236/br/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: br\\nPlural-Forms: nplurals=5; plural=((n%10 == 1) && (n%100 != 11) && (n%100 !=71) && (n%100 !=91) ? 0 :(n%10 == 2) && (n%100 != 12) && (n%100 !=72) && (n%100 !=92) ? 1 :(n%10 ==3 || n%10==4 || n%10==9) && (n%100 < 10 || n% 100 > 19) && (n%100 < 70 || n%100 > 79) && (n%100 < 90 || n%100 > 99) ? 2 :(n != 0 && n % 1000000 == 0) ? 3 : 4);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"bs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"bs\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Bosnian (https://www.transifex.com/nextcloud/teams/64236/bs/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: bs\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ca\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Leandro Navarro , 2025\", \"Language-Team\": \"Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ca\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nv v , 2025\\nLeandro Navarro , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Leandro Navarro , 2025\\nLanguage-Team: Catalan (https://app.transifex.com/nextcloud/teams/64236/ca/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ca\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" és un nom de fitxer o carpeta prohibit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" és un tipus de fitxer prohibit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no és permès dins del nom de fitxer o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fitxer en conflicte\", \"{count} fitxer en conflicte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicte de fitxers a {dirname}\", \"{count} conflictes de fitxers a {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segon restant\", \"{seconds} segons restants\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Queden {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"queden uns segons\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblatge\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar l'operació sencera\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel·la les pujades\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nou\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"s’està estimant el temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"No s'han pogut acoblar els trossos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"No s'ha pogut pujar el fitxer\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Els noms de fitxer no han d'acabar en \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fitxer no vàlid\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de la darrera modificació desconeguda\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nou nom de fitxer\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Imatge de vista prèvia\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Canviar el nom\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccioneu totes les caselles de selecció\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccioneu tots els fitxers existents\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccioneu tots el fitxers nous\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omet {count} fitxer\", \"Omet {count} fitxers\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Mida desconeguda\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Pujar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Puja els fitxers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Pujar les carpetes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Pujada des del dispositiu\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La pujada s'ha cancel·lat\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"S'ha omès la pujada\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [`S'ha omès la pujada de \"{folder}\"`] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Procés de pujada\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, també es sobreescriuran els fitxers en conflicte dins d'ella.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta d'entrada, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers vols conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Podeu canviar el nom del fitxer, saltar aquest fitxer o cancel·lar tota l'operació.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar almenys una versió de cada fitxer per continuar.\"] } } } } }, { \"locale\": \"cs\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Pavel Borecki , 2025\", \"Language-Team\": \"Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cs_CZ\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMichal Šmahel , 2024\\nMartin Hankovec, 2024\\nAppukonrad , 2024\\nPavel Borecki , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Pavel Borecki , 2025\\nLanguage-Team: Czech (Czech Republic) (https://app.transifex.com/nextcloud/teams/64236/cs_CZ/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cs_CZ\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n >= 2 && n <= 4 && n % 1 == 0) ? 1: (n % 1 != 0 ) ? 2 : 3;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít jako název souboru či složky.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ není povoleného typu souboru.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ není povoleno použít v rámci názvu souboru či složky.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} kolize souborů\", \"{count} kolize souborů\", \"{count} kolizí souborů\", \"{count} kolize souborů\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} kolize souboru v {dirname}\", \"{count} kolize souboru v {dirname}\", \"{count} kolizí souborů v {dirname}\", \"{count} kolize souboru v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"zbývá {seconds}\", \"zbývají {seconds}\", \"zbývá {seconds}\", \"zbývají {seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"zbývá {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zbývá několik sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sestavování\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušit\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušit nahrávání\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvořit nový\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhaduje se zbývající čas\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Shluky se nepodařilo dát dohromady\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Soubor se nepodařilo nahrát\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Názvy souborů nemohou končit na „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, příchozí soubor bude mít ke jménu přidánu číslici.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný název souboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Neznámé datum poslední úpravy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový název souboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastaveno\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhled obrázku\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Přejmenovat\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označit všechny zaškrtávací kolonky\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat veškeré stávající soubory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat veškeré nové soubory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Přeskočit\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Přeskočit {count} soubor\", \"Přeskočit {count} soubory\", \"Přeskočit {count} souborů\", \"Přeskočit {count} soubory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznámá velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrát\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrát soubory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrát složky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrát ze zařízení\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávání bylo zrušeno\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrání bylo přeskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Nahrání „{folder}“ bylo přeskočeno\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postup v nahrávání\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po výběru příchozí složky budou rovněž přepsány všechny v ní obsažené konfliktní soubory\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Když je vybrána příchozí složka, obsah je zapsán do existující složky a je provedeno rekurzivní řešení kolizí.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory si přejete ponechat?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Soubor je možné buď přejmenovat, přeskočit nebo celou operaci zrušit.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] } } } } }, { \"locale\": \"cy_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"cy_GB\", \"Plural-Forms\": \"nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Welsh (United Kingdom) (https://www.transifex.com/nextcloud/teams/64236/cy_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: cy_GB\\nPlural-Forms: nplurals=4; plural=(n==1) ? 0 : (n==2) ? 1 : (n != 8 && n != 11) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"da\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Finn Sommer , 2025\", \"Language-Team\": \"Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"da\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRasmus Rosendahl-Kaa, 2024\\nMartin Bonde , 2025\\nFinn Sommer , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Finn Sommer , 2025\\nLanguage-Team: Danish (https://app.transifex.com/nextcloud/teams/64236/da/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: da\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tilladt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fil konflikt\", \"{count} filer i konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fil konflikt i {dirname}\", \"{count} filer i konflikt i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{sekunder} sekunder tilbage\", \"{sekunder} sekunder tilbage\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tilbage\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"et par sekunder tilbage\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuller\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuller hele handlingen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuller uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opret ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimering af resterende tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Mislykkedes at samle stumperne sammen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunne ikke uploade filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavne må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldigt filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Sidste modifikationsdato ukendt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nyt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvisning af billede\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøb\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vælg alle felter\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Spring over\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Spring {count} fil over\", \"Spring {count} fil over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukendt størrelse\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload fra enhed\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload er blevet annulleret\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload er blevet sprunget over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload af \"{folder}\" er blevet sprunget over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload fremskridt\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indgående mappe er valgt, vil alle modstridende filer i den også blive overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil dens indhold blive skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer ønsker du at beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten omdøbe filen, springe denne fil over eller annullere hele handlingen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] } } } } }, { \"locale\": \"de\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (https://app.transifex.com/nextcloud/teams/64236/de/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndy Scherzinger , 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (https://app.transifex.com/nextcloud/teams/64236/de/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn du beide Versionen auswählst, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchtest du behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kannst die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du musst mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"de_DE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Martin Wilichowski, 2025\", \"Language-Team\": \"German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"de_DE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMark Ziegler , 2025\\nMario Siegmann , 2025\\nMartin Wilichowski, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Martin Wilichowski, 2025\\nLanguage-Team: German (Germany) (https://app.transifex.com/nextcloud/teams/64236/de_DE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: de_DE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ist ein verbotener Datei- oder Ordnername.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ist ein verbotener Dateityp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ist in einem Datei- oder Ordnernamen nicht zulässig.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} Datei-Konflikt\", \"{count} Datei-Konflikte\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} Datei-Konflikt in {dirname}\", \"{count} Datei-Konflikte in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} Sekunde verbleibt\", \"{seconds} Sekunden verbleiben\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} verbleibend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ein paar Sekunden verbleiben\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zusammenfügen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hochladen abbrechen\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Neu erstellen\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Berechne verbleibende Zeit\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Die Teile konnten nicht zusammengefügt werden\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Die Datei konnte nicht hochgeladen werden\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dateinamen dürfen nicht mit \"{segment}\" enden.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn Sie beide Versionen auswählen, wird der eingehenden Datei eine Nummer zum Namen hinzugefügt.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ungültiger Dateiname\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Neuer Dateiname\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Pausiert\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vorschaubild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Umbenennen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Überspringen\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} Datei überspringen\", \"{count} Dateien überspringen\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unbekannte Größe\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Hochladen\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dateien hochladen\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ordner hochladen\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Vom Gerät hochladen\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Das Hochladen wurde abgebrochen\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Das Hochladen wurde übersprungen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Das Hochladen von \"{folder}\" wurde übersprungen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fortschritt beim Hochladen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden alle darin enthaltenen Konfliktdateien ebenfalls überschrieben.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien möchten Sie behalten?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sie können die Datei entweder umbenennen, diese Datei überspringen oder den gesamten Vorgang abbrechen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sie müssen mindestens eine Version jeder Datei auswählen, um fortzufahren.\"] } } } } }, { \"locale\": \"el\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Γιάννος, 2025\", \"Language-Team\": \"Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"el\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nEfstathios Iosifidis , 2025\\nΓιάννος, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Γιάννος, 2025\\nLanguage-Team: Greek (https://app.transifex.com/nextcloud/teams/64236/el/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: el\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" είναι απαγορευμένο όνομα αρχείου ή φακέλου.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Το \"{segment}\" είναι απαγορευμένος τύπος αρχείου.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Το \"{segment}\" δεν επιτρέπεται μέσα στο όνομα ενός αρχείου ή φακέλου.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} αρχείο σε διένεξη\", \"{count} αρχεία σε διένεξη\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} αρχείο σε διένεξη στον φάκελο {dirname}\", \"{count} αρχεία σε διένεξη στον φάκελο {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Απομένει {seconds} δευτερόλεπτο\", \"Απομένουν {seconds} δευτερόλεπτα\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"απομένουν {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"απομένουν λίγα δευτερόλεπτα\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"συναρμολόγηση\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της λειτουργίας\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ακύρωση μεταφορτώσεων\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Δημιουργία νέου\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"εκτίμηση του χρόνου που απομένει\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Υπάρχουσα έκδοση\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Αποτυχία συναρμολόγησης των κομματιών\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Αποτυχία μεταφόρτωσης του αρχείου\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Τα ονόματα αρχείων δεν πρέπει να τελειώνουν με \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Αν επιλέξετε και τις δύο εκδόσεις, το εισερχόμενο αρχείο θα έχει έναν αριθμό προσαρτημένο στο όνομά του.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Μη έγκυρο όνομα αρχείου\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Νέο όνομα αρχείου\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"σε παύση\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Προεπισκόπηση εικόνας\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Μετονομασία\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλογή όλων των πλαισίων ελέγχου\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπαρχόντων αρχείων\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Παράλειψη\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Παράλειψη {count} αρχείου\", \"Παράλειψη {count} αρχείων\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παραλείψτε αυτό το αρχείο\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Άγνωστο μέγεθος\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Μεταφόρτωση\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Μεταφόρτωση αρχείων\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Μεταφόρτωση φακέλων\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Μεταφόρτωση από συσκευή\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Η μεταφόρτωση ακυρώθηκε\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Η μεταφόρτωση παραλείφθηκε\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Η μεταφόρτωση του \"{folder}\" παραλείφθηκε'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Πρόοδος μεταφόρτωσης\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, όλα τα αρχεία σε διένεξη μέσα σε αυτόν θα αντικατασταθούν.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας εισερχόμενος φάκελος, το περιεχόμενό του γράφεται στον υπάρχοντα φάκελο και εκτελείται αναδρομική επίλυση διενέξεων.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Μπορείτε είτε να μετονομάσετε το αρχείο, να παραλείψετε αυτό το αρχείο ή να ακυρώσετε όλη τη λειτουργία.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση κάθε αρχείου για να συνεχίσετε.\"] } } } } }, { \"locale\": \"en_GB\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Andi Chandler , 2025\", \"Language-Team\": \"English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"en_GB\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nAndi Chandler , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Andi Chandler , 2025\\nLanguage-Team: English (United Kingdom) (https://app.transifex.com/nextcloud/teams/64236/en_GB/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: en_GB\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is a forbidden file or folder name.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is a forbidden file type.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is not allowed inside a file or folder name.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} files conflict\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} file conflicts in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconds left\", \"{seconds} seconds left\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} left\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"a few seconds left\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assembling\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancel uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Create new\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimating time left\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Failed to assemble the chunks together\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Failed to upload the file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filenames must not end with \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Invalid filename\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"New filename\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"paused\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Preview image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rename\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Skip\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip {count} file\", \"Skip {count} files\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Unknown size\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload files\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Upload folders\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Upload from device\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload has been cancelled\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload has been skipped\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload of \"{folder}\" has been skipped'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Upload progress\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"You can either rename the file, skip this file or cancel the whole operation.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] } } } } }, { \"locale\": \"eo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Esperanto (https://www.transifex.com/nextcloud/teams/64236/eo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Julio C. Ortega, 2025\", \"Language-Team\": \"Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFranciscoFJ , 2024\\nJulio C. Ortega, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Julio C. Ortega, 2025\\nLanguage-Team: Spanish (https://app.transifex.com/nextcloud/teams/64236/es/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" es un nombre de archivo o carpeta no permitido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" es un tipo de archivo no permitido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" no está permitido dentro del nombre de un archivo o carpeta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"queda {seconds} segundo\", \"quedan {seconds} segundos\", \"quedan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Fallo al ensamblar todas las partes juntas\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fallo al cargar el archivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Los nombres de archivo no deben terminar en \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, el archivo entrante le será agregado un número a su nombre.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuevo nombre de archivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Saltar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Cargar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"La carga fue omitida\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['La carga de \"{folder}\" ha sido omitida'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier de los archivos en conflictos también serán sobre-escritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido es escrito en la carpeta existente y se realizará una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Puede o bien, renombrar el archivo, omitirlo, o, cancelar toda la operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_419\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ALEJANDRO CASTRO, 2022\", \"Language-Team\": \"Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_419\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nALEJANDRO CASTRO, 2022\\n\" }, \"msgstr\": [\"Last-Translator: ALEJANDRO CASTRO, 2022\\nLanguage-Team: Spanish (Latin America) (https://www.transifex.com/nextcloud/teams/64236/es_419/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_419\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"agregar\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] } } } } }, { \"locale\": \"es_AR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Matías Campo Hoet , 2024\", \"Language-Team\": \"Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_AR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMatías Campo Hoet , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Matías Campo Hoet , 2024\\nLanguage-Team: Spanish (Argentina) (https://app.transifex.com/nextcloud/teams/64236/es_AR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_AR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} conflictos de archivo\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflicto de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\", \"{count} conflictos de archivo en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan unos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa de imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Cargar archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Cargar carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Cargar desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Carga cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la carga\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también serán sobreescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_CL\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CL\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Chile) (https://www.transifex.com/nextcloud/teams/64236/es_CL/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CL\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Colombia) (https://www.transifex.com/nextcloud/teams/64236/es_CO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_CR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_CR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Costa Rica) (https://www.transifex.com/nextcloud/teams/64236/es_CR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_CR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_DO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_DO\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Dominican Republic) (https://www.transifex.com/nextcloud/teams/64236/es_DO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_DO\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_EC\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_EC\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Ecuador) (https://www.transifex.com/nextcloud/teams/64236/es_EC/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_EC\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_GT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_GT\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Guatemala) (https://www.transifex.com/nextcloud/teams/64236/es_GT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_GT\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_HN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_HN\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Honduras) (https://www.transifex.com/nextcloud/teams/64236/es_HN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_HN\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_MX\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jehu Marcos Herrera Puentes, 2024\", \"Language-Team\": \"Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_MX\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJehu Marcos Herrera Puentes, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Jehu Marcos Herrera Puentes, 2024\\nLanguage-Team: Spanish (Mexico) (https://app.transifex.com/nextcloud/teams/64236/es_MX/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_MX\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{filename}\" contains invalid characters, how do you want to continue?': { \"msgid\": '\"{filename}\" contains invalid characters, how do you want to continue?', \"msgstr\": ['\"{filename}\" contiene caracteres inválidos, ¿Cómo desea continuar?'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflicto de archivo\", \"{count} conflictos de archivo\", \"{count} archivos en conflicto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} archivo en conflicto en {dirname}\", \"{count} archivos en conflicto en {dirname}\", \"{count} archivo en conflicto en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{tiempo} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quedan pocos segundos\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda la operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar subidas\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear nuevo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tiempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si selecciona ambas versionas, se agregará un número al nombre del archivo entrante.\"] }, \"Invalid file name\": { \"msgid\": \"Invalid file name\", \"msgstr\": [\"Nombre de archivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Fecha de última modificación desconocida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nueva versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Previsualizar imagen\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renombrar\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas las casillas de verificación\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos los archivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos los archivos nuevos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir este archivo\", \"Omitir {count} archivos\", \"Omitir {count} archivos\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño desconocido\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Subir archivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Subir carpetas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Subir desde dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"La subida ha sido cancelada\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso de la subida\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, cualquier archivo en conflicto dentro de la misma también será sobrescrito.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando una carpeta entrante es seleccionada, el contenido se escribe en la carpeta existente y se realiza una resolución de conflictos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Cuáles archivos desea conservar?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar al menos una versión de cada archivo para continuar.\"] } } } } }, { \"locale\": \"es_NI\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_NI\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Nicaragua) (https://www.transifex.com/nextcloud/teams/64236/es_NI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_NI\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PA\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PA\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Panama) (https://www.transifex.com/nextcloud/teams/64236/es_PA/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PA\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PE\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Peru) (https://www.transifex.com/nextcloud/teams/64236/es_PE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PE\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PR\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Puerto Rico) (https://www.transifex.com/nextcloud/teams/64236/es_PR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PR\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_PY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_PY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Paraguay) (https://www.transifex.com/nextcloud/teams/64236/es_PY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_PY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_SV\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_SV\", \"Plural-Forms\": \"nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (El Salvador) (https://www.transifex.com/nextcloud/teams/64236/es_SV/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_SV\\nPlural-Forms: nplurals=2; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"es_UY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"es_UY\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Spanish (Uruguay) (https://www.transifex.com/nextcloud/teams/64236/es_UY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: es_UY\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"et_EE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Priit Jõerüüt , 2025\", \"Language-Team\": \"Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"et_EE\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPriit Jõerüüt , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Priit Jõerüüt , 2025\\nLanguage-Team: Estonian (Estonia) (https://app.transifex.com/nextcloud/teams/64236/et_EE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: et_EE\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ on keelatud faili- või kausta nimi.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}“ on keelatud failitüüp.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}“ pole faili- või kausta nimes lubatud.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fail on vastuolus\", \"{count} faili on vastuolus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail on vastuolus „{dirname}“ kaustas\", \"{count} faili on vastuolus „{dirname}“ kaustas\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"jäänud {seconds} sekund\", \"jäänud {seconds} sekundit\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"aega jäänud {time} \"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"jäänud mõni sekund\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"koostamisel\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Katkesta üleslaadimine\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Loo uus\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hinnanguline järelejäänud aeg\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Tükkide koostamine üheks tervikuks ei õnnestunud\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Faili üleslaadimine ei õnnestunud\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Failinime lõpus ei tohi olla „{segment}“.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui sa valid mõlemad versioonid, lisatakse kopeeritud faili nimele number.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Vigane failinimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uus failinimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausil\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vaata pildi eelvaadet\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Muuda nime\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Jäta vahele\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Jäta vahele {count} fail\", \"Jäta vahele {count} faili\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta vahele see fail\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tundmatu suurus\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Laadi üles\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Laadi failid üles\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Laadi kaustad üles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Laadi üles seadmest\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Üleslaadimine on katkestatud\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Üleslaadimine on vahele jäetud\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}“ kausta üleslaadimine on vahele jäetud\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Üleslaadimise edenemine\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis seal asuvad vastuoluliste nimedega failid kirjutatakse samuti üle.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui saabuvate failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja käivitatakse rekursiivne vastuolude haldus.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Milliseid faile soovid säilitada?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Sa võid kas faili nime muuta, ta vahele jätta või kogu tegevuse katkestada.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamiseks pead valima vähemalt ühe versiooni igast failist.\"] } } } } }, { \"locale\": \"eu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Unai Tolosa Pontesta , 2022\", \"Language-Team\": \"Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"eu\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nUnai Tolosa Pontesta , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Unai Tolosa Pontesta , 2022\\nLanguage-Team: Basque (https://www.transifex.com/nextcloud/teams/64236/eu/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: eu\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo geratzen dira\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} geratzen da\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"segundo batzuk geratzen dira\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Gehitu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Ezeztatu igoerak\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"kalkulatutako geratzen den denbora\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"geldituta\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Igo fitxategiak\"] } } } } }, { \"locale\": \"fa\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Alireza Rashidi, 2025\", \"Language-Team\": \"Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fa\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nreza reza , 2024\\nAlireza Rashidi, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Alireza Rashidi, 2025\\nLanguage-Team: Persian (https://app.transifex.com/nextcloud/teams/64236/fa/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fa\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"{segment} یک نام فایل یا پوشه ممنوعه است.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"{segment} یک نوع فایل ممنوعه است.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"{segment} داخل نام فایل یا پوشه مجاز نیست.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} تداخل فایل\", \"{count} تداخل فایل‌ها\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} پرونده با {dirname} ناسازگاری داشت\", \"{count} پرونده با {dirname} ناسازگاری داشت\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} ثانیه مانده\", \"{seconds} ثانیه مانده\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} باقی مانده\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"چند ثانیه مانده\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"سرهم کردن\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"رد کردن\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"رد کردن کل عملیات\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"رد کردن بارگذاری\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ادامه\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ساخت جدید\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"تخمین زمان باقی مانده\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"نگارش موجود\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"نتوانست تکه‌های را به سرهم کند\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"نتوانست پرونده را بارگذاری کند\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"نام پرونده نباید با {segment} پایان یابد.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"اگر هر دو نسخه را انتخاب کنید، یک عدد به نام پرونده ورودی اضافه خواهد شد.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"نام پرونده نامعتبر\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"آخرین تاریخ تغییر نامشخص\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"نام فایل جدید\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"نسخه جدید\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"مکث کردن\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"پیش نمایش تصویر\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"تغییر نام\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"انتخاب همه چک‌باکس‌ها\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"انتخاب همه فایل‌های موجود\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"انتخاب همه فایل‌های جدید\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"رد شدن\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"رد شدن از \", \"رد شدن از {count} فایل\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"اندازه نامشخص\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"بارگذاری\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"بارگذاری پرونده‌ها\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"بارگذاری پوشه‌ها\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"بارگذاری از دستگاه\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"بارگذاری رد شده است\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"بارگذاری نادیده گرفته شده است\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"بارگذاری {folder} نادیده گرفته شده است\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"روند بارگذاری\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"هنگامی که یک پوشه ورودی انتخاب می‌شود، هر فایل متناقضی در آن نیز بازنویسی می‌شود.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"هنگامی که یک پوشه دریافتی انتخاب می شود ، محتوا در پوشه موجود نوشته می شود و حل ناسازگاری بازگشتی انجام می شود.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"کدام پرونده‌ها را می‌خواهید نگه دارید؟\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"می‌توانید نام پرونده را تغییر دهید، از این پرونده رد شوید یا کل عملیات را رد کنید.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"برای ادامه باید دست‌کم یک نگارش از هر پرونده را انتخاب کنید.\"] } } } } }, { \"locale\": \"fi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Jiri Grönroos , 2025\", \"Language-Team\": \"Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fi_FI\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nthingumy, 2024\\nteemue, 2024\\nJiri Grönroos , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Jiri Grönroos , 2025\\nLanguage-Team: Finnish (Finland) (https://app.transifex.com/nextcloud/teams/64236/fi_FI/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fi_FI\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" on kielletty tiedoston tai hakemiston nimi.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" on kielletty tiedostotyyppi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ei ole sallittu tiedoston tai hakemiston nimessä.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tiedoston ristiriita\", \"{count} tiedoston ristiriita\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} tiedoston ristiriita kansiossa {dirname}\", \"{count} tiedoston ristiriita kansiossa {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunti jäljellä\", \"{seconds} sekuntia jäljellä\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} jäljellä\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"muutama sekunti jäljellä\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"kootaan\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Peruuta koko toimenpide\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Peruuta lähetykset\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Jatka\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Luo uusi\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"arvioidaan jäljellä olevaa aikaa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemassa oleva versio\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Palojen kokoaminen yhteen epäonnistui\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tiedoston lähetys epäonnistui\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tiedoston nimi ei saa päättyä \"{segment}\"'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jos valitset molemmat versiot, saapuvan tiedoston nimeen lisätään numero.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Kielletty/väärä tiedoston nimi\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimeisin muokkauspäivä on tuntematon\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Uusi tiedostonimi\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Uusi versio\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"keskeytetty\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Esikatsele kuva\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Nimeä uudelleen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Valitse kaikki valintaruudut\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Valitse kaikki olemassa olevat tiedostot\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Valitse kaikki uudet tiedostot\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ohita\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ohita tämä tiedosto\", \"Ohita {count} tiedostoa\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tuntematon koko\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Lähetä\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Lähetä tiedostoja\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Lähetä kansioita\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Lähetä laitteelta\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Lähetys on peruttu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Lähetys on ohitettu\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Hakemiston \"{folder}\" lähetys on ohitettu'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Lähetyksen edistyminen\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Valittuasi saapuvien kansion, kaikki ristiriitaiset tiedostot kansiossa ylikirjoitetaan.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Valittuasi saapuvien kansion, sisältö kirjoitetaan olemassaolevaan kansioon ja suoritetaan rekursiivinen ristiriitojen poisto.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mitkä tiedostot haluat säilyttää?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Voit joko nimetä tiedoston uudelleen, ohittaa tämän tiedoston tai peruuttaa koko toiminnon.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sinun täytyy valita vähintään yksi versio jokaisesta tiedostosta jatkaaksesi.\"] } } } } }, { \"locale\": \"fo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fo\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Faroese (https://www.transifex.com/nextcloud/teams/64236/fo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fo\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"fr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Caro Leviia, 2025\", \"Language-Team\": \"French (https://app.transifex.com/nextcloud/teams/64236/fr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"fr\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nBenoit Pruneau, 2024\\nJEEEEEEEEEEEEEEEEEEEEEED, 2024\\nJérôme HERBINET, 2024\\nacazenave, 2024\\nLisa Cintosh, 2025\\nLdm Public , 2025\\nCaro Leviia, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Caro Leviia, 2025\\nLanguage-Team: French (https://app.transifex.com/nextcloud/teams/64236/fr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: fr\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" est un nom de fichier ou de dossier interdit.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" est un type de fichier interdit.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" n'est pas autorisé dans le nom d'un fichier ou d'un dossier.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fichier en conflit\", \"{count} fichiers en conflit\", \"{count} fichiers en conflit\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fichier en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\", \"{count} fichiers en conflit dans {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde restante\", \"{seconds} secondes restantes\", \"{seconds} secondes restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restant\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"quelques secondes restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblage\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuler toute l'opération\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annuler les téléversements\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Créer un nouveau\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimation du temps restant\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Version existante\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Échec de l'assemblage des morceaux\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Échec de téléversement du fichier\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Les noms des fichiers ne doivent pas terminer par \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous sélectionnez les deux versions, un numéro sera ajouté au nom du fichier entrant.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nom de fichier invalide\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de la dernière modification inconnue\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nouveau nom de fichier\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"en pause\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Aperçu de l'image\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renommer\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorer\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} fichier ignoré\", \"{count} fichiers ignorés\", \"{count} fichiers ignorés\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Taille inconnue\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Téléverser\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Téléverser des fichiers\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Téléverser des dossiers\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Téléverser depuis l'appareil\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Le téléversement a été annulé\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Le téléversement a été ignoré\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Le téléversement de \"{folder}\" a été ignoré'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progression du téléversement\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, tous les fichiers en conflit qu'il contient seront également écrasés.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsqu'un dossier entrant est sélectionné, le contenu est ajouté dans le dossier existant et une résolution récursive des conflits est effectuée.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Vous pouvez soit renommer le fichier, soit ignorer le fichier, soit annuler toute l'opération.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Vous devez sélectionner au moins une version de chaque fichier pour continuer.\"] } } } } }, { \"locale\": \"ga\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Aindriú Mac Giolla Eoin, 2025\", \"Language-Team\": \"Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ga\", \"Plural-Forms\": \"nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nAindriú Mac Giolla Eoin, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Aindriú Mac Giolla Eoin, 2025\\nLanguage-Team: Irish (https://app.transifex.com/nextcloud/teams/64236/ga/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ga\\nPlural-Forms: nplurals=5; plural=(n==1 ? 0 : n==2 ? 1 : n<7 ? 2 : n<11 ? 3 : 4);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Is ainm toirmiscthe comhaid nó fillteáin é \"{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Is cineál comhaid toirmiscthe é \"{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`Ní cheadaítear \"{segment}\" taobh istigh d'ainm comhaid nó fillteáin.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} coimhlint comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\", \"{count} coimhlintí comhaid\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} coimhlint comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\", \"{count} coimhlintí comhaid i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\", \"{seconds} soicind fágtha\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} fágtha\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"cúpla soicind fágtha\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ag cur le chéile\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht iomlán\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cealaigh uaslódálacha\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Leanúint ar aghaidh\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Cruthaigh nua\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ag déanamh meastachán ar an am atá fágtha\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan láithreach \"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Theip ar na smután a chur le chéile le chéile\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Theip ar uaslódáil an chomhaid\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Níor cheart go gcríochnaíonn comhaid chomhad le \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir leis an ainm a thagann isteach.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ainm comhaid neamhbhailí\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta modhnaithe is déanaí anaithnid\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ainm comhaid nua\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"sos\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Íomhá réamhamharc\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Athainmnigh\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh gach ticbhosca\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh gach comhad atá ann cheana féin\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Scipeáil\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Léim an comhad {count}\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\", \"Léim thar {count} comhad\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Seachain an comhad seo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Méid anaithnid\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uaslódáil\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Uaslódáil comhaid\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Uaslódáil fillteáin\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Íosluchtaigh ó ghléas\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Cuireadh an t-uaslódáil ar ceal\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Léiríodh an uaslódáil\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Léiríodh an uaslódáil \"{folder}\".'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uaslódáil dul chun cinn\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhad contrártha laistigh de a fhorscríobh freisin.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach san fhillteán atá ann cheana agus déantar réiteach coinbhleachta athchúrsach.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Is féidir leat an comhad a athainmniú, scipeáil an comhad seo nó an oibríocht iomlán a chealú.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú chun leanúint ar aghaidh.\"] } } } } }, { \"locale\": \"gd\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gd\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Gaelic, Scottish (https://www.transifex.com/nextcloud/teams/64236/gd/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gd\\nPlural-Forms: nplurals=4; plural=(n==1 || n==11) ? 0 : (n==2 || n==12) ? 1 : (n > 2 && n < 20) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"gl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Miguel Anxo Bouzada , 2025\", \"Language-Team\": \"Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"gl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMiguel Anxo Bouzada , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Miguel Anxo Bouzada , 2025\\nLanguage-Team: Galician (https://app.transifex.com/nextcloud/teams/64236/gl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: gl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» é un nome vedado para un ficheiro ou cartafol.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» é un tipo de ficheiro vedado.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» non está permitido dentro dun nome de ficheiro ou cartafol.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} conflito de ficheiros\", \"{count} conflitos de ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiros en {dirname}\", \"{count} conflitos de ficheiros en {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"falta {seconds} segundo\", \"faltan {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"falta {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltan uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ensamblando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancela toda a operación\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envíos\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crear un novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calculando canto tempo falta\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Produciuse un fallo ao ensamblar os anacos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Produciuse un fallo ao enviar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Os nomes de ficheiros non deben rematar con «{segment}».\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"O nome de ficheiro non é válido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nova\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"detido\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Vista previa da imaxe\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Marcar todas as caixas de selección\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Omitir\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Omitir {count} ficheiro\", \"Omitir {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamaño descoñecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Enviar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Enviar cartafoles\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Enviar dende o dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O envío foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O envío foi omitido\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"O envío de «{folder}» foi omitido\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progreso do envío\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, tamén se sobrescribirán os ficheiros en conflito dentro del.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e lévase a cabo unha resolución recursiva de conflitos.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode cambiar o nome do ficheiro, omitir este ficheiro ou cancelar toda a operación.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Debe seleccionar polo menos unha versión de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"he\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"he\", \"Plural-Forms\": \"nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hebrew (https://www.transifex.com/nextcloud/teams/64236/he/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: he\\nPlural-Forms: nplurals=4; plural=(n == 1 && n % 1 == 0) ? 0 : (n == 2 && n % 1 == 0) ? 1: (n % 10 == 0 && n % 1 == 0 && n > 10) ? 2 : 3;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hi_IN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hi_IN\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Hindi (India) (https://www.transifex.com/nextcloud/teams/64236/hi_IN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hi_IN\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hr\", \"Plural-Forms\": \"nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Croatian (https://www.transifex.com/nextcloud/teams/64236/hr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hr\\nPlural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hsb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hsb\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Upper Sorbian (https://www.transifex.com/nextcloud/teams/64236/hsb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hsb\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"hu\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Gyuris Gellért , 2024\", \"Language-Team\": \"Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hu_HU\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nGyuris Gellért , 2024\\n\" }, \"msgstr\": [\"Last-Translator: Gyuris Gellért , 2024\\nLanguage-Team: Hungarian (Hungary) (https://app.transifex.com/nextcloud/teams/64236/hu_HU/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hu_HU\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['Tiltott fájl- vagy mappanév: „{segment}\".'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['Tiltott fájltípus: „{segment}\".'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Nem megengedett egy fájl- vagy mappanévben: „{segment}\".'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}fájlt érintő konfliktus\", \"{count} fájlt érintő konfliktus\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fájlt érintő konfliktus a mappában: {dirname}\", \"{count}fájlt érintő konfliktus a mappában: {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{} másodperc van hátra\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} van hátra\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"pár másodperc van hátra\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Teljes művelet megszakítása\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Feltöltések megszakítása\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tovább\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Új létrehozása\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"hátralévő idő becslése\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Jelenlegi változat\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Fájlnevek nem végződhetnek erre: „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ha mindkét verziót kiválasztja, a bejövő fájl neve egy számmal egészül ki.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Érvénytelen fájlnév\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Utolsó módosítás dátuma ismeretlen\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Új fájlnév\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Új verzió\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"szüneteltetve\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Kép előnézete\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Átnevezés\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Minden jelölőnégyzet kijelölése\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Minden jelenlegi fájl kijelölése\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Minden új fájl kijelölése\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Kihagyás\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ezen fájl kihagyása\", \"{count}fájl kihagyása\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ismeretlen méret\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Feltöltés\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fájlok feltöltése\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappák feltöltése\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Feltöltés eszközről\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Feltöltés meg lett szakítva\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Feltöltés át lett ugorva\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"„{folder}” feltöltése át lett ugorva\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Feltöltési folyamat\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a mappában lévő ütköző fájlok is felülírásra kerülnek.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ha egy bejövő mappa van kiválasztva, a tartalom a meglévő mappába íródik és rekurzív konfliktusfeloldás történik.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Mely fájlokat kívánja megtartani?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Átnevezheti a fájlt, kihagyhatja ezt a fájlt, vagy törölheti az egész műveletet.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"A folytatáshoz minden fájlból legalább egy verziót ki kell választani.\"] } } } } }, { \"locale\": \"hy\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"hy\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Armenian (https://www.transifex.com/nextcloud/teams/64236/hy/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: hy\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ia\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ia\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Interlingua (https://www.transifex.com/nextcloud/teams/64236/ia/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ia\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"id\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Linerly , 2023\", \"Language-Team\": \"Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"id\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJohn Molakvoæ , 2023\\nEmpty Slot Filler, 2023\\nLinerly , 2023\\n\" }, \"msgstr\": [\"Last-Translator: Linerly , 2023\\nLanguage-Team: Indonesian (https://app.transifex.com/nextcloud/teams/64236/id/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: id\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} berkas berkonflik\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} berkas berkonflik dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} detik tersisa\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tersisa\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"tinggal sebentar lagi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Batalkan unggahan\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"memperkirakan waktu yang tersisa\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, nama berkas yang disalin akan ditambahi angka.\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal perubahan terakhir tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"dijeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Gambar pratinjau\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua berkas yang ada\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua berkas baru\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Lewati {count} berkas\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukuran tidak diketahui\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"Unggahan dibatalkan\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Unggah berkas\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Berkas mana yang Anda ingin tetap simpan?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda harus memilih setidaknya satu versi dari masing-masing berkas untuk melanjutkan.\"] } } } } }, { \"locale\": \"ig\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ig\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Igbo (https://www.transifex.com/nextcloud/teams/64236/ig/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ig\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"is\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Sveinn í Felli , 2025\", \"Language-Team\": \"Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"is\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nSveinn í Felli , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Sveinn í Felli , 2025\\nLanguage-Team: Icelandic (https://app.transifex.com/nextcloud/teams/64236/is/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: is\\nPlural-Forms: nplurals=2; plural=(n % 10 != 1 || n % 100 == 11);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er bannað sem heiti á skrá eða möppu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er bönnuð skráartegund.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ekki leyfilegt innan í heiti á skrá eða möppu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} árekstur skráa\", \"{count} árekstrar skráa\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} árekstur skráa í {dirname}\", \"{count} árekstrar skráa í {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekúnda eftir\", \"{seconds} sekúndur eftir\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} eftir\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"nokkrar sekúndur eftir\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"set saman\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Hætta við\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Hætta við alla aðgerðina\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Hætta við innsendingar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Halda áfram\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Búa til nýtt\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"áætla tíma sem eftir er\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Fyrirliggjandi útgáfa\"] }, \"Failed assembling the chunks together\": { \"msgid\": \"Failed assembling the chunks together\", \"msgstr\": [\"Mistókst að setja saman bútana\"] }, \"Failed uploading the file\": { \"msgid\": \"Failed uploading the file\", \"msgstr\": [\"Mistókst að senda inn skrána\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Skráaheiti mega ekki enda á \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ef þú velur báðar útgáfur, þá mun verða bætt tölustaf aftan við heiti innkomandi skrárinnar.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ógilt skráarheiti\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Síðasta breytingadagsetning er óþekkt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nýtt skráarheiti\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ný útgáfa\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"í bið\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forskoðun myndar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Endurnefna\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velja gátreiti\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velja allar fyrirliggjandi skrár\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velja allar nýjar skrár\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Sleppa\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sleppa þessari skrá\", \"Sleppa {count} skrám\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Óþekkt stærð\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Senda inn\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Senda inn skrár\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Senda inn möppur\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Senda inn frá tæki\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Hætt hefur verið við innsendingu\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Innsendingu hefur verið sleppt\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Innsendingu á \"{folder}\" hefur verið sleppt'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Framvinda innsendingar\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður einnig skrifað yfir allar skrár í henni sem valda árekstrum.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Þegar valin er mappa fyrir skrár sem berast, verður efnið skrifað inn í fyrirliggjandi möppu og farið í að leysa úr árekstrum.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvaða skrám vilt þú vilt halda eftir?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Þú getur annaðhvort endurnefnt skrána, sleppt þessari skrá eða hætt við alla þessa aðgerð.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Þú verður að velja að minnsta kosti eina útgáfu af hverri skrá til að halda áfram.\"] } } } } }, { \"locale\": \"it\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roberto Resoli, 2025\", \"Language-Team\": \"Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"it\", \"Plural-Forms\": \"nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nFrancesco Sercia, 2024\\nalbanobattistella , 2024\\nLorenzo Taiocchi, 2025\\nesseti kappa, 2025\\nRoberto Resoli, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Roberto Resoli, 2025\\nLanguage-Team: Italian (https://app.transifex.com/nextcloud/teams/64236/it/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: it\\nPlural-Forms: nplurals=3; plural=n == 1 ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" è un nome di file o cartella proibito.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"è un tipo di file proibito.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [`\"{segment}\" non è consentito all'interno di un nome di file o cartella.`] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file in conflitto\", \"{count} file in conflitto\", \"{count} file in conflitto\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\", \"{count} file in conflitto in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secondo rimanente \", \"{seconds} secondi rimanenti \", \"{seconds} secondi rimanenti \"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} rimanente\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alcuni secondi rimanenti\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"assemblaggio\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Annulla i caricamenti\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Crea nuovo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"calcolo il tempo rimanente\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Impossibile unire i pezzi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Impossibile caricare il file\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['I nomi dei file non devono terminare con \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, nel nome del file copiato verrà aggiunto un numero \"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome file non valido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ultima modifica sconosciuta\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nuovo nome file\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausa\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Anteprima immagine\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Rinomina\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Salta\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Sata {count} file\", \"Salta {count} file\", \"Salta {count} file\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Dimensione sconosciuta\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Caricamento\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Carica i file\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carica cartelle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carica dal dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Caricamento annullato\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Il caricamento è stato saltato\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Il caricamento di \"{folder}\" è stato saltato'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso del caricamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno verranno sovrascritti.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi mantenere?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"È possibile rinominare il file, ignorarlo o annullare l'intera operazione.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Devi selezionare almeno una versione di ogni file per continuare\"] } } } } }, { \"locale\": \"ja\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"kojima.imamura, 2025\", \"Language-Team\": \"Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ja_JP\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nTakafumi AKAMATSU, 2024\\ndevi, 2024\\n貴宝, 2025\\nkshimohata, 2025\\nkojima.imamura, 2025\\n\" }, \"msgstr\": [\"Last-Translator: kojima.imamura, 2025\\nLanguage-Team: Japanese (Japan) (https://app.transifex.com/nextcloud/teams/64236/ja_JP/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ja_JP\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" は禁止されているファイルまたはフォルダ名です。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" は禁止されているファイルタイプです。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ファイルまたはフォルダ名に \"{segment}\" を含めることはできません。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} ファイル数の競合\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} で {count} 個のファイルが競合しています\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"残り{seconds}\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"残り {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"残り数秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"処理中\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセルする\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"アップロードをキャンセル\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"続ける\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新規作成\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"概算残り時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既存バージョン\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"チャンクの組み立てに失敗しました\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ファイルのアップロードに失敗しました\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ファイル名の末尾に \"{segment}\" を付けることはできません。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイルの名前に数字が追加されます。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無効なファイル名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新しいファイル名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新しいバージョン\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"一時停止中\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"プレビュー画像\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"名前を変更\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべて選択\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"すべての既存ファイルを選択\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"スキップ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} 個のファイルをスキップする\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップする\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"サイズ不明\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"アップロード\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ファイルをアップロード\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"フォルダのアップロード\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"デバイスからのアップロード\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"アップロードはキャンセルされました\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"アップロードがスキップされました\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" のアップロードがスキップされました'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"アップロード進行状況\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダが選択されると、その中の競合するファイルもすべて上書きされます。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダが選択されると、その内容は既存のフォルダに書き込まれ、再帰的な競合解決が行われます。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを保持しますか?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ファイル名を変更するか、このファイルをスキップするか、操作全体をキャンセルすることができます。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルの少なくとも1つのバージョンを選択する必要があります。\"] } } } } }, { \"locale\": \"ka\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (https://www.transifex.com/nextcloud/teams/64236/ka/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ka_GE\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ka_GE\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Georgian (Georgia) (https://www.transifex.com/nextcloud/teams/64236/ka_GE/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ka_GE\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kab\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"ZiriSut, 2023\", \"Language-Team\": \"Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kab\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nZiriSut, 2023\\n\" }, \"msgstr\": [\"Last-Translator: ZiriSut, 2023\\nLanguage-Team: Kabyle (https://app.transifex.com/nextcloud/teams/64236/kab/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kab\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} tesdatin i d-yeqqimen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} i d-yeqqimen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"qqiment-d kra n tesdatin kan\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Rnu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Sefsex asali\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"asizel n wakud i d-yeqqimen\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"yeḥbes\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Sali-d ifuyla\"] } } } } }, { \"locale\": \"kk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kk\", \"Plural-Forms\": \"nplurals=2; plural=(n!=1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kazakh (https://www.transifex.com/nextcloud/teams/64236/kk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kk\\nPlural-Forms: nplurals=2; plural=(n!=1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"km\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"km\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Khmer (https://www.transifex.com/nextcloud/teams/64236/km/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: km\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"kn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"kn\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Kannada (https://www.transifex.com/nextcloud/teams/64236/kn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: kn\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ko\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"보헤민, 2025\", \"Language-Team\": \"Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ko\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nshin2012 , 2025\\n이상오, 2025\\n보헤민, 2025\\n\" }, \"msgstr\": [\"Last-Translator: 보헤민, 2025\\nLanguage-Team: Korean (https://app.transifex.com/nextcloud/teams/64236/ko/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ko\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 및 폴더 이름입니다.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\"은(는) 금지된 파일 형식입니다.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['파일이나 폴더 이름에 \"{segment}\"을(를) 사용할 수 없습니다.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}개의 파일이 충돌함\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname}에서 {count}개의 파일이 충돌함\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} 초 남음\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} 남음\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"곧 완료\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"취합 중\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업을 취소\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"업로드 취소\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"확인\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"새로 만들기\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"남은 시간 계산\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"현재 버전\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"조각을 취합하는 데 실패\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"파일을 업로드하는 데 실패\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['파일 이름은 \"{segment}\"(으)로 끝나야 합니다.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"두 파일을 모두 선택하면, 들어오는 파일의 이름에 번호가 추가됩니다.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"잘못된 파일 이름\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정일 알 수 없음\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"새 파일 이름\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"새 버전\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"일시정지됨\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"미리보기 이미지\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"이름 바꾸기\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"기존 파일을 모두 선택\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"새로운 파일을 모두 선택\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"건너뛰기\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count}개 파일 건너뛰기\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뛰기\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"크기를 알 수 없음\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"업로드\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"파일 업로드\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"폴더 업로드\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"장치에서 업로드\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"업로드가 취소되었습니다.\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"업로드를 건너뛰었습니다.\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 업로드를 건너뛰었습니다.'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"업로드 진행도\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택했다면, 충돌하는 내부 파일들은 덮어쓰기 됩니다.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더가 선택되면, 그 안의 콘텐츠가 기존 폴더에 기록되고 재귀적 충돌 해결이 수행됩니다.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보존하시겠습니까?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"파일 이름을 바꾸거나, 이 파일을 건너뛰거나 모든 작업을 취소할 수 있습니다.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속하기 위해서는 한 파일에 최소 하나의 버전을 선택해야 합니다.\"] } } } } }, { \"locale\": \"la\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"la\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Latin (https://www.transifex.com/nextcloud/teams/64236/la/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: la\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lb\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Luxembourgish (https://www.transifex.com/nextcloud/teams/64236/lb/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lb\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lo\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"bone NI, 2025\", \"Language-Team\": \"Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lo\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nbone NI, 2025\\n\" }, \"msgstr\": [\"Last-Translator: bone NI, 2025\\nLanguage-Team: Lao (https://app.transifex.com/nextcloud/teams/64236/lo/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lo\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ແມ່ນປະເພດໄຟລ໌ທີ່ບໍ່ອະນຸຍາດ.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{segment}\" ຢູ່​ໃນຊື່ໄຟລ໌ ຫຼື ໂຟລເດີ.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຊ້ຳກັນ {count} ລາຍການ ໃນ {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"ເຫຼືອເວລາ {seconds} ວິນາທີ\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"ເຫຼືອເວລາ {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"ເຫຼືອເວລາອີກບໍ່ດົນ\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"ກຳລັງຮວບຮວມ\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ຍົກເລີກການອັບໂຫຼດ\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"ສ້າງໃໝ່\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ກຳລັງຄາດຄະເນເວລາທີ່ເຫຼືອ\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"ສະບັບທີ່ມີຢູ່ແລ້ວ\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"ການຮວບຮວມສ່ວນຕ່າງໆເຂົ້າກັນບໍ່ສຳເລັດ\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌ບໍ່ສຳເລັດ\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['ຊື່ໄຟລ໌ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງສະບັບ, ໄຟລ໌ທີ່ເຂົ້າມາໃໝ່ຈະຖືກເພີ່ມຕົວເລກໃສ່ທ້າຍຊື່.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ບໍ່ຖືກຕ້ອງ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຊາບວັນທີແກ້ໄຂຫຼ້າສຸດ\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"ຊື່ໄຟລ໌ໃໝ່\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"ສະບັບໃໝ່\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"ຢຸດຊົ່ວຄາວ\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"ເບິ່ງຕົວຢ່າງຮູບ\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"ປ່ຽນຊື່\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກທຸກຊ່ອງໝາຍຕິກ\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ແລ້ວທັງໝົດ\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"ຂ້າມ\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"ຂ້າມ {count} ໄຟລ໌\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"ບໍ່ຊາບຂະໜາດ\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"ອັບໂຫຼດ\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"ອັບໂຫຼດໄຟລ໌\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"ອັບໂຫຼດໂຟລເດີ\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"ອັບໂຫຼດຈາກອຸປະກອນ\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຍົກເລີກແລ້ວ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"ການອັບໂຫຼດໄດ້ຖືກຂ້າມໄປແລ້ວ\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['ການອັບໂຫຼດ \"{folder}\" ໄດ້ຖືກຂ້າມໄປແລ້ວ'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"ຄວາມຄືບໜ້າການອັບໂຫຼດ\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ໄຟລ໌ໃດໆທີ່ຊ້ຳກັນຢູ່ພາຍໃນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟລເດີທີ່ເຂົ້າມາໃໝ່, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟລເດີທີ່ມີຢູ່ແລ້ວ ແລະ ຈະມີການແກ້ໄຂໄຟລ໌ທີ່ຊ້ຳກັນແບບຕໍ່ເນື່ອງໃນໂຟລເດີຍ່ອຍ.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"ທ່ານສາມາດປ່ຽນຊື່ໄຟລ໌, ຂ້າມໄຟລ໌ນີ້ ຫຼື ຍົກເລີກການດຳເນີນການທັງໝົດ.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງສະບັບຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] } } } } }, { \"locale\": \"lt_LT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lt_LT\", \"Plural-Forms\": \"nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Lithuanian (Lithuania) (https://www.transifex.com/nextcloud/teams/64236/lt_LT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lt_LT\\nPlural-Forms: nplurals=4; plural=(n % 10 == 1 && (n % 100 > 19 || n % 100 < 11) ? 0 : (n % 10 >= 2 && n % 10 <=9) && (n % 100 > 19 || n % 100 < 11) ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"lv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Edgars Andersons, 2025\", \"Language-Team\": \"Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"lv\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPapuass , 2024\\nArmīns Jeltajevs , 2024\\nEdgars Andersons, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Edgars Andersons, 2025\\nLanguage-Team: Latvian (https://app.transifex.com/nextcloud/teams/64236/lv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: lv\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes vai mapes nosaukums.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" ir aizliegts datnes veids.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ir nav ļauts datnes vai mapes nosaukumā.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} nesaderīgu datņu\", \"{count} nesaderīga datne\", \"{count} nesaderīgas datnes\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} nesaderīgu datņu {dirname}\", \"{count} nesaderīga datne {dirname}\", \"{count} nesaderīgas datnes {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Atlikušas {seconds} sekundes\", \"Atlikusi {seconds} sekunde\", \"Atlikušas {seconds} sekundes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"atlicis {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"atlikušas dažas sekundes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"sakopo\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Atcelt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Atcelt visu darbību\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Atcelt augšupielādes\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Turpināt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Izveidot jaunu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"paredzamais atlikušais laiks\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Esošā versija\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Neizdevās apvienot gabalus\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Neizdevās augšupielādēt datni\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Datnes nosaukumi nedrīkst beigties ar \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ja atlasa abas versijas, ienākošās datnes nosaukumam tiks pievienots skaitlis.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nederīgs datnes nosaukums\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Pēdējais izmainīšanas datums nav zināms\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Jauns datnes nosaukums\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Jauna versija\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"apturēta\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Priekšskatīt attēlu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Pārdēvēt\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Atlasīt visas izvēles rūtiņas\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Atlasīt visas esošās datnes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Atlasīt visas jaunās datnes\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Izlaist\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Izlaist {count} datņu\", \"Izlaist {count} datni\", \"Izlaist {count} datnes\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Izlaist šo datni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nezināms izmērs\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Augšupielādēt\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Augšupielādēt datnes\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Augšupielādēt mapes\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Augšupielādēt no ierīces\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Augšupielāde tika atcelta\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Augšupielāde tika izlaista\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" augšupielāde tika izlaista'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Augšupielādes virzība\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, tiks pārrakstītas arī jebkuras tajā esošās nesaderīgās datnes.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kad ir atlasīta ienākošā mape, saturs tiks rakstīts esošajā mapē, un tiks veikta rekursīva nesaderību novēršana.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Kuras datnes paturēt?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datni var vai nu pārdēvēt, vai izlaist vai atcelt visu darbību.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ir nepieciešams atlasīt vismaz vienu katras datnes versiju, lai turpinātu.\"] } } } } }, { \"locale\": \"mk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Сашко Тодоров , 2025\", \"Language-Team\": \"Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mk\", \"Plural-Forms\": \"nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nСашко Тодоров , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Сашко Тодоров , 2025\\nLanguage-Team: Macedonian (https://app.transifex.com/nextcloud/teams/64236/mk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mk\\nPlural-Forms: nplurals=2; plural=(n % 10 == 1 && n % 100 != 11) ? 0 : 1;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" е забрането име на датотека или име на папка.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" е забранет вид на датотека.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" не е дозволено во името датотека или папка.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфликт со датотека\", \"{count} конфликти со датотеки\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфликт со датотека во {dirname}\", \"{count} конфликти на датотеки во {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"уште {seconds} секунда\", \"уште {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"преостанува {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"уште неколку секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"склопување\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Откажи ја целата операција\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Прекини прикачување\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај нова\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"приближно преостанато време\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постоечка верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Неуспешно составување на парчињата заедно\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Неуспешно прикачување на датотека\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Имињата на датотеките не смеат да завршуваат со \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги изберете двете верзии, на новата датотека ќе ѝ биде додаден број на името.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Невалидно име на датотека\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Непознат датумот на последната измена\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име на датотека\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Преглед на слика\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Преименувај\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Означи ги сите полиња\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Избери ги сите постоечки датотеки\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Избери ги сите нови датотеки\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескокни\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескокни {count} датотека\", \"Прескокни {count} датотеки\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната големина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Прикачи\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Прикачување датотеки\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Прикачи папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Прикачи од уред\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Прикачувањето е откажано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Прикачувањето е прескокнато\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Прикачувањето на \"{folder}\" е прескокнато'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогрес на прикачување\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, сите конфликтни датотеки во неа исто така ќе бидат пребришани.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога ќе се избере дојдовна папка, содржината се запишува во постоечката папка и се извршува рекурзивно решавање на конфликтот.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакате да ги зачвате?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете да ја преименувате датотеката, да ја прескокнете датотека или да ја откажете целата операција.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да изберете барем една верзија од секоја датотека за да продолжите.\"] } } } } }, { \"locale\": \"mn\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"BATKHUYAG Ganbold, 2023\", \"Language-Team\": \"Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mn\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nBATKHUYAG Ganbold, 2023\\n\" }, \"msgstr\": [\"Last-Translator: BATKHUYAG Ganbold, 2023\\nLanguage-Team: Mongolian (https://app.transifex.com/nextcloud/teams/64236/mn/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mn\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунд үлдсэн\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} үлдсэн\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"хэдхэн секунд үлдсэн\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Нэмэх\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Илгээлтийг цуцлах\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Үлдсэн хугацааг тооцоолж байна\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"түр зогсоосон\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Файл илгээх\"] } } } } }, { \"locale\": \"mr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"mr\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Marathi (https://www.transifex.com/nextcloud/teams/64236/mr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: mr\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ms_MY\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DT Navy, 2024\", \"Language-Team\": \"Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ms_MY\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nDT Navy, 2024\\n\" }, \"msgstr\": [\"Last-Translator: DT Navy, 2024\\nLanguage-Team: Malay (Malaysia) (https://app.transifex.com/nextcloud/teams/64236/ms_MY/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ms_MY\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" adalah fail dan nama folder yang dilarang'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" adalah jenis fail yang dilarang'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" adalah tidak dibenarkan dalam nama fail atau folder'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} files bertindih\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} fail bertindih dalam {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saat tinggal\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} tinggal\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"beberapa saat lagi\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"batal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batal keseluruhan operasi\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"batal muat naik\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"teruskan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Buat baharu\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"jangkaan masa tinggal\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"versi sedia ada\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nama fail tidak boleh berakhir dengan \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika dua versi dipilih, fail yang masuk akan ditambah bilangan pada namanya.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nama fail tidak sah\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tarikh terakhir diubah suai tidak diketahui\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nama fail baharu\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Versi baharu\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Jeda\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pratonton gambar\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Menamakan semula\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak pilihan\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua fail yang wujud\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"pilih semua fail baharu\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Langkau\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Langkau fail {count}\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Saiz tidak diketahui\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Muat naik\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Muat naik fail\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Muat naik folder\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Muat naik dari peranti\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Muat naik telah dibatalkan\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Muat naik telah dilangkau\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Muat naik \"{folder}\" telah dilangkau'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Kemajuan muat naik\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Apabila folder masuk dipilih, sebarang fail bertindih akan ditulis semula\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Apabila folder masuk dipilih, kandungan ditulis ke dalam folder sedia ada dan penyelesaian konflik rekursif dilakukan.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Fail yang mana ingin disimpan?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"And boleh menamakan semula fail, langkau fail tersebut atau membatalkan keseluruhan operasi\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih sekurangnya satu versi setiap fail untuk teruskan\"] } } } } }, { \"locale\": \"my\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"my\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Burmese (https://www.transifex.com/nextcloud/teams/64236/my/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: my\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nb\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Roger Knutsen, 2024\", \"Language-Team\": \"Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nb_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nRoger Knutsen, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Roger Knutsen, 2024\\nLanguage-Team: Norwegian Bokmål (Norway) (https://app.transifex.com/nextcloud/teams/64236/nb_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nb_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" er et forbudt fil- eller mappenavn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" er en forbudt filtype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" er ikke tillatt i et fil- eller mappenavn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} file conflict\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} file conflict in {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder igjen\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} igjen\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"noen få sekunder igjen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hele operasjonen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt opplastninger\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsett\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Opprett ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Estimerer tid igjen\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Gjeldende versjon\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnavn må ikke slutte med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du velger begge versjonene, vil den innkommende filen ha et nummer lagt til navnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ugyldig filnavn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Siste gang redigert ukjent\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnavn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny versjon\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pauset\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Forhåndsvis bilde\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Omdøp\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Velg alle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Velg alle eksisterende filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Velg alle nye filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hopp over\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Skip this file\", \"Hopp over {count} filer\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Ukjent størrelse\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Last opp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Last opp mapper\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Last opp fra enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Opplastingen er kansellert\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Opplastingen er hoppet over\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Opplasting av \"{folder}\" er hoppet over'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Fremdrift, opplasting\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en innkommende mappe velges, blir eventuelle motstridende filer i den også overskrevet.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en innkommende mappe velges, skrives innholdet inn i den eksisterende mappen, og en rekursiv konfliktløsning utføres.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du beholde?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan enten gi nytt navn til filen, hoppe over denne filen eller avbryte hele operasjonen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du må velge minst en versjon av hver fil for å fortsette.\"] } } } } }, { \"locale\": \"ne\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ne\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Nepali (https://www.transifex.com/nextcloud/teams/64236/ne/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ne\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"nl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Stephan Paternotte , 2025\", \"Language-Team\": \"Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nl\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJoris deLeeuw, 2025\\nStephan Paternotte , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Stephan Paternotte , 2025\\nLanguage-Team: Dutch (https://app.transifex.com/nextcloud/teams/64236/nl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nl\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" is een verboden bestands- of mapnaam.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" is een verboden bestandstype.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" is niet toegestaan in een bestand of mapnaam.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} bestandsconflict\", \"{count} bestanden conflicteren\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} bestandsconflict in {dirname}\", \"{count} bestandenconflicten in {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} seconde resterend\", \"{seconds} seconden resterend\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} resterend\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Nog een paar seconden over\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"samenstellen\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"De hele bewerking annuleren\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Uploaden annuleren\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Nieuw aanmaken\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"resterende tijd schatten\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Kon de stukken niet samenvoegen\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Het uploaden van het bestand is mislukt\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Bestandsnamen mogen niet eindigen met \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als je beide versies selecteert, krijgt het binnenkomende bestand een nummer toegevoegd aan de naam.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ongeldige bestandsnaam\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatst gewijzigde datum onbekend\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nieuwe bestandsnaam\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"gepauzeerd\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Voorbeeldweergave\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Hernoemen\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle opties selecteren\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle bestanden selecteren\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle nieuwe bestanden selecteren\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Overslaan\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} bestand overslaan\", \"{count} bestanden overslaan\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Dit bestand overslaan\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Onbekende grootte\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Uploaden\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Upload bestanden\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Mappen uploaden\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Uploaden vanaf apparaat\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Upload is geanulleerd\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Upload is overgeslagen\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Upload van \"{folder}\" is overgeslagen'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uploadvoortgang\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, worden alle conflicterende bestanden daarin ook overschreven.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Wanneer een inkomende map is geselecteerd, wordt de inhoud in de bestaande map geschreven en wordt er een recursieve conflictoplossing uitgevoerd.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wil je behouden?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Je kunt het bestand ofwel hernoemen, dit bestand overslaan of de hele bewerking annuleren.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Je moet minstens één versie van elk bestand selecteren om door te gaan.\"] } } } } }, { \"locale\": \"nn_NO\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"nn_NO\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Norwegian Nynorsk (Norway) (https://www.transifex.com/nextcloud/teams/64236/nn_NO/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: nn_NO\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"oc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"oc\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Occitan (post 1500) (https://www.transifex.com/nextcloud/teams/64236/oc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: oc\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Valdnet, 2025\", \"Language-Team\": \"Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pl\", \"Plural-Forms\": \"nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nPiotr Strebski , 2024\\nValdnet, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Valdnet, 2025\\nLanguage-Team: Polish (https://app.transifex.com/nextcloud/teams/64236/pl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pl\\nPlural-Forms: nplurals=4; plural=(n==1 ? 0 : (n%10>=2 && n%10<=4) && (n%100<12 || n%100>14) ? 1 : n!=1 && (n%10>=0 && n%10<=1) || (n%10>=5 && n%10<=9) || (n%100>=12 && n%100<=14) ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" to zabroniona nazwa pliku lub katalogu.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" jest zabronionym typem pliku.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Znak \"{segment}\" nie jest dozwolony w nazwie pliku lub katalogu.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"konflikt 1 pliku\", \"{count} konfliktów plików\", \"{count} konfliktów plików\", \"{count} konfliktów plików\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} konfliktowy plik w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\", \"{count} konfliktowych plików w {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"Pozostało {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Pozostało {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"Pozostało kilka sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anuluj wysyłanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Utwórz nowe\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"Szacowanie pozostałego czasu\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Nazwy plików nie mogą kończyć się na \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy pliku przychodzącego zostanie dodany numer.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nieprawidłowa nazwa pliku\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nieznana data ostatniej modyfikacji\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nowa nazwa pliku\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"Wstrzymane\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Podgląd obrazu\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Zmiana nazwy\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pomiń\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pomiń 1 plik\", \"Pomiń {count} plików\", \"Pomiń {count} plików\", \"Pomiń {count} plików\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Nieznany rozmiar\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Wyślij\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Wyślij pliki\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Wyślij katalogi\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Wyślij z urządzenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Wysyłanie zostało anulowane\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Wysyłanie zostało pominięte\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Wysyłanie \"{folder}\" zostało pominięte'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Postęp wysyłania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego wszelkie znajdujące się w nim pliki powodujące konflikt również zostaną nadpisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu katalogu przychodzącego zawartość jest zapisywana w istniejącym katalogu i przeprowadzane jest rekursywne rozwiązywanie konfliktów.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Możesz zmienić nazwę pliku, pominąć ten plik lub anulować całą operację.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] } } } } }, { \"locale\": \"ps\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ps\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Pashto (https://www.transifex.com/nextcloud/teams/64236/ps/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ps\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"pt_BR\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"F Bausch, 2025\", \"Language-Team\": \"Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_BR\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nLeonardo Colman Lopes , 2024\\nRodrigo Sottomaior Macedo , 2024\\nF Bausch, 2025\\n\" }, \"msgstr\": [\"Last-Translator: F Bausch, 2025\\nLanguage-Team: Portuguese (Brazil) (https://app.transifex.com/nextcloud/teams/64236/pt_BR/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_BR\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de arquivo proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido dentro de um nome de arquivo ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} arquivos em conflito\", \"{count} arquivos em conflito\", \"{count} arquivos em conflito\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\", \"{count} conflitos de arquivo em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} segundo restante\", \"{seconds} segundos restantes\", \"{seconds} segundos restantes\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} restante\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"alguns segundos restantes\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montando\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar uploads\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimando tempo restante\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao montar os pedaços juntos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao fazer o upload do arquivo\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes dos arquivos não devem terminar com \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, o arquivo recebido terá um número adicionado ao seu nome.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de arquivo inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de arquivo\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de seleção\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os arquivos existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os novos arquivos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Pular\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Pular {count} arquivo\", \"Pular {count} de arquivos\", \"Pular {count} arquivos\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pular este arquivo\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Fazer upload\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fazer upload de arquivos\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Fazer upload de pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Fazer upload do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O upload foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O upload foi pulado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O upload de \"{folder}\" foi pulado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso de upload\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, todos os arquivos conflitantes dentro dela também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta recebida é selecionada, o conteúdo é gravado na pasta existente e uma resolução de conflito recursiva é executada.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Você pode renomear o arquivo, pular este arquivo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] } } } } }, { \"locale\": \"pt_PT\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"artur25 , 2025\", \"Language-Team\": \"Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"pt_PT\", \"Plural-Forms\": \"nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nguilherme ferreira, 2025\\nartur25 , 2025\\n\" }, \"msgstr\": [\"Last-Translator: artur25 , 2025\\nLanguage-Team: Portuguese (Portugal) (https://app.transifex.com/nextcloud/teams/64236/pt_PT/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: pt_PT\\nPlural-Forms: nplurals=3; plural=(n == 0 || n == 1) ? 0 : n != 0 && n % 1000000 == 0 ? 1 : 2;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" é um Nome de arquivo ou pasta proibido.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" é um tipo de ficheiro proibido.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" não é permitido num nome de ficheiro ou pasta.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"Conflito em {count} ficheiro\", \"Conflito em {count} ficheiros\", \"Conflito em {count} ficheiros\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} conflito de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\", \"{count} conflitos de ficheiro em {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"Falta {seconds} segundo\", \"Faltam {seconds} segundos\", \"Faltam {seconds} segundos\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"faltam {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"faltam uns segundos\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"montagem\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar a operação inteira\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Cancelar envios\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Criar novo\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"tempo em falta estimado\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Falha ao juntar os fragmentos\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Falha ao carregar o ficheiro\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Os nomes de ficheiro não podem terminar em \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecionar ambas as versões, será adicionado um número ao nome do ficheiro recebido.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nome de ficheiro inválido\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo nome de ficheiro\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausado\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Pré-visualizar imagem\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Renomear\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecionar todas as caixas de verificação\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecionar todos os ficheiros existentes\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecionar todos os ficheiros novos\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Ignorar\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Ignorar {count} ficheiro\", \"Ignorar {count} ficheiros\", \"Ignorar {count} ficheiros\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Tamanho desconhecido\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Carregar\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Enviar ficheiros\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Carregar pastas\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Carregar a partir do dispositivo\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"O carregamento foi cancelado\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"O carregamento foi ignorado\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['O carregamento da pasta \"{folder}\" foi ignorado'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Progresso do carregamento\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, quaisquer ficheiros em conflito no seu interior também serão sobrescritos.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ao selecionar uma pasta recebida, o conteúdo é escrito na pasta existente e é efetuada uma resolução de conflitos recursiva.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais ficheiros pretende manter?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Pode renomear o ficheiro, ignorá-lo ou cancelar toda a operação.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Precisa de selecionar pelo menos uma versão de cada ficheiro para continuar.\"] } } } } }, { \"locale\": \"ro\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Mădălin Vasiliu , 2022\", \"Language-Team\": \"Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ro\", \"Plural-Forms\": \"nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nMădălin Vasiliu , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Mădălin Vasiliu , 2022\\nLanguage-Team: Romanian (https://www.transifex.com/nextcloud/teams/64236/ro/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ro\\nPlural-Forms: nplurals=3; plural=(n==1?0:(((n%100>19)||((n%100==0)&&(n!=0)))?2:1));\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} secunde rămase\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"{time} rămas\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"câteva secunde rămase\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"Adaugă\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Anulați încărcările\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"estimarea timpului rămas\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pus pe pauză\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Încarcă fișiere\"] } } } } }, { \"locale\": \"ru\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Igor Orlov, 2025\", \"Language-Team\": \"Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ru\", \"Plural-Forms\": \"nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nВлад, 2024\\nAlex , 2024\\nRoman Stepanov, 2024\\nMaksim Sukharev, 2024\\nАлександр, 2025\\nIgor Orlov, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Igor Orlov, 2025\\nLanguage-Team: Russian (https://app.transifex.com/nextcloud/teams/64236/ru/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ru\\nPlural-Forms: nplurals=4; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<12 || n%100>14) ? 1 : n%10==0 || (n%10>=5 && n%10<=9) || (n%100>=11 && n%100<=14)? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"«{segment}» — это запрещенное имя файла или папки.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"«{segment}» — это запрещенный тип файла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"«{segment}» не допускается в имени файла или папки.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"конфликт {count} файла\", \"конфликт {count} файлов\", \"конфликт {count} файлов\", \"конфликт {count} файлов\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"конфликт {count} файла в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\", \"конфликт {count} файлов в «{dirname}»\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"осталась {seconds} секунда\", \"осталось {seconds} секунды\", \"осталось {seconds} секунд\", \"осталось {seconds} секунд\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"осталось {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"осталось несколько секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"сборка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Отменить\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отменить операцию целиком\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Отменить загрузки\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжить\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Создать новое\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оценка оставшегося времени\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Текущая версия\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не удалось собрать части вместе\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не удалось загрузить файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена файлов не должны заканчиваться на «{segment}»\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Если вы выберете обе версии, к имени входящего файла будет добавлен номер.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неверное имя файла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата последнего изменения неизвестна\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Новое имя файла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Новая версия\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"приостановлено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Предварительный просмотр\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Переименовать\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Выбрать все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Выбрать все существующие файлы\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Выбрать все новые файлы\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустить\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустить {count} файл\", \"Пропустить {count} файла\", \"Пропустить {count} файлов\", \"Пропустить {count} файлов\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустить этот файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Неизвестный размер\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Загрузить\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Загрузить файлы\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Загрузить папки\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Загрузить с устройства\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Загрузка была отменена\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Загрузка была пропущена\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Загрузка «{folder}» была пропущена\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Прогресс загрузки\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Когда выбрана входящая папка, все конфликтующие файлы в ней также будут перезаписаны.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Когда выбрана входящая папка, содержимое записывается в существующую папку и выполняется рекурсивное разрешение конфликтов.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Какие файлы вы хотите сохранить?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Вы можете переименовать файл, пропустить этот файл или отменить всю операцию.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продолжения вам нужно выбрать по крайней мере одну версию каждого файла.\"] } } } } }, { \"locale\": \"sc\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sc\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sardinian (https://www.transifex.com/nextcloud/teams/64236/sc/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sc\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"si\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"si\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Sinhala (https://www.transifex.com/nextcloud/teams/64236/si/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: si\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Anton Krajcik , 2025\", \"Language-Team\": \"Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sk_SK\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJozef Gaal , 2024\\nLinker Linker , 2024\\nAnton Krajcik , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Anton Krajcik , 2025\\nLanguage-Team: Slovak (Slovakia) (https://app.transifex.com/nextcloud/teams/64236/sk_SK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sk_SK\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n == 1 ? 0 : n % 1 == 0 && n >= 2 && n <= 4 ? 1 : n % 1 != 0 ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}“ je zakázaný názov súboru alebo priečinka.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je zákazaný typ súboru.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}“ je zakázané v názve súboru alebo adresára.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} súbor má konflikt\", \"{count} súbory majú konflikt\", \"{count} súborov má konflikt\", \"{count} súborov má konflikt\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} súborový konflikt v {dirname}\", \"{count} súborové konflikty v {dirname}\", \"{count} súborových konfliktov v {dirname}\", \"{count} súborových konfliktov v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunda zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekúnd zostáva\", \"{seconds} sekundy zostávajú\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} zostáva\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"zostáva niekoľko sekúnd\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"zhromažďovanie\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Zrušiť nahrávanie\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Vytvoriť nové\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"odhadovanie zostávajúceho času\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Nepodarilo sa dať časti dohromady.\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Nepodarilo sa nahrať súbor\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Názvy súborov nesmú končiť znakom \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, k názvu prichádzajúceho súboru sa pridá číslo.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Neplatný názov súboru\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dátum poslednej úpravy neznámy\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nový\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nový názov súboru\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pozastavené\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Náhľad obrázka\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Premenovať\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označiť všetky výberové políčka\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskočiť\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskočiť {count} súbor\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súborov\", \"Preskočiť {count} súbory\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznáma veľkosť\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Nahrať\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Nahrať súbory\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Nahrať priečinky\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Nahrať zo zariadenia\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nahrávanie bolo zrušené\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nahrávanie bolo preskočené\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nahrávanie \"{folder}\" bolo preskočené'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Priebeh nahrávania\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraný prichádzajúci priečinok, prepíšu sa aj všetky konfliktné súbory v ňom.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po výbere prichádzajúceho priečinka sa obsah zapíše do existujúceho priečinka a vykoná sa rekurzívne riešenie konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete ponechať?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Súbor môžete premenovať, preskočiť alebo zrušiť celú operáciu.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ak chcete pokračovať, musíte vybrať aspoň jednu verziu každého súboru.\"] } } } } }, { \"locale\": \"sl\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Simon Bogina, 2024\", \"Language-Team\": \"Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sl\", \"Plural-Forms\": \"nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nJan Kraljič , 2024\\nSimon Bogina, 2024\\n\" }, \"msgstr\": [\"Last-Translator: Simon Bogina, 2024\\nLanguage-Team: Slovenian (https://app.transifex.com/nextcloud/teams/64236/sl/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sl\\nPlural-Forms: nplurals=4; plural=(n%100==1 ? 0 : n%100==2 ? 1 : n%100==3 || n%100==4 ? 2 : 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" je prepovedano ime datoteka ali mape.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" je prepovedan tip datoteke.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" ni dovoljeno v imenu datoteke ali mape.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"1{count} datoteka je v konfliktu\", \"1{count} datoteki sta v konfiktu\", \"1{count} datotek je v konfliktu\", \"{count} datotek je v konfliktu\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} datoteka je v konfiktu v {dirname}\", \"{count} datoteki sta v konfiktu v {dirname}\", \"{count} datotek je v konfiktu v {dirname}\", \"{count} konfliktov datotek v {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"še {seconds} sekund\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"še {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"še nekaj sekund\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Prekliči\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Prekliči celotni postopek\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Prekliči pošiljanje\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Nadaljuj\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Ustvari nov\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ocenjujem čas do konca\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Obstoječa različica\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Imena datotek se ne smejo končati s \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Če izberete obe različici, bo imenu dohodne datoteke na koncu dodana številka.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Nepravilno ime datoteke\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum zadnje spremembe neznan\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Novo ime datoteke\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Nova različica\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"v premoru\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Predogled slike\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Preimenuj\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Izberi vsa potrditvena polja\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi vse obstoječe datoteke\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi vse nove datoteke\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Preskoči\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Preskoči datoteko\", \"Preskoči {count} datoteki\", \"Preskoči {count} datotek\", \"Preskoči {count} datotek\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Neznana velikost\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Naloži\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Naloži datoteke\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Naloži mape\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Naloži iz naprave\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Nalaganje je bilo preklicano\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Nalaganje je bilo preskočeno\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Nalaganje \"{folder}\" je bilo preskočeno'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Napredek nalaganja\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, bodo vse datototeke v konfliktu znotraj nje prepisane.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Ko je izbrana dohodna mapa, je vsebina vpisana v obstoječo mapo in je izvedeno rekurzivno reševanje konfliktov.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Katere datoteke želite obdržati?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Datoteko lahko preimenujete, preskočite ali prekličete celo operacijo.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Izbrati morate vsaj eno različico vsake datoteke da nadaljujete.\"] } } } } }, { \"locale\": \"sq\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sq\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Albanian (https://www.transifex.com/nextcloud/teams/64236/sq/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sq\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Иван Пешић, 2025\", \"Language-Team\": \"Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nИван Пешић, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Иван Пешић, 2025\\nLanguage-Team: Serbian (https://app.transifex.com/nextcloud/teams/64236/sr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [\"„{segment}” је забрањено име фајла или фолдера.\"] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": [\"„{segment}” је забрањен тип фајла.\"] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": [\"„{segment}” није дозвољено унутар имена фајла или фолдера.\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} фајл конфликт\", \"{count} фајл конфликта\", \"{count} фајл конфликта\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} фајл конфликт у {dirname}\", \"{count} фајл конфликта у {dirname}\", \"{count} фајл конфликта у {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"преостало је {seconds} секунда\", \"преостало је {seconds} секунде\", \"преостало је {seconds} секунди\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} преостало\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"преостало је неколико секунди\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"састављање\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Отказује комплетну операцију\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Обустави отпремања\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Настави\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Креирај ново\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"процена преосталог времена\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Постојећа верзија\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Није успело састављање делова\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Није успело отпремање фајла\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [\"Имена фајлова не смеју да се завршавају на „{segment}”.\"] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако изаберете обе верзије, на име долазног фајла ће се додати број.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Неисправно име фајла\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Није познат датум последње измене\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Ново име фајла\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"паузирано\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Слика прегледа\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Промени име\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Штиклирај сва поља за штиклирање\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изабери све постојеће фајлове\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изабери све нове фајлове\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Прескочи\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Прескочи {count} фајл\", \"Прескочи {count} фајла\", \"Прескочи {count} фајлова\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескочи овај фајл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Непозната величина\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Отпреми\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Отпреми фајлове\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Отпреми фолдере\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Отпреми са уређаја\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Отпремање је отказано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Отпремање је прескочено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [\"Отпремање „{folder}”је прескочено\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Напредак отпремања\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Када се изабере долазни фолдер, сва имена фајлова са конфликтом унутар њега ће се такође преписати.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Када се изабере долазни фолдер, садржај се уписује у постојећи фолдер и извршава се рекурзивно разрешавање конфликата.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Које фајлове желите да задржите?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Можете или да промените име фајлу, прескочите овај фајл или откажете комплетну операцију.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Морате да изаберете барем једну верзију сваког фајла да наставите.\"] } } } } }, { \"locale\": \"sr@latin\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sr@latin\", \"Plural-Forms\": \"nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Serbian (Latin) (https://www.transifex.com/nextcloud/teams/64236/sr@latin/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sr@latin\\nPlural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"sv\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Magnus Höglund, 2025\", \"Language-Team\": \"Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sv\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nMagnus Höglund, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Magnus Höglund, 2025\\nLanguage-Team: Swedish (https://app.transifex.com/nextcloud/teams/64236/sv/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sv\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" är ett förbjudet fil- eller mappnamn.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" är en förbjuden filtyp.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" är inte tillåtet i ett fil- eller mappnamn.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} filkonflikt\", \"{count} filkonflikter\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} filkonflikt i {dirname}\", \"{count} filkonflikter i {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} sekunder kvar\", \"{seconds} sekunder kvar\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kvarstår\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"några sekunder kvar\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"Sammanställer\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Avbryt uppladdningar\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Skapa ny\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"uppskattar kvarstående tid\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Misslyckades med att sammanställa delarna\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Kunde inte ladda upp filen\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Filnamn får inte sluta med \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att läggas till ett nummer i namnet.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Ogiltigt filnamn\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Nytt filnamn\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"pausad\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Förhandsgranska bild\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Byt namn\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Hoppa över\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Hoppa över {count} fil\", \"Hoppa över {count} filer\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över denna fil\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Okänd storlek\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Ladda upp\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Ladda upp filer\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Ladda upp mappar\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Ladda upp från enhet\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Uppladdningen har avbrutits\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Uppladdningen har hoppats över\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Uppladdningen av \"{folder}\" har hoppats över'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Uppladdningsförlopp\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs även alla konfliktande filer i den över.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Du kan antingen byta namn på filen, hoppa över den här filen eller avbryta hela operationen.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] } } } } }, { \"locale\": \"sw\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"sw\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Swahili (https://www.transifex.com/nextcloud/teams/64236/sw/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: sw\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"ta\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ta\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Tamil (https://www.transifex.com/nextcloud/teams/64236/ta/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ta\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"th\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Phongpanot Phairat , 2022\", \"Language-Team\": \"Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"th_TH\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nPhongpanot Phairat , 2022\\n\" }, \"msgstr\": [\"Last-Translator: Phongpanot Phairat , 2022\\nLanguage-Team: Thai (Thailand) (https://www.transifex.com/nextcloud/teams/64236/th_TH/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: th_TH\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"เหลืออีก {seconds} วินาที\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"time has the format 00:00:00\" }, \"msgstr\": [\"เหลืออีก {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"เหลืออีกไม่กี่วินาที\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"เพิ่ม\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"ยกเลิกการอัปโหลด\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"กำลังคำนวณเวลาที่เหลือ\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"หยุดชั่วคราว\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"อัปโหลดไฟล์\"] } } } } }, { \"locale\": \"tk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tk\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Turkmen (https://www.transifex.com/nextcloud/teams/64236/tk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tk\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"tr\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Kaya Zeren , 2025\", \"Language-Team\": \"Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"tr\", \"Plural-Forms\": \"nplurals=2; plural=(n > 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nKaya Zeren , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Kaya Zeren , 2025\\nLanguage-Team: Turkish (https://app.transifex.com/nextcloud/teams/64236/tr/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: tr\\nPlural-Forms: nplurals=2; plural=(n > 1);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" dosya ya da klasör adına izin verilmiyor.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" dosya türüne izin verilmiyor.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['Bir dosya ya da klasör adında \"{segment}\" ifadesine izin verilmiyor.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} dosya çakışması var\", \"{count} dosya çakışması var\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} klasöründe {count} dosya çakışması var\", \"{dirname} klasöründe {count} dosya çakışması var\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} saniye kaldı\", \"{seconds} saniye kaldı\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} kaldı\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir kaç saniye kaldı\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"birleştiriliyor\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yüklemeleri iptal et\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yeni ekle\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"öngörülen kalan süre\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Parçalar birleştirilemedi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Dosya yüklenemedi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Dosya adları \"{segment}\" ile bitmemeli.'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Dosya adı geçersiz\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yeni dosya adı\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"duraklatıldı\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Görsel ön izlemesi\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Yeniden adlandır\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Atla\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"{count} dosyayı atla\", \"{count} dosyayı atla\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Boyut bilinmiyor\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yükle\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Dosyaları yükle\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Klasörleri yükle\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Aygıttan yükle\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yükleme iptal edildi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yükleme atlandı\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" klasörünün yüklenmesi atlandı'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yükleme ilerlemesi\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasörü seçildiğinde içerik var olan klasöre yazılır ve yinelemeli bir çakışma çözümü uygulanır.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Dosya adını değiştirebilir, bu dosyayı atlayabilir ya da tüm işlemi iptal edebilirsiniz.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosyanın en az bir sürümünü seçmelisiniz.\"] } } } } }, { \"locale\": \"ug\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ug\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Uyghur (https://www.transifex.com/nextcloud/teams/64236/ug/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ug\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uk\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"O St, 2025\", \"Language-Team\": \"Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uk\", \"Plural-Forms\": \"nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nO St, 2025\\n\" }, \"msgstr\": [\"Last-Translator: O St, 2025\\nLanguage-Team: Ukrainian (https://app.transifex.com/nextcloud/teams/64236/uk/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uk\\nPlural-Forms: nplurals=4; plural=(n % 1 == 0 && n % 10 == 1 && n % 100 != 11 ? 0 : n % 1 == 0 && n % 10 >= 2 && n % 10 <= 4 && (n % 100 < 12 || n % 100 > 14) ? 1 : n % 1 == 0 && (n % 10 ==0 || (n % 10 >=5 && n % 10 <=9) || (n % 100 >=11 && n % 100 <=14 )) ? 2: 3);\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": [`\"{segment}\" недозволене ім'я файлу або каталогу.`] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" недозволений тип файлу.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" недозволене сполучення символів в назві файлу або каталогу.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} конфліктний файл\", \"{count} конфліктних файли\", \"{count} конфліктних файлів\", \"{count} конфліктних файлів\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count} конфліктний файл у каталозі {dirname}\", \"{count} конфліктних файли у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\", \"{count} конфліктних файлів у каталозі {dirname}\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} секунда залишилася\", \"{seconds} секунди залишилося\", \"{seconds} секунд залишилося\", \"{seconds} секунд залишилося\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"Залишилося {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"залишилося кілька секунд\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"збірка\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати операцію повністю\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Скасувати завантаження\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Створити новий\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"оцінка часу, що залишився\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Присутня версія\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Не вдалося зібрати частинки докупи\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Не вдалося завантажити файл\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": [`Ім'я файлів не можуть закінчуватися на \"{segment}\".`] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо буде вибрано обидві версії, до імени вхідного файлу було додано цифру.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Недійсне ім'я файлу\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Нове\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Нове ім'я файлу\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"призупинено\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Попередній перегляд\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Перейменувати\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати все\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати усі присутні файли\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати усі нові файли\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Пропустити\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Пропустити {count} файл\", \"Пропустити {count} файли\", \"Пропустити {count} файлів\", \"Пропустити {count} файлів\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Невідомий розмір\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Завантажити\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Завантажити файли\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Завантажити каталоги\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Завантажити з пристрою\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Завантаження скасовано\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Завантаження пропущено\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Завантаження \"{folder}\" пропущено'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Поступ завантаження\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Усі конфліктні файли у вибраному каталозі призначення буде перезаписано поверх.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Якщо буде вибрано вхідний каталог, вміст буде записано до наявного каталогу та вирішено конфлікти у відповідних файлах каталогу та підкаталогів.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Ви можете або перейменувати цей файл, пропустити або скасувати дію з файлом.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Для продовження потрібно вибрати принаймні одну версію для кожного файлу.\"] } } } } }, { \"locale\": \"ur_PK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Transifex Bot <>, 2022\", \"Language-Team\": \"Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"ur_PK\", \"Plural-Forms\": \"nplurals=2; plural=(n != 1);\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nTransifex Bot <>, 2022\\n\" }, \"msgstr\": [\"Last-Translator: Transifex Bot <>, 2022\\nLanguage-Team: Urdu (Pakistan) (https://www.transifex.com/nextcloud/teams/64236/ur_PK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: ur_PK\\nPlural-Forms: nplurals=2; plural=(n != 1);\\n\"] }, \"{estimate} seconds left\": { \"msgid\": \"{estimate} seconds left\", \"msgstr\": [\"\"] }, \"{hours} hours and {minutes} minutes left\": { \"msgid\": \"{hours} hours and {minutes} minutes left\", \"msgstr\": [\"\"] }, \"{minutes} minutes left\": { \"msgid\": \"{minutes} minutes left\", \"msgstr\": [\"\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"\"] }, \"Add\": { \"msgid\": \"Add\", \"msgstr\": [\"\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"\"] } } } } }, { \"locale\": \"uz\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Khurshid Ibatov , 2025\", \"Language-Team\": \"Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"uz\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nKhurshid Ibatov , 2025\\n\" }, \"msgstr\": [\"Last-Translator: Khurshid Ibatov , 2025\\nLanguage-Team: Uzbek (https://app.transifex.com/nextcloud/teams/64236/uz/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: uz\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl yoki papka nomidir.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" taqiqlangan fayl turi hisoblanadi.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" fayl yoki papka nomi ichida ruxsat berilmaydi.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} fayllar ziddiyati\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{count}fayl ziddiyatlari {dirname} da\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} soniya qoldi\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} qoldi\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"bir necha soniya qoldi\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"yig'ish\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Yuklashni bekor qilish\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Yangi yaratish\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"qolgan vaqtni hisoblash\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Bo'laklarni birlashtirib bo'lmadi\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Fayl yuklanmadi\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Fayl nomlari bilan tugamasligi kerak \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Fayl nomi noto‘g‘ri\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Yangi nom faylga\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"tanaffus\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Rasmni oldindan ko'rish\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Qayta nomlash\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Oʻtkazib yuborish\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Oʻtkazib yuborish {count} fayllarini\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Oʻtkazib yuborish ushbu faylni\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Noma'lum o'lcham\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Yuklash\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Fayllarni yuklash\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Jildlarni yuklash\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Qurilmadan yuklash\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Yuklash bekor qilindi\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Yuklash oʻtkazib yuborildi\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": [' \"{folder}\" ni yuklash bekor qilindi'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Yuklash jarayoni\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi jild tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Siz fayl nomini o'zgartirishingiz, ushbu faylni o'tkazib yuborishingiz yoki butun operatsiyani bekor qilishingiz mumkin.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] } } } } }, { \"locale\": \"vi\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"nhatCreA, 2025\", \"Language-Team\": \"Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"vi\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nnhatCreA, 2025\\n\" }, \"msgstr\": [\"Last-Translator: nhatCreA, 2025\\nLanguage-Team: Vietnamese (https://app.transifex.com/nextcloud/teams/64236/vi/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: vi\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" là tên thư mục bị cấm đặt.'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" là loại tệp bị cấm.'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" không được phép đặt trong tên tệp hoặc thư mục.'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} tệp tin xung đột\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": ['\"{count}\" tệp tin lỗi ở thư mục \"{dirname}\"'] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"{seconds} giây trước\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"{time} trước\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"vài giây trước\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"đang cấu trúc\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"Huỷ\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Huỷ toàn bộ thao tác\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"Huỷ tải lên\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"Tiếp Tục\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"Tạo mới\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"ước tính thời gian còn lại\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"Phiên bản hiện tại\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"Không thể assemble các chunks lại với nhau\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"Tải lên tệp tin thất bại\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['Tên tập tin không được kết thúc bằng \"{segment}\".'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Nếu bạn chọn cả hai, tệp tin đến sẽ có thêm một chữ số vào tên.\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"Tên tệp tin không hợp lệ\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Ngày sửa dổi lần cuối không xác định\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"Tạo Mới\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"Tên tệp tin mới\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"Phiên bản mới\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"đã tạm dừng\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"Xem trước ảnh\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"Đổi tên\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Chọn tất cả\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Chọn tất cả các tập tin đang tồn tại\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"Chọn tất cả các tập tin mới\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"Bỏ qua\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"Bỏ qua {count} tệp\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bỏ qua tệp này\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"Không rõ dung lượng\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"Tải Lên\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"Tải lên tệp tin\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"Tải lên thư mục\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"Tải lên từ thiết bị\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"Tải lên đã bị huỷ\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"Tải lên đã bỏ qua\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['Tải lên \"{folder}\" đã bị bỏ qua'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"Tiến trình tải lên\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Khi bạn chọn một thư mục để đưa vào, bất kỳ tệp nào trong đó gây xung đột cũng sẽ bị ghi đè.\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Khi chọn một thư mục để đưa vào, nội dung sẽ được ghi vào thư mục hiện có, và hệ thống sẽ tự động giải quyết các xung đột một cách chi tiết và cẩn thận.\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Bạn muốn giữ tệp nào?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"Bạn có thể đổi tên tệp, bỏ qua tệp này, hoặc hủy toàn bộ thao tác.\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Bạn cần chọn ít nhất một phiên bản cho mỗi tệp để tiếp tục.\"] } } } } }, { \"locale\": \"zh_CN\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"DWXXX, 2025\", \"Language-Team\": \"Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_CN\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\ngloryandel, 2024\\nDWXXX, 2025\\n\" }, \"msgstr\": [\"Last-Translator: DWXXX, 2025\\nLanguage-Team: Chinese (China) (https://app.transifex.com/nextcloud/teams/64236/zh_CN/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_CN\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是被禁止的文件名或文件夹名。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是被禁止的文件类型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允许包含在文件名或文件夹名中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count}文件冲突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"在{dirname}目录下有{count}个文件冲突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩余{seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩余 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"还剩几秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"聚合\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整个操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上传\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"继续\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"新建\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估计剩余时间\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"服务端版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"组合区块失败\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"上传文件失败\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['文件名不得以 \"{segment}\" 结尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果同时选择两个版本,则上传文件的名称中将添加一个数字。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"无效文件名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"文件最后修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新文件名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"上传版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暂停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"图片预览\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"选择所有的选择框\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"保留所有服务端版本\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"保留所有上传版本\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳过\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"跳过 {count} 文件\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳过此文件\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"文件大小未知\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上传\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上传文件\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上传文件夹\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"从设备上传\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上传已取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上传已跳过\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['已跳过上传\"{folder}\"'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上传进度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"当选择上传文件夹时,其中任何冲突的文件也都会被覆盖。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"选择上传文件夹后,内容将写入现有文件夹,并递归执行冲突解决。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你要保留哪些文件?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以重命名文件、跳过此文件或取消整个操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"每个文件至少选择保留一个版本\"] } } } } }, { \"locale\": \"zh_HK\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"Café Tango, 2025\", \"Language-Team\": \"Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_HK\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\nCafé Tango, 2025\\n\" }, \"msgstr\": [\"Last-Translator: Café Tango, 2025\\nLanguage-Team: Chinese (Hong Kong) (https://app.transifex.com/nextcloud/teams/64236/zh_HK/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_HK\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, '\"{segment}\" is a forbidden file or folder name.': { \"msgid\": '\"{segment}\" is a forbidden file or folder name.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案或資料夾名稱。'] }, '\"{segment}\" is a forbidden file type.': { \"msgid\": '\"{segment}\" is a forbidden file type.', \"msgstr\": ['\"{segment}\" 是禁止使用的檔案類型。'] }, '\"{segment}\" is not allowed inside a file or folder name.': { \"msgid\": '\"{segment}\" is not allowed inside a file or folder name.', \"msgstr\": ['\"{segment}\" 不允許出現在檔案或資料夾名稱中。'] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgid_plural\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"assembling\": { \"msgid\": \"assembling\", \"msgstr\": [\"組裝\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"Create new\": { \"msgid\": \"Create new\", \"msgstr\": [\"創建新\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"Failed to assemble the chunks together\": { \"msgid\": \"Failed to assemble the chunks together\", \"msgstr\": [\"無法組裝這些部分\"] }, \"Failed to upload the file\": { \"msgid\": \"Failed to upload the file\", \"msgstr\": [\"無法上傳檔案\"] }, 'Filenames must not end with \"{segment}\".': { \"msgid\": 'Filenames must not end with \"{segment}\".', \"msgstr\": ['檔案名不得以 \"{segment}\" 結尾。'] }, \"If you select both versions, the incoming file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,傳入檔案的名稱將會新增編號。\"] }, \"Invalid filename\": { \"msgid\": \"Invalid filename\", \"msgstr\": [\"無效的檔案名\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期不詳\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New filename\": { \"msgid\": \"New filename\", \"msgstr\": [\"新檔案名\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本 \"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Rename\": { \"msgid\": \"Rename\", \"msgstr\": [\"重新命名\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip\": { \"msgid\": \"Skip\", \"msgstr\": [\"跳過\"] }, \"Skip {count} file\": { \"msgid\": \"Skip {count} file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 個檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgstr\": [\"略過這個檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"大小不詳\"] }, \"Upload\": { \"msgid\": \"Upload\", \"msgstr\": [\"上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload folders\": { \"msgid\": \"Upload folders\", \"msgstr\": [\"上傳資料夾\"] }, \"Upload from device\": { \"msgid\": \"Upload from device\", \"msgstr\": [\"從裝置上傳\"] }, \"Upload has been cancelled\": { \"msgid\": \"Upload has been cancelled\", \"msgstr\": [\"上傳已被取消\"] }, \"Upload has been skipped\": { \"msgid\": \"Upload has been skipped\", \"msgstr\": [\"上傳已被跳過\"] }, 'Upload of \"{folder}\" has been skipped': { \"msgid\": 'Upload of \"{folder}\" has been skipped', \"msgstr\": ['\"{folder}\" 的上傳已被跳過'] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\": { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"選擇傳入資料夾後,內容將寫入現有資料夾並執行遞歸衝突解決。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You can either rename the file, skip this file or cancel the whole operation.\": { \"msgid\": \"You can either rename the file, skip this file or cancel the whole operation.\", \"msgstr\": [\"您可以選擇重新命名檔案、跳過此檔案或取消整個操作。\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }, { \"locale\": \"zh_TW\", \"json\": { \"charset\": \"utf-8\", \"headers\": { \"Last-Translator\": \"黃柏諺 , 2024\", \"Language-Team\": \"Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\", \"Content-Type\": \"text/plain; charset=UTF-8\", \"Language\": \"zh_TW\", \"Plural-Forms\": \"nplurals=1; plural=0;\" }, \"translations\": { \"\": { \"\": { \"msgid\": \"\", \"comments\": { \"translator\": \"\\nTranslators:\\nJoas Schilling, 2024\\n黃柏諺 , 2024\\n\" }, \"msgstr\": [\"Last-Translator: 黃柏諺 , 2024\\nLanguage-Team: Chinese (Taiwan) (https://app.transifex.com/nextcloud/teams/64236/zh_TW/)\\nContent-Type: text/plain; charset=UTF-8\\nLanguage: zh_TW\\nPlural-Forms: nplurals=1; plural=0;\\n\"] }, \"{count} file conflict\": { \"msgid\": \"{count} file conflict\", \"msgid_plural\": \"{count} files conflict\", \"msgstr\": [\"{count} 個檔案衝突\"] }, \"{count} file conflict in {dirname}\": { \"msgid\": \"{count} file conflict in {dirname}\", \"msgid_plural\": \"{count} file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 {count} 個檔案衝突\"] }, \"{seconds} seconds left\": { \"msgid\": \"{seconds} seconds left\", \"msgstr\": [\"剩餘 {seconds} 秒\"] }, \"{time} left\": { \"msgid\": \"{time} left\", \"comments\": { \"extracted\": \"TRANSLATORS time has the format 00:00:00\" }, \"msgstr\": [\"剩餘 {time}\"] }, \"a few seconds left\": { \"msgid\": \"a few seconds left\", \"msgstr\": [\"還剩幾秒\"] }, \"Cancel\": { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, \"Cancel the entire operation\": { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, \"Cancel uploads\": { \"msgid\": \"Cancel uploads\", \"msgstr\": [\"取消上傳\"] }, \"Continue\": { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, \"estimating time left\": { \"msgid\": \"estimating time left\", \"msgstr\": [\"估計剩餘時間\"] }, \"Existing version\": { \"msgid\": \"Existing version\", \"msgstr\": [\"既有版本\"] }, \"If you select both versions, the copied file will have a number added to its name.\": { \"msgid\": \"If you select both versions, the copied file will have a number added to its name.\", \"msgstr\": [\"若您選取兩個版本,複製的檔案的名稱將會新增編號。\"] }, \"Last modified date unknown\": { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後修改日期未知\"] }, \"New\": { \"msgid\": \"New\", \"msgstr\": [\"新增\"] }, \"New version\": { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, \"paused\": { \"msgid\": \"paused\", \"msgstr\": [\"已暫停\"] }, \"Preview image\": { \"msgid\": \"Preview image\", \"msgstr\": [\"預覽圖片\"] }, \"Select all checkboxes\": { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選取所有核取方塊\"] }, \"Select all existing files\": { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選取所有既有檔案\"] }, \"Select all new files\": { \"msgid\": \"Select all new files\", \"msgstr\": [\"選取所有新檔案\"] }, \"Skip this file\": { \"msgid\": \"Skip this file\", \"msgid_plural\": \"Skip {count} files\", \"msgstr\": [\"略過 {count} 檔案\"] }, \"Unknown size\": { \"msgid\": \"Unknown size\", \"msgstr\": [\"未知大小\"] }, \"Upload cancelled\": { \"msgid\": \"Upload cancelled\", \"msgstr\": [\"已取消上傳\"] }, \"Upload files\": { \"msgid\": \"Upload files\", \"msgstr\": [\"上傳檔案\"] }, \"Upload progress\": { \"msgid\": \"Upload progress\", \"msgstr\": [\"上傳進度\"] }, \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\": { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾後,其中任何的衝突檔案都會被覆寫。\"] }, \"Which files do you want to keep?\": { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"您想保留哪些檔案?\"] }, \"You need to select at least one version of each file to continue.\": { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須為每個檔案都至少選取一個版本以繼續。\"] } } } } }].map((data) => gtBuilder.addTranslation(data.locale, data.json));\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nclass UploadCancelledError extends Error {\n constructor(cause) {\n super(t(\"Upload has been cancelled\"), { cause });\n }\n}\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/upload\").detectUser().build();\naxiosRetry(axios, { retries: 0 });\nasync function uploadData(url, uploadData2, uploadOptions) {\n const options = {\n headers: {},\n onUploadProgress: () => {\n },\n onUploadRetry: () => {\n },\n retries: 5,\n ...uploadOptions\n };\n let data;\n if (uploadData2 instanceof Blob) {\n data = uploadData2;\n } else {\n data = await uploadData2();\n }\n if (options.destinationFile) {\n options.headers.Destination = options.destinationFile;\n }\n if (!options.headers[\"Content-Type\"]) {\n options.headers[\"Content-Type\"] = \"application/octet-stream\";\n }\n return await axios.request({\n method: \"PUT\",\n url,\n data,\n signal: options.signal,\n onUploadProgress: options.onUploadProgress,\n headers: options.headers,\n \"axios-retry\": {\n retries: options.retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3),\n retryCondition(error) {\n if (error.status === 507) {\n return false;\n }\n if (error.status === 423) {\n return true;\n }\n return isNetworkOrIdempotentRequestError(error);\n },\n onRetry: options.onUploadRetry\n }\n });\n}\nconst getChunk = function(file, start, length) {\n if (start === 0 && file.size <= length) {\n return Promise.resolve(new Blob([file], { type: file.type || \"application/octet-stream\" }));\n }\n return Promise.resolve(new Blob([file.slice(start, start + length)], { type: \"application/octet-stream\" }));\n};\nconst initChunkWorkspace = async function(destinationFile = void 0, retries = 5, isPublic = false, customHeaders = {}) {\n let chunksWorkspace;\n if (isPublic) {\n chunksWorkspace = `${getBaseUrl()}/public.php/dav/uploads/${getSharingToken()}`;\n } else {\n chunksWorkspace = generateRemoteUrl(`dav/uploads/${getCurrentUser()?.uid}`);\n }\n const hash = [...Array(16)].map(() => Math.floor(Math.random() * 16).toString(16)).join(\"\");\n const tempWorkspace = `web-file-upload-${hash}`;\n const url = `${chunksWorkspace}/${tempWorkspace}`;\n const headers = customHeaders;\n if (destinationFile) {\n headers.Destination = destinationFile;\n }\n await axios.request({\n method: \"MKCOL\",\n url,\n headers,\n \"axios-retry\": {\n retries,\n retryDelay: (retryCount, error) => exponentialDelay(retryCount, error, 1e3)\n }\n });\n logger.debug(\"Created temporary upload workspace\", { url });\n return url;\n};\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst getMaxChunksSize = function(fileSize = void 0) {\n const maxChunkSize = window.OC?.appConfig?.files?.max_chunk_size;\n if (maxChunkSize <= 0) {\n return 0;\n }\n if (!Number(maxChunkSize)) {\n return 10 * 1024 * 1024;\n }\n const minimumChunkSize = Math.max(Number(maxChunkSize), 5 * 1024 * 1024);\n if (fileSize === void 0) {\n return minimumChunkSize;\n }\n return Math.max(minimumChunkSize, Math.ceil(fileSize / 1e4));\n};\nvar Status = /* @__PURE__ */ ((Status2) => {\n Status2[Status2[\"INITIALIZED\"] = 0] = \"INITIALIZED\";\n Status2[Status2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n Status2[Status2[\"ASSEMBLING\"] = 2] = \"ASSEMBLING\";\n Status2[Status2[\"FINISHED\"] = 3] = \"FINISHED\";\n Status2[Status2[\"CANCELLED\"] = 4] = \"CANCELLED\";\n Status2[Status2[\"FAILED\"] = 5] = \"FAILED\";\n return Status2;\n})(Status || {});\nclass Upload {\n _source;\n _file;\n _isChunked;\n _chunks;\n _size;\n _uploaded = 0;\n _startTime = 0;\n _status = 0;\n _controller;\n _response = null;\n constructor(source, chunked = false, size, file) {\n const chunks = Math.min(getMaxChunksSize() > 0 ? Math.ceil(size / getMaxChunksSize()) : 1, 1e4);\n this._source = source;\n this._isChunked = chunked && getMaxChunksSize() > 0 && chunks > 1;\n this._chunks = this._isChunked ? chunks : 1;\n this._size = size;\n this._file = file;\n this._controller = new AbortController();\n }\n get source() {\n return this._source;\n }\n get file() {\n return this._file;\n }\n get isChunked() {\n return this._isChunked;\n }\n get chunks() {\n return this._chunks;\n }\n get size() {\n return this._size;\n }\n get startTime() {\n return this._startTime;\n }\n set response(response) {\n this._response = response;\n }\n get response() {\n return this._response;\n }\n get uploaded() {\n return this._uploaded;\n }\n /**\n * Update the uploaded bytes of this upload\n */\n set uploaded(length) {\n if (length >= this._size) {\n this._status = this._isChunked ? 2 : 3;\n this._uploaded = this._size;\n return;\n }\n this._status = 1;\n this._uploaded = length;\n if (this._startTime === 0) {\n this._startTime = (/* @__PURE__ */ new Date()).getTime();\n }\n }\n get status() {\n return this._status;\n }\n /**\n * Update this upload status\n */\n set status(status) {\n this._status = status;\n }\n /**\n * Returns the axios cancel token source\n */\n get signal() {\n return this._controller.signal;\n }\n /**\n * Cancel any ongoing requests linked to this upload\n */\n cancel() {\n this._controller.abort();\n this._status = 4;\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst isFileSystemDirectoryEntry = (o) => \"FileSystemDirectoryEntry\" in window && o instanceof FileSystemDirectoryEntry;\nconst isFileSystemFileEntry = (o) => \"FileSystemFileEntry\" in window && o instanceof FileSystemFileEntry;\nconst isFileSystemEntry = (o) => \"FileSystemEntry\" in window && o instanceof FileSystemEntry;\nclass Directory extends File {\n _originalName;\n _path;\n _children;\n constructor(path) {\n super([], basename(path), { type: \"httpd/unix-directory\", lastModified: 0 });\n this._children = /* @__PURE__ */ new Map();\n this._originalName = basename(path);\n this._path = path;\n }\n get size() {\n return this.children.reduce((sum, file) => sum + file.size, 0);\n }\n get lastModified() {\n return this.children.reduce((latest, file) => Math.max(latest, file.lastModified), 0);\n }\n // We need this to keep track of renamed files\n get originalName() {\n return this._originalName;\n }\n get children() {\n return Array.from(this._children.values());\n }\n get webkitRelativePath() {\n return this._path;\n }\n getChild(name) {\n return this._children.get(name) ?? null;\n }\n /**\n * Add multiple children at once\n * @param files The files to add\n */\n async addChildren(files) {\n for (const file of files) {\n await this.addChild(file);\n }\n }\n /**\n * Add a child to the directory.\n * If it is a nested child the parents will be created if not already exist.\n * @param file The child to add\n */\n async addChild(file) {\n const rootPath = this._path && `${this._path}/`;\n if (isFileSystemFileEntry(file)) {\n file = await new Promise((resolve, reject) => file.file(resolve, reject));\n } else if (isFileSystemDirectoryEntry(file)) {\n const reader = file.createReader();\n const entries = await new Promise((resolve, reject) => reader.readEntries(resolve, reject));\n const child = new Directory(`${rootPath}${file.name}`);\n await child.addChildren(entries);\n this._children.set(file.name, child);\n return;\n }\n file = file;\n const filePath = file.webkitRelativePath ?? file.name;\n if (!filePath.includes(\"/\")) {\n this._children.set(file.name, file);\n } else {\n if (!filePath.startsWith(this._path)) {\n throw new Error(`File ${filePath} is not a child of ${this._path}`);\n }\n const relPath = filePath.slice(rootPath.length);\n const name = basename(relPath);\n if (name === relPath) {\n this._children.set(name, file);\n } else {\n const base = relPath.slice(0, relPath.indexOf(\"/\"));\n if (this._children.has(base)) {\n await this._children.get(base).addChild(file);\n } else {\n const child = new Directory(`${rootPath}${base}`);\n await child.addChild(file);\n this._children.set(base, child);\n }\n }\n }\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nvar EtaStatus = /* @__PURE__ */ ((EtaStatus2) => {\n EtaStatus2[EtaStatus2[\"Idle\"] = 0] = \"Idle\";\n EtaStatus2[EtaStatus2[\"Paused\"] = 1] = \"Paused\";\n EtaStatus2[EtaStatus2[\"Running\"] = 2] = \"Running\";\n return EtaStatus2;\n})(EtaStatus || {});\nclass Eta extends TypedEventTarget {\n /** Bytes done */\n _done = 0;\n /** Total bytes to do */\n _total = 0;\n /** Current progress (cached) as interval [0,1] */\n _progress = 0;\n /** Status of the ETA */\n _status = 0;\n /** Time of the last update */\n _startTime = -1;\n /** Total elapsed time for current ETA */\n _elapsedTime = 0;\n /** Current speed in bytes per second */\n _speed = -1;\n /** Expected duration to finish in seconds */\n _eta = Infinity;\n /**\n * Cutoff time for the low pass filter of the ETA.\n * A higher value will consider more history information for calculation,\n * and thus suppress spikes of the speed,\n * but will make the overall resposiveness slower.\n */\n _cutoffTime = 2.5;\n constructor(options = {}) {\n super();\n if (options.start) {\n this.resume();\n }\n if (options.total) {\n this.update(0, options.total);\n }\n this._cutoffTime = options.cutoffTime ?? 2.5;\n }\n /**\n * Add more transferred bytes.\n * @param done Additional bytes done.\n */\n add(done) {\n this.update(this._done + done);\n }\n /**\n * Update the transmission state.\n *\n * @param done The new value of transferred bytes.\n * @param total Optionally also update the total bytes we expect.\n */\n update(done, total) {\n if (this.status !== 2) {\n return;\n }\n if (total && total > 0) {\n this._total = total;\n }\n const deltaDone = done - this._done;\n const deltaTime = (Date.now() - this._startTime) / 1e3;\n this._startTime = Date.now();\n this._elapsedTime += deltaTime;\n this._done = done;\n this._progress = this._done / this._total;\n const historyNeeded = this._cutoffTime + deltaTime;\n if (this._elapsedTime > historyNeeded) {\n const alpha = deltaTime / (deltaTime + 1 / this._cutoffTime);\n const filtered = this._done - deltaDone + (1 - alpha) * deltaDone;\n this._speed = Math.round(filtered / this._elapsedTime);\n } else if (this._speed === -1 && this._elapsedTime > deltaTime) {\n const remaining = this._total - done;\n const eta = remaining / (done / this._elapsedTime);\n if (this._eta !== Infinity || eta <= 2 * this._cutoffTime) {\n this._eta = eta;\n }\n }\n if (this._speed > 0) {\n this._eta = Math.round((this._total - this._done) / this._speed);\n }\n this.dispatchTypedEvent(\"update\", new CustomEvent(\"update\", { cancelable: false }));\n }\n reset() {\n this._done = 0;\n this._total = 0;\n this._progress = 0;\n this._elapsedTime = 0;\n this._eta = Infinity;\n this._speed = -1;\n this._startTime = -1;\n this._status = 0;\n this.dispatchTypedEvent(\"reset\", new CustomEvent(\"reset\"));\n }\n /**\n * Pause the ETA calculation.\n */\n pause() {\n if (this._status === 2) {\n this._status = 1;\n this._elapsedTime += (Date.now() - this._startTime) / 1e3;\n this.dispatchTypedEvent(\"pause\", new CustomEvent(\"pause\"));\n }\n }\n /**\n * Resume the ETA calculation.\n */\n resume() {\n if (this._status !== 2) {\n this._startTime = Date.now();\n this._status = 2;\n this.dispatchTypedEvent(\"resume\", new CustomEvent(\"resume\"));\n }\n }\n /**\n * Status of the Eta (paused, active, idle).\n */\n get status() {\n return this._status;\n }\n /**\n * Progress (percent done)\n */\n get progress() {\n return Math.round(this._progress * 1e4) / 100;\n }\n /**\n * Estimated time in seconds.\n */\n get time() {\n return this._eta;\n }\n /**\n * Human readable version of the estimated time.\n */\n get timeReadable() {\n if (this._eta === Infinity) {\n return t(\"estimating time left\");\n } else if (this._eta < 10) {\n return t(\"a few seconds left\");\n } else if (this._eta < 60) {\n return n(\"{seconds} seconds left\", \"{seconds} seconds left\", this._eta, { seconds: this._eta });\n }\n const hours = String(Math.floor(this._eta / 3600)).padStart(2, \"0\");\n const minutes = String(Math.floor(this._eta % 3600 / 60)).padStart(2, \"0\");\n const seconds = String(this._eta % 60).padStart(2, \"0\");\n return t(\"{time} left\", { time: `${hours}:${minutes}:${seconds}` });\n }\n /**\n * Transfer speed in bytes per second.\n * Returns `-1` if not yet estimated.\n */\n get speed() {\n return this._speed;\n }\n /**\n * Get the speed in human readable format using file sizes like 10KB/s.\n * Returns the empty string if not yet estimated.\n */\n get speedReadable() {\n return this._speed > 0 ? `${formatFileSize(this._speed, true)}∕s` : \"\";\n }\n}\nvar UploaderStatus = /* @__PURE__ */ ((UploaderStatus2) => {\n UploaderStatus2[UploaderStatus2[\"IDLE\"] = 0] = \"IDLE\";\n UploaderStatus2[UploaderStatus2[\"UPLOADING\"] = 1] = \"UPLOADING\";\n UploaderStatus2[UploaderStatus2[\"PAUSED\"] = 2] = \"PAUSED\";\n return UploaderStatus2;\n})(UploaderStatus || {});\nclass Uploader {\n // Initialized via setter in the constructor\n _destinationFolder;\n _isPublic;\n _customHeaders;\n // Global upload queue\n _uploadQueue = [];\n _jobQueue = new PQueue({\n // Maximum number of concurrent uploads\n // @ts-expect-error TS2339 Object has no defined properties\n concurrency: getCapabilities().files?.chunked_upload?.max_parallel_count ?? 5\n });\n _queueSize = 0;\n _queueProgress = 0;\n _queueStatus = 0;\n _eta = new Eta();\n _notifiers = [];\n /**\n * Initialize uploader\n *\n * @param {boolean} isPublic are we in public mode ?\n * @param {Folder} destinationFolder the context folder to operate, relative to the root folder\n */\n constructor(isPublic = false, destinationFolder) {\n this._isPublic = isPublic;\n this._customHeaders = {};\n if (!destinationFolder) {\n const source = `${davRemoteURL}${davRootPath}`;\n let owner;\n if (isPublic) {\n owner = \"anonymous\";\n } else {\n const user = getCurrentUser()?.uid;\n if (!user) {\n throw new Error(\"User is not logged in\");\n }\n owner = user;\n }\n destinationFolder = new Folder({\n id: 0,\n owner,\n permissions: Permission.ALL,\n root: davRootPath,\n source\n });\n }\n this.destination = destinationFolder;\n logger.debug(\"Upload workspace initialized\", {\n destination: this.destination,\n root: this.root,\n isPublic,\n maxChunksSize: getMaxChunksSize()\n });\n }\n /**\n * Get the upload destination path relative to the root folder\n */\n get destination() {\n return this._destinationFolder;\n }\n /**\n * Set the upload destination path relative to the root folder\n */\n set destination(folder) {\n if (!folder || folder.type !== FileType.Folder || !folder.source) {\n throw new Error(\"Invalid destination folder\");\n }\n logger.debug(\"Destination set\", { folder });\n this._destinationFolder = folder;\n }\n /**\n * Get the root folder\n */\n get root() {\n return this._destinationFolder.source;\n }\n /**\n * Get registered custom headers for uploads\n */\n get customHeaders() {\n return structuredClone(this._customHeaders);\n }\n /**\n * Set a custom header\n * @param name The header to set\n * @param value The string value\n */\n setCustomHeader(name, value = \"\") {\n this._customHeaders[name] = value;\n }\n /**\n * Unset a custom header\n * @param name The header to unset\n */\n deleteCustomerHeader(name) {\n delete this._customHeaders[name];\n }\n /**\n * Get the upload queue\n */\n get queue() {\n return this._uploadQueue;\n }\n reset() {\n this._eta.reset();\n if (this._uploadQueue.length === 0 && this._jobQueue.size === 0) {\n return;\n }\n this._uploadQueue.splice(0, this._uploadQueue.length);\n this._jobQueue.clear();\n this._queueSize = 0;\n this._queueProgress = 0;\n this._queueStatus = 0;\n logger.debug(\"Uploader state reset\");\n }\n /**\n * Pause any ongoing upload(s)\n */\n pause() {\n this._eta.pause();\n this._jobQueue.pause();\n this._queueStatus = 2;\n this.updateStats();\n logger.debug(\"Uploader paused\");\n }\n /**\n * Resume any pending upload(s)\n */\n start() {\n this._eta.resume();\n this._jobQueue.start();\n this._queueStatus = 1;\n this.updateStats();\n logger.debug(\"Uploader resumed\");\n }\n /**\n * Get the estimation for the uploading time.\n */\n get eta() {\n return this._eta;\n }\n /**\n * Get the upload queue stats\n */\n get info() {\n return {\n size: this._queueSize,\n progress: this._queueProgress,\n status: this._queueStatus\n };\n }\n updateStats() {\n const size = this._uploadQueue.map((upload2) => upload2.size).reduce((partialSum, a) => partialSum + a, 0);\n const uploaded = this._uploadQueue.map((upload2) => upload2.uploaded).reduce((partialSum, a) => partialSum + a, 0);\n this._eta.update(uploaded, size);\n this._queueSize = size;\n this._queueProgress = uploaded;\n if (this._queueStatus !== 2) {\n const pending = this._uploadQueue.find(({ status }) => [Status.INITIALIZED, Status.UPLOADING, Status.ASSEMBLING].includes(status));\n if (this._jobQueue.size > 0 || pending) {\n this._queueStatus = 1;\n } else {\n this.eta.reset();\n this._queueStatus = 0;\n }\n }\n }\n addNotifier(notifier) {\n this._notifiers.push(notifier);\n }\n /**\n * Notify listeners of the upload completion\n * @param upload The upload that finished\n */\n _notifyAll(upload2) {\n for (const notifier of this._notifiers) {\n try {\n notifier(upload2);\n } catch (error) {\n logger.warn(\"Error in upload notifier\", { error, source: upload2.source });\n }\n }\n }\n /**\n * Uploads multiple files or folders while preserving the relative path (if available)\n * @param {string} destination The destination path relative to the root folder. e.g. /foo/bar (a file \"a.txt\" will be uploaded then to \"/foo/bar/a.txt\")\n * @param {Array} files The files and/or folders to upload\n * @param {Function} callback Callback that receives the nodes in the current folder and the current path to allow resolving conflicts, all nodes that are returned will be uploaded (if a folder does not exist it will be created)\n * @return Cancelable promise that resolves to an array of uploads\n *\n * @example\n * ```ts\n * // For example this is from handling the onchange event of an input[type=file]\n * async handleFiles(files: File[]) {\n * this.uploads = await this.uploader.batchUpload('uploads', files, this.handleConflicts)\n * }\n *\n * async handleConflicts(nodes: File[], currentPath: string) {\n * const conflicts = getConflicts(nodes, this.fetchContent(currentPath))\n * if (conflicts.length === 0) {\n * // No conflicts so upload all\n * return nodes\n * } else {\n * // Open the conflict picker to resolve conflicts\n * try {\n * const { selected, renamed } = await openConflictPicker(currentPath, conflicts, this.fetchContent(currentPath), { recursive: true })\n * return [...selected, ...renamed]\n * } catch (e) {\n * return false\n * }\n * }\n * }\n * ```\n */\n batchUpload(destination, files, callback) {\n if (!callback) {\n callback = async (files2) => files2;\n }\n return new PCancelable(async (resolve, reject, onCancel) => {\n const rootFolder = new Directory(\"\");\n await rootFolder.addChildren(files);\n const target = `${this.root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const upload2 = new Upload(target, false, 0, rootFolder);\n upload2.status = Status.UPLOADING;\n this._uploadQueue.push(upload2);\n logger.debug(\"Starting new batch upload\", { target });\n try {\n const client = davGetClient(this.root, this._customHeaders);\n const promise = this.uploadDirectory(destination, rootFolder, callback, client);\n onCancel(() => promise.cancel());\n const uploads = await promise;\n upload2.status = Status.FINISHED;\n resolve(uploads);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n logger.info(\"Upload cancelled by user\", { error });\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else {\n logger.error(\"Error in batch upload\", { error });\n upload2.status = Status.FAILED;\n reject(error);\n }\n } finally {\n this._uploadQueue.splice(this._uploadQueue.indexOf(upload2), 1);\n this._notifyAll(upload2);\n this.updateStats();\n }\n });\n }\n /**\n * Helper to create a directory wrapped inside an Upload class\n * @param destination Destination where to create the directory\n * @param directory The directory to create\n * @param client The cached WebDAV client\n */\n createDirectory(destination, directory, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n const rootPath = `${this.root.replace(/\\/$/, \"\")}/${folderPath.replace(/^\\//, \"\")}`;\n if (!directory.name) {\n throw new Error(\"Can not create empty directory\");\n }\n const currentUpload = new Upload(rootPath, false, 0, directory);\n this._uploadQueue.push(currentUpload);\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n currentUpload.signal.addEventListener(\"abort\", () => reject(t(\"Upload has been cancelled\")));\n await this._jobQueue.add(async () => {\n currentUpload.status = Status.UPLOADING;\n try {\n await client.createDirectory(folderPath, { signal: abort.signal });\n resolve(currentUpload);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n currentUpload.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else if (error && typeof error === \"object\" && \"status\" in error && error.status === 405) {\n logger.debug(\"Directory already exists, writing into it\", { directory: directory.name });\n currentUpload.status = Status.FINISHED;\n resolve(currentUpload);\n } else {\n currentUpload.status = Status.FAILED;\n reject(error);\n }\n } finally {\n this._notifyAll(currentUpload);\n this.updateStats();\n }\n });\n });\n }\n // Helper for uploading directories (recursively)\n uploadDirectory(destination, directory, callback, client) {\n const folderPath = normalize(`${destination}/${directory.name}`).replace(/\\/$/, \"\");\n return new PCancelable(async (resolve, reject, onCancel) => {\n const abort = new AbortController();\n onCancel(() => abort.abort());\n const selectedForUpload = await callback(directory.children, folderPath);\n if (selectedForUpload === false) {\n logger.debug(\"Upload canceled by user\", { directory });\n reject(new UploadCancelledError(\"Conflict resolution cancelled by user\"));\n return;\n } else if (selectedForUpload.length === 0 && directory.children.length > 0) {\n logger.debug(\"Skipping directory, as all files were skipped by user\", { directory });\n resolve([]);\n return;\n }\n const directories = [];\n const uploads = [];\n abort.signal.addEventListener(\"abort\", () => {\n directories.forEach((upload2) => upload2.cancel());\n uploads.forEach((upload2) => upload2.cancel());\n });\n logger.debug(\"Start directory upload\", { directory });\n try {\n if (directory.name) {\n uploads.push(this.createDirectory(destination, directory, client));\n await uploads.at(-1);\n }\n for (const node of selectedForUpload) {\n if (node instanceof Directory) {\n directories.push(this.uploadDirectory(folderPath, node, callback, client));\n } else {\n uploads.push(this.upload(`${folderPath}/${node.name}`, node));\n }\n }\n const resolvedUploads = await Promise.all(uploads);\n const resolvedDirectoryUploads = await Promise.all(directories);\n resolve([resolvedUploads, ...resolvedDirectoryUploads].flat());\n } catch (e) {\n abort.abort(e);\n reject(e);\n }\n });\n }\n /**\n * Upload a file to the given path\n * @param {string} destination the destination path relative to the root folder. e.g. /foo/bar.txt\n * @param {File|FileSystemFileEntry} fileHandle the file to upload\n * @param {string} root the root folder to upload to\n * @param retries number of retries\n */\n upload(destination, fileHandle, root, retries = 5) {\n root = root || this.root;\n const destinationPath = `${root.replace(/\\/$/, \"\")}/${destination.replace(/^\\//, \"\")}`;\n const { origin } = new URL(destinationPath);\n const encodedDestinationFile = origin + encodePath(destinationPath.slice(origin.length));\n this.eta.resume();\n logger.debug(`Uploading ${fileHandle.name} to ${encodedDestinationFile}`);\n const promise = new PCancelable(async (resolve, reject, onCancel) => {\n if (isFileSystemFileEntry(fileHandle)) {\n fileHandle = await new Promise((resolve2) => fileHandle.file(resolve2, reject));\n }\n const file = fileHandle;\n const supportsPublicChunking = getCapabilities().dav?.public_shares_chunking ?? false;\n const maxChunkSize = getMaxChunksSize(\"size\" in file ? file.size : void 0);\n const disabledChunkUpload = this._isPublic && !supportsPublicChunking || maxChunkSize === 0 || \"size\" in file && file.size < maxChunkSize;\n const upload2 = new Upload(destinationPath, !disabledChunkUpload, file.size, file);\n this._uploadQueue.push(upload2);\n this.updateStats();\n onCancel(upload2.cancel);\n if (!disabledChunkUpload) {\n logger.debug(\"Initializing chunked upload\", { file, upload: upload2 });\n const tempUrl = await initChunkWorkspace(encodedDestinationFile, retries, this._isPublic, this._customHeaders);\n const chunksQueue = [];\n for (let chunk = 0; chunk < upload2.chunks; chunk++) {\n const bufferStart = chunk * maxChunkSize;\n const bufferEnd = Math.min(bufferStart + maxChunkSize, upload2.size);\n const blob = () => getChunk(file, bufferStart, maxChunkSize);\n const request2 = () => {\n let chunkBytes = 0;\n return uploadData(\n `${tempUrl}/${chunk + 1}`,\n blob,\n {\n signal: upload2.signal,\n destinationFile: encodedDestinationFile,\n retries,\n onUploadProgress: ({ bytes }) => {\n const progressBytes = bytes * 0.9;\n chunkBytes += progressBytes;\n upload2.uploaded += progressBytes;\n this.updateStats();\n },\n onUploadRetry: () => {\n upload2.uploaded -= chunkBytes;\n chunkBytes = 0;\n this.updateStats();\n },\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"OC-Total-Length\": file.size,\n \"Content-Type\": \"application/octet-stream\"\n }\n }\n ).then(() => {\n upload2.uploaded += bufferEnd - bufferStart - chunkBytes;\n this.updateStats();\n }).catch((error) => {\n if (error?.response?.status === 507) {\n logger.error(\"Upload failed, not enough space on the server or quota exceeded. Cancelling the remaining chunks\", { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status.FAILED;\n throw error;\n }\n if (!isCancel(error)) {\n logger.error(`Chunk ${chunk + 1} ${bufferStart} - ${bufferEnd} uploading failed`, { error, upload: upload2 });\n upload2.cancel();\n upload2.status = Status.FAILED;\n }\n throw error;\n });\n };\n chunksQueue.push(this._jobQueue.add(request2));\n }\n const request = async () => {\n try {\n await Promise.all(chunksQueue);\n upload2.status = Status.ASSEMBLING;\n this.updateStats();\n upload2.response = await axios.request({\n method: \"MOVE\",\n url: `${tempUrl}/.file`,\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"OC-Total-Length\": file.size,\n Destination: encodedDestinationFile\n }\n });\n upload2.status = Status.FINISHED;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n } else {\n upload2.status = Status.FAILED;\n reject(t(\"Failed to assemble the chunks together\"));\n }\n axios.request({\n method: \"DELETE\",\n url: `${tempUrl}`\n });\n } finally {\n this._notifyAll(upload2);\n }\n };\n this._jobQueue.add(request);\n } else {\n logger.debug(\"Initializing regular upload\", { file, upload: upload2 });\n const blob = await getChunk(file, 0, upload2.size);\n const request = async () => {\n try {\n upload2.response = await uploadData(\n encodedDestinationFile,\n blob,\n {\n signal: upload2.signal,\n onUploadProgress: ({ bytes }) => {\n upload2.uploaded += bytes * 0.9;\n this.updateStats();\n },\n onUploadRetry: () => {\n upload2.uploaded = 0;\n this.updateStats();\n },\n headers: {\n ...this._customHeaders,\n ...this._mtimeHeader(file),\n \"Content-Type\": file.type\n }\n }\n );\n upload2.uploaded = upload2.size;\n this.updateStats();\n logger.debug(`Successfully uploaded ${file.name}`, { file, upload: upload2 });\n resolve(upload2);\n } catch (error) {\n if (isCancel(error) || error instanceof UploadCancelledError) {\n upload2.status = Status.CANCELLED;\n reject(new UploadCancelledError(error));\n return;\n }\n if (error?.response) {\n upload2.response = error.response;\n }\n upload2.status = Status.FAILED;\n logger.error(`Failed uploading ${file.name}`, { error, file, upload: upload2 });\n reject(t(\"Failed to upload the file\"));\n }\n this._notifyAll(upload2);\n };\n this._jobQueue.add(request);\n this.updateStats();\n }\n this._jobQueue.onIdle().then(() => this.reset());\n return upload2;\n });\n return promise;\n }\n /**\n * Create modification time headers if valid value is available.\n * It can be invalid on Android devices if SD cards with NTFS / FAT are used,\n * as those files might use the NT epoch for time so the value will be negative.\n *\n * @param file The file to upload\n */\n _mtimeHeader(file) {\n const mtime = Math.floor(file.lastModified / 1e3);\n if (mtime > 0) {\n return { \"X-OC-Mtime\": mtime };\n }\n return {};\n }\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction getUploader(isPublic = isPublicShare(), forceRecreate = false) {\n if (forceRecreate || window._nc_uploader === void 0) {\n window._nc_uploader = new Uploader(isPublic);\n }\n return window._nc_uploader;\n}\nfunction upload(destinationPath, file) {\n const uploader = getUploader();\n uploader.upload(destinationPath, file);\n return uploader;\n}\nfunction hasConflict(files, content) {\n return getConflicts(files, content).length > 0;\n}\nfunction getConflicts(files, content) {\n const contentNames = content.map((node) => node.basename);\n const conflicts = files.filter((node) => {\n const name = \"basename\" in node ? node.basename : node.name;\n return contentNames.indexOf(name) !== -1;\n });\n return conflicts;\n}\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-DuPiUBHl.mjs\"));\n return new Promise((resolve, reject) => {\n const picker = new Vue({\n name: \"ConflictPickerRoot\",\n render: (h) => h(ConflictPicker, {\n props: {\n dirname,\n conflicts,\n content,\n recursiveUpload: options?.recursive === true\n },\n on: {\n submit(results) {\n resolve(results);\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n },\n cancel(error) {\n reject(error ?? new Error(\"Canceled\"));\n picker.$destroy();\n picker.$el?.parentNode?.removeChild(picker.$el);\n }\n }\n })\n });\n picker.$mount();\n document.body.appendChild(picker.$el);\n });\n}\nfunction showInvalidFilenameDialog(error) {\n const InvalidFilenameDialog = defineAsyncComponent(() => import(\"./InvalidFilenameDialog-BM2VDeLo.mjs\"));\n const { promise, reject, resolve } = Promise.withResolvers();\n spawnDialog(\n InvalidFilenameDialog,\n {\n error,\n validateFilename\n },\n (...rest) => {\n const [{ skip, rename }] = rest;\n if (skip) {\n resolve(false);\n } else if (rename) {\n resolve(rename);\n } else {\n reject();\n }\n }\n );\n return promise;\n}\n/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction uploadConflictHandler(contentsCallback) {\n return async (nodes, path) => {\n try {\n const content = await contentsCallback(path).catch(() => []);\n const conflicts = getConflicts(nodes, content);\n if (conflicts.length > 0) {\n const { selected, renamed } = await openConflictPicker(path, conflicts, content, { recursive: true });\n nodes = [\n ...nodes.filter((node) => !conflicts.includes(node)),\n ...selected,\n ...renamed\n ];\n }\n const filesToUpload = [];\n for (const file of nodes) {\n try {\n validateFilename(file.name);\n filesToUpload.push(file);\n } catch (error) {\n if (!(error instanceof InvalidFilenameError)) {\n logger.error(`Unexpected error while validating ${file.name}`, { error });\n throw error;\n }\n let newName = await showInvalidFilenameDialog(error);\n if (newName !== false) {\n newName = getUniqueName(newName, nodes.map((node) => node.name));\n Object.defineProperty(file, \"name\", { value: newName });\n filesToUpload.push(file);\n }\n }\n }\n if (filesToUpload.length === 0 && nodes.length > 0) {\n const folder = basename(path);\n showInfo(\n folder ? t('Upload of \"{folder}\" has been skipped', { folder }) : t(\"Upload has been skipped\")\n );\n }\n return filesToUpload;\n } catch (error) {\n logger.debug(\"Upload has been cancelled\", { error });\n showWarning(t(\"Upload has been cancelled\"));\n return false;\n }\n };\n}\nfunction normalizeComponent(scriptExports, render6, staticRenderFns, functionalTemplate, injectStyles, scopeId, moduleIdentifier, shadowMode) {\n var options = typeof scriptExports === \"function\" ? scriptExports.options : scriptExports;\n if (render6) {\n options.render = render6;\n options.staticRenderFns = staticRenderFns;\n options._compiled = true;\n }\n if (scopeId) {\n options._scopeId = \"data-v-\" + scopeId;\n }\n return {\n exports: scriptExports,\n options\n };\n}\nconst _sfc_main$4 = {\n name: \"CancelIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$4 = function render() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon cancel-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M12 2C17.5 2 22 6.5 22 12S17.5 22 12 22 2 17.5 2 12 6.5 2 12 2M12 4C10.1 4 8.4 4.6 7.1 5.7L18.3 16.9C19.3 15.5 20 13.8 20 12C20 7.6 16.4 4 12 4M16.9 18.3L5.7 7.1C4.6 8.4 4 10.1 4 12C4 16.4 7.6 20 12 20C13.9 20 15.6 19.4 16.9 18.3Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$4 = [];\nvar __component__$4 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$4,\n _sfc_render$4,\n _sfc_staticRenderFns$4,\n false,\n null,\n null\n);\nconst IconCancel = __component__$4.exports;\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$3 = function render2() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon folder-upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$3 = [];\nvar __component__$3 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$3,\n _sfc_render$3,\n _sfc_staticRenderFns$3,\n false,\n null,\n null\n);\nconst IconFolderUpload = __component__$3.exports;\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$2 = function render3() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon plus-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$2 = [];\nvar __component__$2 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$2,\n _sfc_render$2,\n _sfc_staticRenderFns$2,\n false,\n null,\n null\n);\nconst IconPlus = __component__$2.exports;\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nvar _sfc_render$1 = function render4() {\n var _vm = this, _c = _vm._self._c;\n return _c(\"span\", _vm._b({ staticClass: \"material-design-icon upload-icon\", attrs: { \"aria-hidden\": _vm.title ? null : \"true\", \"aria-label\": _vm.title, \"role\": \"img\" }, on: { \"click\": function($event) {\n return _vm.$emit(\"click\", $event);\n } } }, \"span\", _vm.$attrs, false), [_c(\"svg\", { staticClass: \"material-design-icon__svg\", attrs: { \"fill\": _vm.fillColor, \"width\": _vm.size, \"height\": _vm.size, \"viewBox\": \"0 0 24 24\" } }, [_c(\"path\", { attrs: { \"d\": \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" } }, [_vm.title ? _c(\"title\", [_vm._v(_vm._s(_vm.title))]) : _vm._e()])])]);\n};\nvar _sfc_staticRenderFns$1 = [];\nvar __component__$1 = /* @__PURE__ */ normalizeComponent(\n _sfc_main$1,\n _sfc_render$1,\n _sfc_staticRenderFns$1,\n false,\n null,\n null\n);\nconst IconUpload = __component__$1.exports;\nconst _sfc_main = defineComponent({\n name: \"UploadPicker\",\n components: {\n IconCancel,\n IconFolderUpload,\n IconPlus,\n IconUpload,\n NcActionButton,\n NcActionCaption,\n NcActionSeparator,\n NcActions,\n NcButton,\n NcIconSvgWrapper,\n NcProgressBar\n },\n props: {\n accept: {\n type: Array,\n default: null\n },\n disabled: {\n type: Boolean,\n default: false\n },\n multiple: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the \"new\"-menu for this UploadPicker instance\n */\n noMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Allow to disable the button label\n */\n noLabel: {\n type: Boolean,\n default: false\n },\n /**\n * Make the \"New\"-button primary color.\n */\n primary: {\n type: Boolean,\n default: false\n },\n destination: {\n type: Folder,\n default: void 0\n },\n allowFolders: {\n type: Boolean,\n default: false\n },\n /**\n * List of file present in the destination folder\n * It is also possible to provide a function that takes a relative path to the current directory and returns the content of it\n * Note: If a function is passed it should return the current base directory when no path or an empty is passed\n */\n content: {\n type: [Array, Function],\n default: () => []\n },\n /**\n * Overwrite forbidden characters (by default the capabilities of the server are used)\n * @deprecated Deprecated and will be removed in the next major version\n */\n forbiddenCharacters: {\n type: Array,\n default: () => []\n }\n },\n setup() {\n return {\n t,\n // non reactive data / properties\n progressTimeId: `nc-uploader-progress-${Math.random().toString(36).slice(7)}`\n };\n },\n data() {\n return {\n newFileMenuEntries: [],\n openedMenu: false,\n uploadManager: getUploader()\n };\n },\n computed: {\n menuEntriesUpload() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.UploadFromDevice);\n },\n menuEntriesNew() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.CreateNew);\n },\n menuEntriesOther() {\n return this.newFileMenuEntries.filter((entry) => entry.category === NewMenuEntryCategory.Other);\n },\n /**\n * Check whether the current browser supports uploading directories\n * Hint: This does not check if the current connection supports this, as some browsers require a secure context!\n */\n canUploadFolders() {\n return this.allowFolders && \"webkitdirectory\" in document.createElement(\"input\");\n },\n queue() {\n return this.uploadManager.queue;\n },\n hasFailure() {\n return this.queue.some((upload2) => upload2.status === Status.FAILED);\n },\n isAssembling() {\n return this.queue.some((upload2) => upload2.status === Status.ASSEMBLING);\n },\n isUploading() {\n return this.queue.some((upload2) => upload2.status !== Status.CANCELLED);\n },\n isOnlyAssembling() {\n return this.isAssembling && this.queue.every((upload2) => (\n // ignore empty uploads or meta uploads\n upload2.size === 0 || upload2.status === Status.ASSEMBLING || upload2.status === Status.FINISHED\n ));\n },\n isPaused() {\n return this.uploadManager.info?.status === UploaderStatus.PAUSED;\n },\n buttonLabel() {\n return this.noMenu ? t(\"Upload\") : t(\"New\");\n },\n haveMenu() {\n return !((this.noMenu || this.newFileMenuEntries.length === 0) && !this.canUploadFolders);\n }\n },\n watch: {\n allowFolders: {\n immediate: true,\n handler() {\n if (typeof this.content !== \"function\" && this.allowFolders) {\n logger.error(\"[UploadPicker] Setting `allowFolders` is only allowed if `content` is a function\");\n }\n }\n },\n destination(destination) {\n this.setDestination(destination);\n },\n isPaused(isPaused) {\n if (isPaused) {\n this.$emit(\"paused\", this.queue);\n } else {\n this.$emit(\"resumed\", this.queue);\n }\n }\n },\n beforeMount() {\n if (this.destination) {\n this.setDestination(this.destination);\n }\n this.uploadManager.addNotifier(this.onUploadCompletion);\n useHotKey(\"u\", this.onKeyDown, {\n stop: true,\n prevent: true,\n shift: true\n });\n useHotKey(\"Escape\", this.onKeyDown, {\n stop: true,\n prevent: true\n });\n logger.debug(\"UploadPicker initialised\");\n },\n methods: {\n etaTimeAndSpeed() {\n const speed = this.uploadManager.eta.speedReadable;\n if (speed) {\n return `${this.uploadManager.eta.timeReadable} (${speed})`;\n }\n return this.uploadManager.eta.timeReadable;\n },\n /**\n * Handle clicking a new-menu entry\n * @param entry The entry that was clicked\n */\n async onClick(entry) {\n entry.handler(\n this.destination,\n await this.getContent().catch(() => [])\n );\n },\n /**\n * Trigger file picker\n * @param uploadFolders Upload folders\n */\n onTriggerPick(uploadFolders = false) {\n const input = this.$refs.input;\n if (this.canUploadFolders) {\n input.webkitdirectory = uploadFolders;\n }\n this.$nextTick(() => input.click());\n },\n /**\n * Helper for backwards compatibility that queries the content of the current directory\n * @param path The current path\n */\n async getContent(path) {\n return Array.isArray(this.content) ? this.content : await this.content(path);\n },\n /**\n * Start uploading\n */\n async onPick() {\n const input = this.$refs.input;\n const files = input.files ? Array.from(input.files) : [];\n try {\n await this.uploadManager.batchUpload(\"\", files, uploadConflictHandler(this.getContent));\n } catch (error) {\n logger.debug(\"Error while uploading\", { error });\n } finally {\n this.resetForm();\n }\n },\n resetForm() {\n const form = this.$refs.form;\n form?.reset();\n },\n /**\n * Cancel ongoing queue\n */\n onCancel() {\n this.uploadManager.queue.forEach((upload2) => {\n upload2.cancel();\n });\n this.resetForm();\n },\n setDestination(destination) {\n if (!this.destination) {\n logger.debug(\"Invalid destination\");\n return;\n }\n this.uploadManager.destination = destination;\n this.newFileMenuEntries = getNewFileMenuEntries(destination);\n },\n onUploadCompletion(upload2) {\n if (upload2.status === Status.FAILED) {\n this.$emit(\"failed\", upload2);\n } else {\n this.$emit(\"uploaded\", upload2);\n }\n },\n onKeyDown(event) {\n if (event.key === \"u\") {\n if (this.haveMenu) {\n this.openedMenu = true;\n return;\n }\n this.onTriggerPick();\n }\n if (event.key === \"Escape\" && this.openedMenu) {\n this.openedMenu = false;\n }\n }\n }\n});\nvar _sfc_render = function render5() {\n var _vm = this, _c = _vm._self._c;\n _vm._self._setupProxy;\n return _vm.destination ? _c(\"form\", { ref: \"form\", staticClass: \"upload-picker\", class: { \"upload-picker--uploading\": _vm.isUploading, \"upload-picker--paused\": _vm.isPaused }, attrs: { \"data-cy-upload-picker\": \"\" } }, [!_vm.haveMenu ? _c(\"NcButton\", { attrs: { \"aria-label\": _vm.buttonLabel, \"disabled\": _vm.disabled, \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }, !_vm.isUploading ? { key: \"default\", fn: function() {\n return [_vm._v(\" \" + _vm._s(_vm.buttonLabel) + \" \")];\n }, proxy: true } : null], null, true) }) : _c(\"NcActions\", { attrs: { \"aria-label\": _vm.buttonLabel, \"menu-name\": _vm.noLabel ? void 0 : _vm.buttonLabel, \"open\": _vm.openedMenu, \"type\": _vm.primary ? \"primary\" : \"secondary\" }, on: { \"update:open\": function($event) {\n _vm.openedMenu = $event;\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconPlus\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 1991456921) }, [_c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Upload from device\") } }), _c(\"NcActionButton\", { attrs: { \"data-cy-upload-picker-add\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-file\", \"close-after-click\": true }, on: { \"click\": function($event) {\n return _vm.onTriggerPick();\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 337456192) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload files\")) + \" \")]), _vm.canUploadFolders ? _c(\"NcActionButton\", { attrs: { \"close-after-click\": \"\", \"data-cy-upload-picker-add-folders\": \"\", \"data-cy-upload-picker-menu-entry\": \"upload-folder\" }, on: { \"click\": function($event) {\n return _vm.onTriggerPick(true);\n } }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconFolderUpload\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 931184598) }, [_vm._v(\" \" + _vm._s(_vm.t(\"Upload folders\")) + \" \")]) : _vm._e(), !_vm.noMenu ? _vm._l(_vm.menuEntriesUpload, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n }) : _vm._e(), !_vm.noMenu && _vm.menuEntriesNew.length > 0 ? [_c(\"NcActionSeparator\"), _c(\"NcActionCaption\", { attrs: { \"name\": _vm.t(\"Create new\") } }), _vm._l(_vm.menuEntriesNew, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e(), !_vm.noMenu && _vm.menuEntriesOther.length > 0 ? [_c(\"NcActionSeparator\"), _vm._l(_vm.menuEntriesOther, function(entry) {\n return _c(\"NcActionButton\", { key: entry.id, staticClass: \"upload-picker__menu-entry\", attrs: { \"icon\": entry.iconClass, \"close-after-click\": true, \"data-cy-upload-picker-menu-entry\": entry.id }, on: { \"click\": function($event) {\n return _vm.onClick(entry);\n } }, scopedSlots: _vm._u([entry.iconSvgInline ? { key: \"icon\", fn: function() {\n return [_c(\"NcIconSvgWrapper\", { attrs: { \"svg\": entry.iconSvgInline } })];\n }, proxy: true } : null], null, true) }, [_vm._v(\" \" + _vm._s(entry.displayName) + \" \")]);\n })] : _vm._e()], 2), _c(\"div\", { directives: [{ name: \"show\", rawName: \"v-show\", value: _vm.isUploading, expression: \"isUploading\" }], staticClass: \"upload-picker__progress\" }, [_c(\"NcProgressBar\", { attrs: { \"aria-label\": _vm.t(\"Upload progress\"), \"aria-describedby\": _vm.progressTimeId, \"data-cy-upload-picker-progress\": \"\", \"error\": _vm.hasFailure, \"value\": _vm.uploadManager.eta.progress, \"size\": \"medium\" } }), _c(\"p\", { attrs: { \"id\": _vm.progressTimeId, \"data-cy-upload-picker-progress-label\": \"\" } }, [_vm.isPaused ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"paused\")) + \" \")]) : _vm.isOnlyAssembling ? _c(\"span\", [_vm._v(\" \" + _vm._s(_vm.t(\"assembling\")) + \" \")]) : _c(\"span\", { attrs: { \"title\": _vm.etaTimeAndSpeed() } }, [_vm._v(\" \" + _vm._s(_vm.uploadManager.eta.timeReadable) + \" \"), _vm.uploadManager.eta.speedReadable && _vm.uploadManager.eta.time >= 60 ? _c(\"span\", [_vm._v(\" (\" + _vm._s(_vm.uploadManager.eta.speedReadable) + \") \")]) : _vm._e()])])], 1), _vm.isUploading && !_vm.isOnlyAssembling ? _c(\"NcButton\", { staticClass: \"upload-picker__cancel\", attrs: { \"type\": \"tertiary\", \"aria-label\": _vm.t(\"Cancel uploads\"), \"data-cy-upload-picker-cancel\": \"\" }, on: { \"click\": _vm.onCancel }, scopedSlots: _vm._u([{ key: \"icon\", fn: function() {\n return [_c(\"IconCancel\", { attrs: { \"size\": 20 } })];\n }, proxy: true }], null, false, 3076329829) }) : _vm._e(), _c(\"input\", { ref: \"input\", staticClass: \"hidden-visually\", attrs: { \"accept\": _vm.accept?.join?.(\", \"), \"multiple\": _vm.multiple, \"data-cy-upload-picker-input\": \"\", \"type\": \"file\" }, on: { \"change\": _vm.onPick } })], 1) : _vm._e();\n};\nvar _sfc_staticRenderFns = [];\nvar __component__ = /* @__PURE__ */ normalizeComponent(\n _sfc_main,\n _sfc_render,\n _sfc_staticRenderFns,\n false,\n null,\n \"a66c1264\"\n);\nconst UploadPicker = __component__.exports;\nexport {\n EtaStatus as E,\n Status as S,\n Upload as U,\n isFileSystemFileEntry as a,\n n as b,\n Uploader as c,\n UploaderStatus as d,\n getConflicts as e,\n uploadConflictHandler as f,\n getUploader as g,\n hasConflict as h,\n isFileSystemEntry as i,\n UploadPicker as j,\n logger as l,\n normalizeComponent as n,\n openConflictPicker as o,\n t,\n upload as u\n};\n//# sourceMappingURL=index-DPkUyJ8g.mjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1035\":\"da08d310d18692ca4e27\",\"1140\":\"dd55e1cf2dab9870eea9\",\"1764\":\"3654558a3474ec02b609\",\"2221\":\"5cdd551ed83d9a12c3ed\",\"2457\":\"ce6348bfa704a5bf56fb\",\"3145\":\"3908fb4074194097d3f5\",\"4271\":\"101cdb0f1357424796fd\",\"4723\":\"934c36402dc782526ac6\",\"5448\":\"71cfe268d6f1213c4735\",\"5862\":\"580b9c2e231a9169a12f\",\"6015\":\"8ac07126adf0759a3464\",\"6798\":\"55fb835b251fd3f7de19\",\"7471\":\"b4ac70873a3ab192efd0\",\"7859\":\"5bcb1bbacda3204063dd\",\"7910\":\"de857920f8beb5205bbc\",\"8815\":\"0f63c2eb085d7b08be1b\",\"9281\":\"29ef7f217a0c6b239922\",\"9906\":\"24447948ddfe6cf1ef05\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 2882;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t2882: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(62883)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","script","name","props","to","type","String","required","where","default","disabled","Boolean","data","nodes","waiting","observer","parent","watch","value","this$1","this","disable","$nextTick","teardownObserver","bootObserver","move","mounted","Array","from","$el","childNodes","maybeMove","beforeDestroy","getComponentChildrenNode","computed","classes","methods","document","querySelector","prepend","getFragment","appendChild","fragment","createDocumentFragment","forEach","node","onMutations","mutations","shouldMove","i","length","mutation","filteredAddedNodes","addedNodes","filter","includes","removedNodes","MutationObserver","observe","body","childList","subtree","attributes","characterData","childObserver","find","target","parentNode","removeChild","disconnect","$vnode","componentOptions","children","map","elm","normalizeComponent","template","style","scopeId","isFunctionalTemplate","moduleIdentifier","shadowMode","createInjector","createInjectorSSR","createInjectorShadow","hook","options","render","staticRenderFns","_compiled","functional","_scopeId","context","ssrContext","__VUE_SSR_CONTEXT__","call","_registeredComponents","add","_ssrRegister","$root","$options","shadowRoot","originalRender","h","existing","beforeCreate","concat","HEAD","isOldIE","navigator","test","userAgent","toLowerCase","id","css","group","media","styles","ids","Set","has","code","source","sources","btoa","unescape","encodeURIComponent","JSON","stringify","element","createElement","setAttribute","undefined","head","getElementsByTagName","push","styleSheet","cssText","join","index","size","textNode","createTextNode","insertBefore","addStyle","__vue_script__","__vue_render__","_vm","_h","$createElement","_self","_c","class","_t","_withStripped","__vue_component__","inject","install","Vue","installed","component","GlobalVue","window","use","emits","title","fillColor","Number","_b","staticClass","attrs","on","$event","$emit","$attrs","_v","_s","_e","width","ref","isWide","isMedium","isNarrow","ResizeObserver","contentBoxSize","inlineSize","contentRect","updateObserver","el","unobserve","useFileListWidth","onMounted","readonly","allViews","shallowRef","visibleViews","view","hidden","initialized","useViews","navigation","getNavigation","addEventListener","views","useVisibleViews","queue","getQueue","PQueue","concurrency","MoveCopyAction","loadState","Permission","NONE","HintException","Error","Directory","File","constructor","contents","super","_defineProperty","_contents","_computeDirectorySize","lastModified","Date","now","_computeDirectoryMtime","directory","reduce","acc","file","entry","async","traverseTree","isFile","Promise","resolve","reject","logger","debug","entries","dirReader","createReader","getEntries","readEntries","results","error","readDirectory","all","flat","createDirectoryIfNotExists","path","destination","davUrl","defaultRemoteURL","defaultRootPath","davRoot","root","davClient","getClient","exists","createDirectory","recursive","stat","details","getDefaultPropfind","emit","resultToNode","resolveConflict","files","conflicts","basename","uploads","selected","renamed","openConflictPicker","showInfo","t","info","warn","showWarning","dataTransferToFileTree","items","item","kind","getAsEntry","webkitGetAsEntry","warned","fileTree","DataTransferItem","getAsFile","showError","onDropExternalFiles","uploader","getUploader","hasConflict","uploadDirectoryContents","relativePath","upload","pause","start","errors","allSettled","result","status","showSuccess","onDropInternalFiles","isCopy","promises","fromAsync","method","overwrite","FileType","Folder","MOVE","some","dirname","startsWith","nameMapping","Map","otherNodes","getContents","getConflicts","nodesToRename","content","n","c","skipped","usedNames","newName","getUniqueName","ignoreFileExtension","set","actionFinished","mode","text","toast","showLoading","hideToast","createLoadingNotification","displayname","NodeStatus","LOADING","client","currentPath","destinationPath","get","COPY","copyFile","moveFile","response","parser","DOMParser","message","parseFromString","textContent","handleCopyMoveNodesTo","useDragAndDropStore","defineStore","state","dragging","actions","selection","reset","useSelectionStore","lastSelection","lastSelectedIndex","setLastIndex","useUploaderStore","args","store","defineComponent","components","NcActionButton","NcBreadcrumbs","NcBreadcrumb","NcIconSvgWrapper","setup","activeStore","useActiveStore","filesStore","useFilesStore","pathsStore","usePathsStore","draggingStore","selectionStore","uploaderStore","isMenuOpen","activeFolder","isSharingEnabled","getCapabilities","files_sharing","isPublic","isPublicShare","canShare","permissions","SHARE","openSharingSidebar","getSidebar","open","mdiAccountPlus","mdiChevronDown","mdiChevronUp","mdiReload","dirs","split","replace","sections","dir","getFileSourceFromPath","getNodeFromSource","exact","getDirDisplayName","getTo","disableDrop","isUploadInProgress","wrapUploadProgressBar","viewIcon","activeView","icon","selectedFiles","draggingFiles","getNode","getPath","$route","params","query","fileid","onDragOver","event","dataTransfer","ctrlKey","dropEffect","onDrop","preventDefault","controller","AbortController","signal","folder","canDrop","CREATE","button","titleForSection","section","ariaForSection","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","_setupProxy","scopedSlots","_u","key","fn","proxy","_l","nativeOn","TrayArrowDownIcon","currentFolder","Object","dragover","canUpload","isQuotaExceeded","cantUploadLabel","resetDragOver","debounce","mainContent","getElementById","onDragLeave","onContentDrop","beforeUnmount","removeEventListener","isForeignFile","types","currentTarget","contains","relatedTarget","clear","stopPropagation","lastUpload","findLast","UploadStatus","FAILED","webkitRelativePath","headers","$router","directives","rawName","expression","isFileListFilterWithUi","useFiltersStore","chips","filters","activeChips","values","sortedFilters","sort","a","b","order","filtersWithUI","addFilter","onFilterUpdateChips","onFilterUpdate","detail","registry","getFilesRegistry","initialFilters","getFileListFilters","filterId","findIndex","splice","removeFilter","subscribe","onViewChanged","initialize","_defineComponent","__name","__props","filterStore","visualFilters","hasActiveFilters","selectedFilter","boundary","__sfc","menuTriggerId","mdiArrowLeft","mdiFilterVariant","NcButton","NcPopover","_setup","$style","fileListFilters","iconSvgInline","displayName","fileListFilters__popoverContainer","tagName","tag","domProps","fileListFilters__popoverFilterView","Function","updateRootElement","currentView","replaceChildren","openedSubmenu","enabledSubmenuActions","enabledFileActions","record","action","isValidMenu","onBackToMenuClick","menuAction","$refs","focus","executeAction","currentNode","activeNode","_children","enabled","activeAction","success","exec","ArrowLeftIcon","CustomElementRender","NcActions","NcActionSeparator","NcLoadingIcon","mixins","actionsMixins","opened","gridMode","isActive","isLoading","actionContext","enabledInlineActions","inline","enabledRenderActions","renderInline","enabledMenuActions","DefaultType","HIDDEN","self","topActionsIds","renderedNonDestructiveActions","destructive","renderedDestructiveActions","openedMenu","getBoundariesElement","created","useHotKey","onKeyDown","stop","prevent","actionDisplayName","isLoadingAction","onActionClick","onMenuClose","onMenuClosed","refInFor","NcCheckboxRadioSwitch","keyboardStore","altKey","metaKey","shiftKey","onEvent","_initialized","useKeyboardStore","isSelected","ariaLabel","loadingLabel","onToggleSelect","ctrl","shift","onSelectionChange","newSelectedIndex","isAlreadySelected","Math","min","end","max","filesToSelect","slice","resetSelection","indexOf","_k","keyCode","apply","arguments","useRenamingStore","renamingNode","newNodeName","isRenaming","$reset","rename","oldName","trim","userConfig","useUserConfigStore","show_dialog_file_extension","oldExtension","extname","newExtension","promise","withResolvers","spawnDialog","defineAsyncComponent","showFileExtensionDialog","show_hidden","filename","showHiddenFileDialog","oldEncodedSource","encodedSource","axios","url","Destination","Overwrite","fetchNode","oldSource","isAxiosError","cause","getFilenameValidity","escape","validateFilename","InvalidFilenameError","reason","InvalidFilenameErrorReason","Character","char","segment","ReservedName","Extension","match","extension","NcTextField","renamingStore","userConfigStore","defaultFileAction","isRenamingSmallScreen","renameLabel","linkTo","is","tabindex","immediate","handler","renaming","startRenaming","input","renameInput","validity","checkIfNodeExists","setCustomValidity","reportValidity","sourceName","setSelectionRange","dispatchEvent","Event","stopRenaming","onRename","renameForm","checkValidity","nameContainer","model","callback","$$v","show_files_extensions","StarSvg","mdiPlus","usePreviewImage","toValue","fallback","mime","previewUrl","generateUrl","URL","location","origin","href","crop","sizeX","sizeY","token","getSharingToken","searchParams","toString","etag","mtime","getTime","AccountGroupIcon","AccountPlusIcon","CollectivesIcon","FavoriteIcon","FileIcon","FolderIcon","FolderOpenIcon","KeyIcon","LinkIcon","NetworkIcon","TagIcon","RecentlyCreatedIcon","toRef","crop_image_previews","backgroundFailed","backgroundLoaded","isFavorite","favorite","isRecentlyCreated","crtime","oneDayAgo","setDate","getDate","isRecentView","fileOverlay","PlayCircleIcon","folderOverlay","shareTypes","ShareType","Link","Email","hasBlurhash","canvas","drawBlurhash","previewImg","src","onBackgroundLoad","onBackgroundError","height","pixels","decode","ctx","getContext","imageData","createImageData","putImageData","_m","useFileActions","getFileActions","useRouteParameters","route","useRoute","fileId","parseInt","isNaN","openFile","openfile","toLocaleLowerCase","openDetails","opendetails","useActionsMenuStore","available","sidebar","hotkey","description","getSummaryFor","fileCount","folderCount","summary","fileSummary","folderSummary","hiddenSummary","extend","FileMultipleIcon","isSingleNode","isSingleFolder","totalSize","total","formatFileSize","update","preview","cloneNode","Preview","DragAndDropPreview","directive","vOnClickOutside","NcFile","Node","isMtimeAvailable","compact","provide","uniqueId","str","hash","charCodeAt","hashCode","currentRouteFileId","isFailedSource","canDrag","UPDATE","every","actionsMenuStore","mtimeOpacity","maxOpacityTime","timeDiff","opacityTime","color","round","newSource","resetState","closest","removeProperty","onRightClick","getBoundingClientRect","setProperty","clientX","left","clientY","top","isMoreThanOneSelected","execDefaultAction","metaKeyPressed","READ","downloadAttribute","parse","scope","isDownloadable","openDetailsIfAvailable","sidebarAction","onDragStart","clearData","image","$mount","$on","$off","getDragAndDropPreview","setDragImage","onDragEnd","cachedContents","getNodesByPath","FileEntryActions","FileEntryCheckbox","FileEntryName","FileEntryPreview","NcDateTime","FileEntryMixin","isMimeAvailable","isSizeAvailable","storeToRefs","rowListeners","dragstart","contextmenu","dragleave","dragend","drop","columns","OC","MimeTypeList","names","baseType","ext","toUpperCase","sizeOpacity","pow","triggerDefaultAction","adaptColumnRenderToCustomElementRender","column","_g","inheritAttrs","r","_sfc_main","ariaLabelClose","actionsContainer","validator","iconPath","iconSvg","noClose","variant","slots","realVariant","canClose","hasActions","hasIcon","mdiClose","_sfc_render","_sfc_staticRenderFns","NcChip","exports","NcAvatar","fileListFilterChips","chip","onclick","user","searchStore","useSearchStore","getPinia","isVisible","onClick","header","queueUpdate","initialRender","mount","then","catch","destroyed","updated","classForColumn","FILE_LIST_HEAD_FIRST_BATCH_ACTION_ID","selectedNodes","boundariesElement","inlineActions","loading","execBatch","childrenActionsIds","menuActions","areSomeNodesLoading","firstActionId","at","firstButton","actionsMenu","onFirstButtonFocusOut","selectionSources","$set","failedSources","e","FILES_LIST_HEADER_SELECT_ALL_CHECKBOX_ID","translate","idx","initialViewConfig","useViewConfigStore","viewConfigs","getCurrentUser","put","viewId","onUpdate","getConfig","viewid","setSortingBy","toggleSortingDirection","sorting_direction","mapState","sortingMode","sorting_mode","defaultSortKey","isAscSorting","sortingDirection","toggleSortBy","MenuDown","MenuUp","filesSortingMixin","FilesListTableHeaderButton","selectAllBind","label","checked","isAllSelected","indeterminate","isSomeSelected","isNoneSelected","onToggleAll","selectAllCheckbox","onSelectAllCheckboxFocusOut","ariaSortForMode","firstBatchActionButton","dataComponent","dataKey","dataSources","extraProps","scrollToIndex","caption","fileListWidth","beforeHeight","footerHeight","headerHeight","tableHeight","resizeObserver","isReady","bufferItems","columnCount","itemHeight","itemWidth","visibleRows","floor","rowCount","startIndex","firstColumnIndex","shownItems","renderedItems","oldItemsKeys","$_recycledPool","unusedKeys","keys","pop","random","substr","totalRowCount","ceil","tbodyStyle","rowsAbove","rowsBelow","paddingBlock","minHeight","scrollTo","oldColumnCount","updateHeightVariables","onScroll","before","footer","lastVisibleIndex","totalRows","clampedIndex","scrollTop","indexToScrollPos","_onScrollHandle","requestAnimationFrame","scrollPosToIndex","scrollPos","topScroll","clientHeight","theadHeight","thead","filterHeight","$scopedSlots","sorted","FileListFilterChips","FileListFilterToSearch","FilesListHeader","FilesListTableFooter","FilesListTableHeader","VirtualList","FilesListTableHeaderActions","View","show_mime_column","getFileListHeaders","FileEntry","FileEntryGrid","cantUpload","defaultCaption","isEmpty","handleOpenQueries","unselectFile","handleOpenFile","openSidebarForFile","scrollToFile","defaultAction","useEnabledFileActions","OCP","Files","Router","goToRoute","tableElement","table","tableTop","tableBottom","grid_view","setActiveNode","nextIndex","nextNode","count","useSidebarStore","activeTab","isOpen","hasContext","currentContext","currentActions","getActions","currentTabs","getTabs","tabId","setActiveTab","newTabs","close","tabs","getSidebarTabs","tab","getSidebarActions","_router","afterEach","defaultView","default_view","quota","BreadCrumbs","DragAndDropNotice","FileListFilters","FilesListVirtual","ListViewIcon","NcAppContent","NcEmptyContent","Teleport","UploadPicker","ViewGridIcon","IconAlertCircleOutline","IconReload","filtersStore","viewConfigStore","enableGridView","forbiddenCharacters","dirContents","enabledFileListActions","getFileListActions","useEnabledFileListActions","stopWatching","nextTick","loadingAction","dirContentsFiltered","getContent","normalizedPath","normalize","pageHeading","dirContentsSorted","customColumn","reverse","sortNodes","sortFavoritesFirst","sort_favorites_first","sortFoldersFirst","sort_folders_first","sortingOrder","aa","relative","bb","isEmptyDir","isRefreshing","toPreviousDir","gridViewButtonLabel","showCustomEmptyView","emptyView","debouncedFetchContent","useThrottleFn","fetchContent","show","customEmptyView","newView","oldView","newDir","oldDir","filesListVirtual","filterDirContent","onUpdatedNode","onUpdateSearch","unmounted","unsubscribe","once","abort","updateNodes","setRoot","service","addPath","fatal","isWebDAVClientError","humanizeWebDAVError","onUpload","onUploadFail","CANCELLED","doc","toggleGridView","execFileListAction","emptyTitle","emptyCaption","getRemoteURL","Intl","Collator","getLanguage","getCanonicalLocale","numeric","usage","collator","level","viewConfig","isExpanded","expanded","childViews","v","isDescendant","parentView","sortedChildViews","compare","hasChildViews","navigationRoute","childViewsLoaded","loadChildViews","maxLevel","onExpandCollapse","NcAppNavigationItem","sticky","childView","rootViews","sortViews","NcAppNavigationList","FilesNavigationListItem","filesNavigationList","remove","useRouter","beforeResolve","next","VIEW_ID","onUnmounted","onBeforeNavigation","isSearchView","searchLabel","mdiMagnify","mdiSearchWeb","NcAppNavigationSearch","throttle","delay","timeoutID","_ref","_ref$noTrailing","noTrailing","_ref$noLeading","noLeading","_ref$debounceMode","debounceMode","cancelled","lastExec","clearExistingTimeout","clearTimeout","wrapper","_len","arguments_","_key","elapsed","setTimeout","cancel","_ref2$upcomingOnly","upcomingOnly","ChartPie","NcProgressBar","loadingStorageStats","storageStats","storageStatsTitle","usedQuotaByte","used","quotaByte","storageStatsTooltip","beforeMount","throttleUpdateStorageStats","free","showStorageFullWarning","debounceUpdateStorageStats","_ref$atBegin","atBegin","updateStorageStats","slot","NcAppSettingsSection","NcFormBox","NcFormBoxSwitch","mdiAccountOutline","mdiFolderOutline","NcRadioGroup","NcRadioGroupButton","folder_tree","setting","onBeforeMount","onBeforeUnmount","apiSettings","OCA","Settings","settings","localeCompare","FilesAppSettingsLegacyApiEntry","actionHotkeys","hotkeyToString","parts","alt","NcAppSettingsShortcutsSection","NcHotkey","NcHotkeyList","show_dialog_deletion","webDavUrl","generateRemoteUrl","uid","webDavDocsUrl","appPasswordUrl","isTwoFactorEnabled","NcFormBoxButton","NcFormBoxCopyButton","showKeyboardShortcuts","scrollIntoView","behavior","NcAppSettingsDialog","FilesAppSettingsAppearance","FilesAppSettingsGeneral","FilesAppSettingsLegacyApi","FilesAppSettingsShortcuts","FilesAppSettingsWarnings","FilesAppSettingsWebDav","settingsOpened","currentViewId","watchEffect","setActive","NcAppNavigation","IconCog","FilesNavigationList","FilesNavigationSearch","NavigationQuota","FilesAppSettings","isFavourited","mdiStar","NcUserBubble","filesSidebarSubname","filesSidebarSubname__separator","owner","filesSidebarSubname__userBubble","N","Symbol","toStringTag","initializedTabs","active","clone","onInit","customElements","whenDefined","NcAppSidebarTab","background","Image","onload","onClosed","onOpened","onToggle","NcAppSidebar","FilesSidebarSubname","FilesSidebarTab","router","old","new","useHotKeys","NcContent","FilesList","FilesNavigation","FilesSidebar","originalPush","prototype","ignoreDuplicateNavigation","originalReplace","isNavigationFailure","NavigationFailureType","duplicated","base","linkActiveClass","routes","redirect","stringifyQuery","queryString","onError","aborted","parentIntercept","fromDir","toDir","fromSource","currentRoute","parentFolder","RouterService","goTo","__webpack_nonce__","getCSPNonce","assign","PiniaVuePlugin","_settings","register","Setting","_classPrivateFieldInitSpec","_name","_options","_classPrivateFieldSet","_classPrivateFieldGet","FilesApp","pinia","getRootPath","propfindPayload","contentsResponse","getDirectoryContents","includeSelf","defaultGetContents","getDirectoryByPath","rootPath","searchNodes","getLocalSearch","search","getDavNameSpaces","getDavProperties","escapeHTML","getBaseUrl","dummyFolder","onDeletedNode","onChangedView","roots","getNodes","getNodesById","getRoot","newNodes","deleteNodes","fromEntries","ourNode","_nc_files_pinia","createPinia","paths","getters","payload","deletePath","delete","onCreatedNode","addNodeToParentChildren","deleteNodeFromParentChildren","onMovedNode","oldPath","oldNode","parentSource","updateSearch","current","updateRouter","isSearch","initialUserConfig","___CSS_LOADER_EXPORT___","module","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","s","davProperties","prop","davNamespaces","ns","getRecentSearch","remoteURL","setHeaders","requesttoken","patch","headers2","fetch","getFavoriteNodes","filesRoot","userId","permString","P","WRITE","DELETE","parsePermissions","lastmod","creationdate","nodeData","getcontentlength","hasPreview","gtBuilder","detectLocale","addTranslation","locale","json","gt","ngettext","bind","gettext","UploadCancelledError","uploadData","uploadData2","uploadOptions","onUploadProgress","onUploadRetry","retries","Blob","destinationFile","request","retryDelay","retryCount","retryCondition","onRetry","getChunk","getMaxChunksSize","fileSize","maxChunkSize","appConfig","max_chunk_size","minimumChunkSize","Status","Status2","Upload","_source","_file","_isChunked","_chunks","_size","_uploaded","_startTime","_status","_controller","_response","chunked","chunks","isChunked","startTime","uploaded","isFileSystemFileEntry","o","FileSystemFileEntry","isFileSystemEntry","FileSystemEntry","_originalName","_path","sum","latest","originalName","getChild","addChildren","addChild","FileSystemDirectoryEntry","reader","child","filePath","relPath","Eta","_done","_total","_progress","_elapsedTime","_speed","_eta","Infinity","_cutoffTime","resume","cutoffTime","done","deltaDone","deltaTime","historyNeeded","alpha","filtered","eta","dispatchTypedEvent","CustomEvent","cancelable","progress","time","timeReadable","seconds","hours","padStart","minutes","speed","speedReadable","UploaderStatus","UploaderStatus2","Uploader","_destinationFolder","_isPublic","_customHeaders","_uploadQueue","_jobQueue","chunked_upload","max_parallel_count","_queueSize","_queueProgress","_queueStatus","_notifiers","destinationFolder","ALL","maxChunksSize","customHeaders","structuredClone","setCustomHeader","deleteCustomerHeader","updateStats","upload2","partialSum","pending","INITIALIZED","UPLOADING","ASSEMBLING","addNotifier","notifier","_notifyAll","batchUpload","files2","onCancel","rootFolder","uploadDirectory","FINISHED","folderPath","currentUpload","selectedForUpload","directories","fileHandle","encodedDestinationFile","resolve2","supportsPublicChunking","dav","public_shares_chunking","disabledChunkUpload","blob","bytes","_mtimeHeader","tempUrl","chunksWorkspace","initChunkWorkspace","chunksQueue","chunk","bufferStart","bufferEnd","request2","chunkBytes","progressBytes","onIdle","forceRecreate","_nc_uploader","contentNames","ConflictPicker","picker","recursiveUpload","submit","$destroy","showInvalidFilenameDialog","InvalidFilenameDialog","rest","skip","scriptExports","render6","functionalTemplate","injectStyles","IconCancel","IconFolderUpload","IconPlus","IconUpload","NcActionCaption","accept","multiple","noMenu","noLabel","primary","allowFolders","progressTimeId","newFileMenuEntries","uploadManager","menuEntriesUpload","category","UploadFromDevice","menuEntriesNew","CreateNew","menuEntriesOther","Other","canUploadFolders","hasFailure","isAssembling","isUploading","isOnlyAssembling","isPaused","PAUSED","buttonLabel","haveMenu","setDestination","onUploadCompletion","etaTimeAndSpeed","onTriggerPick","uploadFolders","webkitdirectory","click","isArray","onPick","contentsCallback","filesToUpload","defineProperty","resetForm","form","iconClass","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","loaded","__webpack_modules__","m","O","chunkIds","priority","notFulfilled","fulfilled","j","getter","__esModule","definition","enumerable","f","chunkId","u","obj","hasOwnProperty","l","needAttach","scripts","getAttribute","charset","onScriptComplete","prev","onerror","timeout","doneFns","nmd","scriptUrl","globalThis","importScripts","currentScript","p","baseURI","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/files-sidebar.js b/dist/files-sidebar.js index bb08d09edbe86..62939883c33a0 100644 --- a/dist/files-sidebar.js +++ b/dist/files-sidebar.js @@ -1,2 +1,2 @@ -(()=>{var e,t={91028(e,t,o){"use strict";var i=o(10810),n=o(61338),r=o(35810),d=o(85471);const a=(0,o(35947).YK)().setApp("files").detectUser().build();var s=o(21777),l=o(63814),c=o(9487),u=o(44719),v=o(70970);const p=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],f={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"};function h(){return(0,c.f)()?`/files/${(0,c.G)()}`:`/files/${(0,s.HW)()?.uid}`}const b=h();function m(){const e=(0,l.dC)("dav");return(0,c.f)()?e.replace("remote.php","public.php"):e}const w=m();const g=new r.vd({id:0,source:m()+h(),root:h(),owner:(0,s.HW)()?.uid||null,permissions:r.aX.NONE}),y=(0,i.nY)("active",()=>{const e=(0,d.IJ)(),t=(0,d.KR)(),o=(0,d.IJ)(),i=(0,d.KR)(g);function s(e){t.value&&t.value.source===e.source&&(t.value=void 0)}function l(e=null){a.debug("Setting active view",{view:e}),o.value=e??void 0,t.value=void 0}return(0,d.wB)(t,()=>{"number"==typeof t.value?.fileid&&t.value.fileid!==i.value?.fileid&&(a.debug("Updating active fileid in URL query",{fileid:t.value.fileid}),window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:String(t.value.fileid)},{...window.OCP.Files.Router.query},!0))}),function(){const e=(0,r.bh)();l(e.active),(0,n.B1)("files:node:deleted",s),e.addEventListener("updateActive",e=>{l(e.detail)})}(),{activeAction:e,activeFolder:i,activeNode:t,activeView:o}}),P=function(e=w,t={}){const o=(0,u.UU)(e,{headers:t});function i(e){o.setHeaders({...t,"X-Requested-With":"XMLHttpRequest",requesttoken:e??""})}return(0,s.zo)(i),i((0,s.do)()),(0,u.Gu)().patch("fetch",(e,t)=>{const o=t.headers;return o?.method&&(t.method=o.method,delete o.method),fetch(e,t)}),o}();async function N(e){const t=`\n\t\t`xmlns:${e}="${v.s.davNamespaces?.[e]}"`).join(" ")}>\n\t\t\t\n\t\t\t\t${v.s.davProperties??=[...p],v.s.davProperties.map(e=>`<${e} />`).join(" ")}\n\t\t\t\n\t\t`;return function(e,t=b,o=w){let i=(0,s.HW)()?.uid;if((0,c.f)())i=i??"anonymous";else if(!i)throw new Error("No user id found");const n=e.props,r=function(e=""){let t=v.P.NONE;return e?(e.includes("G")&&(t|=v.P.READ),e.includes("W")&&(t|=v.P.WRITE),e.includes("CK")&&(t|=v.P.CREATE),e.includes("NV")&&(t|=v.P.UPDATE),e.includes("D")&&(t|=v.P.DELETE),e.includes("R")&&(t|=v.P.SHARE),t):t}(n?.permissions),d=String(n?.["owner-id"]||i),a=n.fileid||0,l=new Date(Date.parse(e.lastmod)),u=new Date(Date.parse(n.creationdate)),p={id:a,source:`${o}${e.filename}`,mtime:isNaN(l.getTime())||0===l.getTime()?void 0:l,crtime:isNaN(u.getTime())||0===u.getTime()?void 0:u,mime:e.mime||"application/octet-stream",displayname:void 0!==n.displayname?String(n.displayname):void 0,size:n?.size||Number.parseInt(n.getcontentlength||"0"),status:a<0?v.c.FAILED:void 0,permissions:r,owner:d,root:t,attributes:{...e,...n,hasPreview:n?.["has-preview"]}};return delete p.attributes?.props,"file"===e.type?new v.a(p):new v.b(p)}((await P.stat(`${h()}${e}`,{details:!0,data:t})).data)}var O=o(71225);const R=(0,i.nY)("files",()=>{const e=(0,d.KR)({}),t=(0,d.KR)({});function o(t){return e.value[t]}function s(t){return t.map(t=>e.value[t]).filter(Boolean)}function l(t){return Object.values(e.value).filter(e=>e.id===t)}function c(e){return t.value[e]}function u(e,t){const s=function(...e){const t=R(...e),o=(0,i.nY)("paths",{state:()=>({paths:{}}),getters:{getPath:e=>(t,o)=>{if(e.paths[t])return e.paths[t][o]}},actions:{addPath(e){this.paths[e.service]||d.Ay.set(this.paths,e.service,{}),d.Ay.set(this.paths[e.service],e.path,e.source)},deletePath(e,t){this.paths[e]&&d.Ay.delete(this.paths[e],t)},onCreatedNode(e){const t=(0,r.bh)()?.active?.id||"files";e.fileid?(e.type===r.pt.Folder&&this.addPath({service:t,path:e.path,source:e.source}),this.addNodeToParentChildren(e)):a.error("Node has no fileid",{node:e})},onDeletedNode(e){const t=(0,r.bh)()?.active?.id||"files";e.type===r.pt.Folder&&this.deletePath(t,e.path),this.deleteNodeFromParentChildren(e)},onMovedNode({node:e,oldSource:t}){const o=(0,r.bh)()?.active?.id||"files";if(e.type===r.pt.Folder){const i=Object.entries(this.paths[o]).find(([,e])=>e===t);i?.[0]&&this.deletePath(o,i[0]),this.addPath({service:o,path:e.path,source:e.source})}const i=new r.ZH({source:t,owner:e.owner,mime:e.mime,root:e.root});this.deleteNodeFromParentChildren(i),this.addNodeToParentChildren(e)},deleteNodeFromParentChildren(e){const o=(0,r.bh)()?.active?.id||"files",i=(0,O.pD)(e.source),n="/"===e.dirname?t.getRoot(o):t.getNode(i);if(n){const t=new Set(n._children??[]);return t.delete(e.source),d.Ay.set(n,"_children",[...t.values()]),void a.debug("Children updated",{parent:n,node:e,children:n._children})}a.debug("Parent path does not exists, skipping children update",{node:e})},addNodeToParentChildren(e){const o=(0,r.bh)()?.active?.id||"files",i=(0,O.pD)(e.source),n="/"===e.dirname?t.getRoot(o):t.getNode(i);if(n){const t=new Set(n._children??[]);return t.add(e.source),d.Ay.set(n,"_children",[...t.values()]),void a.debug("Children updated",{parent:n,node:e,children:n._children})}a.debug("Parent path does not exists, skipping children update",{node:e})}}})(...e);return o._initialized||((0,n.B1)("files:node:created",o.onCreatedNode),(0,n.B1)("files:node:deleted",o.onDeletedNode),(0,n.B1)("files:node:moved",o.onMovedNode),o._initialized=!0),o}();let l;if(t&&"/"!==t){const i=s.getPath(e,t);i&&(l=o(i))}else l=c(e);return l}function v(t){const o=t.reduce((t,o)=>e.value[o.source]?.id&&!o.id?(a.error("Trying to update/set a node without id",{node:o}),t):(t[o.source]=o,t),{});e.value={...e.value,...o}}function p(t){const o=Object.entries(e.value).filter(([,e])=>!t.some(t=>t.source===e.source));e.value=Object.fromEntries(o)}return(0,n.B1)("files:node:created",function(e){v([e])}),(0,n.B1)("files:node:deleted",function(e){p([e])}),(0,n.B1)("files:node:updated",async function(e){const t=e.id?l(e.id):s([e.source]);if(t.length>1)return await Promise.all(t.map(e=>N(e.path))).then(v),void a.debug(t.length+" nodes updated in store",{fileid:e.id,source:e.source});1!==t.length||e.source!==t[0].source?N(e.path).then(e=>v([e])):v([e])}),(0,n.B1)("files:node:moved",function({node:t,oldSource:o}){delete e.value[o],v([t])}),(0,n.B1)("files:favorites:added",function(e){const t=o(e.source);t&&d.Ay.set(t.attributes,"favorite",1)}),(0,n.B1)("files:favorites:removed",function(e){const t=o(e.source);t&&d.Ay.set(t.attributes,"favorite",0)}),{files:e,roots:t,deleteNodes:p,getDirectoryByPath:u,getNode:o,getNodes:s,getNodesById:l,getNodesByPath:function(e,t){const i=u(e,t);return(i?._children??[]).map(e=>o(e)).filter(Boolean)},getRoot:c,setRoot:function({service:e,root:o}){t.value={...t.value,[e]:o}},updateNodes:v}}),C=(0,i.nY)("sidebar",()=>{const e=(0,d.KR)(),t=(0,d.KR)(!1),o=y(),i=(0,d.EW)(()=>t.value?o.activeNode:void 0),s=(0,d.EW)(()=>!!(i.value&&o.activeFolder&&o.activeView)),l=(0,d.EW)(()=>{if(s.value)return{node:i.value,folder:o.activeFolder,view:o.activeView}}),c=(0,d.EW)(()=>l.value?h(l.value):[]),u=(0,d.EW)(()=>l.value?f(l.value):[]);function v(n,r){if(!(n&&o.activeFolder&&o.activeView))throw a.debug("sidebar: cannot open sidebar because the active folder or view is not set.",{node:n,activeFolder:o.activeFolder,activeView:o.activeView}),new Error("Cannot open sidebar because the active folder or view is not set.");if(t.value&&i.value?.source===n.source)return a.debug("sidebar: already open for current node"),void(r&&(a.debug("sidebar: already open for current node - switching tab",{tabId:r}),b(r)));const d=f({node:n,folder:o.activeFolder,view:o.activeView});r&&!d.find(({id:e})=>e===r)?(a.warn(`sidebar: cannot open tab '${r}' because it is not available for the current context.`),e.value=d[0]?.id):e.value=r??d[0]?.id,a.debug(`sidebar: opening for ${n.displayname}`,{node:n}),o.activeNode=n,t.value=!0}function p(){t.value=!1}function f(e){let t=(0,r.Dn)();return e&&(t=t.filter(t=>void 0===t.enabled||t.enabled(e))),t.sort((e,t)=>e.order-t.order)}function h(e){let t=(0,r._2)();return e&&(t=t.filter(t=>void 0===t.enabled||t.enabled(e))),t.sort((e,t)=>e.order-t.order)}function b(t){if(!u.value.find(({id:e})=>e===t))throw new Error(`Cannot set sidebar tab '${t}' because it is not available for the current context.`);e.value=t}(0,n.B1)("files:node:updated",e=>{e.source===i.value?.source&&(o.activeNode=e)}),(0,n.B1)("files:node:deleted",e=>{e.fileid===i.value?.fileid&&p()}),(0,n.B1)("viewer:sidebar:open",({source:e})=>{const t=R().getNode(e);t?(a.debug("sidebar: opening for node from Viewer.",{node:t}),v(t)):a.error(`sidebar: cannot open for node '${e}' because it was not found in the current view.`)});let m=!1;return(0,n.B1)("files:list:updated",()=>{m||(m=!0,window.OCP.Files.Router._router.afterEach((e,t)=>{t.query&&"opendetails"in t.query&&e.query&&!("opendetails"in e.query)&&(a.debug('sidebar: closing because "opendetails" query parameter was removed from URL.'),p())}))}),(0,d.wB)(t,e=>{const t={...window.OCP?.Files?.Router?.params??{}},i={...window.OCP?.Files?.Router?.query??{}};a.debug("sidebar: current node changed: "+(e?"open":"closed"),{query:i,params:t,node:o.activeNode}),!e&&"opendetails"in i&&(delete i.opendetails,window.OCP.Files.Router.goToRoute(null,t,i,!0)),e&&!("opendetails"in i)&&window.OCP.Files.Router.goToRoute(null,t,{...i,opendetails:"true"},!0)}),{activeTab:e,currentActions:c,currentContext:l,currentNode:i,currentTabs:u,hasContext:s,isOpen:(0,d.tB)(t),open:v,close:p,getActions:h,getTabs:f,setActiveTab:b}});window.OCA.Files??={},window.OCA.Files._sidebar=()=>C((window._nc_files_pinia||(window._nc_files_pinia=(0,i.Ey)()),window._nc_files_pinia))},63779(){},77199(){}},o={};function i(e){var n=o[e];if(void 0!==n)return n.exports;var r=o[e]={id:e,loaded:!1,exports:{}};return t[e].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=t,e=[],i.O=(t,o,n,r)=>{if(!o){var d=1/0;for(c=0;c=r)&&Object.keys(i.O).every(e=>i.O[e](o[s]))?o.splice(s--,1):(a=!1,r0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[o,n,r]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var o in t)i.o(t,o)&&!i.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},i.e=()=>Promise.resolve(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=4763,(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={4763:0};i.O.j=t=>0===e[t];var t=(t,o)=>{var n,r,[d,a,s]=o,l=0;if(d.some(t=>0!==e[t])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(s)var c=s(i)}for(t&&t(o);li(91028));n=i.O(n)})(); -//# sourceMappingURL=files-sidebar.js.map?v=e977f6a84fc8a62ffea4 \ No newline at end of file +(()=>{var e,t={91028(e,t,o){"use strict";var i=o(10810),n=o(61338),r=o(35810),d=o(85471);const a=(0,o(35947).YK)().setApp("files").detectUser().build();var s=o(21777),l=o(63814),c=o(9487),u=o(44719),v=o(70970);const p=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],f={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"};function h(){return(0,c.f)()?`/files/${(0,c.G)()}`:`/files/${(0,s.HW)()?.uid}`}const b=h();function w(){const e=(0,l.dC)("dav");return(0,c.f)()?e.replace("remote.php","public.php"):e}const m=w();const g=new r.vd({id:0,source:w()+h(),root:h(),owner:(0,s.HW)()?.uid||null,permissions:r.aX.NONE}),y=(0,i.nY)("active",()=>{const e=(0,d.IJ)(),t=(0,d.KR)(),o=(0,d.IJ)(),i=(0,d.KR)(g);function s(e){t.value&&t.value.source===e.source&&(t.value=void 0)}function l(e=null){a.debug("Setting active view",{view:e}),o.value=e??void 0,t.value=void 0}return(0,d.wB)(t,()=>{"number"==typeof t.value?.fileid&&t.value.fileid!==i.value?.fileid&&(a.debug("Updating active fileid in URL query",{fileid:t.value.fileid}),window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:String(t.value.fileid)},{...window.OCP.Files.Router.query},!0))}),function(){const e=(0,r.bh)();l(e.active),(0,n.B1)("files:node:deleted",s),e.addEventListener("updateActive",e=>{l(e.detail)})}(),{activeAction:e,activeFolder:i,activeNode:t,activeView:o}}),N=function(e=m,t={}){const o=(0,u.UU)(e,{headers:t});function i(e){o.setHeaders({...t,"X-Requested-With":"XMLHttpRequest",requesttoken:e??""})}return(0,s.zo)(i),i((0,s.do)()),(0,u.Gu)().patch("fetch",(e,t)=>{const o=t.headers;return o?.method&&(t.method=o.method,delete o.method),fetch(e,t)}),o}();async function P(e){const t=`\n\t\t`xmlns:${e}="${v.s.davNamespaces?.[e]}"`).join(" ")}>\n\t\t\t\n\t\t\t\t${v.s.davProperties??=[...p],v.s.davProperties.map(e=>`<${e} />`).join(" ")}\n\t\t\t\n\t\t`;return function(e,t=b,o=m){let i=(0,s.HW)()?.uid;if((0,c.f)())i=i??"anonymous";else if(!i)throw new Error("No user id found");const n=e.props,r=function(e=""){let t=v.P.NONE;return e?(e.includes("G")&&(t|=v.P.READ),e.includes("W")&&(t|=v.P.WRITE),e.includes("CK")&&(t|=v.P.CREATE),e.includes("NV")&&(t|=v.P.UPDATE),e.includes("D")&&(t|=v.P.DELETE),e.includes("R")&&(t|=v.P.SHARE),t):t}(n?.permissions),d=String(n?.["owner-id"]||i),a=n.fileid||0,l=new Date(Date.parse(e.lastmod)),u=new Date(Date.parse(n.creationdate)),p={id:a,source:`${o}${e.filename}`,mtime:isNaN(l.getTime())||0===l.getTime()?void 0:l,crtime:isNaN(u.getTime())||0===u.getTime()?void 0:u,mime:e.mime||"application/octet-stream",displayname:void 0!==n.displayname?String(n.displayname):void 0,size:n?.size||Number.parseInt(n.getcontentlength||"0"),status:a<0?v.c.FAILED:void 0,permissions:r,owner:d,root:t,attributes:{...e,...n,hasPreview:n?.["has-preview"]}};return delete p.attributes?.props,"file"===e.type?new v.a(p):new v.b(p)}((await N.stat(`${h()}${e}`,{details:!0,data:t})).data)}var O=o(71225);const R=(0,i.nY)("files",()=>{const e=(0,d.KR)({}),t=(0,d.KR)({});function o(t){return e.value[t]}function s(t){return t.map(t=>e.value[t]).filter(Boolean)}function l(t){return Object.values(e.value).filter(e=>e.id===t)}function c(e){return t.value[e]}function u(e,t){const s=function(...e){const t=R(...e),o=(0,i.nY)("paths",{state:()=>({paths:{}}),getters:{getPath:e=>(t,o)=>{if(e.paths[t])return e.paths[t][o]}},actions:{addPath(e){this.paths[e.service]||d.Ay.set(this.paths,e.service,{}),d.Ay.set(this.paths[e.service],e.path,e.source)},deletePath(e,t){this.paths[e]&&d.Ay.delete(this.paths[e],t)},onCreatedNode(e){const t=(0,r.bh)()?.active?.id||"files";e.fileid?(e.type===r.pt.Folder&&this.addPath({service:t,path:e.path,source:e.source}),this.addNodeToParentChildren(e)):a.error("Node has no fileid",{node:e})},onDeletedNode(e){const t=(0,r.bh)()?.active?.id||"files";e.type===r.pt.Folder&&this.deletePath(t,e.path),this.deleteNodeFromParentChildren(e)},onMovedNode({node:e,oldSource:t}){const o=(0,r.bh)()?.active?.id||"files";if(e.type===r.pt.Folder){const i=Object.entries(this.paths[o]).find(([,e])=>e===t);i?.[0]&&this.deletePath(o,i[0]),this.addPath({service:o,path:e.path,source:e.source})}const i=new r.ZH({source:t,owner:e.owner,mime:e.mime,root:e.root});this.deleteNodeFromParentChildren(i),this.addNodeToParentChildren(e)},deleteNodeFromParentChildren(e){const o=(0,r.bh)()?.active?.id||"files",i=(0,O.pD)(e.source),n="/"===e.dirname?t.getRoot(o):t.getNode(i);if(n){const t=new Set(n._children??[]);return t.delete(e.source),d.Ay.set(n,"_children",[...t.values()]),void a.debug("Children updated",{parent:n,node:e,children:n._children})}a.debug("Parent path does not exists, skipping children update",{node:e})},addNodeToParentChildren(e){const o=(0,r.bh)()?.active?.id||"files",i=(0,O.pD)(e.source),n="/"===e.dirname?t.getRoot(o):t.getNode(i);if(n){const t=new Set(n._children??[]);return t.add(e.source),d.Ay.set(n,"_children",[...t.values()]),void a.debug("Children updated",{parent:n,node:e,children:n._children})}a.debug("Parent path does not exists, skipping children update",{node:e})}}})(...e);return o._initialized||((0,n.B1)("files:node:created",o.onCreatedNode),(0,n.B1)("files:node:deleted",o.onDeletedNode),(0,n.B1)("files:node:moved",o.onMovedNode),o._initialized=!0),o}();let l;if(t&&"/"!==t){const i=s.getPath(e,t);i&&(l=o(i))}else l=c(e);return l}function v(t){const o=t.reduce((t,o)=>e.value[o.source]?.id&&!o.id?(a.error("Trying to update/set a node without id",{node:o}),t):(t[o.source]=o,t),{});e.value={...e.value,...o};const i=y();i.activeNode&&i.activeNode.source in o&&(i.activeNode=e.value[i.activeNode.source])}function p(t){const o=Object.entries(e.value).filter(([,e])=>!t.some(t=>t.source===e.source));e.value=Object.fromEntries(o)}return(0,n.B1)("files:node:created",function(e){v([e])}),(0,n.B1)("files:node:deleted",function(e){p([e])}),(0,n.B1)("files:node:updated",async function(e){const t=e.id?l(e.id):s([e.source]);if(t.length>1)return await Promise.all(t.map(e=>P(e.path))).then(v),void a.debug(t.length+" nodes updated in store",{fileid:e.id,source:e.source});if(1===t.length&&e.source===t[0].source)return void v([e]);v([await P(e.path)])}),(0,n.B1)("files:node:moved",function({node:t,oldSource:o}){delete e.value[o],v([t])}),(0,n.B1)("files:favorites:added",function(e){const t=o(e.source);t&&d.Ay.set(t.attributes,"favorite",1)}),(0,n.B1)("files:favorites:removed",function(e){const t=o(e.source);t&&d.Ay.set(t.attributes,"favorite",0)}),{files:e,roots:t,deleteNodes:p,getDirectoryByPath:u,getNode:o,getNodes:s,getNodesById:l,getNodesByPath:function(e,t){const i=u(e,t);return(i?._children??[]).map(e=>o(e)).filter(Boolean)},getRoot:c,setRoot:function({service:e,root:o}){t.value={...t.value,[e]:o}},updateNodes:v}}),C=(0,i.nY)("sidebar",()=>{const e=(0,d.KR)(),t=(0,d.KR)(!1),o=y(),i=(0,d.EW)(()=>t.value?o.activeNode:void 0),s=(0,d.EW)(()=>!!(i.value&&o.activeFolder&&o.activeView)),l=(0,d.EW)(()=>{if(s.value)return{node:i.value,folder:o.activeFolder,view:o.activeView}}),c=(0,d.EW)(()=>l.value?h(l.value):[]),u=(0,d.EW)(()=>l.value?f(l.value):[]);function v(n,r){if(!(n&&o.activeFolder&&o.activeView))throw a.debug("sidebar: cannot open sidebar because the active folder or view is not set.",{node:n,activeFolder:o.activeFolder,activeView:o.activeView}),new Error("Cannot open sidebar because the active folder or view is not set.");if(t.value&&i.value?.source===n.source)return a.debug("sidebar: already open for current node"),void(r&&(a.debug("sidebar: already open for current node - switching tab",{tabId:r}),b(r)));const d=f({node:n,folder:o.activeFolder,view:o.activeView});r&&!d.find(({id:e})=>e===r)?(a.warn(`sidebar: cannot open tab '${r}' because it is not available for the current context.`),e.value=d[0]?.id):e.value=r??d[0]?.id,a.debug(`sidebar: opening for ${n.displayname}`,{node:n}),o.activeNode=n,t.value=!0}function p(){t.value=!1}function f(e){let t=(0,r.Dn)();return e&&(t=t.filter(t=>void 0===t.enabled||t.enabled(e))),t.sort((e,t)=>e.order-t.order)}function h(e){let t=(0,r._2)();return e&&(t=t.filter(t=>void 0===t.enabled||t.enabled(e))),t.sort((e,t)=>e.order-t.order)}function b(t){if(!u.value.find(({id:e})=>e===t))throw new Error(`Cannot set sidebar tab '${t}' because it is not available for the current context.`);e.value=t}(0,n.B1)("files:node:updated",e=>{e.source===i.value?.source&&(o.activeNode=e)}),(0,n.B1)("files:node:deleted",e=>{e.fileid===i.value?.fileid&&p()}),(0,n.B1)("viewer:sidebar:open",({source:e})=>{const t=R().getNode(e);t?(a.debug("sidebar: opening for node from Viewer.",{node:t}),v(t)):a.error(`sidebar: cannot open for node '${e}' because it was not found in the current view.`)});let w=!1;return(0,n.B1)("files:list:updated",()=>{w||(w=!0,window.OCP.Files.Router._router.afterEach((e,t)=>{t.query&&"opendetails"in t.query&&e.query&&!("opendetails"in e.query)&&(a.debug('sidebar: closing because "opendetails" query parameter was removed from URL.'),p())}))}),(0,d.wB)(t,e=>{const t={...window.OCP?.Files?.Router?.params??{}},i={...window.OCP?.Files?.Router?.query??{}};a.debug("sidebar: current node changed: "+(e?"open":"closed"),{query:i,params:t,node:o.activeNode}),!e&&"opendetails"in i&&(delete i.opendetails,window.OCP.Files.Router.goToRoute(null,t,i,!0)),e&&!("opendetails"in i)&&window.OCP.Files.Router.goToRoute(null,t,{...i,opendetails:"true"},!0)}),{activeTab:e,currentActions:c,currentContext:l,currentNode:i,currentTabs:u,hasContext:s,isOpen:(0,d.tB)(t),open:v,close:p,getActions:h,getTabs:f,setActiveTab:b}});window.OCA.Files??={},window.OCA.Files._sidebar=()=>C((window._nc_files_pinia||(window._nc_files_pinia=(0,i.Ey)()),window._nc_files_pinia))},63779(){},77199(){}},o={};function i(e){var n=o[e];if(void 0!==n)return n.exports;var r=o[e]={id:e,loaded:!1,exports:{}};return t[e].call(r.exports,r,r.exports,i),r.loaded=!0,r.exports}i.m=t,e=[],i.O=(t,o,n,r)=>{if(!o){var d=1/0;for(c=0;c=r)&&Object.keys(i.O).every(e=>i.O[e](o[s]))?o.splice(s--,1):(a=!1,r0&&e[c-1][2]>r;c--)e[c]=e[c-1];e[c]=[o,n,r]},i.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return i.d(t,{a:t}),t},i.d=(e,t)=>{for(var o in t)i.o(t,o)&&!i.o(e,o)&&Object.defineProperty(e,o,{enumerable:!0,get:t[o]})},i.e=()=>Promise.resolve(),i.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),i.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),i.j=4763,(()=>{i.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={4763:0};i.O.j=t=>0===e[t];var t=(t,o)=>{var n,r,[d,a,s]=o,l=0;if(d.some(t=>0!==e[t])){for(n in a)i.o(a,n)&&(i.m[n]=a[n]);if(s)var c=s(i)}for(t&&t(o);li(91028));n=i.O(n)})(); +//# sourceMappingURL=files-sidebar.js.map?v=6973204df76052766859 \ No newline at end of file diff --git a/dist/files-sidebar.js.map b/dist/files-sidebar.js.map index 518622557b900..ee0dd482dc1cb 100644 --- a/dist/files-sidebar.js.map +++ b/dist/files-sidebar.js.map @@ -1 +1 @@ -{"version":3,"file":"files-sidebar.js?v=e977f6a84fc8a62ffea4","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/dav.mjs","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/sidebar.ts","webpack:///nextcloud/apps/files/src/sidebar.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/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 = (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, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\")) {\n permissions |= Permission.WRITE;\n }\n if (permString.includes(\"CK\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"NV\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n}\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n if (scopedGlobals.davProperties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n scopedGlobals.davProperties.push(prop);\n scopedGlobals.davNamespaces = namespaces;\n return true;\n}\nfunction getDavProperties() {\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n}\nasync function getFavoriteNodes(options = {}) {\n const client = options.client ?? getClient();\n const path = options.path ?? \"/\";\n const davRoot = options.davRoot ?? defaultRootPath;\n const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n signal: options.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n defaultDavNamespaces,\n defaultDavProperties,\n defaultRemoteURL,\n defaultRootPath,\n getClient,\n getDavNameSpaces,\n getDavProperties,\n getDefaultPropfind,\n getFavoriteNodes,\n getFavoritesReport,\n getRecentSearch,\n getRemoteURL,\n getRootPath,\n parsePermissions,\n registerDavProperty,\n resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n id: 0,\n source: getRemoteURL() + getRootPath(),\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n /**\n * The currently active action\n */\n const activeAction = shallowRef();\n /**\n * The current active node within the folder\n */\n const activeNode = ref();\n /**\n * The current active view\n */\n const activeView = shallowRef();\n /**\n * The currently active folder\n */\n const activeFolder = ref(dummyFolder);\n // Set the active node on the router params\n watch(activeNode, () => {\n if (typeof activeNode.value?.fileid !== 'number' || activeNode.value.fileid === activeFolder.value?.fileid) {\n return;\n }\n logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.fileid });\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: String(activeNode.value.fileid) }, { ...window.OCP.Files.Router.query }, true);\n });\n initialize();\n /**\n * Unset the active node if deleted\n *\n * @param node - The node thats deleted\n */\n function onDeletedNode(node) {\n if (activeNode.value && activeNode.value.source === node.source) {\n activeNode.value = undefined;\n }\n }\n /**\n * Callback to update the current active view\n *\n * @param view - The new active view\n */\n function onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n activeView.value = view ?? undefined;\n activeNode.value = undefined;\n }\n /**\n * Initalize the store - connect all event listeners.\n *\n */\n function initialize() {\n const navigation = getNavigation();\n onChangedView(navigation.active);\n // Make sure we only register the listeners once\n subscribe('files:node:deleted', onDeletedNode);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n onChangedView(event.detail);\n });\n }\n return {\n activeAction,\n activeFolder,\n activeNode,\n activeView,\n };\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue, { ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n * Store for files and folders in the files app.\n */\nexport const useFilesStore = defineStore('files', () => {\n const files = ref({});\n const roots = ref({});\n // initialize the store once its used first time\n initalizeStore();\n /**\n * Get a file or folder by its source\n *\n * @param source - The file source\n */\n function getNode(source) {\n return files.value[source];\n }\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n *\n * @param sources - The file sources\n */\n function getNodes(sources) {\n return sources\n .map((source) => files.value[source])\n .filter(Boolean);\n }\n /**\n * Get files or folders by their ID\n * Multiple nodes can have the same ID but different sources\n * (e.g. in a shared context)\n *\n * @param id - The file ID\n */\n function getNodesById(id) {\n return Object.values(files.value)\n .filter((node) => node.id === id);\n }\n /**\n * Get the root folder of a service\n *\n * @param service - The service (files view)\n * @return The root folder if set\n */\n function getRoot(service) {\n return roots.value[service];\n }\n /**\n * Get cached directory matching a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return The folder if found\n */\n function getDirectoryByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = getNode(source);\n }\n }\n return folder;\n }\n /**\n * Get cached child nodes within a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return Array of cached nodes within the path\n */\n function getNodesByPath(service, path) {\n const folder = getDirectoryByPath(service, path);\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => getNode(source))\n .filter(Boolean);\n }\n /**\n * Update or set nodes in the store\n *\n * @param nodes - The nodes to update or set\n */\n function updateNodes(nodes) {\n // Update the store all at once\n const newNodes = nodes.reduce((acc, node) => {\n if (files.value[node.source]?.id && !node.id) {\n logger.error('Trying to update/set a node without id', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n files.value = { ...files.value, ...newNodes };\n }\n /**\n * Delete nodes from the store\n *\n * @param nodes - The nodes to delete\n */\n function deleteNodes(nodes) {\n const entries = Object.entries(files.value)\n .filter(([, node]) => !nodes.some((n) => n.source === node.source));\n files.value = Object.fromEntries(entries);\n }\n /**\n * Set the root folder for a service\n *\n * @param options - The options for setting the root\n * @param options.service - The service (files view)\n * @param options.root - The root folder\n */\n function setRoot({ service, root }) {\n roots.value = { ...roots.value, [service]: root };\n }\n return {\n files,\n roots,\n deleteNodes,\n getDirectoryByPath,\n getNode,\n getNodes,\n getNodesById,\n getNodesByPath,\n getRoot,\n setRoot,\n updateNodes,\n };\n // Internal helper functions\n /**\n * Initialize the store by subscribing to events\n */\n function initalizeStore() {\n subscribe('files:node:created', onCreatedNode);\n subscribe('files:node:deleted', onDeletedNode);\n subscribe('files:node:updated', onUpdatedNode);\n subscribe('files:node:moved', onMovedNode);\n // legacy sidebar\n subscribe('files:favorites:added', onAddFavorite);\n subscribe('files:favorites:removed', onRemoveFavorite);\n }\n /**\n * Called when a node is deleted, removes the node from the store\n *\n * @param node - The deleted node\n */\n function onDeletedNode(node) {\n deleteNodes([node]);\n }\n /**\n * Handler for when a node is created\n *\n * @param node - The created node\n */\n function onCreatedNode(node) {\n updateNodes([node]);\n }\n /**\n * Handler for when a node is moved, updates the path of the node in the store\n *\n * @param context - The context of the moved node\n * @param context.node - The moved node\n * @param context.oldSource - The old source of the node before it was moved\n */\n function onMovedNode({ node, oldSource }) {\n // Update the path of the node\n delete files.value[oldSource];\n updateNodes([node]);\n }\n /**\n * Handler for when a node is updated, updates the node in the store\n *\n * @param node - The updated node\n */\n async function onUpdatedNode(node) {\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = node.id\n ? getNodesById(node.id)\n : getNodes([node.source]);\n if (nodes.length > 1) {\n await Promise.all(nodes.map((node) => fetchNode(node.path))).then(updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.id, source: node.source });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (nodes.length === 1 && node.source === nodes[0].source) {\n updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n fetchNode(node.path).then((n) => updateNodes([n]));\n }\n /**\n * Handlers for legacy sidebar (no real nodes support)\n *\n * @param node - The node that was added to favorites\n */\n function onAddFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 1);\n }\n }\n /**\n * Handler for when a node is removed from favorites\n *\n * @param node - The removed favorite\n */\n function onRemoveFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 0);\n }\n }\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({\n source: oldSource,\n owner: node.owner,\n mime: node.mime,\n root: node.root,\n });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { getSidebarActions, getSidebarTabs } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, readonly, ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from './active.ts';\nimport { useFilesStore } from './files.ts';\nexport const useSidebarStore = defineStore('sidebar', () => {\n const activeTab = ref();\n const isOpen = ref(false);\n const activeStore = useActiveStore();\n const currentNode = computed(() => isOpen.value ? activeStore.activeNode : undefined);\n const hasContext = computed(() => !!(currentNode.value && activeStore.activeFolder && activeStore.activeView));\n const currentContext = computed(() => {\n if (!hasContext.value) {\n return;\n }\n return {\n node: currentNode.value,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n };\n });\n const currentActions = computed(() => currentContext.value ? getActions(currentContext.value) : []);\n const currentTabs = computed(() => currentContext.value ? getTabs(currentContext.value) : []);\n /**\n * Open the sidebar for a given node and optional tab ID.\n *\n * @param node - The node to display in the sidebar.\n * @param tabId - Optional ID of the tab to activate.\n */\n function open(node, tabId) {\n if (!(node && activeStore.activeFolder && activeStore.activeView)) {\n logger.debug('sidebar: cannot open sidebar because the active folder or view is not set.', {\n node,\n activeFolder: activeStore.activeFolder,\n activeView: activeStore.activeView,\n });\n throw new Error('Cannot open sidebar because the active folder or view is not set.');\n }\n if (isOpen.value && currentNode.value?.source === node.source) {\n logger.debug('sidebar: already open for current node');\n if (tabId) {\n logger.debug('sidebar: already open for current node - switching tab', { tabId });\n setActiveTab(tabId);\n }\n return;\n }\n const newTabs = getTabs({\n node,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n });\n if (tabId && !newTabs.find(({ id }) => id === tabId)) {\n logger.warn(`sidebar: cannot open tab '${tabId}' because it is not available for the current context.`);\n activeTab.value = newTabs[0]?.id;\n }\n else {\n activeTab.value = tabId ?? newTabs[0]?.id;\n }\n logger.debug(`sidebar: opening for ${node.displayname}`, { node });\n activeStore.activeNode = node;\n isOpen.value = true;\n }\n /**\n * Close the sidebar.\n */\n function close() {\n isOpen.value = false;\n }\n /**\n * Get the available tabs for the sidebar.\n * If a context is provided, only tabs enabled for that context are returned.\n *\n * @param context - Optional context to filter the available tabs.\n */\n function getTabs(context) {\n let tabs = getSidebarTabs();\n if (context) {\n tabs = tabs.filter((tab) => tab.enabled === undefined || tab.enabled(context));\n }\n return tabs.sort((a, b) => a.order - b.order);\n }\n /**\n * Get the available actions for the sidebar.\n * If a context is provided, only actions enabled for that context are returned.\n *\n * @param context - Optional context to filter the available actions.\n */\n function getActions(context) {\n let actions = getSidebarActions();\n if (context) {\n actions = actions.filter((action) => action.enabled === undefined || action.enabled(context));\n }\n return actions.sort((a, b) => a.order - b.order);\n }\n /**\n * Set the active tab in the sidebar.\n *\n * @param tabId - The ID of the tab to activate.\n */\n function setActiveTab(tabId) {\n if (!currentTabs.value.find(({ id }) => id === tabId)) {\n throw new Error(`Cannot set sidebar tab '${tabId}' because it is not available for the current context.`);\n }\n activeTab.value = tabId;\n }\n // update the current node if updated\n subscribe('files:node:updated', (node) => {\n if (node.source === currentNode.value?.source) {\n activeStore.activeNode = node;\n }\n });\n // close the sidebar if the current node is deleted\n subscribe('files:node:deleted', (node) => {\n if (node.fileid === currentNode.value?.fileid) {\n close();\n }\n });\n subscribe('viewer:sidebar:open', ({ source }) => {\n const filesStore = useFilesStore();\n const node = filesStore.getNode(source);\n if (node) {\n logger.debug('sidebar: opening for node from Viewer.', { node });\n open(node);\n }\n else {\n logger.error(`sidebar: cannot open for node '${source}' because it was not found in the current view.`);\n }\n });\n let initialized = false;\n // close sidebar when parameter is removed from url\n subscribe('files:list:updated', () => {\n if (!initialized) {\n initialized = true;\n window.OCP.Files.Router._router.afterEach((to, from) => {\n if ((from.query && ('opendetails' in from.query))\n && (to.query && !('opendetails' in to.query))) {\n logger.debug('sidebar: closing because \"opendetails\" query parameter was removed from URL.');\n close();\n }\n });\n }\n });\n // watch open state and update URL query parameters\n watch(isOpen, (isOpen) => {\n const params = { ...(window.OCP?.Files?.Router?.params ?? {}) };\n const query = { ...(window.OCP?.Files?.Router?.query ?? {}) };\n logger.debug(`sidebar: current node changed: ${isOpen ? 'open' : 'closed'}`, { query, params, node: activeStore.activeNode });\n if (!isOpen && ('opendetails' in query)) {\n delete query.opendetails;\n window.OCP.Files.Router.goToRoute(null, params, query, true);\n }\n if (isOpen && !('opendetails' in query)) {\n window.OCP.Files.Router.goToRoute(null, params, {\n ...query,\n opendetails: 'true',\n }, true);\n }\n });\n return {\n activeTab,\n currentActions,\n currentContext,\n currentNode,\n currentTabs,\n hasContext,\n isOpen: readonly(isOpen),\n open,\n close,\n getActions,\n getTabs,\n setActiveTab,\n };\n});\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getPinia } from './store/index.ts';\nimport { useSidebarStore } from './store/sidebar.ts';\n// Provide sidebar implementation which is proxied by the `@nextcloud/files` library for app usage.\nwindow.OCA.Files ??= {};\nwindow.OCA.Files._sidebar = () => useSidebarStore(getPinia());\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4763;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t4763: 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 = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(91028)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","getRootPath","uid","defaultRootPath","getRemoteURL","url","replace","defaultRemoteURL","dummyFolder","Folder","id","source","root","owner","getCurrentUser","permissions","Permission","NONE","useActiveStore","defineStore","activeAction","shallowRef","activeNode","ref","activeView","activeFolder","onDeletedNode","node","value","undefined","onChangedView","view","logger","debug","watch","fileid","window","OCP","Files","Router","goToRoute","params","String","query","navigation","getNavigation","active","subscribe","addEventListener","event","detail","initialize","client","remoteURL","headers","setHeaders","token","requesttoken","patch","options","headers2","method","fetch","getClient","async","fetchNode","path","propfindPayload","s","davNamespaces","Object","keys","map","ns","join","davProperties","prop","filesRoot","userId","Error","props","permString","P","includes","READ","WRITE","CREATE","UPDATE","DELETE","SHARE","parsePermissions","mtime","Date","parse","lastmod","crtime","creationdate","nodeData","filename","isNaN","getTime","mime","displayname","size","Number","parseInt","getcontentlength","status","FAILED","attributes","hasPreview","type","resultToNode","stat","details","data","useFilesStore","files","roots","getNode","getNodes","sources","filter","Boolean","getNodesById","values","getRoot","service","getDirectoryByPath","pathsStore","args","state","paths","getters","getPath","actions","addPath","payload","this","Vue","deletePath","delete","onCreatedNode","FileType","addNodeToParentChildren","error","deleteNodeFromParentChildren","onMovedNode","oldSource","oldPath","entries","find","oldNode","File","parentSource","dirname","folder","children","Set","_children","parent","add","store","_initialized","usePathsStore","updateNodes","nodes","newNodes","reduce","acc","deleteNodes","some","n","fromEntries","length","Promise","all","then","ourNode","getNodesByPath","setRoot","useSidebarStore","activeTab","isOpen","activeStore","currentNode","computed","hasContext","currentContext","currentActions","getActions","currentTabs","getTabs","open","tabId","setActiveTab","newTabs","warn","close","context","tabs","getSidebarTabs","tab","enabled","sort","a","b","order","getSidebarActions","action","initialized","_router","afterEach","to","from","opendetails","readonly","OCA","_sidebar","_nc_files_pinia","createPinia","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","key","splice","r","getter","__esModule","definition","o","defineProperty","enumerable","get","e","resolve","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","globalThis","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files-sidebar.js?v=6973204df76052766859","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/dav.mjs","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/sidebar.ts","webpack:///nextcloud/apps/files/src/sidebar.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/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 = (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, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\")) {\n permissions |= Permission.WRITE;\n }\n if (permString.includes(\"CK\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"NV\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n}\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n if (scopedGlobals.davProperties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n scopedGlobals.davProperties.push(prop);\n scopedGlobals.davNamespaces = namespaces;\n return true;\n}\nfunction getDavProperties() {\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n}\nasync function getFavoriteNodes(options = {}) {\n const client = options.client ?? getClient();\n const path = options.path ?? \"/\";\n const davRoot = options.davRoot ?? defaultRootPath;\n const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n signal: options.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n defaultDavNamespaces,\n defaultDavProperties,\n defaultRemoteURL,\n defaultRootPath,\n getClient,\n getDavNameSpaces,\n getDavProperties,\n getDefaultPropfind,\n getFavoriteNodes,\n getFavoritesReport,\n getRecentSearch,\n getRemoteURL,\n getRootPath,\n parsePermissions,\n registerDavProperty,\n resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n id: 0,\n source: getRemoteURL() + getRootPath(),\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n /**\n * The currently active action\n */\n const activeAction = shallowRef();\n /**\n * The current active node within the folder\n */\n const activeNode = ref();\n /**\n * The current active view\n */\n const activeView = shallowRef();\n /**\n * The currently active folder\n */\n const activeFolder = ref(dummyFolder);\n // Set the active node on the router params\n watch(activeNode, () => {\n if (typeof activeNode.value?.fileid !== 'number' || activeNode.value.fileid === activeFolder.value?.fileid) {\n return;\n }\n logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.fileid });\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: String(activeNode.value.fileid) }, { ...window.OCP.Files.Router.query }, true);\n });\n initialize();\n /**\n * Unset the active node if deleted\n *\n * @param node - The node thats deleted\n */\n function onDeletedNode(node) {\n if (activeNode.value && activeNode.value.source === node.source) {\n activeNode.value = undefined;\n }\n }\n /**\n * Callback to update the current active view\n *\n * @param view - The new active view\n */\n function onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n activeView.value = view ?? undefined;\n activeNode.value = undefined;\n }\n /**\n * Initalize the store - connect all event listeners.\n *\n */\n function initialize() {\n const navigation = getNavigation();\n onChangedView(navigation.active);\n // Make sure we only register the listeners once\n subscribe('files:node:deleted', onDeletedNode);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n onChangedView(event.detail);\n });\n }\n return {\n activeAction,\n activeFolder,\n activeNode,\n activeView,\n };\n});\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue, { ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useActiveStore } from './active.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n * Store for files and folders in the files app.\n */\nexport const useFilesStore = defineStore('files', () => {\n const files = ref({});\n const roots = ref({});\n // initialize the store once its used first time\n initalizeStore();\n /**\n * Get a file or folder by its source\n *\n * @param source - The file source\n */\n function getNode(source) {\n return files.value[source];\n }\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n *\n * @param sources - The file sources\n */\n function getNodes(sources) {\n return sources\n .map((source) => files.value[source])\n .filter(Boolean);\n }\n /**\n * Get files or folders by their ID\n * Multiple nodes can have the same ID but different sources\n * (e.g. in a shared context)\n *\n * @param id - The file ID\n */\n function getNodesById(id) {\n return Object.values(files.value)\n .filter((node) => node.id === id);\n }\n /**\n * Get the root folder of a service\n *\n * @param service - The service (files view)\n * @return The root folder if set\n */\n function getRoot(service) {\n return roots.value[service];\n }\n /**\n * Get cached directory matching a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return The folder if found\n */\n function getDirectoryByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = getNode(source);\n }\n }\n return folder;\n }\n /**\n * Get cached child nodes within a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return Array of cached nodes within the path\n */\n function getNodesByPath(service, path) {\n const folder = getDirectoryByPath(service, path);\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => getNode(source))\n .filter(Boolean);\n }\n /**\n * Update or set nodes in the store\n *\n * @param nodes - The nodes to update or set\n */\n function updateNodes(nodes) {\n // Update the store all at once\n const newNodes = nodes.reduce((acc, node) => {\n if (files.value[node.source]?.id && !node.id) {\n logger.error('Trying to update/set a node without id', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n files.value = { ...files.value, ...newNodes };\n // handle updating the active node\n const activeStore = useActiveStore();\n if (activeStore.activeNode && activeStore.activeNode.source in newNodes) {\n activeStore.activeNode = files.value[activeStore.activeNode.source];\n }\n }\n /**\n * Delete nodes from the store\n *\n * @param nodes - The nodes to delete\n */\n function deleteNodes(nodes) {\n const entries = Object.entries(files.value)\n .filter(([, node]) => !nodes.some((n) => n.source === node.source));\n files.value = Object.fromEntries(entries);\n }\n /**\n * Set the root folder for a service\n *\n * @param options - The options for setting the root\n * @param options.service - The service (files view)\n * @param options.root - The root folder\n */\n function setRoot({ service, root }) {\n roots.value = { ...roots.value, [service]: root };\n }\n return {\n files,\n roots,\n deleteNodes,\n getDirectoryByPath,\n getNode,\n getNodes,\n getNodesById,\n getNodesByPath,\n getRoot,\n setRoot,\n updateNodes,\n };\n // Internal helper functions\n /**\n * Initialize the store by subscribing to events\n */\n function initalizeStore() {\n subscribe('files:node:created', onCreatedNode);\n subscribe('files:node:deleted', onDeletedNode);\n subscribe('files:node:updated', onUpdatedNode);\n subscribe('files:node:moved', onMovedNode);\n // legacy sidebar\n subscribe('files:favorites:added', onAddFavorite);\n subscribe('files:favorites:removed', onRemoveFavorite);\n }\n /**\n * Called when a node is deleted, removes the node from the store\n *\n * @param node - The deleted node\n */\n function onDeletedNode(node) {\n deleteNodes([node]);\n }\n /**\n * Handler for when a node is created\n *\n * @param node - The created node\n */\n function onCreatedNode(node) {\n updateNodes([node]);\n }\n /**\n * Handler for when a node is moved, updates the path of the node in the store\n *\n * @param context - The context of the moved node\n * @param context.node - The moved node\n * @param context.oldSource - The old source of the node before it was moved\n */\n function onMovedNode({ node, oldSource }) {\n // Update the path of the node\n delete files.value[oldSource];\n updateNodes([node]);\n }\n /**\n * Handler for when a node is updated, updates the node in the store\n *\n * @param node - The updated node\n */\n async function onUpdatedNode(node) {\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = node.id\n ? getNodesById(node.id)\n : getNodes([node.source]);\n if (nodes.length > 1) {\n await Promise.all(nodes.map((node) => fetchNode(node.path))).then(updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.id, source: node.source });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (nodes.length === 1 && node.source === nodes[0].source) {\n updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n const newNode = await fetchNode(node.path);\n updateNodes([newNode]);\n }\n /**\n * Handlers for legacy sidebar (no real nodes support)\n *\n * @param node - The node that was added to favorites\n */\n function onAddFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 1);\n }\n }\n /**\n * Handler for when a node is removed from favorites\n *\n * @param node - The removed favorite\n */\n function onRemoveFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 0);\n }\n }\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({\n source: oldSource,\n owner: node.owner,\n mime: node.mime,\n root: node.root,\n });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { getSidebarActions, getSidebarTabs } from '@nextcloud/files';\nimport { defineStore } from 'pinia';\nimport { computed, readonly, ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { useActiveStore } from './active.ts';\nimport { useFilesStore } from './files.ts';\nexport const useSidebarStore = defineStore('sidebar', () => {\n const activeTab = ref();\n const isOpen = ref(false);\n const activeStore = useActiveStore();\n const currentNode = computed(() => isOpen.value ? activeStore.activeNode : undefined);\n const hasContext = computed(() => !!(currentNode.value && activeStore.activeFolder && activeStore.activeView));\n const currentContext = computed(() => {\n if (!hasContext.value) {\n return;\n }\n return {\n node: currentNode.value,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n };\n });\n const currentActions = computed(() => currentContext.value ? getActions(currentContext.value) : []);\n const currentTabs = computed(() => currentContext.value ? getTabs(currentContext.value) : []);\n /**\n * Open the sidebar for a given node and optional tab ID.\n *\n * @param node - The node to display in the sidebar.\n * @param tabId - Optional ID of the tab to activate.\n */\n function open(node, tabId) {\n if (!(node && activeStore.activeFolder && activeStore.activeView)) {\n logger.debug('sidebar: cannot open sidebar because the active folder or view is not set.', {\n node,\n activeFolder: activeStore.activeFolder,\n activeView: activeStore.activeView,\n });\n throw new Error('Cannot open sidebar because the active folder or view is not set.');\n }\n if (isOpen.value && currentNode.value?.source === node.source) {\n logger.debug('sidebar: already open for current node');\n if (tabId) {\n logger.debug('sidebar: already open for current node - switching tab', { tabId });\n setActiveTab(tabId);\n }\n return;\n }\n const newTabs = getTabs({\n node,\n folder: activeStore.activeFolder,\n view: activeStore.activeView,\n });\n if (tabId && !newTabs.find(({ id }) => id === tabId)) {\n logger.warn(`sidebar: cannot open tab '${tabId}' because it is not available for the current context.`);\n activeTab.value = newTabs[0]?.id;\n }\n else {\n activeTab.value = tabId ?? newTabs[0]?.id;\n }\n logger.debug(`sidebar: opening for ${node.displayname}`, { node });\n activeStore.activeNode = node;\n isOpen.value = true;\n }\n /**\n * Close the sidebar.\n */\n function close() {\n isOpen.value = false;\n }\n /**\n * Get the available tabs for the sidebar.\n * If a context is provided, only tabs enabled for that context are returned.\n *\n * @param context - Optional context to filter the available tabs.\n */\n function getTabs(context) {\n let tabs = getSidebarTabs();\n if (context) {\n tabs = tabs.filter((tab) => tab.enabled === undefined || tab.enabled(context));\n }\n return tabs.sort((a, b) => a.order - b.order);\n }\n /**\n * Get the available actions for the sidebar.\n * If a context is provided, only actions enabled for that context are returned.\n *\n * @param context - Optional context to filter the available actions.\n */\n function getActions(context) {\n let actions = getSidebarActions();\n if (context) {\n actions = actions.filter((action) => action.enabled === undefined || action.enabled(context));\n }\n return actions.sort((a, b) => a.order - b.order);\n }\n /**\n * Set the active tab in the sidebar.\n *\n * @param tabId - The ID of the tab to activate.\n */\n function setActiveTab(tabId) {\n if (!currentTabs.value.find(({ id }) => id === tabId)) {\n throw new Error(`Cannot set sidebar tab '${tabId}' because it is not available for the current context.`);\n }\n activeTab.value = tabId;\n }\n // update the current node if updated\n subscribe('files:node:updated', (node) => {\n if (node.source === currentNode.value?.source) {\n activeStore.activeNode = node;\n }\n });\n // close the sidebar if the current node is deleted\n subscribe('files:node:deleted', (node) => {\n if (node.fileid === currentNode.value?.fileid) {\n close();\n }\n });\n subscribe('viewer:sidebar:open', ({ source }) => {\n const filesStore = useFilesStore();\n const node = filesStore.getNode(source);\n if (node) {\n logger.debug('sidebar: opening for node from Viewer.', { node });\n open(node);\n }\n else {\n logger.error(`sidebar: cannot open for node '${source}' because it was not found in the current view.`);\n }\n });\n let initialized = false;\n // close sidebar when parameter is removed from url\n subscribe('files:list:updated', () => {\n if (!initialized) {\n initialized = true;\n window.OCP.Files.Router._router.afterEach((to, from) => {\n if ((from.query && ('opendetails' in from.query))\n && (to.query && !('opendetails' in to.query))) {\n logger.debug('sidebar: closing because \"opendetails\" query parameter was removed from URL.');\n close();\n }\n });\n }\n });\n // watch open state and update URL query parameters\n watch(isOpen, (isOpen) => {\n const params = { ...(window.OCP?.Files?.Router?.params ?? {}) };\n const query = { ...(window.OCP?.Files?.Router?.query ?? {}) };\n logger.debug(`sidebar: current node changed: ${isOpen ? 'open' : 'closed'}`, { query, params, node: activeStore.activeNode });\n if (!isOpen && ('opendetails' in query)) {\n delete query.opendetails;\n window.OCP.Files.Router.goToRoute(null, params, query, true);\n }\n if (isOpen && !('opendetails' in query)) {\n window.OCP.Files.Router.goToRoute(null, params, {\n ...query,\n opendetails: 'true',\n }, true);\n }\n });\n return {\n activeTab,\n currentActions,\n currentContext,\n currentNode,\n currentTabs,\n hasContext,\n isOpen: readonly(isOpen),\n open,\n close,\n getActions,\n getTabs,\n setActiveTab,\n };\n});\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getPinia } from './store/index.ts';\nimport { useSidebarStore } from './store/sidebar.ts';\n// Provide sidebar implementation which is proxied by the `@nextcloud/files` library for app usage.\nwindow.OCA.Files ??= {};\nwindow.OCA.Files._sidebar = () => useSidebarStore(getPinia());\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","// The chunk loading function for additional chunks\n// Since all referenced chunks are already included\n// in this file, this function is empty here.\n__webpack_require__.e = () => (Promise.resolve());","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 4763;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t4763: 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 = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(91028)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","getLoggerBuilder","setApp","detectUser","build","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","getRootPath","uid","defaultRootPath","getRemoteURL","url","replace","defaultRemoteURL","dummyFolder","Folder","id","source","root","owner","getCurrentUser","permissions","Permission","NONE","useActiveStore","defineStore","activeAction","shallowRef","activeNode","ref","activeView","activeFolder","onDeletedNode","node","value","undefined","onChangedView","view","logger","debug","watch","fileid","window","OCP","Files","Router","goToRoute","params","String","query","navigation","getNavigation","active","subscribe","addEventListener","event","detail","initialize","client","remoteURL","headers","setHeaders","token","requesttoken","patch","options","headers2","method","fetch","getClient","async","fetchNode","path","propfindPayload","s","davNamespaces","Object","keys","map","ns","join","davProperties","prop","filesRoot","userId","Error","props","permString","P","includes","READ","WRITE","CREATE","UPDATE","DELETE","SHARE","parsePermissions","mtime","Date","parse","lastmod","crtime","creationdate","nodeData","filename","isNaN","getTime","mime","displayname","size","Number","parseInt","getcontentlength","status","FAILED","attributes","hasPreview","type","resultToNode","stat","details","data","useFilesStore","files","roots","getNode","getNodes","sources","filter","Boolean","getNodesById","values","getRoot","service","getDirectoryByPath","pathsStore","args","state","paths","getters","getPath","actions","addPath","payload","this","Vue","deletePath","delete","onCreatedNode","FileType","addNodeToParentChildren","error","deleteNodeFromParentChildren","onMovedNode","oldSource","oldPath","entries","find","oldNode","File","parentSource","dirname","folder","children","Set","_children","parent","add","store","_initialized","usePathsStore","updateNodes","nodes","newNodes","reduce","acc","activeStore","deleteNodes","some","n","fromEntries","length","Promise","all","then","ourNode","getNodesByPath","setRoot","useSidebarStore","activeTab","isOpen","currentNode","computed","hasContext","currentContext","currentActions","getActions","currentTabs","getTabs","open","tabId","setActiveTab","newTabs","warn","close","context","tabs","getSidebarTabs","tab","enabled","sort","a","b","order","getSidebarActions","action","initialized","_router","afterEach","to","from","opendetails","readonly","OCA","_sidebar","_nc_files_pinia","createPinia","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","call","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","key","splice","r","getter","__esModule","definition","o","defineProperty","enumerable","get","e","resolve","obj","prototype","hasOwnProperty","Symbol","toStringTag","nmd","document","baseURI","self","location","href","installedChunks","chunkId","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","globalThis","forEach","bind","push","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/files_external-auth_rsa.mjs b/dist/files_external-auth_rsa.mjs index d7d5f46017476..db6937070e493 100644 --- a/dist/files_external-auth_rsa.mjs +++ b/dist/files_external-auth_rsa.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/AuthMechanismRsa-3Nt-tl8J.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-B9mkBKAR.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQwJiKOs.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-DxPSRxK-.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/types-BxBcKZMN.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-DaDjQfyb.chunk.mjs')])))=>i.map(i=>d[i]); -import{_ as t}from"./index-BgmsSgl5.chunk.mjs";import{d as a,a as i}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";const r=i(()=>t(()=>import("./AuthMechanismRsa-3Nt-tl8J.chunk.mjs").then(e=>e.A),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]),import.meta.url)),s=a(r,{shadowRoot:!1});customElements.define("files_external-auth-mechanism-rsa",s),window.OCA.FilesExternal.AuthMechanism.registerHandler({id:"rsa",tagName:"files_external-auth-mechanism-rsa",enabled(e){return e.scheme==="publickey"&&e.identifier==="publickey::rsa"}}); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/AuthMechanismRsa-Bb04w0qi.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-B9mkBKAR.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQwJiKOs.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-DxPSRxK-.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/types-BxBcKZMN.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-DaDjQfyb.chunk.mjs')])))=>i.map(i=>d[i]); +import{_ as t}from"./index-BgmsSgl5.chunk.mjs";import{d as a,a as i}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";const r=i(()=>t(()=>import("./AuthMechanismRsa-Bb04w0qi.chunk.mjs").then(e=>e.A),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28]),import.meta.url)),s=a(r,{shadowRoot:!1});customElements.define("files_external-auth-mechanism-rsa",s),window.OCA.FilesExternal.AuthMechanism.registerHandler({id:"rsa",tagName:"files_external-auth-mechanism-rsa",enabled(e){return e.scheme==="publickey"&&e.identifier==="publickey::rsa"}}); //# sourceMappingURL=files_external-auth_rsa.mjs.map diff --git a/dist/files_external-files_external-settings-DF-XZBpX.chunk.css b/dist/files_external-files_external-settings-BB673f-7.chunk.css similarity index 79% rename from dist/files_external-files_external-settings-DF-XZBpX.chunk.css rename to dist/files_external-files_external-settings-BB673f-7.chunk.css index 424f02f06696e..c2127708097fd 100644 --- a/dist/files_external-files_external-settings-DF-XZBpX.chunk.css +++ b/dist/files_external-files_external-settings-BB673f-7.chunk.css @@ -1 +1 @@ -._authMechanismConfiguration_kpcpy_2,._backendConfiguration_1sf6y_2{display:flex;flex-direction:column;gap:var(--default-grid-baseline)}._mountOptions_1fqyb_2{background-color:hsl(from var(--color-primary-element-light) h s calc(l*1.045));border-radius:var(--border-radius-element);display:flex;flex-direction:column;gap:var(--default-grid-baseline);width:100%}._mountOptions__fieldset_1fqyb_12{display:flex;flex-direction:column;gap:var(--default-grid-baseline);padding-inline:calc(2 * var(--default-grid-baseline)) var(--default-grid-baseline)}._externalStorageDialog_9wew8_2{display:flex;flex-direction:column;gap:var(--default-grid-baseline);min-height:calc(14 * var(--default-clickable-area))!important}._externalStorageDialog__configuration_9wew8_9{margin-block:.5rem}._storageTableRow__cellActions_1k62p_2{display:flex;gap:var(--default-grid-baseline)}._storageTableRow__cellApplicable_1k62p_7{display:flex;flex-wrap:wrap;gap:var(--default-grid-baseline);align-items:center;max-height:calc(48px + 2 * var(--default-grid-baseline));overflow:scroll}._storageTableRow__status_warning_1k62p_17{color:var(--color-element-warning)}._storageTableRow__status_error_1k62p_21{color:var(--color-element-error)}._storageTable_1dqte_2{width:100%}._storageTable_1dqte_2 td,th{padding-block:calc(var(--default-grid-baseline) / 2);padding-inline:var(--default-grid-baseline)}._storageTable__header_1dqte_11{color:var(--color-text-maxcontrast);min-height:var(--default-clickable-area)}._storageTable__headerStatus_1dqte_16{width:calc(var(--default-clickable-area) + 2 * var(--default-grid-baseline))}._storageTable__headerFolder_1dqte_20{width:25%}._storageTable__headerBackend_1dqte_24,._storageTable__headerFAuthentication_1dqte_28{width:20%}._storageTable__headerActions_1dqte_32{width:calc(2 * var(--default-clickable-area) + 3 * var(--default-grid-baseline))}._userMountSettings__heading_59moz_2{font-weight:700;font-size:1.2rem;margin-block-start:var(--default-clickable-area)}._userMountSettings__backends_59moz_9{--padding: calc((var(--default-clickable-area) - 20px) / 2 + var(--default-grid-baseline));margin-block-start:var(--padding);margin-inline-start:var(--padding)}._userMountSettings__backends_59moz_9 legend{font-weight:700}._externalStoragesSection__dependantList_atsmn_2{list-style:disc!important;margin-inline-start:calc(var(--default-clickable-area) / 2)}._externalStoragesSection__newStorageButton_atsmn_7{margin-top:var(--default-clickable-area)}._globalCredentialsSectionForm_bgjv2_2{max-width:400px;display:flex;flex-direction:column;align-items:end;gap:15px}._globalCredentialsSectionForm__submit_bgjv2_10{min-width:max(40%,44px)} +._authMechanismConfiguration_kpcpy_2,._backendConfiguration_1sf6y_2{display:flex;flex-direction:column;gap:var(--default-grid-baseline)}._mountOptions_1fqyb_2{background-color:hsl(from var(--color-primary-element-light) h s calc(l*1.045));border-radius:var(--border-radius-element);display:flex;flex-direction:column;gap:var(--default-grid-baseline);width:100%}._mountOptions__fieldset_1fqyb_12{display:flex;flex-direction:column;gap:var(--default-grid-baseline);padding-inline:calc(2 * var(--default-grid-baseline)) var(--default-grid-baseline)}._externalStorageDialog_9wew8_2{display:flex;flex-direction:column;gap:var(--default-grid-baseline);min-height:calc(14 * var(--default-clickable-area))!important}._externalStorageDialog__configuration_9wew8_9{margin-block:.5rem}._storageTableRow__cellActions_1k62p_2{display:flex;gap:var(--default-grid-baseline)}._storageTableRow__cellApplicable_1k62p_7{display:flex;flex-wrap:wrap;gap:var(--default-grid-baseline);align-items:center;max-height:calc(48px + 2 * var(--default-grid-baseline));overflow:scroll}._storageTableRow__status_warning_1k62p_17{color:var(--color-element-warning)}._storageTableRow__status_error_1k62p_21{color:var(--color-element-error)}._storageTable_1dqte_2{width:100%}._storageTable_1dqte_2 td,th{padding-block:calc(var(--default-grid-baseline) / 2);padding-inline:var(--default-grid-baseline)}._storageTable__header_1dqte_11{color:var(--color-text-maxcontrast);min-height:var(--default-clickable-area)}._storageTable__headerStatus_1dqte_16{width:calc(var(--default-clickable-area) + 2 * var(--default-grid-baseline))}._storageTable__headerFolder_1dqte_20{width:25%}._storageTable__headerBackend_1dqte_24,._storageTable__headerFAuthentication_1dqte_28{width:20%}._storageTable__headerActions_1dqte_32{width:calc(2 * var(--default-clickable-area) + 3 * var(--default-grid-baseline))}._userMountSettings__heading_59moz_2{font-weight:700;font-size:1.2rem;margin-block-start:var(--default-clickable-area)}._userMountSettings__backends_59moz_9{--padding: calc((var(--default-clickable-area) - 20px) / 2 + var(--default-grid-baseline));margin-block-start:var(--padding);margin-inline-start:var(--padding);legend{font-weight:700}}._externalStoragesSection__dependantList_atsmn_2{list-style:disc!important;margin-inline-start:calc(var(--default-clickable-area) / 2)}._externalStoragesSection__newStorageButton_atsmn_7{margin-top:var(--default-clickable-area)}._globalCredentialsSectionForm_bgjv2_2{max-width:400px;display:flex;flex-direction:column;align-items:end;gap:15px}._globalCredentialsSectionForm__submit_bgjv2_10{min-width:max(40%,44px)} diff --git a/dist/files_external-init.mjs b/dist/files_external-init.mjs index 67e379923bf9a..754faa36cf230 100644 --- a/dist/files_external-init.mjs +++ b/dist/files_external-init.mjs @@ -1,3 +1,3 @@ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/CredentialsDialog-DmxOq3gN.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-DxPSRxK-.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs')])))=>i.map(i=>d[i]); -import{D as x,g as C,V as E,C as p,b as u}from"./index-Dpj4ddZx.chunk.mjs";import{_ as V,l as M}from"./index-BgmsSgl5.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as l}from"./index-CPwHjAPR.chunk.mjs";import{d as w,a as h,s as L,e as S}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{e as _,a as c}from"./index-DqIuD5e7.chunk.mjs";import{a as T,P as A}from"./index-CXHO4UEV.chunk.mjs";import{g as m,b as N,i as y}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{s as P}from"./index-Bos-XXa5.chunk.mjs";import{S as a}from"./types-BxBcKZMN.chunk.mjs";import{F as k,b,P as d}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import{a as D}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";const I='',O='';function v(e){return e.status===void 0||e.status===a.Success?!1:e.userProvided||e.authMechanism==="password::global::user"}function H(e){if(e.type===k.File)return!1;const t=e.attributes;return!t.scope||!t.backend?!1:t.scope==="personal"||t.scope==="system"}T(l);async function R(e,t,n){const r=(await l.request({method:"PUT",url:m("apps/files_external/userglobalstorages/{id}",{id:e.id}),confirmPassword:A.Strict,data:{backendOptions:{user:t,password:n}}})).data;return r.status!==a.Success?(h(s("files_external","Unable to update this external storage config. {statusMessage}",{statusMessage:r?.statusMessage||""})),null):(w(s("files_external","New configuration successfully saved")),e.attributes.config=r,_("files:node:updated",e),!0)}const F="credentials-external-storage",U={id:F,displayName:()=>s("files","Enter missing credentials"),iconSvgInline:()=>O,enabled:({nodes:e})=>{if(e.length!==1||!e[0])return!1;const t=e[0];if(!H(t))return!1;const n=t.attributes?.config||{};return!!v(n)},async exec({nodes:e}){const{login:t,password:n}=await P(D(()=>V(()=>import("./CredentialsDialog-DmxOq3gN.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url)))??{};if(t&&n)try{await R(e[0],t,n),w(s("files_external","Credentials successfully set"))}catch(r){h(s("files_external","Error while setting credentials: {error}",{error:r.message}))}return null},order:-1e3,default:x.DEFAULT,inline:()=>!0},$='',o=`/files/${c()?.uid}`;function B(e){const t=(e.path+"/"+e.name).replace(/^\//gm,"");return new b({id:e.id,source:y("dav"+o+"/"+t),root:o,owner:c()?.uid||null,permissions:e.config.status!==a.Success?d.NONE:e?.permissions||d.READ,attributes:{displayName:t,...e}})}async function Z(){const e=(await l.get(N("apps/files_external/api/v1/mounts"))).data.ocs.data.map(B);return{folder:new b({id:0,source:y("dav"+o),root:o,owner:c()?.uid||null,permissions:d.READ}),contents:e}}function j(e,t=!0){const n=t?"userglobalstorages":"userstorages";return l.get(m(`apps/files_external/${n}/${e}?testOnly=false`))}const q={id:"check-external-storage",displayName:()=>"",iconSvgInline:()=>"",enabled:({nodes:e})=>e.every(t=>H(t)===!0),exec:async()=>null,async renderInline({nodes:e}){if(e.length!==1||!e[0])return null;const t=e[0],n=document.createElement("span");n.className="files-list__row-status",n.innerHTML=s("files_external","Checking storage …");let r;try{const{data:i}=await j(t.id,t.attributes.scope==="system");if(r=i,t.attributes.config=r,_("files:node:updated",t),r.status!==a.Success)throw new Error(r?.statusMessage||s("files_external","There was an error with this external storage."));n.remove()}catch(i){i.response&&!r&&L(s("files_external","We were unable to check the external storage {basename}",{basename:t.basename})),n.innerHTML="";const f=r?v(r):!1,g=document.createElement("span");g.classList.add(`files-list__row-status--${f?"warning":"error"}`),f||(n.innerHTML=$,n.title=i.message),n.prepend(g)}return n},order:10},W={id:"open-in-files-external-storage",displayName:({nodes:e})=>(e?.[0]?.attributes?.config||{status:a.Indeterminate}).status!==a.Success?s("files_external","Examine this faulty external storage configuration"):s("files","Open in Files"),iconSvgInline:()=>"",enabled:({view:e})=>e.id==="extstoragemounts",async exec({nodes:e}){if(e[0]?.attributes?.config?.status!==a.Success){if(await S({name:s("files_external","External mount error"),text:s("files_external","There was an error with this external storage. Do you want to review this mount point config in the settings page?"),labelConfirm:s("files_external","Open settings"),labelReject:s("files_external","Ignore")})===!0){const t=c()?.isAdmin?"admin":"user";window.location.href=m(`/settings/${t}/externalstorages`)}return null}return window.OCP.Files.Router.goToRoute(null,{view:"files"},{dir:e[0].path}),null},order:-1e3,default:x.HIDDEN},Y=M("files_external","allowUserMounting",!1),z=C();z.register(new E({id:"extstoragemounts",name:s("files_external","External storage"),caption:s("files_external","List of external storage."),emptyCaption:Y?s("files_external","There is no external storage configured. You can configure them in your Personal settings."):s("files_external","There is no external storage configured and you don't have the permission to configure them."),emptyTitle:s("files_external","No external storage"),icon:I,order:30,columns:[new p({id:"storage-type",title:s("files_external","Storage type"),render(e){const t=e.attributes?.backend||s("files_external","Unknown"),n=document.createElement("span");return n.textContent=t,n}}),new p({id:"scope",title:s("files_external","Scope"),render(e){const t=document.createElement("span");let n=s("files_external","Personal");return e.attributes?.scope==="system"&&(n=s("files_external","System")),t.textContent=n,t}})],getContents:Z})),u(U),u(q),u(W); +import{D as x,g as C,V as E,C as p,b as u}from"./index-Dpj4ddZx.chunk.mjs";import{_ as V,l as M}from"./index-BgmsSgl5.chunk.mjs";import{t as s}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as l}from"./index-CPwHjAPR.chunk.mjs";import{d as w,a as h,s as L,e as S}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{e as _,a as c}from"./index-DqIuD5e7.chunk.mjs";import{a as T,P as A}from"./index-CXHO4UEV.chunk.mjs";import{g as m,b as N,i as y}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{s as P}from"./index-Bos-XXa5.chunk.mjs";import{S as a}from"./types-BxBcKZMN.chunk.mjs";import{F as k,b,P as d}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import{a as D}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";const I='',O='';function v(e){return e.status===void 0||e.status===a.Success?!1:e.userProvided||e.authMechanism==="password::global::user"}function H(e){if(e.type===k.File)return!1;const t=e.attributes;return!t.scope||!t.backend?!1:t.scope==="personal"||t.scope==="system"}T(l);async function R(e,t,n){const r=(await l.request({method:"PUT",url:m("apps/files_external/userglobalstorages/{id}",{id:e.id}),confirmPassword:A.Strict,data:{backendOptions:{user:t,password:n}}})).data;return r.status!==a.Success?(h(s("files_external","Unable to update this external storage config. {statusMessage}",{statusMessage:r?.statusMessage||""})),null):(w(s("files_external","New configuration successfully saved")),e.attributes.config=r,_("files:node:updated",e),!0)}const F="credentials-external-storage",U={id:F,displayName:()=>s("files","Enter missing credentials"),iconSvgInline:()=>O,enabled:({nodes:e})=>{if(e.length!==1||!e[0])return!1;const t=e[0];if(!H(t))return!1;const n=t.attributes?.config||{};return!!v(n)},async exec({nodes:e}){const{login:t,password:n}=await P(D(()=>V(()=>import("./CredentialsDialog-DmxOq3gN.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21]),import.meta.url)))??{};if(t&&n)try{await R(e[0],t,n),w(s("files_external","Credentials successfully set"))}catch(r){h(s("files_external","Error while setting credentials: {error}",{error:r.message}))}return null},order:-1e3,default:x.DEFAULT,inline:()=>!0},$='',o=`/files/${c()?.uid}`;function B(e){const t=(e.path+"/"+e.name).replace(/^\//gm,"");return new b({id:e.id,source:y("dav"+o+"/"+t),root:o,owner:c()?.uid||null,permissions:e.config.status!==a.Success?d.NONE:e?.permissions||d.READ,attributes:{displayName:t,...e}})}async function Z(){const e=(await l.get(N("apps/files_external/api/v1/mounts"))).data.ocs.data.map(B);return{folder:new b({id:0,source:y("dav"+o),root:o,owner:c()?.uid||null,permissions:d.READ}),contents:e}}function j(e,t=!0){const n=t?"userglobalstorages":"userstorages";return l.get(m(`apps/files_external/${n}/${e}?testOnly=false`))}const q={id:"check-external-storage",displayName:()=>"",iconSvgInline:()=>"",enabled:({nodes:e})=>e.every(t=>H(t)===!0),exec:async()=>null,async renderInline({nodes:e}){if(e.length!==1||!e[0])return null;const t=e[0],n=document.createElement("span");n.className="files-list__row-status",n.innerHTML=s("files_external","Checking storage …");let r;try{const{data:i}=await j(t.id,t.attributes.scope==="system");if(r=i,t.attributes.config=r,_("files:node:updated",t),r.status!==a.Success)throw new Error(r?.statusMessage||s("files_external","There was an error with this external storage."));n.remove()}catch(i){i.response&&!r&&L(s("files_external","We were unable to check the external storage {basename}",{basename:t.basename})),n.innerHTML="";const f=r?v(r):!1,g=document.createElement("span");g.classList.add(`files-list__row-status--${f?"warning":"error"}`),f||(n.innerHTML=$,n.title=i.message),n.prepend(g)}return n},order:10},W={id:"open-in-files-external-storage",displayName:({nodes:e})=>(e?.[0]?.attributes?.config||{status:a.Indeterminate}).status!==a.Success?s("files_external","Examine this faulty external storage configuration"):s("files","Open in Files"),iconSvgInline:()=>"",enabled:({view:e})=>e.id==="extstoragemounts",async exec({nodes:e}){if(e[0]?.attributes?.config?.status!==a.Success){if(await S({name:s("files_external","External mount error"),text:s("files_external","There was an error with this external storage. Do you want to review this mount point config in the settings page?"),labelConfirm:s("files_external","Open settings"),labelReject:s("files_external","Ignore")})===!0){const t=c()?.isAdmin?"admin":"user";window.location.href=m(`/settings/${t}/externalstorages`)}return null}return window.OCP.Files.Router.goToRoute(null,{view:"files"},{dir:e[0].path}),null},order:-1e3,default:x.HIDDEN},Y=M("files_external","allowUserMounting",!1),z=C();z.register(new E({id:"extstoragemounts",name:s("files_external","External storage"),caption:s("files_external","List of external storage."),emptyCaption:Y?s("files_external","There is no external storage configured. You can configure them in your Personal settings."):s("files_external","There is no external storage configured and you don't have the permission to configure them."),emptyTitle:s("files_external","No external storage"),icon:I,order:30,columns:[new p({id:"storage-type",title:s("files_external","Storage type"),render(e){const t=e.attributes?.backend||s("files_external","Unknown"),n=document.createElement("span");return n.textContent=t,n}}),new p({id:"scope",title:s("files_external","Scope"),render(e){const t=document.createElement("span");let n=s("files_external","Personal");return e.attributes?.scope==="system"&&(n=s("files_external","System")),t.textContent=n,t}})],getContents:Z})),u(U),u(q),u(W); //# sourceMappingURL=files_external-init.mjs.map diff --git a/dist/files_external-settings.css b/dist/files_external-settings.css index ead60a3190a63..0598cc20ebb62 100644 --- a/dist/files_external-settings.css +++ b/dist/files_external-settings.css @@ -1,5 +1,5 @@ /* extracted by css-entry-points-plugin */ -@import './files_external-files_external-settings-DF-XZBpX.chunk.css'; +@import './files_external-files_external-settings-BB673f-7.chunk.css'; @import './createElementId-DhjFt1I9-C_oBIsvc.chunk.css'; @import './mdi-BYHcrfvW.chunk.css'; @import './logger-D3RVzcfQ-D7L4ZBkR.chunk.css'; @@ -19,7 +19,7 @@ @import './NcBreadcrumbs-5gl8Syfa-CtBAA7-7.chunk.css'; @import './NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'; @import './NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'; -@import './index-DxCeSeyt.chunk.css'; +@import './index-CEtX00Aw.chunk.css'; @import './NcChip-CrVOU2RM-Som-mR4B.chunk.css'; @import './TrayArrowDown-D79n0IQ6.chunk.css'; @import './NcGuestContent-j8ai4O1K-D0718NyY.chunk.css'; diff --git a/dist/files_external-settings.mjs b/dist/files_external-settings.mjs index f8aef6613387a..5593c93e84285 100644 --- a/dist/files_external-settings.mjs +++ b/dist/files_external-settings.mjs @@ -1,2 +1,2 @@ -import{d as ke,c as Ve}from"./pinia-DaVFx_pY.chunk.mjs";import{a4 as K,a1 as ee,I as Se,p as C,b as U,s as B,c as k,o as u,u as e,r as M,q as z,v as Z,j as h,l as T,n as x,k as y,t as v,F as S,H as Ce,C as O,_ as W,$ as Y,Q,a0 as ie,e as b,w,g as V,E as Me,h as Ae}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{N as ce,l as $e,n as Ue,o as Te,p as Oe,f as qe,q as Ne,e as Pe}from"./mdi-e8YUrhPH.chunk.mjs";import{a as q,l as A}from"./index-BgmsSgl5.chunk.mjs";import{t as n,b as Ee}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as P}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";import{g as R,N as F}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as re}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as _e}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{d as Re,N as Fe,s as Be}from"./index-Bos-XXa5.chunk.mjs";import{N as ae}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{_ as me}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{c as $}from"./index-CPwHjAPR.chunk.mjs";import{N as je}from"./index-BpgPbDC6.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import{N as E}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as De}from"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as He}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import{N as Le}from"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{_ as pe}from"./AuthMechanismRsa-3Nt-tl8J.chunk.mjs";import{C as fe,a as L,M as G,S as j,b as Ge,c as Ie}from"./types-BxBcKZMN.chunk.mjs";import{a as ge,P as I}from"./index-CXHO4UEV.chunk.mjs";import{d as te,a as le}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{l as ve}from"./logger-DaDjQfyb.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const Qe='',J=Se(new Map);function be(l){const a=C(()=>ee(l).map(t=>({id:`user:${t}`,user:t,displayName:J.get(t)||t})));return K(async()=>{const t=ee(l).filter(r=>!J.has(r));if(t.length>0){const{data:r}=await $.post(R("/displaynames"),{users:t});for(const[d,c]of Object.entries(r.users))J.set(d,c)}}),a}function Ze(l){return C(()=>ee(l).map(ye))}function ye(l){return{id:l,isNoUser:!0,displayName:l,iconSvg:Qe}}const ze=U({__name:"ApplicableEntities",props:{groups:{default:()=>[]},groupsModifiers:{},users:{default:()=>[]},usersModifiers:{}},emits:["update:groups","update:users"],setup(l){const a=B(l,"groups"),t=B(l,"users"),r=M([]),d=be(t),c=Ze(a),o=C({get(){return[...c.value,...d.value]},set(p){t.value=p.filter(_=>_.user).map(_=>_.user),a.value=p.filter(_=>_.isNoUser).map(_=>_.id)}}),i=Re(s,500);async function s(p){const{data:_}=await $.get(R("apps/files_external/ajax/applicable"),{params:{pattern:p,limit:20}}),m=[...r.value.map(f=>[f.id,f]),...Object.entries(_.groups).map(([f,g])=>[f,{...ye(f),displayName:g}]),...Object.entries(_.users).map(([f,g])=>[`user:${f}`,{id:`user:${f}`,user:f,displayName:g}])];r.value=[...new Map(m).values()]}return(p,_)=>(u(),k(e(je),{modelValue:o.value,"onUpdate:modelValue":_[0]||(_[0]=m=>o.value=m),keepOpen:"",multiple:"",options:r.value,inputLabel:e(n)("files_external","Restrict to"),onSearch:e(i)},null,8,["modelValue","options","inputLabel","onSearch"]))}}),Ke=U({__name:"AuthMechanismConfiguration",props:z({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=B(l,"modelValue"),t=l,r=C(()=>{if(!t.authMechanism.configuration)return;const s=Object.entries(t.authMechanism.configuration).filter(([,p])=>!(p.flags&L.UserProvided));return Object.fromEntries(s)}),d=C(()=>window.OCA.FilesExternal.AuthMechanism.getHandler(t.authMechanism)),c=C(()=>{if(!r.value)return!1;for(const s of Object.values(r.value))if(!(s.flags&L.Hidden||s.flags&L.UserProvided))return!0;return!1}),o=M(!1);K(async()=>{d.value&&(o.value=!0,await window.customElements.whenDefined(d.value.tagName),o.value=!1)}),Z(r,()=>{for(const s in r.value)s in a.value||(a.value[s]=r.value[s]?.type===fe.Boolean?!1:"")});function i(s){const p=[s.detail].flat()[0];a.value={...a.value,...p}}return(s,p)=>c.value?(u(),h("fieldset",{key:0,class:x(s.$style.authMechanismConfiguration)},[y("legend",null,v(e(n)("files_external","Authentication")),1),d.value?(u(),h(S,{key:0},[o.value?(u(),k(e(ce),{key:0})):(u(),k(Ce(d.value.tagName),{key:1,".modelValue":a.value,".authMechanism":l.authMechanism,"onUpdate:modelValue":i},null,40,[".modelValue",".authMechanism"]))],64)):(u(!0),h(S,{key:1},O(r.value,(_,m)=>W((u(),k(pe,{key:_.value,modelValue:a.value[m],"onUpdate:modelValue":f=>a.value[m]=f,"config-key":m,"config-option":_},null,8,["modelValue","onUpdate:modelValue","config-key","config-option"])),[[Y,!(_.flags&e(L).Hidden)]])),128))],2)):T("",!0)}}),We="_authMechanismConfiguration_kpcpy_2",Ye={authMechanismConfiguration:We},Je={$style:Ye},Xe=q(Ke,[["__cssModules",Je]]),ea=U({__name:"BackendConfiguration",props:z({configuration:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=B(l,"modelValue"),t=l;return Z(()=>t.configuration,()=>{for(const r in t.configuration)r in a.value||(a.value[r]=t.configuration[r]?.defaultValue??(t.configuration[r]?.type===fe.Boolean?!1:""))},{immediate:!0}),(r,d)=>(u(),h("fieldset",{class:x(r.$style.backendConfiguration)},[y("legend",null,v(e(n)("files_external","Storage configuration")),1),(u(!0),h(S,null,O(l.configuration,(c,o)=>W((u(),k(pe,{key:c.value,modelValue:a.value[o],"onUpdate:modelValue":i=>a.value[o]=i,configKey:o,configOption:c},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[Y,!(c.flags&e(L).Hidden)]])),128))],2))}}),aa="_backendConfiguration_1sf6y_2",ta={backendConfiguration:aa},la={$style:ta},sa=q(ea,[["__cssModules",la]]),{isAdmin:na}=A("files_external","settings"),se=ke("files_external--storages",()=>{const l=M([]),a=M([]);async function t(m){const f=R("apps/files_external/globalstorages"),{data:g}=await $.post(f,Q(m),{confirmPassword:I.Strict});l.value.push(D(g))}async function r(m){const f=R("apps/files_external/userstorages"),{data:g}=await $.post(f,Q(m),{confirmPassword:I.Strict});a.value.push(D(g))}async function d(m){await $.delete(p(m),{confirmPassword:I.Strict}),m.type==="personal"?a.value=a.value.filter(f=>f.id!==m.id):l.value=l.value.filter(f=>f.id!==m.id)}async function c(m){const{data:f}=await $.put(p(m),Q(m),{confirmPassword:I.Strict});_(D(f))}async function o(m){const{data:f}=await $.get(p(m));_(D(f))}return s(),{globalStorages:l,userStorages:a,createGlobalStorage:t,createUserStorage:r,deleteStorage:d,reloadStorage:o,updateStorage:c};async function i(m){const f=`apps/files_external/${m}`,{data:g}=await $.get(R(f));return Object.values(g).map(D)}async function s(){ge($),na?l.value=await i("globalstorages"):(a.value=await i("userstorages"),l.value=await i("userglobalstorages"))}function p(m){const f=m.type==="personal"?"userstorages":"globalstorages";return R(`apps/files_external/${f}/${m.id}`)}function _(m){if(m.type==="personal"){const f=a.value.findIndex(g=>g.id===m.id);a.value.splice(f,1,m)}else{const f=l.value.findIndex(g=>g.id===m.id);l.value.splice(f,1,m)}}});function D(l){return{...l,mountOptions:he(l.mountOptions)}}function he(l){const a={...l};return a.encrypt=H(a.encrypt,!0),a.previews=H(a.previews,!0),a.enable_sharing=H(a.enable_sharing,!1),a.filesystem_check_changes=typeof a.filesystem_check_changes=="string"?Number.parseInt(a.filesystem_check_changes):a.filesystem_check_changes??G.OncePerRequest,a.encoding_compatibility=H(a.encoding_compatibility,!1),a.readonly=H(a.readonly,!1),a}function H(l,a=!1){return l===void 0?a:l===!0||l==="true"||l==="1"}const oa=["id","aria-labelledby"],ia=U({__name:"MountOptions",props:{modelValue:{required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(l){const a=B(l,"modelValue");K(()=>{Object.keys(a.value).length===0&&(a.value=he(a.value))});const{hasEncryption:t}=A("files_external","settings"),r=ie(),d=ie(),c=M(!1),o=[{label:n("files_external","Never"),value:G.Never},{label:n("files_external","Once every direct access"),value:G.OncePerRequest},{label:n("files_external","Always"),value:G.Always}],i=C({get(){return o.find(s=>s.value===a.value.filesystem_check_changes)},set(s){a.value.filesystem_check_changes=s?.value??G.OncePerRequest}});return(s,p)=>(u(),h("div",{class:x(s.$style.mountOptions)},[b(e(P),{id:e(r),"aria-controls":e(d),"aria-expanded":c.value,variant:"tertiary-no-background",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{directional:"",path:c.value?e($e):e(Ue)},null,8,["path"])]),default:w(()=>[V(" "+v(e(n)("files_external","Mount options")),1)]),_:1},8,["id","aria-controls","aria-expanded"]),W(y("fieldset",{id:e(d),class:x(s.$style.mountOptions__fieldset),"aria-labelledby":e(r)},[b(e(ae),{modelValue:i.value,"onUpdate:modelValue":p[1]||(p[1]=_=>i.value=_),inputLabel:e(n)("files_external","Check filesystem changes"),options:o},null,8,["modelValue","inputLabel"]),b(e(E),{modelValue:l.modelValue.readonly,"onUpdate:modelValue":p[2]||(p[2]=_=>l.modelValue.readonly=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Read only")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.previews,"onUpdate:modelValue":p[3]||(p[3]=_=>l.modelValue.previews=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable previews")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.enable_sharing,"onUpdate:modelValue":p[4]||(p[4]=_=>l.modelValue.enable_sharing=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable sharing")),1)]),_:1},8,["modelValue"]),e(t)?(u(),k(e(E),{key:0,modelValue:l.modelValue.encrypt,"onUpdate:modelValue":p[5]||(p[5]=_=>l.modelValue.encrypt=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable encryption")),1)]),_:1},8,["modelValue"])):T("",!0),b(e(E),{modelValue:l.modelValue.encoding_compatibility,"onUpdate:modelValue":p[6]||(p[6]=_=>l.modelValue.encoding_compatibility=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Compatibility with Mac NFD encoding (slow)")),1)]),_:1},8,["modelValue"])],10,oa),[[Y,c.value]])],2))}}),ra="_mountOptions_1fqyb_2",ua="_mountOptions__fieldset_1fqyb_12",da={mountOptions:ra,mountOptions__fieldset:ua},ca={$style:da},_a=q(ia,[["__cssModules",ca]]),{isAdmin:ue}=A("files_external","settings"),ma=A("files_external","allowedBackends"),de=A("files_external","backends").filter(l=>ma.includes(l.identifier)),pa=A("files_external","authMechanisms"),fa=U({__name:"AddExternalStorageDialog",props:z({storage:{default:()=>({backendOptions:{},mountOptions:{},type:ue?"system":"personal"})}},{open:{type:Boolean,default:!0},openModifiers:{}}),emits:z(["close"],["update:open"]),setup(l){const a=B(l,"open"),t=M(structuredClone(Q(l.storage)));K(()=>{a.value&&(t.value=structuredClone(Q(l.storage)))});const r=C({get(){return de.find(o=>o.identifier===t.value.backend)},set(o){t.value.backend=o?.identifier}}),d=C(()=>pa.filter(({scheme:o})=>r.value?.authSchemes[o])),c=C({get(){return d.value.find(o=>o.identifier===t.value.authMechanism)},set(o){t.value.authMechanism=o?.identifier}});return Z(d,()=>{d.value.length===1&&(t.value.authMechanism=d.value[0].identifier)}),(o,i)=>(u(),k(e(Fe),{open:a.value,"onUpdate:open":[i[9]||(i[9]=s=>a.value=s),i[11]||(i[11]=s=>s||o.$emit("close"))],isForm:"",contentClasses:o.$style.externalStorageDialog,name:t.value.id?e(n)("files_external","Edit storage"):e(n)("files_external","Add storage"),onSubmit:i[10]||(i[10]=s=>o.$emit("close",t.value))},{actions:w(()=>[l.storage.id?(u(),k(e(P),{key:0,onClick:i[8]||(i[8]=s=>o.$emit("close"))},{default:w(()=>[V(v(e(n)("files_external","Cancel")),1)]),_:1})):T("",!0),b(e(P),{variant:"primary",type:"submit"},{default:w(()=>[V(v(l.storage.id?e(n)("files_external","Edit"):e(n)("files_external","Create")),1)]),_:1})]),default:w(()=>[b(e(me),{modelValue:t.value.mountPoint,"onUpdate:modelValue":i[0]||(i[0]=s=>t.value.mountPoint=s),label:e(n)("files_external","Folder name"),required:""},null,8,["modelValue","label"]),b(_a,{modelValue:t.value.mountOptions,"onUpdate:modelValue":i[1]||(i[1]=s=>t.value.mountOptions=s)},null,8,["modelValue"]),e(ue)?(u(),k(ze,{key:0,groups:t.value.applicableGroups,"onUpdate:groups":i[2]||(i[2]=s=>t.value.applicableGroups=s),users:t.value.applicableUsers,"onUpdate:users":i[3]||(i[3]=s=>t.value.applicableUsers=s)},null,8,["groups","users"])):T("",!0),b(e(ae),{modelValue:r.value,"onUpdate:modelValue":i[4]||(i[4]=s=>r.value=s),options:e(de),disabled:!!(t.value.id&&t.value.backend),inputLabel:e(n)("files_external","External storage"),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel"]),b(e(ae),{modelValue:c.value,"onUpdate:modelValue":i[5]||(i[5]=s=>c.value=s),options:d.value,disabled:!t.value.backend||d.value.length<=1||!!(t.value.id&&t.value.authMechanism),inputLabel:e(n)("files_external","Authentication"),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel"]),r.value&&t.value.backendOptions?(u(),k(sa,{key:1,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[6]||(i[6]=s=>t.value.backendOptions=s),class:x(o.$style.externalStorageDialog__configuration),configuration:r.value.configuration},null,8,["modelValue","class","configuration"])):T("",!0),c.value&&t.value.backendOptions?(u(),k(Xe,{key:2,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[7]||(i[7]=s=>t.value.backendOptions=s),class:x(o.$style.externalStorageDialog__configuration),authMechanism:c.value},null,8,["modelValue","class","authMechanism"])):T("",!0)]),_:1},8,["open","contentClasses","name"]))}}),ga="_externalStorageDialog_9wew8_2",va="_externalStorageDialog__configuration_9wew8_9",ba={externalStorageDialog:ga,externalStorageDialog__configuration:va},ya={$style:ba},xe=q(fa,[["__cssModules",ya]]),ha={class:"hidden-visually"},xa={key:0},wa=U({__name:"ExternalStorageTableRow",props:{storage:{},isAdmin:{type:Boolean}},setup(l){const a=l,t=se(),r=A("files_external","backends"),d=C(()=>r.find(g=>g.identifier===a.storage.backend).name),c=A("files_external","authMechanisms"),o=C(()=>c.find(g=>g.identifier===a.storage.authMechanism).name),i=M(!1),s=C(()=>{if(i.value)return{icon:"loading",label:n("files_external","Checking …")};const g=a.storage.status??j.Indeterminate,ne=a.storage.statusMessage||Ge[g],N=Ie[g],oe=g===j.NetworkError||g===j.Timeout,we=!oe&&g!==j.Success&&g!==j.Indeterminate;return{icon:N,label:ne,isWarning:oe,isError:we}}),p=be(()=>a.storage.applicableUsers||[]);async function _(){await t.deleteStorage(a.storage)}async function m(){const g=await Be(xe,{storage:a.storage});g&&await t.updateStorage(g)}async function f(){i.value=!0;try{await t.reloadStorage(a.storage)}finally{i.value=!1}}return(g,ne)=>(u(),h("tr",{class:x(g.$style.storageTableRow)},[y("td",null,[y("span",ha,v(s.value.label),1),b(e(P),{"aria-label":e(n)("files_external","Recheck status"),title:s.value.label,variant:"tertiary-no-background",onClick:f},{icon:w(()=>[s.value.icon==="loading"?(u(),k(e(ce),{key:0})):(u(),k(e(F),{key:1,class:x({[g.$style.storageTableRow__status_error]:s.value.isError,[g.$style.storageTableRow__status_warning]:s.value.isWarning}),path:s.value.icon},null,8,["class","path"]))]),_:1},8,["aria-label","title"])]),y("td",null,v(l.storage.mountPoint),1),y("td",null,v(d.value),1),y("td",null,v(o.value),1),l.isAdmin?(u(),h("td",xa,[y("div",{class:x(g.$style.storageTableRow__cellApplicable)},[(u(!0),h(S,null,O(l.storage.applicableGroups,N=>(u(),k(e(De),{key:N,iconPath:e(Te),noClose:"",text:N},null,8,["iconPath","text"]))),128)),(u(!0),h(S,null,O(e(p),N=>(u(),k(e(Le),{key:N.user,displayName:N.displayName,size:24,user:N.user},null,8,["displayName","user"]))),128))],2)])):T("",!0),y("td",null,[l.isAdmin||l.storage.type==="personal"?(u(),h("div",{key:0,class:x(g.$style.storageTableRow__cellActions)},[b(e(P),{"aria-label":e(n)("files_external","Edit"),title:e(n)("files_external","Edit"),onClick:m},{icon:w(()=>[b(e(F),{path:e(Oe)},null,8,["path"])]),_:1},8,["aria-label","title"]),b(e(P),{"aria-label":e(n)("files_external","Delete"),title:e(n)("files_external","Delete"),variant:"error",onClick:_},{icon:w(()=>[b(e(F),{path:e(qe)},null,8,["path"])]),_:1},8,["aria-label","title"])],2)):(u(),k(e(F),{key:1,inline:"",path:e(Ne),name:e(n)("files_external","System provided storage"),title:e(n)("files_external","System provided storage")},null,8,["path","name","title"]))])],2))}}),ka="_storageTableRow__cellActions_1k62p_2",Va="_storageTableRow__cellApplicable_1k62p_7",Sa="_storageTableRow__status_warning_1k62p_17",Ca="_storageTableRow__status_error_1k62p_21",Ma={storageTableRow__cellActions:ka,storageTableRow__cellApplicable:Va,storageTableRow__status_warning:Sa,storageTableRow__status_error:Ca},Aa={$style:Ma},$a=q(wa,[["__cssModules",Aa]]),Ua=["aria-label"],Ta={class:"hidden-visually"},Oa={key:0},qa={class:"hidden-visually"},Na=U({__name:"ExternalStorageTable",setup(l){const a=se(),{isAdmin:t}=A("files_external","settings"),r=C(()=>t?a.globalStorages:[...a.userStorages,...a.globalStorages]);return(d,c)=>(u(),h("table",{class:x(d.$style.storageTable),"aria-label":e(n)("files_external","External storages")},[y("thead",{class:x(d.$style.storageTable__header)},[y("tr",null,[y("th",{class:x(d.$style.storageTable__headerStatus)},[y("span",Ta,v(e(n)("files_external","Status")),1)],2),y("th",{class:x(d.$style.storageTable__headerFolder)},v(e(n)("files_external","Folder name")),3),y("th",{class:x(d.$style.storageTable__headerBackend)},v(e(n)("files_external","External storage")),3),y("th",{class:x(d.$style.storageTable__headerAuthentication)},v(e(n)("files_external","Authentication")),3),e(t)?(u(),h("th",Oa,v(e(n)("files_external","Restricted to")),1)):T("",!0),y("th",{class:x(d.$style.storageTable__headerActions)},[y("span",qa,v(e(n)("files_external","Actions")),1)],2)])],2),y("tbody",null,[(u(!0),h(S,null,O(r.value,o=>(u(),k($a,{key:o.id,isAdmin:e(t),storage:o},null,8,["isAdmin","storage"]))),128))])],10,Ua))}}),Pa="_storageTable_1dqte_2",Ea="_storageTable__header_1dqte_11",Ra="_storageTable__headerStatus_1dqte_16",Fa="_storageTable__headerFolder_1dqte_20",Ba="_storageTable__headerBackend_1dqte_24",ja="_storageTable__headerFAuthentication_1dqte_28",Da="_storageTable__headerActions_1dqte_32",Ha={storageTable:Pa,storageTable__header:Ea,storageTable__headerStatus:Ra,storageTable__headerFolder:Fa,storageTable__headerBackend:Ba,storageTable__headerFAuthentication:ja,storageTable__headerActions:Da},La={$style:Ha},Ga=q(Na,[["__cssModules",La]]),Ia=U({__name:"UserMountSettings",setup(l){const a=A("files_external","user-mounting"),t=A("files_external","backends").filter(c=>c.identifier!=="local"),r=M(a.allowUserMounting),d=M(a.allowedBackends);return Z(r,()=>{const c=!r.value;window.OCP.AppConfig.setValue("files_external","allow_user_mounting",r.value?"yes":"no",{success:()=>te(n("files_external","Saved")),error:()=>{r.value=c,le(n("files_external","Error while saving"))}})}),Z(d,(c,o)=>{window.OCP.AppConfig.setValue("files_external","user_mounting_backends",c.join(","),{success:()=>te(n("files_external","Saved allowed backends")),error:()=>{le(n("files_external","Failed to save allowed backends")),d.value=o}})}),(c,o)=>(u(),h("form",null,[y("h3",{class:x(c.$style.userMountSettings__heading)},v(e(n)("files_external","Advanced options for external storage mounts")),3),b(e(E),{modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=i=>r.value=i),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Allow people to mount external storage")),1)]),_:1},8,["modelValue"]),W(y("fieldset",{class:x(c.$style.userMountSettings__backends)},[y("legend",null,v(e(n)("files_external","External storage backends people are allowed to mount")),1),(u(!0),h(S,null,O(e(t),i=>(u(),k(e(E),{key:i.identifier,modelValue:d.value,"onUpdate:modelValue":o[1]||(o[1]=s=>d.value=s),value:i.identifier,name:"allowUserMountingBackends[]"},{default:w(()=>[V(v(i.name),1)]),_:2},1032,["modelValue","value"]))),128))],2),[[Y,r.value]])]))}}),Qa="_userMountSettings__heading_59moz_2",Za="_userMountSettings__backends_59moz_9",za={userMountSettings__heading:Qa,userMountSettings__backends:Za},Ka={$style:za},Wa=q(Ia,[["__cssModules",Ka]]);const Ya=["aria-label"],Ja=U({__name:"ExternalStoragesSection",setup(l){const a=A("files_external","settings",{docUrl:"",dependencyIssues:{messages:null,modules:null},isAdmin:!1}),t=se(),r=a.dependencyIssues?.messages??[],d=a.dependencyIssues?.modules??{},c=M(!1),o=M();async function i(s){if(c.value=!1,!!s)try{a.isAdmin?await t.createGlobalStorage(s):await t.createUserStorage(s),o.value=void 0}catch(p){ve.error("Failed to add external storage",{error:p,storage:s}),o.value={...s},c.value=!0}}return(s,p)=>(u(),k(e(_e),{docUrl:e(a).docUrl,name:e(n)("files_external","External storage"),description:e(n)("files_external","External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices.")+(e(a).isAdmin?" "+e(n)("files_external","You may also allow people to mount their own external storage services."):"")},{default:w(()=>[(u(!0),h(S,null,O(e(r),(_,m)=>(u(),k(e(re),{key:m,type:"error"},{default:w(()=>[V(v(_),1)]),_:2},1024))),128)),(u(!0),h(S,null,O(e(d),(_,m)=>(u(),k(e(re),{key:m,type:"warning"},{default:w(()=>[y("p",null,[m==="curl"?(u(),h(S,{key:0},[V(v(e(n)("files_external","The cURL support in PHP is not enabled or installed.")),1)],64)):m==="ftp"?(u(),h(S,{key:1},[V(v(e(n)("files_external","The FTP support in PHP is not enabled or installed.")),1)],64)):(u(),h(S,{key:2},[V(v(e(n)("files_external","{module} is not installed.",{module:m})),1)],64)),V(" "+v(e(Ee)("files_external","Please ask your system administrator to install it as otherwise mounting the following backend is not possible:","Please ask your system administrator to install it as otherwise mounting the following backends is not possible:",_.length)),1)]),y("ul",{class:x(s.$style.externalStoragesSection__dependantList),"aria-label":e(n)("files_external","Dependant backends")},[(u(!0),h(S,null,O(_,f=>(u(),h("li",{key:f},v(f),1))),128))],10,Ya)]),_:2},1024))),128)),T("",!0),b(Ga),b(e(P),{class:x(s.$style.externalStoragesSection__newStorageButton),variant:"primary",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{path:e(Pe)},null,8,["path"])]),default:w(()=>[V(" "+v(e(n)("files_external","Add external storage")),1)]),_:1},8,["class"]),b(xe,{open:c.value,"onUpdate:open":p[1]||(p[1]=_=>c.value=_),storage:o.value,onClose:i},null,8,["open","storage"]),e(a).isAdmin?(u(),k(Wa,{key:1})):T("",!0)]),_:1},8,["docUrl","name","description"]))}}),Xa="_externalStoragesSection__dependantList_atsmn_2",et="_externalStoragesSection__newStorageButton_atsmn_7",at={externalStoragesSection__dependantList:Xa,externalStoragesSection__newStorageButton:et},tt={$style:at},lt=q(Ja,[["__cssModules",tt]]),st=U({__name:"GlobalCredentialsSection",setup(l){const a=A("files_external","global-credentials"),t=M(!1),r=M(a.user),d=M(a.password);ge($);async function c(){try{t.value=!0;const{data:o}=await $.post(R("apps/files_external/globalcredentials"),{uid:a.uid,user:r.value,password:d.value},{confirmPassword:I.Strict});if(o){te(n("files_external","Global credentials saved"));return}}catch(o){ve.error(o)}finally{t.value=!1}le(n("files_external","Could not save global credentials")),r.value=a.user,d.value=a.password}return(o,i)=>(u(),k(e(_e),{name:e(n)("files_external","Global credentials"),description:e(n)("files_external","Global credentials can be used to authenticate with multiple external storages that have the same credentials.")},{default:w(()=>[y("form",{id:"global_credentials",class:x(o.$style.globalCredentialsSectionForm),autocomplete:"false",onSubmit:Me(c,["prevent"])},[b(e(me),{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=s=>r.value=s),name:"username",autocomplete:"false",label:e(n)("files_external","Login")},null,8,["modelValue","label"]),b(e(He),{modelValue:d.value,"onUpdate:modelValue":i[1]||(i[1]=s=>d.value=s),name:"password",autocomplete:"false",label:e(n)("files_external","Password")},null,8,["modelValue","label"]),b(e(P),{class:x(o.$style.globalCredentialsSectionForm__submit),disabled:t.value,variant:"primary",type:"submit"},{default:w(()=>[V(v(t.value?e(n)("files_external","Saving …"):e(n)("files_external","Save")),1)]),_:1},8,["class","disabled"])],34)]),_:1},8,["name","description"]))}}),nt="_globalCredentialsSectionForm_bgjv2_2",ot="_globalCredentialsSectionForm__submit_bgjv2_10",it={globalCredentialsSectionForm:nt,globalCredentialsSectionForm__submit:ot},rt={$style:it},ut=q(st,[["__cssModules",rt]]),dt=U({__name:"FilesExternalSettings",setup(l){return(a,t)=>(u(),h(S,null,[b(lt),b(ut)],64))}}),ct=Ve(),X=Ae(dt);X.config.idPrefix="files-external",X.use(ct),X.mount("#files-external"); +import{d as ke,c as Ve}from"./pinia-DaVFx_pY.chunk.mjs";import{a4 as K,a1 as ee,I as Se,p as C,b as U,s as B,c as k,o as u,u as e,r as M,q as z,v as Z,j as h,l as T,n as x,k as y,t as v,F as S,H as Ce,C as O,_ as W,$ as Y,Q,a0 as ie,e as b,w,g as V,E as Me,h as Ae}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{N as ce,l as $e,n as Ue,o as Te,p as Oe,f as qe,q as Ne,e as Pe}from"./mdi-e8YUrhPH.chunk.mjs";import{a as q,l as A}from"./index-BgmsSgl5.chunk.mjs";import{t as n,b as Ee}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as P}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";import{g as R,N as F}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as re}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as _e}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{d as Re,N as Fe,s as Be}from"./index-Bos-XXa5.chunk.mjs";import{N as ae}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{_ as me}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{c as $}from"./index-CPwHjAPR.chunk.mjs";import{N as je}from"./index-Bk4hMpWo.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import{N as E}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as De}from"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as He}from"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import{N as Le}from"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{_ as pe}from"./AuthMechanismRsa-Bb04w0qi.chunk.mjs";import{C as fe,a as L,M as G,S as j,b as Ge,c as Ie}from"./types-BxBcKZMN.chunk.mjs";import{a as ge,P as I}from"./index-CXHO4UEV.chunk.mjs";import{d as te,a as le}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{l as ve}from"./logger-DaDjQfyb.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const Qe='',J=Se(new Map);function be(l){const a=C(()=>ee(l).map(t=>({id:`user:${t}`,user:t,displayName:J.get(t)||t})));return K(async()=>{const t=ee(l).filter(r=>!J.has(r));if(t.length>0){const{data:r}=await $.post(R("/displaynames"),{users:t});for(const[d,c]of Object.entries(r.users))J.set(d,c)}}),a}function Ze(l){return C(()=>ee(l).map(ye))}function ye(l){return{id:l,isNoUser:!0,displayName:l,iconSvg:Qe}}const ze=U({__name:"ApplicableEntities",props:{groups:{default:()=>[]},groupsModifiers:{},users:{default:()=>[]},usersModifiers:{}},emits:["update:groups","update:users"],setup(l){const a=B(l,"groups"),t=B(l,"users"),r=M([]),d=be(t),c=Ze(a),o=C({get(){return[...c.value,...d.value]},set(p){t.value=p.filter(_=>_.user).map(_=>_.user),a.value=p.filter(_=>_.isNoUser).map(_=>_.id)}}),i=Re(s,500);async function s(p){const{data:_}=await $.get(R("apps/files_external/ajax/applicable"),{params:{pattern:p,limit:20}}),m=[...r.value.map(f=>[f.id,f]),...Object.entries(_.groups).map(([f,g])=>[f,{...ye(f),displayName:g}]),...Object.entries(_.users).map(([f,g])=>[`user:${f}`,{id:`user:${f}`,user:f,displayName:g}])];r.value=[...new Map(m).values()]}return(p,_)=>(u(),k(e(je),{modelValue:o.value,"onUpdate:modelValue":_[0]||(_[0]=m=>o.value=m),keepOpen:"",multiple:"",options:r.value,inputLabel:e(n)("files_external","Restrict to"),onSearch:e(i)},null,8,["modelValue","options","inputLabel","onSearch"]))}}),Ke=U({__name:"AuthMechanismConfiguration",props:z({authMechanism:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=B(l,"modelValue"),t=l,r=C(()=>{if(!t.authMechanism.configuration)return;const s=Object.entries(t.authMechanism.configuration).filter(([,p])=>!(p.flags&L.UserProvided));return Object.fromEntries(s)}),d=C(()=>window.OCA.FilesExternal.AuthMechanism.getHandler(t.authMechanism)),c=C(()=>{if(!r.value)return!1;for(const s of Object.values(r.value))if(!(s.flags&L.Hidden||s.flags&L.UserProvided))return!0;return!1}),o=M(!1);K(async()=>{d.value&&(o.value=!0,await window.customElements.whenDefined(d.value.tagName),o.value=!1)}),Z(r,()=>{for(const s in r.value)s in a.value||(a.value[s]=r.value[s]?.type===fe.Boolean?!1:"")});function i(s){const p=[s.detail].flat()[0];a.value={...a.value,...p}}return(s,p)=>c.value?(u(),h("fieldset",{key:0,class:x(s.$style.authMechanismConfiguration)},[y("legend",null,v(e(n)("files_external","Authentication")),1),d.value?(u(),h(S,{key:0},[o.value?(u(),k(e(ce),{key:0})):(u(),k(Ce(d.value.tagName),{key:1,".modelValue":a.value,".authMechanism":l.authMechanism,"onUpdate:modelValue":i},null,40,[".modelValue",".authMechanism"]))],64)):(u(!0),h(S,{key:1},O(r.value,(_,m)=>W((u(),k(pe,{key:_.value,modelValue:a.value[m],"onUpdate:modelValue":f=>a.value[m]=f,"config-key":m,"config-option":_},null,8,["modelValue","onUpdate:modelValue","config-key","config-option"])),[[Y,!(_.flags&e(L).Hidden)]])),128))],2)):T("",!0)}}),We="_authMechanismConfiguration_kpcpy_2",Ye={authMechanismConfiguration:We},Je={$style:Ye},Xe=q(Ke,[["__cssModules",Je]]),ea=U({__name:"BackendConfiguration",props:z({configuration:{}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(l){const a=B(l,"modelValue"),t=l;return Z(()=>t.configuration,()=>{for(const r in t.configuration)r in a.value||(a.value[r]=t.configuration[r]?.defaultValue??(t.configuration[r]?.type===fe.Boolean?!1:""))},{immediate:!0}),(r,d)=>(u(),h("fieldset",{class:x(r.$style.backendConfiguration)},[y("legend",null,v(e(n)("files_external","Storage configuration")),1),(u(!0),h(S,null,O(l.configuration,(c,o)=>W((u(),k(pe,{key:c.value,modelValue:a.value[o],"onUpdate:modelValue":i=>a.value[o]=i,configKey:o,configOption:c},null,8,["modelValue","onUpdate:modelValue","configKey","configOption"])),[[Y,!(c.flags&e(L).Hidden)]])),128))],2))}}),aa="_backendConfiguration_1sf6y_2",ta={backendConfiguration:aa},la={$style:ta},sa=q(ea,[["__cssModules",la]]),{isAdmin:na}=A("files_external","settings"),se=ke("files_external--storages",()=>{const l=M([]),a=M([]);async function t(m){const f=R("apps/files_external/globalstorages"),{data:g}=await $.post(f,Q(m),{confirmPassword:I.Strict});l.value.push(D(g))}async function r(m){const f=R("apps/files_external/userstorages"),{data:g}=await $.post(f,Q(m),{confirmPassword:I.Strict});a.value.push(D(g))}async function d(m){await $.delete(p(m),{confirmPassword:I.Strict}),m.type==="personal"?a.value=a.value.filter(f=>f.id!==m.id):l.value=l.value.filter(f=>f.id!==m.id)}async function c(m){const{data:f}=await $.put(p(m),Q(m),{confirmPassword:I.Strict});_(D(f))}async function o(m){const{data:f}=await $.get(p(m));_(D(f))}return s(),{globalStorages:l,userStorages:a,createGlobalStorage:t,createUserStorage:r,deleteStorage:d,reloadStorage:o,updateStorage:c};async function i(m){const f=`apps/files_external/${m}`,{data:g}=await $.get(R(f));return Object.values(g).map(D)}async function s(){ge($),na?l.value=await i("globalstorages"):(a.value=await i("userstorages"),l.value=await i("userglobalstorages"))}function p(m){const f=m.type==="personal"?"userstorages":"globalstorages";return R(`apps/files_external/${f}/${m.id}`)}function _(m){if(m.type==="personal"){const f=a.value.findIndex(g=>g.id===m.id);a.value.splice(f,1,m)}else{const f=l.value.findIndex(g=>g.id===m.id);l.value.splice(f,1,m)}}});function D(l){return{...l,mountOptions:he(l.mountOptions)}}function he(l){const a={...l};return a.encrypt=H(a.encrypt,!0),a.previews=H(a.previews,!0),a.enable_sharing=H(a.enable_sharing,!1),a.filesystem_check_changes=typeof a.filesystem_check_changes=="string"?Number.parseInt(a.filesystem_check_changes):a.filesystem_check_changes??G.OncePerRequest,a.encoding_compatibility=H(a.encoding_compatibility,!1),a.readonly=H(a.readonly,!1),a}function H(l,a=!1){return l===void 0?a:l===!0||l==="true"||l==="1"}const oa=["id","aria-labelledby"],ia=U({__name:"MountOptions",props:{modelValue:{required:!0},modelModifiers:{}},emits:["update:modelValue"],setup(l){const a=B(l,"modelValue");K(()=>{Object.keys(a.value).length===0&&(a.value=he(a.value))});const{hasEncryption:t}=A("files_external","settings"),r=ie(),d=ie(),c=M(!1),o=[{label:n("files_external","Never"),value:G.Never},{label:n("files_external","Once every direct access"),value:G.OncePerRequest},{label:n("files_external","Always"),value:G.Always}],i=C({get(){return o.find(s=>s.value===a.value.filesystem_check_changes)},set(s){a.value.filesystem_check_changes=s?.value??G.OncePerRequest}});return(s,p)=>(u(),h("div",{class:x(s.$style.mountOptions)},[b(e(P),{id:e(r),"aria-controls":e(d),"aria-expanded":c.value,variant:"tertiary-no-background",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{directional:"",path:c.value?e($e):e(Ue)},null,8,["path"])]),default:w(()=>[V(" "+v(e(n)("files_external","Mount options")),1)]),_:1},8,["id","aria-controls","aria-expanded"]),W(y("fieldset",{id:e(d),class:x(s.$style.mountOptions__fieldset),"aria-labelledby":e(r)},[b(e(ae),{modelValue:i.value,"onUpdate:modelValue":p[1]||(p[1]=_=>i.value=_),inputLabel:e(n)("files_external","Check filesystem changes"),options:o},null,8,["modelValue","inputLabel"]),b(e(E),{modelValue:l.modelValue.readonly,"onUpdate:modelValue":p[2]||(p[2]=_=>l.modelValue.readonly=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Read only")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.previews,"onUpdate:modelValue":p[3]||(p[3]=_=>l.modelValue.previews=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable previews")),1)]),_:1},8,["modelValue"]),b(e(E),{modelValue:l.modelValue.enable_sharing,"onUpdate:modelValue":p[4]||(p[4]=_=>l.modelValue.enable_sharing=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable sharing")),1)]),_:1},8,["modelValue"]),e(t)?(u(),k(e(E),{key:0,modelValue:l.modelValue.encrypt,"onUpdate:modelValue":p[5]||(p[5]=_=>l.modelValue.encrypt=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Enable encryption")),1)]),_:1},8,["modelValue"])):T("",!0),b(e(E),{modelValue:l.modelValue.encoding_compatibility,"onUpdate:modelValue":p[6]||(p[6]=_=>l.modelValue.encoding_compatibility=_),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Compatibility with Mac NFD encoding (slow)")),1)]),_:1},8,["modelValue"])],10,oa),[[Y,c.value]])],2))}}),ra="_mountOptions_1fqyb_2",ua="_mountOptions__fieldset_1fqyb_12",da={mountOptions:ra,mountOptions__fieldset:ua},ca={$style:da},_a=q(ia,[["__cssModules",ca]]),{isAdmin:ue}=A("files_external","settings"),ma=A("files_external","allowedBackends"),de=A("files_external","backends").filter(l=>ma.includes(l.identifier)),pa=A("files_external","authMechanisms"),fa=U({__name:"AddExternalStorageDialog",props:z({storage:{default:()=>({backendOptions:{},mountOptions:{},type:ue?"system":"personal"})}},{open:{type:Boolean,default:!0},openModifiers:{}}),emits:z(["close"],["update:open"]),setup(l){const a=B(l,"open"),t=M(structuredClone(Q(l.storage)));K(()=>{a.value&&(t.value=structuredClone(Q(l.storage)))});const r=C({get(){return de.find(o=>o.identifier===t.value.backend)},set(o){t.value.backend=o?.identifier}}),d=C(()=>pa.filter(({scheme:o})=>r.value?.authSchemes[o])),c=C({get(){return d.value.find(o=>o.identifier===t.value.authMechanism)},set(o){t.value.authMechanism=o?.identifier}});return Z(d,()=>{d.value.length===1&&(t.value.authMechanism=d.value[0].identifier)}),(o,i)=>(u(),k(e(Fe),{open:a.value,"onUpdate:open":[i[9]||(i[9]=s=>a.value=s),i[11]||(i[11]=s=>s||o.$emit("close"))],isForm:"",contentClasses:o.$style.externalStorageDialog,name:t.value.id?e(n)("files_external","Edit storage"):e(n)("files_external","Add storage"),onSubmit:i[10]||(i[10]=s=>o.$emit("close",t.value))},{actions:w(()=>[l.storage.id?(u(),k(e(P),{key:0,onClick:i[8]||(i[8]=s=>o.$emit("close"))},{default:w(()=>[V(v(e(n)("files_external","Cancel")),1)]),_:1})):T("",!0),b(e(P),{variant:"primary",type:"submit"},{default:w(()=>[V(v(l.storage.id?e(n)("files_external","Edit"):e(n)("files_external","Create")),1)]),_:1})]),default:w(()=>[b(e(me),{modelValue:t.value.mountPoint,"onUpdate:modelValue":i[0]||(i[0]=s=>t.value.mountPoint=s),label:e(n)("files_external","Folder name"),required:""},null,8,["modelValue","label"]),b(_a,{modelValue:t.value.mountOptions,"onUpdate:modelValue":i[1]||(i[1]=s=>t.value.mountOptions=s)},null,8,["modelValue"]),e(ue)?(u(),k(ze,{key:0,groups:t.value.applicableGroups,"onUpdate:groups":i[2]||(i[2]=s=>t.value.applicableGroups=s),users:t.value.applicableUsers,"onUpdate:users":i[3]||(i[3]=s=>t.value.applicableUsers=s)},null,8,["groups","users"])):T("",!0),b(e(ae),{modelValue:r.value,"onUpdate:modelValue":i[4]||(i[4]=s=>r.value=s),options:e(de),disabled:!!(t.value.id&&t.value.backend),inputLabel:e(n)("files_external","External storage"),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel"]),b(e(ae),{modelValue:c.value,"onUpdate:modelValue":i[5]||(i[5]=s=>c.value=s),options:d.value,disabled:!t.value.backend||d.value.length<=1||!!(t.value.id&&t.value.authMechanism),inputLabel:e(n)("files_external","Authentication"),label:"name",required:""},null,8,["modelValue","options","disabled","inputLabel"]),r.value&&t.value.backendOptions?(u(),k(sa,{key:1,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[6]||(i[6]=s=>t.value.backendOptions=s),class:x(o.$style.externalStorageDialog__configuration),configuration:r.value.configuration},null,8,["modelValue","class","configuration"])):T("",!0),c.value&&t.value.backendOptions?(u(),k(Xe,{key:2,modelValue:t.value.backendOptions,"onUpdate:modelValue":i[7]||(i[7]=s=>t.value.backendOptions=s),class:x(o.$style.externalStorageDialog__configuration),authMechanism:c.value},null,8,["modelValue","class","authMechanism"])):T("",!0)]),_:1},8,["open","contentClasses","name"]))}}),ga="_externalStorageDialog_9wew8_2",va="_externalStorageDialog__configuration_9wew8_9",ba={externalStorageDialog:ga,externalStorageDialog__configuration:va},ya={$style:ba},xe=q(fa,[["__cssModules",ya]]),ha={class:"hidden-visually"},xa={key:0},wa=U({__name:"ExternalStorageTableRow",props:{storage:{},isAdmin:{type:Boolean}},setup(l){const a=l,t=se(),r=A("files_external","backends"),d=C(()=>r.find(g=>g.identifier===a.storage.backend).name),c=A("files_external","authMechanisms"),o=C(()=>c.find(g=>g.identifier===a.storage.authMechanism).name),i=M(!1),s=C(()=>{if(i.value)return{icon:"loading",label:n("files_external","Checking …")};const g=a.storage.status??j.Indeterminate,ne=a.storage.statusMessage||Ge[g],N=Ie[g],oe=g===j.NetworkError||g===j.Timeout,we=!oe&&g!==j.Success&&g!==j.Indeterminate;return{icon:N,label:ne,isWarning:oe,isError:we}}),p=be(()=>a.storage.applicableUsers||[]);async function _(){await t.deleteStorage(a.storage)}async function m(){const g=await Be(xe,{storage:a.storage});g&&await t.updateStorage(g)}async function f(){i.value=!0;try{await t.reloadStorage(a.storage)}finally{i.value=!1}}return(g,ne)=>(u(),h("tr",{class:x(g.$style.storageTableRow)},[y("td",null,[y("span",ha,v(s.value.label),1),b(e(P),{"aria-label":e(n)("files_external","Recheck status"),title:s.value.label,variant:"tertiary-no-background",onClick:f},{icon:w(()=>[s.value.icon==="loading"?(u(),k(e(ce),{key:0})):(u(),k(e(F),{key:1,class:x({[g.$style.storageTableRow__status_error]:s.value.isError,[g.$style.storageTableRow__status_warning]:s.value.isWarning}),path:s.value.icon},null,8,["class","path"]))]),_:1},8,["aria-label","title"])]),y("td",null,v(l.storage.mountPoint),1),y("td",null,v(d.value),1),y("td",null,v(o.value),1),l.isAdmin?(u(),h("td",xa,[y("div",{class:x(g.$style.storageTableRow__cellApplicable)},[(u(!0),h(S,null,O(l.storage.applicableGroups,N=>(u(),k(e(De),{key:N,iconPath:e(Te),noClose:"",text:N},null,8,["iconPath","text"]))),128)),(u(!0),h(S,null,O(e(p),N=>(u(),k(e(Le),{key:N.user,displayName:N.displayName,size:24,user:N.user},null,8,["displayName","user"]))),128))],2)])):T("",!0),y("td",null,[l.isAdmin||l.storage.type==="personal"?(u(),h("div",{key:0,class:x(g.$style.storageTableRow__cellActions)},[b(e(P),{"aria-label":e(n)("files_external","Edit"),title:e(n)("files_external","Edit"),onClick:m},{icon:w(()=>[b(e(F),{path:e(Oe)},null,8,["path"])]),_:1},8,["aria-label","title"]),b(e(P),{"aria-label":e(n)("files_external","Delete"),title:e(n)("files_external","Delete"),variant:"error",onClick:_},{icon:w(()=>[b(e(F),{path:e(qe)},null,8,["path"])]),_:1},8,["aria-label","title"])],2)):(u(),k(e(F),{key:1,inline:"",path:e(Ne),name:e(n)("files_external","System provided storage"),title:e(n)("files_external","System provided storage")},null,8,["path","name","title"]))])],2))}}),ka="_storageTableRow__cellActions_1k62p_2",Va="_storageTableRow__cellApplicable_1k62p_7",Sa="_storageTableRow__status_warning_1k62p_17",Ca="_storageTableRow__status_error_1k62p_21",Ma={storageTableRow__cellActions:ka,storageTableRow__cellApplicable:Va,storageTableRow__status_warning:Sa,storageTableRow__status_error:Ca},Aa={$style:Ma},$a=q(wa,[["__cssModules",Aa]]),Ua=["aria-label"],Ta={class:"hidden-visually"},Oa={key:0},qa={class:"hidden-visually"},Na=U({__name:"ExternalStorageTable",setup(l){const a=se(),{isAdmin:t}=A("files_external","settings"),r=C(()=>t?a.globalStorages:[...a.userStorages,...a.globalStorages]);return(d,c)=>(u(),h("table",{class:x(d.$style.storageTable),"aria-label":e(n)("files_external","External storages")},[y("thead",{class:x(d.$style.storageTable__header)},[y("tr",null,[y("th",{class:x(d.$style.storageTable__headerStatus)},[y("span",Ta,v(e(n)("files_external","Status")),1)],2),y("th",{class:x(d.$style.storageTable__headerFolder)},v(e(n)("files_external","Folder name")),3),y("th",{class:x(d.$style.storageTable__headerBackend)},v(e(n)("files_external","External storage")),3),y("th",{class:x(d.$style.storageTable__headerAuthentication)},v(e(n)("files_external","Authentication")),3),e(t)?(u(),h("th",Oa,v(e(n)("files_external","Restricted to")),1)):T("",!0),y("th",{class:x(d.$style.storageTable__headerActions)},[y("span",qa,v(e(n)("files_external","Actions")),1)],2)])],2),y("tbody",null,[(u(!0),h(S,null,O(r.value,o=>(u(),k($a,{key:o.id,isAdmin:e(t),storage:o},null,8,["isAdmin","storage"]))),128))])],10,Ua))}}),Pa="_storageTable_1dqte_2",Ea="_storageTable__header_1dqte_11",Ra="_storageTable__headerStatus_1dqte_16",Fa="_storageTable__headerFolder_1dqte_20",Ba="_storageTable__headerBackend_1dqte_24",ja="_storageTable__headerFAuthentication_1dqte_28",Da="_storageTable__headerActions_1dqte_32",Ha={storageTable:Pa,storageTable__header:Ea,storageTable__headerStatus:Ra,storageTable__headerFolder:Fa,storageTable__headerBackend:Ba,storageTable__headerFAuthentication:ja,storageTable__headerActions:Da},La={$style:Ha},Ga=q(Na,[["__cssModules",La]]),Ia=U({__name:"UserMountSettings",setup(l){const a=A("files_external","user-mounting"),t=A("files_external","backends").filter(c=>c.identifier!=="local"),r=M(a.allowUserMounting),d=M(a.allowedBackends);return Z(r,()=>{const c=!r.value;window.OCP.AppConfig.setValue("files_external","allow_user_mounting",r.value?"yes":"no",{success:()=>te(n("files_external","Saved")),error:()=>{r.value=c,le(n("files_external","Error while saving"))}})}),Z(d,(c,o)=>{window.OCP.AppConfig.setValue("files_external","user_mounting_backends",c.join(","),{success:()=>te(n("files_external","Saved allowed backends")),error:()=>{le(n("files_external","Failed to save allowed backends")),d.value=o}})}),(c,o)=>(u(),h("form",null,[y("h3",{class:x(c.$style.userMountSettings__heading)},v(e(n)("files_external","Advanced options for external storage mounts")),3),b(e(E),{modelValue:r.value,"onUpdate:modelValue":o[0]||(o[0]=i=>r.value=i),type:"switch"},{default:w(()=>[V(v(e(n)("files_external","Allow people to mount external storage")),1)]),_:1},8,["modelValue"]),W(y("fieldset",{class:x(c.$style.userMountSettings__backends)},[y("legend",null,v(e(n)("files_external","External storage backends people are allowed to mount")),1),(u(!0),h(S,null,O(e(t),i=>(u(),k(e(E),{key:i.identifier,modelValue:d.value,"onUpdate:modelValue":o[1]||(o[1]=s=>d.value=s),value:i.identifier,name:"allowUserMountingBackends[]"},{default:w(()=>[V(v(i.name),1)]),_:2},1032,["modelValue","value"]))),128))],2),[[Y,r.value]])]))}}),Qa="_userMountSettings__heading_59moz_2",Za="_userMountSettings__backends_59moz_9",za={userMountSettings__heading:Qa,userMountSettings__backends:Za},Ka={$style:za},Wa=q(Ia,[["__cssModules",Ka]]);const Ya=["aria-label"],Ja=U({__name:"ExternalStoragesSection",setup(l){const a=A("files_external","settings",{docUrl:"",dependencyIssues:{messages:null,modules:null},isAdmin:!1}),t=se(),r=a.dependencyIssues?.messages??[],d=a.dependencyIssues?.modules??{},c=M(!1),o=M();async function i(s){if(c.value=!1,!!s)try{a.isAdmin?await t.createGlobalStorage(s):await t.createUserStorage(s),o.value=void 0}catch(p){ve.error("Failed to add external storage",{error:p,storage:s}),o.value={...s},c.value=!0}}return(s,p)=>(u(),k(e(_e),{docUrl:e(a).docUrl,name:e(n)("files_external","External storage"),description:e(n)("files_external","External storage enables you to mount external storage services and devices as secondary Nextcloud storage devices.")+(e(a).isAdmin?" "+e(n)("files_external","You may also allow people to mount their own external storage services."):"")},{default:w(()=>[(u(!0),h(S,null,O(e(r),(_,m)=>(u(),k(e(re),{key:m,type:"error"},{default:w(()=>[V(v(_),1)]),_:2},1024))),128)),(u(!0),h(S,null,O(e(d),(_,m)=>(u(),k(e(re),{key:m,type:"warning"},{default:w(()=>[y("p",null,[m==="curl"?(u(),h(S,{key:0},[V(v(e(n)("files_external","The cURL support in PHP is not enabled or installed.")),1)],64)):m==="ftp"?(u(),h(S,{key:1},[V(v(e(n)("files_external","The FTP support in PHP is not enabled or installed.")),1)],64)):(u(),h(S,{key:2},[V(v(e(n)("files_external","{module} is not installed.",{module:m})),1)],64)),V(" "+v(e(Ee)("files_external","Please ask your system administrator to install it as otherwise mounting the following backend is not possible:","Please ask your system administrator to install it as otherwise mounting the following backends is not possible:",_.length)),1)]),y("ul",{class:x(s.$style.externalStoragesSection__dependantList),"aria-label":e(n)("files_external","Dependant backends")},[(u(!0),h(S,null,O(_,f=>(u(),h("li",{key:f},v(f),1))),128))],10,Ya)]),_:2},1024))),128)),T("",!0),b(Ga),b(e(P),{class:x(s.$style.externalStoragesSection__newStorageButton),variant:"primary",onClick:p[0]||(p[0]=_=>c.value=!c.value)},{icon:w(()=>[b(e(F),{path:e(Pe)},null,8,["path"])]),default:w(()=>[V(" "+v(e(n)("files_external","Add external storage")),1)]),_:1},8,["class"]),b(xe,{open:c.value,"onUpdate:open":p[1]||(p[1]=_=>c.value=_),storage:o.value,onClose:i},null,8,["open","storage"]),e(a).isAdmin?(u(),k(Wa,{key:1})):T("",!0)]),_:1},8,["docUrl","name","description"]))}}),Xa="_externalStoragesSection__dependantList_atsmn_2",et="_externalStoragesSection__newStorageButton_atsmn_7",at={externalStoragesSection__dependantList:Xa,externalStoragesSection__newStorageButton:et},tt={$style:at},lt=q(Ja,[["__cssModules",tt]]),st=U({__name:"GlobalCredentialsSection",setup(l){const a=A("files_external","global-credentials"),t=M(!1),r=M(a.user),d=M(a.password);ge($);async function c(){try{t.value=!0;const{data:o}=await $.post(R("apps/files_external/globalcredentials"),{uid:a.uid,user:r.value,password:d.value},{confirmPassword:I.Strict});if(o){te(n("files_external","Global credentials saved"));return}}catch(o){ve.error(o)}finally{t.value=!1}le(n("files_external","Could not save global credentials")),r.value=a.user,d.value=a.password}return(o,i)=>(u(),k(e(_e),{name:e(n)("files_external","Global credentials"),description:e(n)("files_external","Global credentials can be used to authenticate with multiple external storages that have the same credentials.")},{default:w(()=>[y("form",{id:"global_credentials",class:x(o.$style.globalCredentialsSectionForm),autocomplete:"false",onSubmit:Me(c,["prevent"])},[b(e(me),{modelValue:r.value,"onUpdate:modelValue":i[0]||(i[0]=s=>r.value=s),name:"username",autocomplete:"false",label:e(n)("files_external","Login")},null,8,["modelValue","label"]),b(e(He),{modelValue:d.value,"onUpdate:modelValue":i[1]||(i[1]=s=>d.value=s),name:"password",autocomplete:"false",label:e(n)("files_external","Password")},null,8,["modelValue","label"]),b(e(P),{class:x(o.$style.globalCredentialsSectionForm__submit),disabled:t.value,variant:"primary",type:"submit"},{default:w(()=>[V(v(t.value?e(n)("files_external","Saving …"):e(n)("files_external","Save")),1)]),_:1},8,["class","disabled"])],34)]),_:1},8,["name","description"]))}}),nt="_globalCredentialsSectionForm_bgjv2_2",ot="_globalCredentialsSectionForm__submit_bgjv2_10",it={globalCredentialsSectionForm:nt,globalCredentialsSectionForm__submit:ot},rt={$style:it},ut=q(st,[["__cssModules",rt]]),dt=U({__name:"FilesExternalSettings",setup(l){return(a,t)=>(u(),h(S,null,[b(lt),b(ut)],64))}}),ct=Ve(),X=Ae(dt);X.config.idPrefix="files-external",X.use(ct),X.mount("#files-external"); //# sourceMappingURL=files_external-settings.mjs.map diff --git a/dist/files_reminders-init.css b/dist/files_reminders-init.css index c8c02580c03a5..f1e03844a32df 100644 --- a/dist/files_reminders-init.css +++ b/dist/files_reminders-init.css @@ -18,7 +18,7 @@ @import './NcBreadcrumbs-5gl8Syfa-CtBAA7-7.chunk.css'; @import './NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'; @import './NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'; -@import './index-DxCeSeyt.chunk.css'; +@import './index-CEtX00Aw.chunk.css'; @import './NcChip-CrVOU2RM-Som-mR4B.chunk.css'; @import './TrayArrowDown-D79n0IQ6.chunk.css'; @import './NcGuestContent-j8ai4O1K-D0718NyY.chunk.css'; diff --git a/dist/files_reminders-init.mjs b/dist/files_reminders-init.mjs index cbe9b5d9a8ad7..8d591c01e412b 100644 --- a/dist/files_reminders-init.mjs +++ b/dist/files_reminders-init.mjs @@ -1,2 +1,2 @@ -import{b as l}from"./index-Dpj4ddZx.chunk.mjs";import{c as Q}from"./dav-C3Vmpmsl.chunk.mjs";import{e as D,g as X}from"./index-DqIuD5e7.chunk.mjs";import{a as B,t as i}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as E}from"./index-CPwHjAPR.chunk.mjs";import{b as O}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./index-BpgPbDC6.chunk.mjs";import{N as G}from"./NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{N as ee,s as te}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as k}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as M}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{a as re}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import"./ContentCopy-DqUCQg_O.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{b as ie,K as ae,r as m,A as ne,c as v,l as A,o as y,w as d,k as se,E as oe,e as b,u as n,g as u,t as c}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as f,d as N}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{a as de}from"./index-BgmsSgl5.chunk.mjs";import"./folder-29HuacU_-CQFyGatl.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";const le='';async function W(e,t){const r=O("/apps/files_reminders/api/v1/{fileId}",{fileId:e});return(await E.put(r,{dueDate:t.toISOString()})).data.ocs.data}async function Z(e){const t=O("/apps/files_reminders/api/v1/{fileId}",{fileId:e});return(await E.delete(t)).data.ocs.data}var p=(e=>(e.LaterToday="later-today",e.Tomorrow="tomorrow",e.ThisWeekend="this-weekend",e.NextWeek="next-week",e))(p||{});function F(){const e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-e.getDay()+1),new Date(e)}function I(e){new Date(e).setHours(0,0,0,0);const t=new Date(e.getFullYear(),0,1,0,0,0,0),r=(e.getTime()-t.getTime())/864e5;return Math.ceil((r+t.getDay()+1)/7)}function me(e,t){return I(e)===I(t)&&e.getFullYear()===t.getFullYear()}function ue(e,t){return e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function L(e){return{"later-today":()=>{const t=new Date,r=new Date;r.setHours(18,0,0,0);const s=new Date;return s.setHours(17,0,0,0),t>=s?null:r},tomorrow:()=>{const t=new Date,r=new Date;return r.setDate(t.getDate()+1),r.setHours(8,0,0,0),r},"this-weekend":()=>{const t=new Date;if([5,6,0].includes(t.getDay()))return null;const r=new Date,s=F();return r.setDate(s.getDate()+5),r.setHours(8,0,0,0),r},"next-week":()=>{if(new Date().getDay()===0)return null;const t=new Date,r=F();return t.setDate(r.getDate()+7),t.setHours(8,0,0,0),t}}[e]()}function ce(){const e=new Date,t=new Date;return t.setHours(e.getHours()+2,0,0,0),t}function V(e){let t={hour:"numeric",minute:"2-digit"};const r=new Date;return ue(e,r)||(t={...t,weekday:"short"}),me(e,r)||(t={...t,month:"short",day:"numeric"}),e.getFullYear()!==r.getFullYear()&&(t={...t,year:"numeric"}),e.toLocaleString(B(),t)}function _(e){let t={month:"long",day:"numeric",weekday:"long",hour:"numeric",minute:"2-digit"};const r=new Date;return e.getFullYear()!==r.getFullYear()&&(t={...t,year:"numeric"}),e.toLocaleString(B(),t)}const fe={id:"clear-reminder",displayName:()=>i("files_reminders","Clear reminder"),title:({nodes:e})=>{const t=e.at(0),r=new Date(t.attributes["reminder-due-date"]);return`${i("files_reminders","Clear reminder")} – ${_(r)}`},iconSvgInline:()=>le,enabled:({nodes:e})=>e.length!==1?!1:!!e.at(0).attributes["reminder-due-date"],async exec({nodes:e}){const t=e.at(0);if(t.fileid)try{return await Z(t.fileid),t.attributes["reminder-due-date"]="",D("files:node:updated",t),!0}catch{return!1}return null},order:19},U='',h=X().setApp("files_reminders").detectUser().build(),pe=ie({__name:"SetCustomReminderModal",props:{node:{}},emits:["close"],setup(e,{emit:t}){const r=e,s=t,S=m(!1),C=m(!1),g=m(!0),o=m(),x=m(new Date);ae(()=>{const a=r.node.attributes["reminder-due-date"]?new Date(r.node.attributes["reminder-due-date"]):void 0;S.value=!!a,g.value=!0,C.value=!0,o.value=a??ce(),x.value=new Date}),ne(()=>{const a=document.getElementById("set-custom-reminder");a.focus(),S.value||a.showPicker()});async function z(){if(!(o.value instanceof Date)||isNaN(o.value.getTime())){f(i("files_reminders","Please choose a valid date & time"));return}try{await W(r.node.fileid,o.value);const a=r.node.clone();a.attributes["reminder-due-date"]=o.value.toISOString(),D("files:node:updated",a),N(i("files_reminders",'Reminder set for "{fileName}"',{fileName:r.node.displayname})),w()}catch(a){h.error("Failed to set reminder",{error:a}),f(i("files_reminders","Failed to set reminder"))}}async function K(){try{await Z(r.node.fileid);const a=r.node.clone();a.attributes["reminder-due-date"]="",D("files:node:updated",a),N(i("files_reminders",'Reminder cleared for "{fileName}"',{fileName:r.node.displayname})),w()}catch(a){h.error("Failed to clear reminder",{error:a}),f(i("files_reminders","Failed to clear reminder"))}}function w(){C.value=!1,s("close")}function j(){const a=document.getElementById("set-custom-reminder");g.value=a.checkValidity()}return(a,H)=>C.value?(y(),v(n(ee),{key:0,name:n(i)("files_reminders","Set reminder for '{fileName}'",{fileName:e.node.displayname}),outTransition:"",size:"small",closeOnClickOutside:"",onClosing:w},{actions:d(()=>[b(n(k),{variant:"tertiary",onClick:w},{default:d(()=>[u(c(n(i)("files_reminders","Cancel")),1)]),_:1}),S.value?(y(),v(n(k),{key:0,onClick:K},{default:d(()=>[u(c(n(i)("files_reminders","Clear reminder")),1)]),_:1})):A("",!0),b(n(k),{disabled:!g.value,variant:"primary",form:"set-custom-reminder-form",type:"submit"},{default:d(()=>[u(c(n(i)("files_reminders","Set reminder")),1)]),_:1},8,["disabled"])]),default:d(()=>[se("form",{id:"set-custom-reminder-form",class:"custom-reminder-modal",onSubmit:oe(z,["prevent"])},[b(n(G),{id:"set-custom-reminder",modelValue:o.value,"onUpdate:modelValue":H[0]||(H[0]=J=>o.value=J),label:n(i)("files_reminders","Reminder at custom date & time"),min:x.value,required:!0,type:"datetime-local",onInput:j},null,8,["modelValue","label","min"]),g.value&&o.value?(y(),v(n(M),{key:0,type:"info"},{default:d(()=>[u(c(n(i)("files_reminders","We will remind you of this file"))+" ",1),b(n(re),{timestamp:o.value},null,8,["timestamp"])]),_:1})):(y(),v(n(M),{key:1,type:"error"},{default:d(()=>[u(c(n(i)("files_reminders","Please choose a valid date & time")),1)]),_:1}))],32)]),_:1},8,["name"])):A("",!0)}}),ge=de(pe,[["__scopeId","data-v-1cc1857f"]]);async function q(e){await te(ge,{node:e})}const we={id:"reminder-status",inline:()=>!0,displayName:()=>"",title:({nodes:e})=>{const t=e.at(0),r=new Date(t.attributes["reminder-due-date"]);return`${i("files_reminders","Reminder set")} – ${_(r)}`},iconSvgInline:()=>U,enabled:({nodes:e})=>e.length!==1?!1:!!e.at(0).attributes["reminder-due-date"],async exec({nodes:e}){const t=e.at(0);return await q(t),null},order:-15},ve='',T="set-reminder-menu",ye={id:T,displayName:()=>i("files_reminders","Set reminder"),iconSvgInline:()=>U,enabled:({nodes:e,view:t})=>t.id==="trashbin"||e.length!==1?!1:e.at(0).attributes["reminder-due-date"]!==void 0,async exec(){return null},order:20},be={id:"set-reminder-custom",displayName:()=>i("files_reminders","Custom reminder"),title:()=>i("files_reminders","Reminder at custom date & time"),iconSvgInline:()=>ve,enabled:({nodes:e,view:t})=>t.id==="trashbin"||e.length!==1?!1:e.at(0).attributes["reminder-due-date"]!==void 0,parent:T,async exec({nodes:e}){const t=e.at(0);return q(t),null},order:22},P={dateTimePreset:p.LaterToday,label:i("files_reminders","Later today"),ariaLabel:i("files_reminders","Set reminder for later today"),dateString:"",verboseDateString:""},Y={dateTimePreset:p.Tomorrow,label:i("files_reminders","Tomorrow"),ariaLabel:i("files_reminders","Set reminder for tomorrow"),dateString:"",verboseDateString:""},$={dateTimePreset:p.ThisWeekend,label:i("files_reminders","This weekend"),ariaLabel:i("files_reminders","Set reminder for this weekend"),dateString:"",verboseDateString:""},R={dateTimePreset:p.NextWeek,label:i("files_reminders","Next week"),ariaLabel:i("files_reminders","Set reminder for next week"),dateString:"",verboseDateString:""};function De(){return[P,Y,$,R].forEach(e=>{const t=L(e.dateTimePreset);t&&(e.dateString=V(t),e.verboseDateString=_(t),setInterval(()=>{const r=L(e.dateTimePreset);r&&(e.dateString=V(r),e.verboseDateString=_(r))},1e3*30*60))}),[P,Y,$,R].map(Le)}function Le(e){return{id:`set-reminder-${e.dateTimePreset}`,displayName:()=>`${e.label} – ${e.dateString}`,title:()=>`${e.ariaLabel} – ${e.verboseDateString}`,iconSvgInline:()=>"",enabled:({nodes:t,view:r})=>r.id==="trashbin"||t.length!==1?!1:t.at(0).attributes["reminder-due-date"]!==void 0&&!!L(e.dateTimePreset),parent:T,async exec({nodes:t}){const r=t.at(0);if(!r.fileid)return h.error("Failed to set reminder, missing file id"),f(i("files_reminders","Failed to set reminder")),null;try{const s=L(e.dateTimePreset);await W(r.fileid,s),r.attributes["reminder-due-date"]=s.toISOString(),D("files:node:updated",r),N(i("files_reminders",'Reminder set for "{fileName}"',{fileName:r.basename}))}catch(s){h.error("Failed to set reminder",{error:s}),f(i("files_reminders","Failed to set reminder"))}return null},order:21}}Q("nc:reminder-due-date",{nc:"http://nextcloud.org/ns"}),l(we),l(fe),l(ye),l(be),De().forEach(l); +import{b as l}from"./index-Dpj4ddZx.chunk.mjs";import{c as Q}from"./dav-C3Vmpmsl.chunk.mjs";import{e as D,g as X}from"./index-DqIuD5e7.chunk.mjs";import{a as B,t as i}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as E}from"./index-CPwHjAPR.chunk.mjs";import{b as O}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./index-Bk4hMpWo.chunk.mjs";import{N as G}from"./NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{N as ee,s as te}from"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as k}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as M}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{a as re}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import"./ContentCopy-DqUCQg_O.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{b as ie,K as ae,r as m,A as ne,c as v,l as A,o as y,w as d,k as se,E as oe,e as b,u as n,g as u,t as c}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as f,d as N}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{a as de}from"./index-BgmsSgl5.chunk.mjs";import"./folder-29HuacU_-CQFyGatl.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";const le='';async function W(e,t){const r=O("/apps/files_reminders/api/v1/{fileId}",{fileId:e});return(await E.put(r,{dueDate:t.toISOString()})).data.ocs.data}async function Z(e){const t=O("/apps/files_reminders/api/v1/{fileId}",{fileId:e});return(await E.delete(t)).data.ocs.data}var p=(e=>(e.LaterToday="later-today",e.Tomorrow="tomorrow",e.ThisWeekend="this-weekend",e.NextWeek="next-week",e))(p||{});function F(){const e=new Date;return e.setHours(0,0,0,0),e.setDate(e.getDate()-e.getDay()+1),new Date(e)}function I(e){new Date(e).setHours(0,0,0,0);const t=new Date(e.getFullYear(),0,1,0,0,0,0),r=(e.getTime()-t.getTime())/864e5;return Math.ceil((r+t.getDay()+1)/7)}function me(e,t){return I(e)===I(t)&&e.getFullYear()===t.getFullYear()}function ue(e,t){return e.getDate()===t.getDate()&&e.getMonth()===t.getMonth()&&e.getFullYear()===t.getFullYear()}function L(e){return{"later-today":()=>{const t=new Date,r=new Date;r.setHours(18,0,0,0);const s=new Date;return s.setHours(17,0,0,0),t>=s?null:r},tomorrow:()=>{const t=new Date,r=new Date;return r.setDate(t.getDate()+1),r.setHours(8,0,0,0),r},"this-weekend":()=>{const t=new Date;if([5,6,0].includes(t.getDay()))return null;const r=new Date,s=F();return r.setDate(s.getDate()+5),r.setHours(8,0,0,0),r},"next-week":()=>{if(new Date().getDay()===0)return null;const t=new Date,r=F();return t.setDate(r.getDate()+7),t.setHours(8,0,0,0),t}}[e]()}function ce(){const e=new Date,t=new Date;return t.setHours(e.getHours()+2,0,0,0),t}function V(e){let t={hour:"numeric",minute:"2-digit"};const r=new Date;return ue(e,r)||(t={...t,weekday:"short"}),me(e,r)||(t={...t,month:"short",day:"numeric"}),e.getFullYear()!==r.getFullYear()&&(t={...t,year:"numeric"}),e.toLocaleString(B(),t)}function _(e){let t={month:"long",day:"numeric",weekday:"long",hour:"numeric",minute:"2-digit"};const r=new Date;return e.getFullYear()!==r.getFullYear()&&(t={...t,year:"numeric"}),e.toLocaleString(B(),t)}const fe={id:"clear-reminder",displayName:()=>i("files_reminders","Clear reminder"),title:({nodes:e})=>{const t=e.at(0),r=new Date(t.attributes["reminder-due-date"]);return`${i("files_reminders","Clear reminder")} – ${_(r)}`},iconSvgInline:()=>le,enabled:({nodes:e})=>e.length!==1?!1:!!e.at(0).attributes["reminder-due-date"],async exec({nodes:e}){const t=e.at(0);if(t.fileid)try{return await Z(t.fileid),t.attributes["reminder-due-date"]="",D("files:node:updated",t),!0}catch{return!1}return null},order:19},U='',h=X().setApp("files_reminders").detectUser().build(),pe=ie({__name:"SetCustomReminderModal",props:{node:{}},emits:["close"],setup(e,{emit:t}){const r=e,s=t,S=m(!1),C=m(!1),g=m(!0),o=m(),x=m(new Date);ae(()=>{const a=r.node.attributes["reminder-due-date"]?new Date(r.node.attributes["reminder-due-date"]):void 0;S.value=!!a,g.value=!0,C.value=!0,o.value=a??ce(),x.value=new Date}),ne(()=>{const a=document.getElementById("set-custom-reminder");a.focus(),S.value||a.showPicker()});async function z(){if(!(o.value instanceof Date)||isNaN(o.value.getTime())){f(i("files_reminders","Please choose a valid date & time"));return}try{await W(r.node.fileid,o.value);const a=r.node.clone();a.attributes["reminder-due-date"]=o.value.toISOString(),D("files:node:updated",a),N(i("files_reminders",'Reminder set for "{fileName}"',{fileName:r.node.displayname})),w()}catch(a){h.error("Failed to set reminder",{error:a}),f(i("files_reminders","Failed to set reminder"))}}async function K(){try{await Z(r.node.fileid);const a=r.node.clone();a.attributes["reminder-due-date"]="",D("files:node:updated",a),N(i("files_reminders",'Reminder cleared for "{fileName}"',{fileName:r.node.displayname})),w()}catch(a){h.error("Failed to clear reminder",{error:a}),f(i("files_reminders","Failed to clear reminder"))}}function w(){C.value=!1,s("close")}function j(){const a=document.getElementById("set-custom-reminder");g.value=a.checkValidity()}return(a,H)=>C.value?(y(),v(n(ee),{key:0,name:n(i)("files_reminders","Set reminder for '{fileName}'",{fileName:e.node.displayname}),outTransition:"",size:"small",closeOnClickOutside:"",onClosing:w},{actions:d(()=>[b(n(k),{variant:"tertiary",onClick:w},{default:d(()=>[u(c(n(i)("files_reminders","Cancel")),1)]),_:1}),S.value?(y(),v(n(k),{key:0,onClick:K},{default:d(()=>[u(c(n(i)("files_reminders","Clear reminder")),1)]),_:1})):A("",!0),b(n(k),{disabled:!g.value,variant:"primary",form:"set-custom-reminder-form",type:"submit"},{default:d(()=>[u(c(n(i)("files_reminders","Set reminder")),1)]),_:1},8,["disabled"])]),default:d(()=>[se("form",{id:"set-custom-reminder-form",class:"custom-reminder-modal",onSubmit:oe(z,["prevent"])},[b(n(G),{id:"set-custom-reminder",modelValue:o.value,"onUpdate:modelValue":H[0]||(H[0]=J=>o.value=J),label:n(i)("files_reminders","Reminder at custom date & time"),min:x.value,required:!0,type:"datetime-local",onInput:j},null,8,["modelValue","label","min"]),g.value&&o.value?(y(),v(n(M),{key:0,type:"info"},{default:d(()=>[u(c(n(i)("files_reminders","We will remind you of this file"))+" ",1),b(n(re),{timestamp:o.value},null,8,["timestamp"])]),_:1})):(y(),v(n(M),{key:1,type:"error"},{default:d(()=>[u(c(n(i)("files_reminders","Please choose a valid date & time")),1)]),_:1}))],32)]),_:1},8,["name"])):A("",!0)}}),ge=de(pe,[["__scopeId","data-v-1cc1857f"]]);async function q(e){await te(ge,{node:e})}const we={id:"reminder-status",inline:()=>!0,displayName:()=>"",title:({nodes:e})=>{const t=e.at(0),r=new Date(t.attributes["reminder-due-date"]);return`${i("files_reminders","Reminder set")} – ${_(r)}`},iconSvgInline:()=>U,enabled:({nodes:e})=>e.length!==1?!1:!!e.at(0).attributes["reminder-due-date"],async exec({nodes:e}){const t=e.at(0);return await q(t),null},order:-15},ve='',T="set-reminder-menu",ye={id:T,displayName:()=>i("files_reminders","Set reminder"),iconSvgInline:()=>U,enabled:({nodes:e,view:t})=>t.id==="trashbin"||e.length!==1?!1:e.at(0).attributes["reminder-due-date"]!==void 0,async exec(){return null},order:20},be={id:"set-reminder-custom",displayName:()=>i("files_reminders","Custom reminder"),title:()=>i("files_reminders","Reminder at custom date & time"),iconSvgInline:()=>ve,enabled:({nodes:e,view:t})=>t.id==="trashbin"||e.length!==1?!1:e.at(0).attributes["reminder-due-date"]!==void 0,parent:T,async exec({nodes:e}){const t=e.at(0);return q(t),null},order:22},P={dateTimePreset:p.LaterToday,label:i("files_reminders","Later today"),ariaLabel:i("files_reminders","Set reminder for later today"),dateString:"",verboseDateString:""},Y={dateTimePreset:p.Tomorrow,label:i("files_reminders","Tomorrow"),ariaLabel:i("files_reminders","Set reminder for tomorrow"),dateString:"",verboseDateString:""},$={dateTimePreset:p.ThisWeekend,label:i("files_reminders","This weekend"),ariaLabel:i("files_reminders","Set reminder for this weekend"),dateString:"",verboseDateString:""},R={dateTimePreset:p.NextWeek,label:i("files_reminders","Next week"),ariaLabel:i("files_reminders","Set reminder for next week"),dateString:"",verboseDateString:""};function De(){return[P,Y,$,R].forEach(e=>{const t=L(e.dateTimePreset);t&&(e.dateString=V(t),e.verboseDateString=_(t),setInterval(()=>{const r=L(e.dateTimePreset);r&&(e.dateString=V(r),e.verboseDateString=_(r))},1e3*30*60))}),[P,Y,$,R].map(Le)}function Le(e){return{id:`set-reminder-${e.dateTimePreset}`,displayName:()=>`${e.label} – ${e.dateString}`,title:()=>`${e.ariaLabel} – ${e.verboseDateString}`,iconSvgInline:()=>"",enabled:({nodes:t,view:r})=>r.id==="trashbin"||t.length!==1?!1:t.at(0).attributes["reminder-due-date"]!==void 0&&!!L(e.dateTimePreset),parent:T,async exec({nodes:t}){const r=t.at(0);if(!r.fileid)return h.error("Failed to set reminder, missing file id"),f(i("files_reminders","Failed to set reminder")),null;try{const s=L(e.dateTimePreset);await W(r.fileid,s),r.attributes["reminder-due-date"]=s.toISOString(),D("files:node:updated",r),N(i("files_reminders",'Reminder set for "{fileName}"',{fileName:r.basename}))}catch(s){h.error("Failed to set reminder",{error:s}),f(i("files_reminders","Failed to set reminder"))}return null},order:21}}Q("nc:reminder-due-date",{nc:"http://nextcloud.org/ns"}),l(we),l(fe),l(ye),l(be),De().forEach(l); //# sourceMappingURL=files_reminders-init.mjs.map diff --git a/dist/files_sharing-init-public.js b/dist/files_sharing-init-public.js index 4aded090fcee7..86cccdd9731de 100644 --- a/dist/files_sharing-init-public.js +++ b/dist/files_sharing-init-public.js @@ -1,2 +1,2 @@ -(()=>{var e,t,r,i={84560(e,t,r){"use strict";r.d(t,{A:()=>i});const i=(0,r(35947).YK)().setApp("files").detectUser().build()},14668(e,t,r){"use strict";r.d(t,{h:()=>u});var i=r(77815),n=r(43627),o=r(84560),a=r(88975),s=r(88140),d=r(78246),l=r(99201),c=r(46502);async function u(e="/",t){const r=(0,d.j)((0,s.u)());return r.query.length<3?await async function(e,t){e=(0,n.join)((0,i.ei)(),e);const r=(0,i.aN)(),a=await l.S.getDirectoryContents(e,{details:!0,data:r,includeSelf:!0,signal:t?.signal}),s=a.data[0],d=a.data.slice(1);if(s?.filename!==e&&`${s?.filename}/`!==e)throw o.A.debug(`Exepected "${e}" but got filename "${s.filename}" instead.`),new Error("Root node does not match requested path");return{folder:(0,i.pO)(s),contents:d.map(e=>{try{return(0,i.pO)(e)}catch(t){return o.A.error(`Invalid node detected '${e.basename}'`,{error:t}),null}}).filter(Boolean)}}(e,t):await async function(e,t,r){let o=(0,a._)((0,s.u)()).getDirectoryByPath("files",e);if(!o){const t=(0,n.join)((0,i.ei)(),e),r=await l.S.stat(t,{details:!0});o=(0,i.pO)(r.data)}return{folder:o,contents:await(0,c.E)(t,{dir:e,signal:r})}}(e,r.query,t?.signal)}},46502(e,t,r){"use strict";r.d(t,{E:()=>c});var i=r(21777),n=r(77815),o=r(63814),a=r(70580),s=r.n(a),d=r(84560),l=r(99201);async function c(e,{dir:t,signal:r}){const a=(0,i.HW)();if(!a)return[];if((e=e.trim()).length<3)return[];t&&!t.startsWith("/")&&(t=`/${t}`),d.A.debug("Searching for nodes",{query:e,dir:t});const{data:c}=await l.S.search("/",{details:!0,signal:r,data:`\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${(0,n.VX)()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${a.uid}${t?s()(t):""}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${e.replace("%","")}%\n\t\t\t \n\t\t \n\t\t \n\t\n`});return r?.aborted?[]:c.results.map(e=>(0,n.pO)(e,n.VA,(0,o.$_)()))}},99201(e,t,r){"use strict";r.d(t,{S:()=>n,t:()=>o});var i=r(77815);const n=(0,i.KU)();async function o(e){const t=(0,i.aN)(),r=await n.stat(`${(0,i.ei)()}${e}`,{details:!0,data:t});return(0,i.pO)(r.data)}},39992(e,t,r){"use strict";var i=r(21777),n=r(61338),o=r(35810),a=r(77815),s=r(10810),d=r(85471),l=r(84560);const c=new o.vd({id:0,source:(0,a.EY)()+(0,a.ei)(),root:(0,a.ei)(),owner:(0,i.HW)()?.uid||null,permissions:o.aX.NONE});(0,s.nY)("active",()=>{const e=(0,d.IJ)(),t=(0,d.KR)(),r=(0,d.IJ)(),i=(0,d.KR)(c);function a(e){t.value&&t.value.source===e.source&&(t.value=void 0)}function s(e=null){l.A.debug("Setting active view",{view:e}),r.value=e??void 0,t.value=void 0}return(0,d.wB)(t,()=>{"number"==typeof t.value?.fileid&&t.value.fileid!==i.value?.fileid&&(l.A.debug("Updating active fileid in URL query",{fileid:t.value.fileid}),window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:String(t.value.fileid)},{...window.OCP.Files.Router.query},!0))}),function(){const e=(0,o.bh)();s(e.active),(0,n.B1)("files:node:deleted",a),e.addEventListener("updateActive",e=>{s(e.detail)})}(),{activeAction:e,activeFolder:i,activeNode:t,activeView:r}})},88975(e,t,r){"use strict";r.d(t,{_:()=>l});var i=r(61338),n=r(10810),o=r(85471),a=r(84560),s=r(99201),d=r(16488);const l=(0,n.nY)("files",()=>{const e=(0,o.KR)({}),t=(0,o.KR)({});function r(t){return e.value[t]}function n(t){return t.map(t=>e.value[t]).filter(Boolean)}function l(t){return Object.values(e.value).filter(e=>e.id===t)}function c(e){return t.value[e]}function u(e,t){const i=(0,d.B)();let n;if(t&&"/"!==t){const o=i.getPath(e,t);o&&(n=r(o))}else n=c(e);return n}function p(t){const r=t.reduce((t,r)=>e.value[r.source]?.id&&!r.id?(a.A.error("Trying to update/set a node without id",{node:r}),t):(t[r.source]=r,t),{});e.value={...e.value,...r}}function f(t){const r=Object.entries(e.value).filter(([,e])=>!t.some(t=>t.source===e.source));e.value=Object.fromEntries(r)}return(0,i.B1)("files:node:created",function(e){p([e])}),(0,i.B1)("files:node:deleted",function(e){f([e])}),(0,i.B1)("files:node:updated",async function(e){const t=e.id?l(e.id):n([e.source]);if(t.length>1)return await Promise.all(t.map(e=>(0,s.t)(e.path))).then(p),void a.A.debug(t.length+" nodes updated in store",{fileid:e.id,source:e.source});1!==t.length||e.source!==t[0].source?(0,s.t)(e.path).then(e=>p([e])):p([e])}),(0,i.B1)("files:node:moved",function({node:t,oldSource:r}){delete e.value[r],p([t])}),(0,i.B1)("files:favorites:added",function(e){const t=r(e.source);t&&o.Ay.set(t.attributes,"favorite",1)}),(0,i.B1)("files:favorites:removed",function(e){const t=r(e.source);t&&o.Ay.set(t.attributes,"favorite",0)}),{files:e,roots:t,deleteNodes:f,getDirectoryByPath:u,getNode:r,getNodes:n,getNodesById:l,getNodesByPath:function(e,t){const i=u(e,t);return(i?._children??[]).map(e=>r(e)).filter(Boolean)},getRoot:c,setRoot:function({service:e,root:r}){t.value={...t.value,[e]:r}},updateNodes:p}})},88140(e,t,r){"use strict";r.d(t,{u:()=>n});var i=r(10810);function n(){return window._nc_files_pinia||(window._nc_files_pinia=(0,i.Ey)()),window._nc_files_pinia}},16488(e,t,r){"use strict";r.d(t,{B:()=>c});var i=r(61338),n=r(35810),o=r(71225),a=r(10810),s=r(85471),d=r(84560),l=r(88975);function c(...e){const t=(0,l._)(...e),r=(0,a.nY)("paths",{state:()=>({paths:{}}),getters:{getPath:e=>(t,r)=>{if(e.paths[t])return e.paths[t][r]}},actions:{addPath(e){this.paths[e.service]||s.Ay.set(this.paths,e.service,{}),s.Ay.set(this.paths[e.service],e.path,e.source)},deletePath(e,t){this.paths[e]&&s.Ay.delete(this.paths[e],t)},onCreatedNode(e){const t=(0,n.bh)()?.active?.id||"files";e.fileid?(e.type===n.pt.Folder&&this.addPath({service:t,path:e.path,source:e.source}),this.addNodeToParentChildren(e)):d.A.error("Node has no fileid",{node:e})},onDeletedNode(e){const t=(0,n.bh)()?.active?.id||"files";e.type===n.pt.Folder&&this.deletePath(t,e.path),this.deleteNodeFromParentChildren(e)},onMovedNode({node:e,oldSource:t}){const r=(0,n.bh)()?.active?.id||"files";if(e.type===n.pt.Folder){const i=Object.entries(this.paths[r]).find(([,e])=>e===t);i?.[0]&&this.deletePath(r,i[0]),this.addPath({service:r,path:e.path,source:e.source})}const i=new n.ZH({source:t,owner:e.owner,mime:e.mime,root:e.root});this.deleteNodeFromParentChildren(i),this.addNodeToParentChildren(e)},deleteNodeFromParentChildren(e){const r=(0,n.bh)()?.active?.id||"files",i=(0,o.pD)(e.source),a="/"===e.dirname?t.getRoot(r):t.getNode(i);if(a){const t=new Set(a._children??[]);return t.delete(e.source),s.Ay.set(a,"_children",[...t.values()]),void d.A.debug("Children updated",{parent:a,node:e,children:a._children})}d.A.debug("Parent path does not exists, skipping children update",{node:e})},addNodeToParentChildren(e){const r=(0,n.bh)()?.active?.id||"files",i=(0,o.pD)(e.source),a="/"===e.dirname?t.getRoot(r):t.getNode(i);if(a){const t=new Set(a._children??[]);return t.add(e.source),s.Ay.set(a,"_children",[...t.values()]),void d.A.debug("Children updated",{parent:a,node:e,children:a._children})}d.A.debug("Parent path does not exists, skipping children update",{node:e})}}})(...e);return r._initialized||((0,i.B1)("files:node:created",r.onCreatedNode),(0,i.B1)("files:node:deleted",r.onDeletedNode),(0,i.B1)("files:node:moved",r.onMovedNode),r._initialized=!0),r}},78246(e,t,r){"use strict";r.d(t,{j:()=>l});var i=r(61338),n=r(46855),o=r(10810),a=r(85471),s=r(84560),d=r(37365);const l=(0,o.nY)("search",()=>{const e=(0,a.KR)(""),t=(0,a.KR)("filter");(0,a.wB)(t,o),(0,a.wB)(e,(e,t)=>{e.trim()!==t.trim()&&o()}),function(){(0,i.B1)("files:navigation:changed",l);const r=window.OCP.Files.Router;r.params.view===d.w&&(e.value=[r.query.query].flat()[0]??"",e.value?(t.value="globally",s.A.debug("Directly navigated to search view",{query:e.value})):(s.A.info("Directly navigated to search view without any query, redirect to files view."),r.goToRoute(void 0,{...r.params,view:"files"},{...r.query,query:void 0},!0)))}();const r=(0,n.A)(t=>{window.OCP.Files.Router.goToRoute(void 0,{view:d.w},{query:e.value},t)});function o(){(0,i.Ic)("files:search:updated",{query:e.value,scope:t.value});const n=window.OCP.Files.Router;if(n.params.view===d.w&&(""===e.value||"filter"===t.value))return t.value="filter",n.goToRoute(void 0,{view:"files"},{...n.query,query:void 0});if("filter"===t.value||!e.value)return;const o=n.params.view===d.w;s.A.debug("Update route for updated search query",{query:e.value,isSearch:o}),r(o)}function l(r){r.id!==d.w&&(e.value="",t.value="filter")}return{query:e,scope:t}})},66480(e,t,r){"use strict";r(43690),r(61338),r(35810),r(53334),r(14668),r(39992)},37365(e,t,r){"use strict";r.d(t,{w:()=>i}),r(35810),r(53334),r(21777),r(77815),r(84560),r(78246),r(46502),r(66480);const i="search"},85908(e,t,r){"use strict";var i=r(61338),n=r(35810),o=r(81222);var a=r(77815),s=r(53334),d=r(85471);const l=()=>{const e=(0,o.C)("files_sharing","filename");let t,i;const l=new n.Ss({id:"public-file-drop",name:(0,s.Tl)("files_sharing","File drop"),caption:(0,s.Tl)("files_sharing","Upload files to {foldername}",{foldername:e}),icon:'',order:1,emptyView:async n=>{if(void 0===t){const{default:e}=await Promise.all([r.e(4208),r.e(8192)]).then(r.bind(r,28192));t=d.Ay.extend(e)}i&&i.$destroy(),i=new t({propsData:{foldername:e}}),i.$mount(n)},getContents:async()=>({contents:[],folder:new n.vd({id:0,source:`${a.Xn}${a.VA}`,root:a.VA,owner:null,permissions:n.aX.CREATE})})});(0,n.bh)().register(l)};(Object.getOwnPropertyDescriptor(l,"name")||{}).writable||Object.defineProperty(l,"name",{value:"default",configurable:!0});const c='';var u=r(99201);const p=(0,r(35947).YK)().setApp("files_sharing").detectUser().build(),f=()=>{const e=new n.Ss({id:"public-file-share",name:(0,s.Tl)("files_sharing","Public file share"),caption:(0,s.Tl)("files_sharing","Publicly shared file."),emptyTitle:(0,s.Tl)("files_sharing","No file"),emptyCaption:(0,s.Tl)("files_sharing","The file shared with you will show up here"),icon:c,order:1,getContents:async(e,{signal:t})=>{try{const e=await u.S.stat((0,a.ei)(),{data:(0,a.aN)(),details:!0,signal:t});return{contents:[(0,a.pO)(e.data)],folder:new n.vd({id:0,source:`${(0,a.EY)()}${(0,a.ei)()}`,root:(0,a.ei)(),owner:null,permissions:n.aX.READ,attributes:{note:e.data.props?.note}})}}catch(e){if(t.aborted)throw p.info("Fetching contents for public file share was aborted",{error:e}),new DOMException("Aborted","AbortError");throw p.error("Failed to get contents for public file share",{error:e}),e}}});(0,n.bh)().register(e)};(Object.getOwnPropertyDescriptor(f,"name")||{}).writable||Object.defineProperty(f,"name",{value:"default",configurable:!0});var h=r(14668);const v=()=>{const e=new n.Ss({id:"public-share",name:(0,s.Tl)("files_sharing","Public share"),caption:(0,s.Tl)("files_sharing","Publicly shared files."),emptyTitle:(0,s.Tl)("files_sharing","No files"),emptyCaption:(0,s.Tl)("files_sharing","Files and folders shared with you will show up here"),icon:c,order:1,getContents:h.h});(0,n.bh)().register(e)};(Object.getOwnPropertyDescriptor(v,"name")||{}).writable||Object.defineProperty(v,"name",{value:"default",configurable:!0});var g=r(63814),m=r(82490),w=r(40173);const b=(0,o.C)("files_sharing","view"),y=(0,o.C)("files_sharing","sharingToken");d.Ay.use(w.Ay);const P=w.Ay.prototype.push;w.Ay.prototype.push=function(...e){return e.length>1?P.call(this,...e):P.call(this,e[0]).catch(C)};const A=w.Ay.prototype.replace;function C(e){if(!(0,w.Pq)(e,w.$c.duplicated))throw e;p.debug("Ignoring duplicated navigation from vue-router",{error:e})}w.Ay.prototype.replace=function(...e){return e.length>1?A.call(this,...e):A.call(this,e[0]).catch(C)};const O=new w.Ay({mode:"history",base:(0,g.Jv)("/s"),linkActiveClass:"active",routes:[{path:"/",redirect:{name:"filelist",params:{view:b,token:y}}},{path:"/:token",name:"filelist",props:!0}],stringifyQuery(e){const t=m.A.stringify(e).replace(/%2F/gim,"/");return t?"?"+t:""}});l(),v(),f();const _=(0,o.C)("files_sharing","view"),N=(0,n.bh)();try{N.setActive(_)}catch{N.setActive(null)}window.OCP.Files=window.OCP.Files??{},window.OCP.Files.Router=new class{constructor(e){var t,r,i;t=this,i=void 0,(r=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(r="router"))in t?Object.defineProperty(t,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i,this.router=e}get name(){return this.router.currentRoute.name}get query(){return this.router.currentRoute.query||{}}get params(){return this.router.currentRoute.params||{}}get _router(){return this.router}goTo(e,t=!1){return this.router.push({path:e,replace:t})}goToRoute(e,t,r,i){e??=this.router.currentRoute.name;const n={name:e,query:r,params:t};return i?this._router.replace(n):this._router.push(n)}}(O);const T=(0,o.C)("files_sharing","fileId",null),R=(0,o.C)("files_sharing","sharingToken");null!==T&&window.OCP.Files.Router.goToRoute("filelist",{...window.OCP.Files.Router.params,token:R,fileid:String(T)},{...window.OCP.Files.Router.query,openfile:"true"}),(0,i.B1)("files:list:updated",function e({folder:t}){if((0,i.al)("files:list:updated",e),t.attributes["share-attributes"]){const e=JSON.parse(t.attributes["share-attributes"]||"[]").find(({scope:e,key:t})=>"config"===e&&"grid_view"===t);void 0!==e&&(p.debug("Loading share attributes",{gridViewAttribute:e}),(0,i.Ic)("files:config:updated",{key:"grid_view",value:!0===e.value}))}})},43690(e){"use strict";e.exports=''},63779(){},77199(){},77815(e,t,r){"use strict";r.d(t,{CP:()=>u,EY:()=>v,KU:()=>m,VA:()=>h,VX:()=>c,Xn:()=>g,aN:()=>p,ei:()=>f,pO:()=>w});var i=r(21777),n=r(63814),o=r(9487),a=r(44719),s=r(70970);const d=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],l={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"};function c(){return s.s.davProperties??=[...d],s.s.davProperties.map(e=>`<${e} />`).join(" ")}function u(){return s.s.davNamespaces??={...l},Object.keys(s.s.davNamespaces).map(e=>`xmlns:${e}="${s.s.davNamespaces?.[e]}"`).join(" ")}function p(){return`\n\t\t\n\t\t\t\n\t\t\t\t${c()}\n\t\t\t\n\t\t`}function f(){return(0,o.f)()?`/files/${(0,o.G)()}`:`/files/${(0,i.HW)()?.uid}`}const h=f();function v(){const e=(0,n.dC)("dav");return(0,o.f)()?e.replace("remote.php","public.php"):e}const g=v();function m(e=g,t={}){const r=(0,a.UU)(e,{headers:t});function n(e){r.setHeaders({...t,"X-Requested-With":"XMLHttpRequest",requesttoken:e??""})}return(0,i.zo)(n),n((0,i.do)()),(0,a.Gu)().patch("fetch",(e,t)=>{const r=t.headers;return r?.method&&(t.method=r.method,delete r.method),fetch(e,t)}),r}function w(e,t=h,r=g){let n=(0,i.HW)()?.uid;if((0,o.f)())n=n??"anonymous";else if(!n)throw new Error("No user id found");const a=e.props,d=function(e=""){let t=s.P.NONE;return e?(e.includes("G")&&(t|=s.P.READ),e.includes("W")&&(t|=s.P.WRITE),e.includes("CK")&&(t|=s.P.CREATE),e.includes("NV")&&(t|=s.P.UPDATE),e.includes("D")&&(t|=s.P.DELETE),e.includes("R")&&(t|=s.P.SHARE),t):t}(a?.permissions),l=String(a?.["owner-id"]||n),c=a.fileid||0,u=new Date(Date.parse(e.lastmod)),p=new Date(Date.parse(a.creationdate)),f={id:c,source:`${r}${e.filename}`,mtime:isNaN(u.getTime())||0===u.getTime()?void 0:u,crtime:isNaN(p.getTime())||0===p.getTime()?void 0:p,mime:e.mime||"application/octet-stream",displayname:void 0!==a.displayname?String(a.displayname):void 0,size:a?.size||Number.parseInt(a.getcontentlength||"0"),status:c<0?s.c.FAILED:void 0,permissions:d,owner:l,root:t,attributes:{...e,...a,hasPreview:a?.["has-preview"]}};return delete f.attributes?.props,"file"===e.type?new s.a(f):new s.b(f)}}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=i,e=[],o.O=(t,r,i,n)=>{if(!r){var a=1/0;for(c=0;c=n)&&Object.keys(o.O).every(e=>o.O[e](r[d]))?r.splice(d--,1):(s=!1,n0&&e[c-1][2]>n;c--)e[c]=e[c-1];e[c]=[r,i,n]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((t,r)=>(o.f[r](e,t),t),[])),o.u=e=>e+"-"+e+".js?v="+{1035:"da08d310d18692ca4e27",1764:"3654558a3474ec02b609",2457:"ce6348bfa704a5bf56fb",4271:"101cdb0f1357424796fd",6798:"55fb835b251fd3f7de19",7471:"b4ac70873a3ab192efd0",8192:"91fbd6f4898978b0533a",9281:"29ef7f217a0c6b239922",9906:"24447948ddfe6cf1ef05"}[e],o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="nextcloud-ui-legacy:",o.l=(e,i,n,a)=>{if(t[e])t[e].push(i);else{var s,d;if(void 0!==n)for(var l=document.getElementsByTagName("script"),c=0;c{s.onerror=s.onload=null,clearTimeout(f);var n=t[e];if(delete t[e],s.parentNode&&s.parentNode.removeChild(s),n&&n.forEach(e=>e(i)),r)return r(i)},f=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),d&&document.head.appendChild(s)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=5102,(()=>{var e;globalThis.importScripts&&(e=globalThis.location+"");var t=globalThis.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var i=r.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=r[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={5102:0};o.f.j=(t,r)=>{var i=o.o(e,t)?e[t]:void 0;if(0!==i)if(i)r.push(i[2]);else{var n=new Promise((r,n)=>i=e[t]=[r,n]);r.push(i[2]=n);var a=o.p+o.u(t),s=new Error;o.l(a,r=>{if(o.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+n+": "+a+")",s.name="ChunkLoadError",s.type=n,s.request=a,i[1](s)}},"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,r)=>{var i,n,[a,s,d]=r,l=0;if(a.some(t=>0!==e[t])){for(i in s)o.o(s,i)&&(o.m[i]=s[i]);if(d)var c=d(o)}for(t&&t(r);lo(85908));a=o.O(a)})(); -//# sourceMappingURL=files_sharing-init-public.js.map?v=af3fb51fe6de6d43792b \ No newline at end of file +(()=>{var e,t,r,i={84560(e,t,r){"use strict";r.d(t,{A:()=>i});const i=(0,r(35947).YK)().setApp("files").detectUser().build()},14668(e,t,r){"use strict";r.d(t,{h:()=>u});var i=r(77815),n=r(43627),o=r(84560),a=r(88975),s=r(88140),d=r(78246),l=r(99201),c=r(46502);async function u(e="/",t){const r=(0,d.j)((0,s.u)());return r.query.length<3?await async function(e,t){e=(0,n.join)((0,i.ei)(),e);const r=(0,i.aN)(),a=await l.S.getDirectoryContents(e,{details:!0,data:r,includeSelf:!0,signal:t?.signal}),s=a.data[0],d=a.data.slice(1);if(s?.filename!==e&&`${s?.filename}/`!==e)throw o.A.debug(`Exepected "${e}" but got filename "${s.filename}" instead.`),new Error("Root node does not match requested path");return{folder:(0,i.pO)(s),contents:d.map(e=>{try{return(0,i.pO)(e)}catch(t){return o.A.error(`Invalid node detected '${e.basename}'`,{error:t}),null}}).filter(Boolean)}}(e,t):await async function(e,t,r){let o=(0,a._)((0,s.u)()).getDirectoryByPath("files",e);if(!o){const t=(0,n.join)((0,i.ei)(),e),r=await l.S.stat(t,{details:!0});o=(0,i.pO)(r.data)}return{folder:o,contents:await(0,c.E)(t,{dir:e,signal:r})}}(e,r.query,t?.signal)}},46502(e,t,r){"use strict";r.d(t,{E:()=>c});var i=r(21777),n=r(77815),o=r(63814),a=r(70580),s=r.n(a),d=r(84560),l=r(99201);async function c(e,{dir:t,signal:r}){const a=(0,i.HW)();if(!a)return[];if((e=e.trim()).length<3)return[];t&&!t.startsWith("/")&&(t=`/${t}`),d.A.debug("Searching for nodes",{query:e,dir:t});const{data:c}=await l.S.search("/",{details:!0,signal:r,data:`\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${(0,n.VX)()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${a.uid}${t?s()(t):""}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${e.replace("%","")}%\n\t\t\t \n\t\t \n\t\t \n\t\n`});return r?.aborted?[]:c.results.map(e=>(0,n.pO)(e,n.VA,(0,o.$_)()))}},99201(e,t,r){"use strict";r.d(t,{S:()=>n,t:()=>o});var i=r(77815);const n=(0,i.KU)();async function o(e){const t=(0,i.aN)(),r=await n.stat(`${(0,i.ei)()}${e}`,{details:!0,data:t});return(0,i.pO)(r.data)}},39992(e,t,r){"use strict";r.d(t,{F:()=>u});var i=r(21777),n=r(61338),o=r(35810),a=r(77815),s=r(10810),d=r(85471),l=r(84560);const c=new o.vd({id:0,source:(0,a.EY)()+(0,a.ei)(),root:(0,a.ei)(),owner:(0,i.HW)()?.uid||null,permissions:o.aX.NONE}),u=(0,s.nY)("active",()=>{const e=(0,d.IJ)(),t=(0,d.KR)(),r=(0,d.IJ)(),i=(0,d.KR)(c);function a(e){t.value&&t.value.source===e.source&&(t.value=void 0)}function s(e=null){l.A.debug("Setting active view",{view:e}),r.value=e??void 0,t.value=void 0}return(0,d.wB)(t,()=>{"number"==typeof t.value?.fileid&&t.value.fileid!==i.value?.fileid&&(l.A.debug("Updating active fileid in URL query",{fileid:t.value.fileid}),window.OCP.Files.Router.goToRoute(null,{...window.OCP.Files.Router.params,fileid:String(t.value.fileid)},{...window.OCP.Files.Router.query},!0))}),function(){const e=(0,o.bh)();s(e.active),(0,n.B1)("files:node:deleted",a),e.addEventListener("updateActive",e=>{s(e.detail)})}(),{activeAction:e,activeFolder:i,activeNode:t,activeView:r}})},88975(e,t,r){"use strict";r.d(t,{_:()=>c});var i=r(61338),n=r(10810),o=r(85471),a=r(84560),s=r(99201),d=r(39992),l=r(16488);const c=(0,n.nY)("files",()=>{const e=(0,o.KR)({}),t=(0,o.KR)({});function r(t){return e.value[t]}function n(t){return t.map(t=>e.value[t]).filter(Boolean)}function c(t){return Object.values(e.value).filter(e=>e.id===t)}function u(e){return t.value[e]}function p(e,t){const i=(0,l.B)();let n;if(t&&"/"!==t){const o=i.getPath(e,t);o&&(n=r(o))}else n=u(e);return n}function f(t){const r=t.reduce((t,r)=>e.value[r.source]?.id&&!r.id?(a.A.error("Trying to update/set a node without id",{node:r}),t):(t[r.source]=r,t),{});e.value={...e.value,...r};const i=(0,d.F)();i.activeNode&&i.activeNode.source in r&&(i.activeNode=e.value[i.activeNode.source])}function h(t){const r=Object.entries(e.value).filter(([,e])=>!t.some(t=>t.source===e.source));e.value=Object.fromEntries(r)}return(0,i.B1)("files:node:created",function(e){f([e])}),(0,i.B1)("files:node:deleted",function(e){h([e])}),(0,i.B1)("files:node:updated",async function(e){const t=e.id?c(e.id):n([e.source]);if(t.length>1)return await Promise.all(t.map(e=>(0,s.t)(e.path))).then(f),void a.A.debug(t.length+" nodes updated in store",{fileid:e.id,source:e.source});if(1===t.length&&e.source===t[0].source)return void f([e]);f([await(0,s.t)(e.path)])}),(0,i.B1)("files:node:moved",function({node:t,oldSource:r}){delete e.value[r],f([t])}),(0,i.B1)("files:favorites:added",function(e){const t=r(e.source);t&&o.Ay.set(t.attributes,"favorite",1)}),(0,i.B1)("files:favorites:removed",function(e){const t=r(e.source);t&&o.Ay.set(t.attributes,"favorite",0)}),{files:e,roots:t,deleteNodes:h,getDirectoryByPath:p,getNode:r,getNodes:n,getNodesById:c,getNodesByPath:function(e,t){const i=p(e,t);return(i?._children??[]).map(e=>r(e)).filter(Boolean)},getRoot:u,setRoot:function({service:e,root:r}){t.value={...t.value,[e]:r}},updateNodes:f}})},88140(e,t,r){"use strict";r.d(t,{u:()=>n});var i=r(10810);function n(){return window._nc_files_pinia||(window._nc_files_pinia=(0,i.Ey)()),window._nc_files_pinia}},16488(e,t,r){"use strict";r.d(t,{B:()=>c});var i=r(61338),n=r(35810),o=r(71225),a=r(10810),s=r(85471),d=r(84560),l=r(88975);function c(...e){const t=(0,l._)(...e),r=(0,a.nY)("paths",{state:()=>({paths:{}}),getters:{getPath:e=>(t,r)=>{if(e.paths[t])return e.paths[t][r]}},actions:{addPath(e){this.paths[e.service]||s.Ay.set(this.paths,e.service,{}),s.Ay.set(this.paths[e.service],e.path,e.source)},deletePath(e,t){this.paths[e]&&s.Ay.delete(this.paths[e],t)},onCreatedNode(e){const t=(0,n.bh)()?.active?.id||"files";e.fileid?(e.type===n.pt.Folder&&this.addPath({service:t,path:e.path,source:e.source}),this.addNodeToParentChildren(e)):d.A.error("Node has no fileid",{node:e})},onDeletedNode(e){const t=(0,n.bh)()?.active?.id||"files";e.type===n.pt.Folder&&this.deletePath(t,e.path),this.deleteNodeFromParentChildren(e)},onMovedNode({node:e,oldSource:t}){const r=(0,n.bh)()?.active?.id||"files";if(e.type===n.pt.Folder){const i=Object.entries(this.paths[r]).find(([,e])=>e===t);i?.[0]&&this.deletePath(r,i[0]),this.addPath({service:r,path:e.path,source:e.source})}const i=new n.ZH({source:t,owner:e.owner,mime:e.mime,root:e.root});this.deleteNodeFromParentChildren(i),this.addNodeToParentChildren(e)},deleteNodeFromParentChildren(e){const r=(0,n.bh)()?.active?.id||"files",i=(0,o.pD)(e.source),a="/"===e.dirname?t.getRoot(r):t.getNode(i);if(a){const t=new Set(a._children??[]);return t.delete(e.source),s.Ay.set(a,"_children",[...t.values()]),void d.A.debug("Children updated",{parent:a,node:e,children:a._children})}d.A.debug("Parent path does not exists, skipping children update",{node:e})},addNodeToParentChildren(e){const r=(0,n.bh)()?.active?.id||"files",i=(0,o.pD)(e.source),a="/"===e.dirname?t.getRoot(r):t.getNode(i);if(a){const t=new Set(a._children??[]);return t.add(e.source),s.Ay.set(a,"_children",[...t.values()]),void d.A.debug("Children updated",{parent:a,node:e,children:a._children})}d.A.debug("Parent path does not exists, skipping children update",{node:e})}}})(...e);return r._initialized||((0,i.B1)("files:node:created",r.onCreatedNode),(0,i.B1)("files:node:deleted",r.onDeletedNode),(0,i.B1)("files:node:moved",r.onMovedNode),r._initialized=!0),r}},78246(e,t,r){"use strict";r.d(t,{j:()=>l});var i=r(61338),n=r(46855),o=r(10810),a=r(85471),s=r(84560),d=r(37365);const l=(0,o.nY)("search",()=>{const e=(0,a.KR)(""),t=(0,a.KR)("filter");(0,a.wB)(t,o),(0,a.wB)(e,(e,t)=>{e.trim()!==t.trim()&&o()}),function(){(0,i.B1)("files:navigation:changed",l);const r=window.OCP.Files.Router;r.params.view===d.w&&(e.value=[r.query.query].flat()[0]??"",e.value?(t.value="globally",s.A.debug("Directly navigated to search view",{query:e.value})):(s.A.info("Directly navigated to search view without any query, redirect to files view."),r.goToRoute(void 0,{...r.params,view:"files"},{...r.query,query:void 0},!0)))}();const r=(0,n.A)(t=>{window.OCP.Files.Router.goToRoute(void 0,{view:d.w},{query:e.value},t)});function o(){(0,i.Ic)("files:search:updated",{query:e.value,scope:t.value});const n=window.OCP.Files.Router;if(n.params.view===d.w&&(""===e.value||"filter"===t.value))return t.value="filter",n.goToRoute(void 0,{view:"files"},{...n.query,query:void 0});if("filter"===t.value||!e.value)return;const o=n.params.view===d.w;s.A.debug("Update route for updated search query",{query:e.value,isSearch:o}),r(o)}function l(r){r.id!==d.w&&(e.value="",t.value="filter")}return{query:e,scope:t}})},66480(e,t,r){"use strict";r(43690),r(61338),r(35810),r(53334),r(14668),r(39992)},37365(e,t,r){"use strict";r.d(t,{w:()=>i}),r(35810),r(53334),r(21777),r(77815),r(84560),r(78246),r(46502),r(66480);const i="search"},85908(e,t,r){"use strict";var i=r(61338),n=r(35810),o=r(81222);var a=r(77815),s=r(53334),d=r(85471);const l=()=>{const e=(0,o.C)("files_sharing","filename");let t,i;const l=new n.Ss({id:"public-file-drop",name:(0,s.Tl)("files_sharing","File drop"),caption:(0,s.Tl)("files_sharing","Upload files to {foldername}",{foldername:e}),icon:'',order:1,emptyView:async n=>{if(void 0===t){const{default:e}=await Promise.all([r.e(4208),r.e(8192)]).then(r.bind(r,28192));t=d.Ay.extend(e)}i&&i.$destroy(),i=new t({propsData:{foldername:e}}),i.$mount(n)},getContents:async()=>({contents:[],folder:new n.vd({id:0,source:`${a.Xn}${a.VA}`,root:a.VA,owner:null,permissions:n.aX.CREATE})})});(0,n.bh)().register(l)};(Object.getOwnPropertyDescriptor(l,"name")||{}).writable||Object.defineProperty(l,"name",{value:"default",configurable:!0});const c='';var u=r(99201);const p=(0,r(35947).YK)().setApp("files_sharing").detectUser().build(),f=()=>{const e=new n.Ss({id:"public-file-share",name:(0,s.Tl)("files_sharing","Public file share"),caption:(0,s.Tl)("files_sharing","Publicly shared file."),emptyTitle:(0,s.Tl)("files_sharing","No file"),emptyCaption:(0,s.Tl)("files_sharing","The file shared with you will show up here"),icon:c,order:1,getContents:async(e,{signal:t})=>{try{const e=await u.S.stat((0,a.ei)(),{data:(0,a.aN)(),details:!0,signal:t});return{contents:[(0,a.pO)(e.data)],folder:new n.vd({id:0,source:`${(0,a.EY)()}${(0,a.ei)()}`,root:(0,a.ei)(),owner:null,permissions:n.aX.READ,attributes:{note:e.data.props?.note}})}}catch(e){if(t.aborted)throw p.info("Fetching contents for public file share was aborted",{error:e}),new DOMException("Aborted","AbortError");throw p.error("Failed to get contents for public file share",{error:e}),e}}});(0,n.bh)().register(e)};(Object.getOwnPropertyDescriptor(f,"name")||{}).writable||Object.defineProperty(f,"name",{value:"default",configurable:!0});var h=r(14668);const v=()=>{const e=new n.Ss({id:"public-share",name:(0,s.Tl)("files_sharing","Public share"),caption:(0,s.Tl)("files_sharing","Publicly shared files."),emptyTitle:(0,s.Tl)("files_sharing","No files"),emptyCaption:(0,s.Tl)("files_sharing","Files and folders shared with you will show up here"),icon:c,order:1,getContents:h.h});(0,n.bh)().register(e)};(Object.getOwnPropertyDescriptor(v,"name")||{}).writable||Object.defineProperty(v,"name",{value:"default",configurable:!0});var g=r(63814),m=r(82490),w=r(40173);const b=(0,o.C)("files_sharing","view"),y=(0,o.C)("files_sharing","sharingToken");d.Ay.use(w.Ay);const P=w.Ay.prototype.push;w.Ay.prototype.push=function(...e){return e.length>1?P.call(this,...e):P.call(this,e[0]).catch(C)};const A=w.Ay.prototype.replace;function C(e){if(!(0,w.Pq)(e,w.$c.duplicated))throw e;p.debug("Ignoring duplicated navigation from vue-router",{error:e})}w.Ay.prototype.replace=function(...e){return e.length>1?A.call(this,...e):A.call(this,e[0]).catch(C)};const N=new w.Ay({mode:"history",base:(0,g.Jv)("/s"),linkActiveClass:"active",routes:[{path:"/",redirect:{name:"filelist",params:{view:b,token:y}}},{path:"/:token",name:"filelist",props:!0}],stringifyQuery(e){const t=m.A.stringify(e).replace(/%2F/gim,"/");return t?"?"+t:""}});l(),v(),f();const O=(0,o.C)("files_sharing","view"),_=(0,n.bh)();try{_.setActive(O)}catch{_.setActive(null)}window.OCP.Files=window.OCP.Files??{},window.OCP.Files.Router=new class{constructor(e){var t,r,i;t=this,i=void 0,(r=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var r=t.call(e,"string");if("object"!=typeof r)return r;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(r="router"))in t?Object.defineProperty(t,r,{value:i,enumerable:!0,configurable:!0,writable:!0}):t[r]=i,this.router=e}get name(){return this.router.currentRoute.name}get query(){return this.router.currentRoute.query||{}}get params(){return this.router.currentRoute.params||{}}get _router(){return this.router}goTo(e,t=!1){return this.router.push({path:e,replace:t})}goToRoute(e,t,r,i){e??=this.router.currentRoute.name;const n={name:e,query:r,params:t};return i?this._router.replace(n):this._router.push(n)}}(N);const T=(0,o.C)("files_sharing","fileId",null),R=(0,o.C)("files_sharing","sharingToken");null!==T&&window.OCP.Files.Router.goToRoute("filelist",{...window.OCP.Files.Router.params,token:R,fileid:String(T)},{...window.OCP.Files.Router.query,openfile:"true"}),(0,i.B1)("files:list:updated",function e({folder:t}){if((0,i.al)("files:list:updated",e),t.attributes["share-attributes"]){const e=JSON.parse(t.attributes["share-attributes"]||"[]").find(({scope:e,key:t})=>"config"===e&&"grid_view"===t);void 0!==e&&(p.debug("Loading share attributes",{gridViewAttribute:e}),(0,i.Ic)("files:config:updated",{key:"grid_view",value:!0===e.value}))}})},43690(e){"use strict";e.exports=''},63779(){},77199(){},77815(e,t,r){"use strict";r.d(t,{CP:()=>u,EY:()=>v,KU:()=>m,VA:()=>h,VX:()=>c,Xn:()=>g,aN:()=>p,ei:()=>f,pO:()=>w});var i=r(21777),n=r(63814),o=r(9487),a=r(44719),s=r(70970);const d=["d:getcontentlength","d:getcontenttype","d:getetag","d:getlastmodified","d:creationdate","d:displayname","d:quota-available-bytes","d:resourcetype","nc:has-preview","nc:is-encrypted","nc:mount-type","oc:comments-unread","oc:favorite","oc:fileid","oc:owner-display-name","oc:owner-id","oc:permissions","oc:size"],l={d:"DAV:",nc:"http://nextcloud.org/ns",oc:"http://owncloud.org/ns",ocs:"http://open-collaboration-services.org/ns"};function c(){return s.s.davProperties??=[...d],s.s.davProperties.map(e=>`<${e} />`).join(" ")}function u(){return s.s.davNamespaces??={...l},Object.keys(s.s.davNamespaces).map(e=>`xmlns:${e}="${s.s.davNamespaces?.[e]}"`).join(" ")}function p(){return`\n\t\t\n\t\t\t\n\t\t\t\t${c()}\n\t\t\t\n\t\t`}function f(){return(0,o.f)()?`/files/${(0,o.G)()}`:`/files/${(0,i.HW)()?.uid}`}const h=f();function v(){const e=(0,n.dC)("dav");return(0,o.f)()?e.replace("remote.php","public.php"):e}const g=v();function m(e=g,t={}){const r=(0,a.UU)(e,{headers:t});function n(e){r.setHeaders({...t,"X-Requested-With":"XMLHttpRequest",requesttoken:e??""})}return(0,i.zo)(n),n((0,i.do)()),(0,a.Gu)().patch("fetch",(e,t)=>{const r=t.headers;return r?.method&&(t.method=r.method,delete r.method),fetch(e,t)}),r}function w(e,t=h,r=g){let n=(0,i.HW)()?.uid;if((0,o.f)())n=n??"anonymous";else if(!n)throw new Error("No user id found");const a=e.props,d=function(e=""){let t=s.P.NONE;return e?(e.includes("G")&&(t|=s.P.READ),e.includes("W")&&(t|=s.P.WRITE),e.includes("CK")&&(t|=s.P.CREATE),e.includes("NV")&&(t|=s.P.UPDATE),e.includes("D")&&(t|=s.P.DELETE),e.includes("R")&&(t|=s.P.SHARE),t):t}(a?.permissions),l=String(a?.["owner-id"]||n),c=a.fileid||0,u=new Date(Date.parse(e.lastmod)),p=new Date(Date.parse(a.creationdate)),f={id:c,source:`${r}${e.filename}`,mtime:isNaN(u.getTime())||0===u.getTime()?void 0:u,crtime:isNaN(p.getTime())||0===p.getTime()?void 0:p,mime:e.mime||"application/octet-stream",displayname:void 0!==a.displayname?String(a.displayname):void 0,size:a?.size||Number.parseInt(a.getcontentlength||"0"),status:c<0?s.c.FAILED:void 0,permissions:d,owner:l,root:t,attributes:{...e,...a,hasPreview:a?.["has-preview"]}};return delete f.attributes?.props,"file"===e.type?new s.a(f):new s.b(f)}}},n={};function o(e){var t=n[e];if(void 0!==t)return t.exports;var r=n[e]={id:e,loaded:!1,exports:{}};return i[e].call(r.exports,r,r.exports,o),r.loaded=!0,r.exports}o.m=i,e=[],o.O=(t,r,i,n)=>{if(!r){var a=1/0;for(c=0;c=n)&&Object.keys(o.O).every(e=>o.O[e](r[d]))?r.splice(d--,1):(s=!1,n0&&e[c-1][2]>n;c--)e[c]=e[c-1];e[c]=[r,i,n]},o.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return o.d(t,{a:t}),t},o.d=(e,t)=>{for(var r in t)o.o(t,r)&&!o.o(e,r)&&Object.defineProperty(e,r,{enumerable:!0,get:t[r]})},o.f={},o.e=e=>Promise.all(Object.keys(o.f).reduce((t,r)=>(o.f[r](e,t),t),[])),o.u=e=>e+"-"+e+".js?v="+{1035:"da08d310d18692ca4e27",1764:"3654558a3474ec02b609",2457:"ce6348bfa704a5bf56fb",4271:"101cdb0f1357424796fd",6798:"55fb835b251fd3f7de19",7471:"b4ac70873a3ab192efd0",8192:"91fbd6f4898978b0533a",9281:"29ef7f217a0c6b239922",9906:"24447948ddfe6cf1ef05"}[e],o.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},r="nextcloud-ui-legacy:",o.l=(e,i,n,a)=>{if(t[e])t[e].push(i);else{var s,d;if(void 0!==n)for(var l=document.getElementsByTagName("script"),c=0;c{s.onerror=s.onload=null,clearTimeout(f);var n=t[e];if(delete t[e],s.parentNode&&s.parentNode.removeChild(s),n&&n.forEach(e=>e(i)),r)return r(i)},f=setTimeout(p.bind(null,void 0,{type:"timeout",target:s}),12e4);s.onerror=p.bind(null,s.onerror),s.onload=p.bind(null,s.onload),d&&document.head.appendChild(s)}},o.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},o.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),o.j=5102,(()=>{var e;globalThis.importScripts&&(e=globalThis.location+"");var t=globalThis.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var r=t.getElementsByTagName("script");if(r.length)for(var i=r.length-1;i>-1&&(!e||!/^http(s?):/.test(e));)e=r[i--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:/,"").replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),o.p=e})(),(()=>{o.b="undefined"!=typeof document&&document.baseURI||self.location.href;var e={5102:0};o.f.j=(t,r)=>{var i=o.o(e,t)?e[t]:void 0;if(0!==i)if(i)r.push(i[2]);else{var n=new Promise((r,n)=>i=e[t]=[r,n]);r.push(i[2]=n);var a=o.p+o.u(t),s=new Error;o.l(a,r=>{if(o.o(e,t)&&(0!==(i=e[t])&&(e[t]=void 0),i)){var n=r&&("load"===r.type?"missing":r.type),a=r&&r.target&&r.target.src;s.message="Loading chunk "+t+" failed.\n("+n+": "+a+")",s.name="ChunkLoadError",s.type=n,s.request=a,i[1](s)}},"chunk-"+t,t)}},o.O.j=t=>0===e[t];var t=(t,r)=>{var i,n,[a,s,d]=r,l=0;if(a.some(t=>0!==e[t])){for(i in s)o.o(s,i)&&(o.m[i]=s[i]);if(d)var c=d(o)}for(t&&t(r);lo(85908));a=o.O(a)})(); +//# sourceMappingURL=files_sharing-init-public.js.map?v=5d95d8e1c4246a51781a \ No newline at end of file diff --git a/dist/files_sharing-init-public.js.map b/dist/files_sharing-init-public.js.map index 1c4dc46e556a2..5f428f251b885 100644 --- a/dist/files_sharing-init-public.js.map +++ b/dist/files_sharing-init-public.js.map @@ -1 +1 @@ -{"version":3,"file":"files_sharing-init-public.js?v=af3fb51fe6de6d43792b","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files/src/services/WebDavSearch.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/search.ts","webpack:///nextcloud/apps/files/src/views/search.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicFileDrop.ts","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicFileShare.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicShare.ts","webpack:///nextcloud/apps/files_sharing/src/router/index.ts","webpack:///nextcloud/apps/files_sharing/src/init-public.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/dav.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import { getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { join } from 'path';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\nimport { client } from './WebdavClient.ts';\nimport { searchNodes } from './WebDavSearch.ts';\n/**\n * Get contents implementation for the files view.\n * This also allows to fetch local search results when the user is currently filtering.\n *\n * @param path - The path to query\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function getContents(path = '/', options) {\n const searchStore = useSearchStore(getPinia());\n if (searchStore.query.length < 3) {\n return await defaultGetContents(path, options);\n }\n return await getLocalSearch(path, searchStore.query, options?.signal);\n}\n/**\n * Generic `getContents` implementation for the users files.\n *\n * @param path - The path to get the contents\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function defaultGetContents(path, options) {\n path = join(getRootPath(), path);\n const propfindPayload = getDefaultPropfind();\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: options?.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root?.filename !== path && `${root?.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n return {\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n };\n}\n/**\n * Get the local search results for the current folder.\n *\n * @param path - The path\n * @param query - The current search query\n * @param signal - The aboort signal\n */\nasync function getLocalSearch(path, query, signal) {\n const filesStore = useFilesStore(getPinia());\n let folder = filesStore.getDirectoryByPath('files', path);\n if (!folder) {\n const rootPath = join(getRootPath(), path);\n const stat = await client.stat(rootPath, { details: true });\n folder = resultToNode(stat.data);\n }\n const contents = await searchNodes(query, { dir: path, signal });\n return {\n folder,\n contents,\n };\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { defaultRootPath, getDavNameSpaces, getDavProperties, resultToNode } from '@nextcloud/files/dav';\nimport { getBaseUrl } from '@nextcloud/router';\nimport escapeHTML from 'escape-html';\nimport logger from '../logger.ts';\nimport { client } from './WebdavClient.ts';\n/**\n * Search for nodes matching the given query.\n *\n * @param query - Search query\n * @param options - Options\n * @param options.dir - The base directory to scope the search to\n * @param options.signal - Abort signal for the request\n */\nexport async function searchNodes(query, { dir, signal }) {\n const user = getCurrentUser();\n if (!user) {\n // the search plugin only works for user roots\n return [];\n }\n query = query.trim();\n if (query.length < 3) {\n // the search plugin only works with queries of at least 3 characters\n return [];\n }\n if (dir && !dir.startsWith('/')) {\n dir = `/${dir}`;\n }\n logger.debug('Searching for nodes', { query, dir });\n const { data } = await client.search('/', {\n details: true,\n signal,\n data: `\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${getDavProperties()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${user.uid}${dir ? escapeHTML(dir) : ''}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${query.replace('%', '')}%\n\t\t\t \n\t\t \n\t\t \n\t\n`,\n });\n // check if the request was aborted\n if (signal?.aborted) {\n return [];\n }\n // otherwise return the result mapped to Nextcloud nodes\n return data.results.map((result) => resultToNode(result, defaultRootPath, getBaseUrl()));\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n id: 0,\n source: getRemoteURL() + getRootPath(),\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n /**\n * The currently active action\n */\n const activeAction = shallowRef();\n /**\n * The current active node within the folder\n */\n const activeNode = ref();\n /**\n * The current active view\n */\n const activeView = shallowRef();\n /**\n * The currently active folder\n */\n const activeFolder = ref(dummyFolder);\n // Set the active node on the router params\n watch(activeNode, () => {\n if (typeof activeNode.value?.fileid !== 'number' || activeNode.value.fileid === activeFolder.value?.fileid) {\n return;\n }\n logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.fileid });\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: String(activeNode.value.fileid) }, { ...window.OCP.Files.Router.query }, true);\n });\n initialize();\n /**\n * Unset the active node if deleted\n *\n * @param node - The node thats deleted\n */\n function onDeletedNode(node) {\n if (activeNode.value && activeNode.value.source === node.source) {\n activeNode.value = undefined;\n }\n }\n /**\n * Callback to update the current active view\n *\n * @param view - The new active view\n */\n function onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n activeView.value = view ?? undefined;\n activeNode.value = undefined;\n }\n /**\n * Initalize the store - connect all event listeners.\n *\n */\n function initialize() {\n const navigation = getNavigation();\n onChangedView(navigation.active);\n // Make sure we only register the listeners once\n subscribe('files:node:deleted', onDeletedNode);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n onChangedView(event.detail);\n });\n }\n return {\n activeAction,\n activeFolder,\n activeNode,\n activeView,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue, { ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n * Store for files and folders in the files app.\n */\nexport const useFilesStore = defineStore('files', () => {\n const files = ref({});\n const roots = ref({});\n // initialize the store once its used first time\n initalizeStore();\n /**\n * Get a file or folder by its source\n *\n * @param source - The file source\n */\n function getNode(source) {\n return files.value[source];\n }\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n *\n * @param sources - The file sources\n */\n function getNodes(sources) {\n return sources\n .map((source) => files.value[source])\n .filter(Boolean);\n }\n /**\n * Get files or folders by their ID\n * Multiple nodes can have the same ID but different sources\n * (e.g. in a shared context)\n *\n * @param id - The file ID\n */\n function getNodesById(id) {\n return Object.values(files.value)\n .filter((node) => node.id === id);\n }\n /**\n * Get the root folder of a service\n *\n * @param service - The service (files view)\n * @return The root folder if set\n */\n function getRoot(service) {\n return roots.value[service];\n }\n /**\n * Get cached directory matching a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return The folder if found\n */\n function getDirectoryByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = getNode(source);\n }\n }\n return folder;\n }\n /**\n * Get cached child nodes within a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return Array of cached nodes within the path\n */\n function getNodesByPath(service, path) {\n const folder = getDirectoryByPath(service, path);\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => getNode(source))\n .filter(Boolean);\n }\n /**\n * Update or set nodes in the store\n *\n * @param nodes - The nodes to update or set\n */\n function updateNodes(nodes) {\n // Update the store all at once\n const newNodes = nodes.reduce((acc, node) => {\n if (files.value[node.source]?.id && !node.id) {\n logger.error('Trying to update/set a node without id', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n files.value = { ...files.value, ...newNodes };\n }\n /**\n * Delete nodes from the store\n *\n * @param nodes - The nodes to delete\n */\n function deleteNodes(nodes) {\n const entries = Object.entries(files.value)\n .filter(([, node]) => !nodes.some((n) => n.source === node.source));\n files.value = Object.fromEntries(entries);\n }\n /**\n * Set the root folder for a service\n *\n * @param options - The options for setting the root\n * @param options.service - The service (files view)\n * @param options.root - The root folder\n */\n function setRoot({ service, root }) {\n roots.value = { ...roots.value, [service]: root };\n }\n return {\n files,\n roots,\n deleteNodes,\n getDirectoryByPath,\n getNode,\n getNodes,\n getNodesById,\n getNodesByPath,\n getRoot,\n setRoot,\n updateNodes,\n };\n // Internal helper functions\n /**\n * Initialize the store by subscribing to events\n */\n function initalizeStore() {\n subscribe('files:node:created', onCreatedNode);\n subscribe('files:node:deleted', onDeletedNode);\n subscribe('files:node:updated', onUpdatedNode);\n subscribe('files:node:moved', onMovedNode);\n // legacy sidebar\n subscribe('files:favorites:added', onAddFavorite);\n subscribe('files:favorites:removed', onRemoveFavorite);\n }\n /**\n * Called when a node is deleted, removes the node from the store\n *\n * @param node - The deleted node\n */\n function onDeletedNode(node) {\n deleteNodes([node]);\n }\n /**\n * Handler for when a node is created\n *\n * @param node - The created node\n */\n function onCreatedNode(node) {\n updateNodes([node]);\n }\n /**\n * Handler for when a node is moved, updates the path of the node in the store\n *\n * @param context - The context of the moved node\n * @param context.node - The moved node\n * @param context.oldSource - The old source of the node before it was moved\n */\n function onMovedNode({ node, oldSource }) {\n // Update the path of the node\n delete files.value[oldSource];\n updateNodes([node]);\n }\n /**\n * Handler for when a node is updated, updates the node in the store\n *\n * @param node - The updated node\n */\n async function onUpdatedNode(node) {\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = node.id\n ? getNodesById(node.id)\n : getNodes([node.source]);\n if (nodes.length > 1) {\n await Promise.all(nodes.map((node) => fetchNode(node.path))).then(updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.id, source: node.source });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (nodes.length === 1 && node.source === nodes[0].source) {\n updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n fetchNode(node.path).then((n) => updateNodes([n]));\n }\n /**\n * Handlers for legacy sidebar (no real nodes support)\n *\n * @param node - The node that was added to favorites\n */\n function onAddFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 1);\n }\n }\n /**\n * Handler for when a node is removed from favorites\n *\n * @param node - The removed favorite\n */\n function onRemoveFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 0);\n }\n }\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({\n source: oldSource,\n owner: node.owner,\n mime: node.mime,\n root: node.root,\n });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport debounce from 'debounce';\nimport { defineStore } from 'pinia';\nimport { ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { VIEW_ID } from '../views/search.ts';\nexport const useSearchStore = defineStore('search', () => {\n /**\n * The current search query\n */\n const query = ref('');\n /**\n * Scope of the search.\n * Scopes:\n * - filter: only filter current file list\n * - globally: search everywhere\n */\n const scope = ref('filter');\n // reset the base if query is cleared\n watch(scope, updateSearch);\n watch(query, (old, current) => {\n // skip if only whitespaces changed\n if (old.trim() === current.trim()) {\n return;\n }\n updateSearch();\n });\n // initialize the search store\n initialize();\n /**\n * Debounced update of the current route\n *\n */\n const updateRouter = debounce((isSearch) => {\n const router = window.OCP.Files.Router;\n router.goToRoute(undefined, {\n view: VIEW_ID,\n }, {\n query: query.value,\n }, isSearch);\n });\n /**\n * Handle updating the filter if needed.\n * Also update the search view by updating the current route if needed.\n *\n */\n function updateSearch() {\n // emit the search event to update the filter\n emit('files:search:updated', { query: query.value, scope: scope.value });\n const router = window.OCP.Files.Router;\n // if we are on the search view and the query was unset or scope was set to 'filter' we need to move back to the files view\n if (router.params.view === VIEW_ID && (query.value === '' || scope.value === 'filter')) {\n scope.value = 'filter';\n return router.goToRoute(undefined, {\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n });\n }\n // for the filter scope we do not need to adjust the current route anymore\n // also if the query is empty we do not need to do anything\n if (scope.value === 'filter' || !query.value) {\n return;\n }\n const isSearch = router.params.view === VIEW_ID;\n logger.debug('Update route for updated search query', { query: query.value, isSearch });\n updateRouter(isSearch);\n }\n /**\n * Event handler that resets the store if the file list view was changed.\n *\n * @param view - The new view that is active\n */\n function onViewChanged(view) {\n if (view.id !== VIEW_ID) {\n query.value = '';\n scope.value = 'filter';\n }\n }\n /**\n * Initialize the store from the router if needed\n */\n function initialize() {\n subscribe('files:navigation:changed', onViewChanged);\n const router = window.OCP.Files.Router;\n // if we initially load the search view (e.g. hard page refresh)\n // then we need to initialize the store from the router\n if (router.params.view === VIEW_ID) {\n query.value = [router.query.query].flat()[0] ?? '';\n if (query.value) {\n scope.value = 'globally';\n logger.debug('Directly navigated to search view', { query: query.value });\n }\n else {\n // we do not have any query so we need to move to the files list\n logger.info('Directly navigated to search view without any query, redirect to files view.');\n router.goToRoute(undefined, {\n ...router.params,\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n }, true);\n }\n }\n }\n return {\n query,\n scope,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MagnifySvg from '@mdi/svg/svg/magnify.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getContents } from '../services/Search.ts';\nimport { VIEW_ID as FILES_VIEW_ID } from './files.ts';\nexport const VIEW_ID = 'search';\n/**\n * Register the search-in-files view\n */\nexport function registerSearchView() {\n let instance;\n let view;\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: VIEW_ID,\n name: t('files', 'Search'),\n caption: t('files', 'Search results within your files.'),\n async emptyView(el) {\n if (!view) {\n view = (await import('./SearchEmptyView.vue')).default;\n }\n else {\n instance.$destroy();\n }\n instance = new Vue(view);\n instance.$mount(el);\n },\n icon: MagnifySvg,\n order: 10,\n parent: FILES_VIEW_ID,\n // it should be shown expanded\n expanded: true,\n // this view is hidden by default and only shown when active\n hidden: true,\n getContents,\n }));\n}\n","import svgCloudUpload from '@mdi/svg/svg/cloud-upload.svg?raw';\nimport { Folder, getNavigation, Permission, View } from '@nextcloud/files';\nimport { defaultRemoteURL, defaultRootPath } from '@nextcloud/files/dav';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nexport default () => {\n const foldername = loadState('files_sharing', 'filename');\n let FilesViewFileDropEmptyContent;\n let fileDropEmptyContentInstance;\n const view = new View({\n id: 'public-file-drop',\n name: t('files_sharing', 'File drop'),\n caption: t('files_sharing', 'Upload files to {foldername}', { foldername }),\n icon: svgCloudUpload,\n order: 1,\n emptyView: async (div) => {\n if (FilesViewFileDropEmptyContent === undefined) {\n const { default: component } = await import('../views/FilesViewFileDropEmptyContent.vue');\n FilesViewFileDropEmptyContent = Vue.extend(component);\n }\n if (fileDropEmptyContentInstance) {\n fileDropEmptyContentInstance.$destroy();\n }\n fileDropEmptyContentInstance = new FilesViewFileDropEmptyContent({\n propsData: {\n foldername,\n },\n });\n fileDropEmptyContentInstance.$mount(div);\n },\n getContents: async () => {\n return {\n contents: [],\n // Fake a writeonly folder as root\n folder: new Folder({\n id: 0,\n source: `${defaultRemoteURL}${defaultRootPath}`,\n root: defaultRootPath,\n owner: null,\n permissions: Permission.CREATE,\n }),\n };\n },\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { Folder, getNavigation, Permission, View } from '@nextcloud/files';\nimport { getDefaultPropfind, getRemoteURL, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { translate as t } from '@nextcloud/l10n';\nimport { client } from '../../../files/src/services/WebdavClient.ts';\nimport logger from '../services/logger.ts';\nexport default () => {\n const view = new View({\n id: 'public-file-share',\n name: t('files_sharing', 'Public file share'),\n caption: t('files_sharing', 'Publicly shared file.'),\n emptyTitle: t('files_sharing', 'No file'),\n emptyCaption: t('files_sharing', 'The file shared with you will show up here'),\n icon: LinkSvg,\n order: 1,\n getContents: async (path, { signal }) => {\n try {\n const node = await client.stat(getRootPath(), {\n data: getDefaultPropfind(),\n details: true,\n signal,\n });\n return {\n // We only have one file as the content\n contents: [resultToNode(node.data)],\n // Fake a readonly folder as root\n folder: new Folder({\n id: 0,\n source: `${getRemoteURL()}${getRootPath()}`,\n root: getRootPath(),\n owner: null,\n permissions: Permission.READ,\n attributes: {\n // Ensure the share note is set on the root\n note: node.data.props?.note,\n },\n }),\n };\n }\n catch (error) {\n if (signal.aborted) {\n logger.info('Fetching contents for public file share was aborted', { error });\n throw new DOMException('Aborted', 'AbortError');\n }\n logger.error('Failed to get contents for public file share', { error });\n throw error;\n }\n },\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","import LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\n/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { getContents } from '../../../files/src/services/Files.ts';\nexport default () => {\n const view = new View({\n id: 'public-share',\n name: t('files_sharing', 'Public share'),\n caption: t('files_sharing', 'Publicly shared files.'),\n emptyTitle: t('files_sharing', 'No files'),\n emptyCaption: t('files_sharing', 'Files and folders shared with you will show up here'),\n icon: LinkSvg,\n order: 1,\n getContents,\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","import { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport queryString from 'query-string';\nimport Vue from 'vue';\nimport Router, { isNavigationFailure, NavigationFailureType } from 'vue-router';\nimport logger from '../services/logger.ts';\nconst view = loadState('files_sharing', 'view');\nconst sharingToken = loadState('files_sharing', 'sharingToken');\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = (function (...args) {\n if (args.length > 1) {\n return originalPush.call(this, ...args);\n }\n return originalPush.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\nconst originalReplace = Router.prototype.replace;\nRouter.prototype.replace = (function (...args) {\n if (args.length > 1) {\n return originalReplace.call(this, ...args);\n }\n return originalReplace.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\n/**\n * Ignore duplicated-navigation error but forward real exceptions\n *\n * @param error The thrown error\n */\nfunction ignoreDuplicateNavigation(error) {\n if (isNavigationFailure(error, NavigationFailureType.duplicated)) {\n logger.debug('Ignoring duplicated navigation from vue-router', { error });\n }\n else {\n throw error;\n }\n}\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl('/s'),\n linkActiveClass: 'active',\n routes: [\n {\n path: '/',\n // Pretending we're using the default view\n redirect: { name: 'filelist', params: { view, token: sharingToken } },\n },\n {\n path: '/:token',\n name: 'filelist',\n props: true,\n },\n ],\n // Custom stringifyQuery to prevent encoding of slashes in the url\n stringifyQuery(query) {\n const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n return result ? ('?' + result) : '';\n },\n});\nexport default router;\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus';\nimport { getNavigation } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport RouterService from '../../files/src/services/RouterService.ts';\nimport registerFileDropView from './files_views/publicFileDrop.ts';\nimport registerPublicFileShareView from './files_views/publicFileShare.ts';\nimport registerPublicShareView from './files_views/publicShare.ts';\nimport router from './router/index.ts';\nimport logger from './services/logger.ts';\nregisterFileDropView();\nregisterPublicShareView();\nregisterPublicFileShareView();\n// Get the current view from state and set it active\nconst view = loadState('files_sharing', 'view');\nconst navigation = getNavigation();\ntry {\n navigation.setActive(view);\n}\ncatch {\n // no such view\n navigation.setActive(null);\n}\n// Force our own router\nwindow.OCP.Files = window.OCP.Files ?? {};\nwindow.OCP.Files.Router = new RouterService(router);\n// If this is a single file share, so set the fileid as active in the URL\nconst fileId = loadState('files_sharing', 'fileId', null);\nconst token = loadState('files_sharing', 'sharingToken');\nif (fileId !== null) {\n window.OCP.Files.Router.goToRoute('filelist', { ...window.OCP.Files.Router.params, token, fileid: String(fileId) }, { ...window.OCP.Files.Router.query, openfile: 'true' });\n}\n// When the file list is loaded we need to apply the \"userconfig\" setup on the share\nsubscribe('files:list:updated', loadShareConfig);\n/**\n * Event handler to load the view config for the current share.\n * This is done on the `files:list:updated` event to ensure the list and especially the config store was correctly initialized.\n *\n * @param context The event context\n * @param context.folder The current folder\n */\nfunction loadShareConfig({ folder }) {\n // Only setup config once\n unsubscribe('files:list:updated', loadShareConfig);\n // Share attributes (the same) are set on all folders of a share\n if (folder.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(folder.attributes['share-attributes'] || '[]');\n const gridViewAttribute = shareAttributes.find(({ scope, key }) => scope === 'config' && key === 'grid_view');\n if (gridViewAttribute !== undefined) {\n logger.debug('Loading share attributes', { gridViewAttribute });\n emit('files:config:updated', { key: 'grid_view', value: gridViewAttribute.value === true });\n }\n }\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class RouterService {\n // typescript compiles this to `#router` to make it private even in JS,\n // but in TS it needs to be called without the visibility specifier\n router;\n constructor(router) {\n this.router = router;\n }\n get name() {\n return this.router.currentRoute.name;\n }\n get query() {\n return this.router.currentRoute.query || {};\n }\n get params() {\n return this.router.currentRoute.params || {};\n }\n /**\n * This is a protected getter only for internal use\n *\n */\n get _router() {\n return this.router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this.router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name - The route name or null to keep current route and just update params/query\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n name ??= this.router.currentRoute.name;\n const location = { name, query, params };\n if (replace) {\n return this._router.replace(location);\n }\n return this._router.push(location);\n }\n}\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\")) {\n permissions |= Permission.WRITE;\n }\n if (permString.includes(\"CK\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"NV\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n}\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n if (scopedGlobals.davProperties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n scopedGlobals.davProperties.push(prop);\n scopedGlobals.davNamespaces = namespaces;\n return true;\n}\nfunction getDavProperties() {\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n}\nasync function getFavoriteNodes(options = {}) {\n const client = options.client ?? getClient();\n const path = options.path ?? \"/\";\n const davRoot = options.davRoot ?? defaultRootPath;\n const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n signal: options.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n defaultDavNamespaces,\n defaultDavProperties,\n defaultRemoteURL,\n defaultRootPath,\n getClient,\n getDavNameSpaces,\n getDavProperties,\n getDefaultPropfind,\n getFavoriteNodes,\n getFavoritesReport,\n getRecentSearch,\n getRemoteURL,\n getRootPath,\n parsePermissions,\n registerDavProperty,\n resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1035\":\"da08d310d18692ca4e27\",\"1764\":\"3654558a3474ec02b609\",\"2457\":\"ce6348bfa704a5bf56fb\",\"4271\":\"101cdb0f1357424796fd\",\"6798\":\"55fb835b251fd3f7de19\",\"7471\":\"b4ac70873a3ab192efd0\",\"8192\":\"91fbd6f4898978b0533a\",\"9281\":\"29ef7f217a0c6b239922\",\"9906\":\"24447948ddfe6cf1ef05\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5102;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t5102: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(85908)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","async","getContents","path","options","searchStore","useSearchStore","getPinia","query","length","join","getRootPath","propfindPayload","getDefaultPropfind","contentsResponse","client","getDirectoryContents","details","data","includeSelf","signal","root","contents","slice","filename","logger","debug","Error","folder","resultToNode","map","result","error","basename","filter","Boolean","defaultGetContents","useFilesStore","getDirectoryByPath","rootPath","stat","searchNodes","dir","getLocalSearch","user","getCurrentUser","trim","startsWith","search","getDavNameSpaces","getDavProperties","uid","escapeHTML","replace","aborted","results","defaultRootPath","getBaseUrl","getClient","fetchNode","dummyFolder","Folder","id","source","getRemoteURL","owner","permissions","Permission","NONE","defineStore","activeAction","shallowRef","activeNode","ref","activeView","activeFolder","onDeletedNode","node","value","undefined","onChangedView","view","watch","fileid","window","OCP","Files","Router","goToRoute","params","String","navigation","getNavigation","active","subscribe","addEventListener","event","detail","initialize","files","roots","getNode","getNodes","sources","getNodesById","Object","values","getRoot","service","pathsStore","usePathsStore","getPath","updateNodes","nodes","newNodes","reduce","acc","deleteNodes","entries","some","n","fromEntries","Promise","all","then","oldSource","ourNode","Vue","attributes","getNodesByPath","_children","setRoot","_nc_files_pinia","createPinia","args","state","paths","getters","actions","addPath","payload","this","deletePath","delete","onCreatedNode","type","FileType","addNodeToParentChildren","deleteNodeFromParentChildren","onMovedNode","oldPath","find","oldNode","File","mime","parentSource","dirname","children","Set","parent","add","store","_initialized","scope","updateSearch","old","current","onViewChanged","router","VIEW_ID","flat","info","updateRouter","debounce","isSearch","emit","foldername","loadState","FilesViewFileDropEmptyContent","fileDropEmptyContentInstance","View","name","t","caption","icon","order","emptyView","default","component","extend","$destroy","propsData","$mount","div","defaultRemoteURL","CREATE","register","emptyTitle","emptyCaption","LinkSvg","READ","note","props","DOMException","sharingToken","use","originalPush","prototype","push","call","catch","ignoreDuplicateNavigation","originalReplace","isNavigationFailure","NavigationFailureType","duplicated","mode","base","generateUrl","linkActiveClass","routes","redirect","token","stringifyQuery","queryString","stringify","registerFileDropView","registerPublicShareView","registerPublicFileShareView","setActive","constructor","currentRoute","_router","goTo","location","fileId","openfile","loadShareConfig","unsubscribe","gridViewAttribute","JSON","parse","key","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","s","davProperties","prop","davNamespaces","keys","ns","url","remoteURL","headers","setHeaders","requesttoken","patch","headers2","method","fetch","filesRoot","userId","permString","P","includes","WRITE","UPDATE","DELETE","SHARE","parsePermissions","mtime","Date","lastmod","crtime","creationdate","nodeData","isNaN","getTime","displayname","size","Number","parseInt","getcontentlength","status","FAILED","hasPreview","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","getter","__esModule","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","promises","u","obj","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","getAttribute","createElement","charset","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","nmd","scriptUrl","globalThis","importScripts","currentScript","tagName","toUpperCase","test","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files_sharing-init-public.js?v=5d95d8e1c4246a51781a","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files/src/logger.ts","webpack:///nextcloud/apps/files/src/services/Files.ts","webpack:///nextcloud/apps/files/src/services/WebDavSearch.ts","webpack:///nextcloud/apps/files/src/services/WebdavClient.ts","webpack:///nextcloud/apps/files/src/store/active.ts","webpack:///nextcloud/apps/files/src/store/files.ts","webpack:///nextcloud/apps/files/src/store/index.ts","webpack:///nextcloud/apps/files/src/store/paths.ts","webpack:///nextcloud/apps/files/src/store/search.ts","webpack:///nextcloud/apps/files/src/views/search.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicFileDrop.ts","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicFileShare.ts","webpack:///nextcloud/apps/files_sharing/src/files_views/publicShare.ts","webpack:///nextcloud/apps/files_sharing/src/router/index.ts","webpack:///nextcloud/apps/files_sharing/src/init-public.ts","webpack:///nextcloud/apps/files/src/services/RouterService.ts","webpack:///nextcloud/node_modules/@nextcloud/files/dist/dav.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files')\n .detectUser()\n .build();\n","import { getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { join } from 'path';\nimport logger from '../logger.ts';\nimport { useFilesStore } from '../store/files.ts';\nimport { getPinia } from '../store/index.ts';\nimport { useSearchStore } from '../store/search.ts';\nimport { client } from './WebdavClient.ts';\nimport { searchNodes } from './WebDavSearch.ts';\n/**\n * Get contents implementation for the files view.\n * This also allows to fetch local search results when the user is currently filtering.\n *\n * @param path - The path to query\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function getContents(path = '/', options) {\n const searchStore = useSearchStore(getPinia());\n if (searchStore.query.length < 3) {\n return await defaultGetContents(path, options);\n }\n return await getLocalSearch(path, searchStore.query, options?.signal);\n}\n/**\n * Generic `getContents` implementation for the users files.\n *\n * @param path - The path to get the contents\n * @param options - Options\n * @param options.signal - Abort signal to cancel the request\n */\nexport async function defaultGetContents(path, options) {\n path = join(getRootPath(), path);\n const propfindPayload = getDefaultPropfind();\n const contentsResponse = await client.getDirectoryContents(path, {\n details: true,\n data: propfindPayload,\n includeSelf: true,\n signal: options?.signal,\n });\n const root = contentsResponse.data[0];\n const contents = contentsResponse.data.slice(1);\n if (root?.filename !== path && `${root?.filename}/` !== path) {\n logger.debug(`Exepected \"${path}\" but got filename \"${root.filename}\" instead.`);\n throw new Error('Root node does not match requested path');\n }\n return {\n folder: resultToNode(root),\n contents: contents.map((result) => {\n try {\n return resultToNode(result);\n }\n catch (error) {\n logger.error(`Invalid node detected '${result.basename}'`, { error });\n return null;\n }\n }).filter(Boolean),\n };\n}\n/**\n * Get the local search results for the current folder.\n *\n * @param path - The path\n * @param query - The current search query\n * @param signal - The aboort signal\n */\nasync function getLocalSearch(path, query, signal) {\n const filesStore = useFilesStore(getPinia());\n let folder = filesStore.getDirectoryByPath('files', path);\n if (!folder) {\n const rootPath = join(getRootPath(), path);\n const stat = await client.stat(rootPath, { details: true });\n folder = resultToNode(stat.data);\n }\n const contents = await searchNodes(query, { dir: path, signal });\n return {\n folder,\n contents,\n };\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { defaultRootPath, getDavNameSpaces, getDavProperties, resultToNode } from '@nextcloud/files/dav';\nimport { getBaseUrl } from '@nextcloud/router';\nimport escapeHTML from 'escape-html';\nimport logger from '../logger.ts';\nimport { client } from './WebdavClient.ts';\n/**\n * Search for nodes matching the given query.\n *\n * @param query - Search query\n * @param options - Options\n * @param options.dir - The base directory to scope the search to\n * @param options.signal - Abort signal for the request\n */\nexport async function searchNodes(query, { dir, signal }) {\n const user = getCurrentUser();\n if (!user) {\n // the search plugin only works for user roots\n return [];\n }\n query = query.trim();\n if (query.length < 3) {\n // the search plugin only works with queries of at least 3 characters\n return [];\n }\n if (dir && !dir.startsWith('/')) {\n dir = `/${dir}`;\n }\n logger.debug('Searching for nodes', { query, dir });\n const { data } = await client.search('/', {\n details: true,\n signal,\n data: `\n\n\t \n\t\t \n\t\t\t \n\t\t\t ${getDavProperties()}\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t /files/${user.uid}${dir ? escapeHTML(dir) : ''}\n\t\t\t\t infinity\n\t\t\t \n\t\t \n\t\t \n\t\t\t \n\t\t\t\t \n\t\t\t\t\t \n\t\t\t\t \n\t\t\t\t %${query.replace('%', '')}%\n\t\t\t \n\t\t \n\t\t \n\t\n`,\n });\n // check if the request was aborted\n if (signal?.aborted) {\n return [];\n }\n // otherwise return the result mapped to Nextcloud nodes\n return data.results.map((result) => resultToNode(result, defaultRootPath, getBaseUrl()));\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getClient, getDefaultPropfind, getRootPath, resultToNode } from '@nextcloud/files/dav';\nexport const client = getClient();\n/**\n * Fetches a node from the given path\n *\n * @param path - The path to fetch the node from\n */\nexport async function fetchNode(path) {\n const propfindPayload = getDefaultPropfind();\n const result = await client.stat(`${getRootPath()}${path}`, {\n details: true,\n data: propfindPayload,\n });\n return resultToNode(result.data);\n}\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { Folder, getNavigation, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { defineStore } from 'pinia';\nimport { ref, shallowRef, watch } from 'vue';\nimport logger from '../logger.ts';\n// Temporary fake folder to use until we have the first valid folder\n// fetched and cached. This allow us to mount the FilesListVirtual\n// at all time and avoid unmount/mount and undesired rendering issues.\nconst dummyFolder = new Folder({\n id: 0,\n source: getRemoteURL() + getRootPath(),\n root: getRootPath(),\n owner: getCurrentUser()?.uid || null,\n permissions: Permission.NONE,\n});\nexport const useActiveStore = defineStore('active', () => {\n /**\n * The currently active action\n */\n const activeAction = shallowRef();\n /**\n * The current active node within the folder\n */\n const activeNode = ref();\n /**\n * The current active view\n */\n const activeView = shallowRef();\n /**\n * The currently active folder\n */\n const activeFolder = ref(dummyFolder);\n // Set the active node on the router params\n watch(activeNode, () => {\n if (typeof activeNode.value?.fileid !== 'number' || activeNode.value.fileid === activeFolder.value?.fileid) {\n return;\n }\n logger.debug('Updating active fileid in URL query', { fileid: activeNode.value.fileid });\n window.OCP.Files.Router.goToRoute(null, { ...window.OCP.Files.Router.params, fileid: String(activeNode.value.fileid) }, { ...window.OCP.Files.Router.query }, true);\n });\n initialize();\n /**\n * Unset the active node if deleted\n *\n * @param node - The node thats deleted\n */\n function onDeletedNode(node) {\n if (activeNode.value && activeNode.value.source === node.source) {\n activeNode.value = undefined;\n }\n }\n /**\n * Callback to update the current active view\n *\n * @param view - The new active view\n */\n function onChangedView(view = null) {\n logger.debug('Setting active view', { view });\n activeView.value = view ?? undefined;\n activeNode.value = undefined;\n }\n /**\n * Initalize the store - connect all event listeners.\n *\n */\n function initialize() {\n const navigation = getNavigation();\n onChangedView(navigation.active);\n // Make sure we only register the listeners once\n subscribe('files:node:deleted', onDeletedNode);\n // Or you can react to changes of the current active view\n navigation.addEventListener('updateActive', (event) => {\n onChangedView(event.detail);\n });\n }\n return {\n activeAction,\n activeFolder,\n activeNode,\n activeView,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { defineStore } from 'pinia';\nimport Vue, { ref } from 'vue';\nimport logger from '../logger.ts';\nimport { fetchNode } from '../services/WebdavClient.ts';\nimport { useActiveStore } from './active.ts';\nimport { usePathsStore } from './paths.ts';\n/**\n * Store for files and folders in the files app.\n */\nexport const useFilesStore = defineStore('files', () => {\n const files = ref({});\n const roots = ref({});\n // initialize the store once its used first time\n initalizeStore();\n /**\n * Get a file or folder by its source\n *\n * @param source - The file source\n */\n function getNode(source) {\n return files.value[source];\n }\n /**\n * Get a list of files or folders by their IDs\n * Note: does not return undefined values\n *\n * @param sources - The file sources\n */\n function getNodes(sources) {\n return sources\n .map((source) => files.value[source])\n .filter(Boolean);\n }\n /**\n * Get files or folders by their ID\n * Multiple nodes can have the same ID but different sources\n * (e.g. in a shared context)\n *\n * @param id - The file ID\n */\n function getNodesById(id) {\n return Object.values(files.value)\n .filter((node) => node.id === id);\n }\n /**\n * Get the root folder of a service\n *\n * @param service - The service (files view)\n * @return The root folder if set\n */\n function getRoot(service) {\n return roots.value[service];\n }\n /**\n * Get cached directory matching a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return The folder if found\n */\n function getDirectoryByPath(service, path) {\n const pathsStore = usePathsStore();\n let folder;\n // Get the containing folder from path store\n if (!path || path === '/') {\n folder = getRoot(service);\n }\n else {\n const source = pathsStore.getPath(service, path);\n if (source) {\n folder = getNode(source);\n }\n }\n return folder;\n }\n /**\n * Get cached child nodes within a given path\n *\n * @param service - The service (files view)\n * @param path - The path relative within the service\n * @return Array of cached nodes within the path\n */\n function getNodesByPath(service, path) {\n const folder = getDirectoryByPath(service, path);\n // If we found a cache entry and the cache entry was already loaded (has children) then use it\n return (folder?._children ?? [])\n .map((source) => getNode(source))\n .filter(Boolean);\n }\n /**\n * Update or set nodes in the store\n *\n * @param nodes - The nodes to update or set\n */\n function updateNodes(nodes) {\n // Update the store all at once\n const newNodes = nodes.reduce((acc, node) => {\n if (files.value[node.source]?.id && !node.id) {\n logger.error('Trying to update/set a node without id', { node });\n return acc;\n }\n acc[node.source] = node;\n return acc;\n }, {});\n files.value = { ...files.value, ...newNodes };\n // handle updating the active node\n const activeStore = useActiveStore();\n if (activeStore.activeNode && activeStore.activeNode.source in newNodes) {\n activeStore.activeNode = files.value[activeStore.activeNode.source];\n }\n }\n /**\n * Delete nodes from the store\n *\n * @param nodes - The nodes to delete\n */\n function deleteNodes(nodes) {\n const entries = Object.entries(files.value)\n .filter(([, node]) => !nodes.some((n) => n.source === node.source));\n files.value = Object.fromEntries(entries);\n }\n /**\n * Set the root folder for a service\n *\n * @param options - The options for setting the root\n * @param options.service - The service (files view)\n * @param options.root - The root folder\n */\n function setRoot({ service, root }) {\n roots.value = { ...roots.value, [service]: root };\n }\n return {\n files,\n roots,\n deleteNodes,\n getDirectoryByPath,\n getNode,\n getNodes,\n getNodesById,\n getNodesByPath,\n getRoot,\n setRoot,\n updateNodes,\n };\n // Internal helper functions\n /**\n * Initialize the store by subscribing to events\n */\n function initalizeStore() {\n subscribe('files:node:created', onCreatedNode);\n subscribe('files:node:deleted', onDeletedNode);\n subscribe('files:node:updated', onUpdatedNode);\n subscribe('files:node:moved', onMovedNode);\n // legacy sidebar\n subscribe('files:favorites:added', onAddFavorite);\n subscribe('files:favorites:removed', onRemoveFavorite);\n }\n /**\n * Called when a node is deleted, removes the node from the store\n *\n * @param node - The deleted node\n */\n function onDeletedNode(node) {\n deleteNodes([node]);\n }\n /**\n * Handler for when a node is created\n *\n * @param node - The created node\n */\n function onCreatedNode(node) {\n updateNodes([node]);\n }\n /**\n * Handler for when a node is moved, updates the path of the node in the store\n *\n * @param context - The context of the moved node\n * @param context.node - The moved node\n * @param context.oldSource - The old source of the node before it was moved\n */\n function onMovedNode({ node, oldSource }) {\n // Update the path of the node\n delete files.value[oldSource];\n updateNodes([node]);\n }\n /**\n * Handler for when a node is updated, updates the node in the store\n *\n * @param node - The updated node\n */\n async function onUpdatedNode(node) {\n // If we have multiple nodes with the same file ID, we need to update all of them\n const nodes = node.id\n ? getNodesById(node.id)\n : getNodes([node.source]);\n if (nodes.length > 1) {\n await Promise.all(nodes.map((node) => fetchNode(node.path))).then(updateNodes);\n logger.debug(nodes.length + ' nodes updated in store', { fileid: node.id, source: node.source });\n return;\n }\n // If we have only one node with the file ID, we can update it directly\n if (nodes.length === 1 && node.source === nodes[0].source) {\n updateNodes([node]);\n return;\n }\n // Otherwise, it means we receive an event for a node that is not in the store\n const newNode = await fetchNode(node.path);\n updateNodes([newNode]);\n }\n /**\n * Handlers for legacy sidebar (no real nodes support)\n *\n * @param node - The node that was added to favorites\n */\n function onAddFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 1);\n }\n }\n /**\n * Handler for when a node is removed from favorites\n *\n * @param node - The removed favorite\n */\n function onRemoveFavorite(node) {\n const ourNode = getNode(node.source);\n if (ourNode) {\n Vue.set(ourNode.attributes, 'favorite', 0);\n }\n }\n});\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { createPinia } from 'pinia';\n/**\n * Get the Pinia instance for the Files app.\n */\nexport function getPinia() {\n if (window._nc_files_pinia) {\n return window._nc_files_pinia;\n }\n window._nc_files_pinia = createPinia();\n return window._nc_files_pinia;\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { subscribe } from '@nextcloud/event-bus';\nimport { File, FileType, getNavigation } from '@nextcloud/files';\nimport { dirname } from '@nextcloud/paths';\nimport { defineStore } from 'pinia';\nimport Vue from 'vue';\nimport logger from '../logger.ts';\nimport { useFilesStore } from './files.ts';\n/**\n *\n * @param args\n */\nexport function usePathsStore(...args) {\n const files = useFilesStore(...args);\n const store = defineStore('paths', {\n state: () => ({\n paths: {},\n }),\n getters: {\n getPath: (state) => {\n return (service, path) => {\n if (!state.paths[service]) {\n return undefined;\n }\n return state.paths[service][path];\n };\n },\n },\n actions: {\n addPath(payload) {\n // If it doesn't exists, init the service state\n if (!this.paths[payload.service]) {\n Vue.set(this.paths, payload.service, {});\n }\n // Now we can set the provided path\n Vue.set(this.paths[payload.service], payload.path, payload.source);\n },\n deletePath(service, path) {\n // skip if service does not exist\n if (!this.paths[service]) {\n return;\n }\n Vue.delete(this.paths[service], path);\n },\n onCreatedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (!node.fileid) {\n logger.error('Node has no fileid', { node });\n return;\n }\n // Only add path if it's a folder\n if (node.type === FileType.Folder) {\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Update parent folder children if exists\n // If the folder is the root, get it and update it\n this.addNodeToParentChildren(node);\n },\n onDeletedNode(node) {\n const service = getNavigation()?.active?.id || 'files';\n if (node.type === FileType.Folder) {\n // Delete the path\n this.deletePath(service, node.path);\n }\n this.deleteNodeFromParentChildren(node);\n },\n onMovedNode({ node, oldSource }) {\n const service = getNavigation()?.active?.id || 'files';\n // Update the path of the node\n if (node.type === FileType.Folder) {\n // Delete the old path if it exists\n const oldPath = Object.entries(this.paths[service]).find(([, source]) => source === oldSource);\n if (oldPath?.[0]) {\n this.deletePath(service, oldPath[0]);\n }\n // Add the new path\n this.addPath({\n service,\n path: node.path,\n source: node.source,\n });\n }\n // Dummy simple clone of the renamed node from a previous state\n const oldNode = new File({\n source: oldSource,\n owner: node.owner,\n mime: node.mime,\n root: node.root,\n });\n this.deleteNodeFromParentChildren(oldNode);\n this.addNodeToParentChildren(node);\n },\n deleteNodeFromParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.delete(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n addNodeToParentChildren(node) {\n const service = getNavigation()?.active?.id || 'files';\n // Update children of a root folder\n const parentSource = dirname(node.source);\n const folder = (node.dirname === '/' ? files.getRoot(service) : files.getNode(parentSource));\n if (folder) {\n // ensure sources are unique\n const children = new Set(folder._children ?? []);\n children.add(node.source);\n Vue.set(folder, '_children', [...children.values()]);\n logger.debug('Children updated', { parent: folder, node, children: folder._children });\n return;\n }\n logger.debug('Parent path does not exists, skipping children update', { node });\n },\n },\n });\n const pathsStore = store(...args);\n // Make sure we only register the listeners once\n if (!pathsStore._initialized) {\n subscribe('files:node:created', pathsStore.onCreatedNode);\n subscribe('files:node:deleted', pathsStore.onDeletedNode);\n subscribe('files:node:moved', pathsStore.onMovedNode);\n pathsStore._initialized = true;\n }\n return pathsStore;\n}\n","/*!\n * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe } from '@nextcloud/event-bus';\nimport debounce from 'debounce';\nimport { defineStore } from 'pinia';\nimport { ref, watch } from 'vue';\nimport logger from '../logger.ts';\nimport { VIEW_ID } from '../views/search.ts';\nexport const useSearchStore = defineStore('search', () => {\n /**\n * The current search query\n */\n const query = ref('');\n /**\n * Scope of the search.\n * Scopes:\n * - filter: only filter current file list\n * - globally: search everywhere\n */\n const scope = ref('filter');\n // reset the base if query is cleared\n watch(scope, updateSearch);\n watch(query, (old, current) => {\n // skip if only whitespaces changed\n if (old.trim() === current.trim()) {\n return;\n }\n updateSearch();\n });\n // initialize the search store\n initialize();\n /**\n * Debounced update of the current route\n *\n */\n const updateRouter = debounce((isSearch) => {\n const router = window.OCP.Files.Router;\n router.goToRoute(undefined, {\n view: VIEW_ID,\n }, {\n query: query.value,\n }, isSearch);\n });\n /**\n * Handle updating the filter if needed.\n * Also update the search view by updating the current route if needed.\n *\n */\n function updateSearch() {\n // emit the search event to update the filter\n emit('files:search:updated', { query: query.value, scope: scope.value });\n const router = window.OCP.Files.Router;\n // if we are on the search view and the query was unset or scope was set to 'filter' we need to move back to the files view\n if (router.params.view === VIEW_ID && (query.value === '' || scope.value === 'filter')) {\n scope.value = 'filter';\n return router.goToRoute(undefined, {\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n });\n }\n // for the filter scope we do not need to adjust the current route anymore\n // also if the query is empty we do not need to do anything\n if (scope.value === 'filter' || !query.value) {\n return;\n }\n const isSearch = router.params.view === VIEW_ID;\n logger.debug('Update route for updated search query', { query: query.value, isSearch });\n updateRouter(isSearch);\n }\n /**\n * Event handler that resets the store if the file list view was changed.\n *\n * @param view - The new view that is active\n */\n function onViewChanged(view) {\n if (view.id !== VIEW_ID) {\n query.value = '';\n scope.value = 'filter';\n }\n }\n /**\n * Initialize the store from the router if needed\n */\n function initialize() {\n subscribe('files:navigation:changed', onViewChanged);\n const router = window.OCP.Files.Router;\n // if we initially load the search view (e.g. hard page refresh)\n // then we need to initialize the store from the router\n if (router.params.view === VIEW_ID) {\n query.value = [router.query.query].flat()[0] ?? '';\n if (query.value) {\n scope.value = 'globally';\n logger.debug('Directly navigated to search view', { query: query.value });\n }\n else {\n // we do not have any query so we need to move to the files list\n logger.info('Directly navigated to search view without any query, redirect to files view.');\n router.goToRoute(undefined, {\n ...router.params,\n view: 'files',\n }, {\n ...router.query,\n query: undefined,\n }, true);\n }\n }\n }\n return {\n query,\n scope,\n };\n});\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport MagnifySvg from '@mdi/svg/svg/magnify.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nimport { getContents } from '../services/Search.ts';\nimport { VIEW_ID as FILES_VIEW_ID } from './files.ts';\nexport const VIEW_ID = 'search';\n/**\n * Register the search-in-files view\n */\nexport function registerSearchView() {\n let instance;\n let view;\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: VIEW_ID,\n name: t('files', 'Search'),\n caption: t('files', 'Search results within your files.'),\n async emptyView(el) {\n if (!view) {\n view = (await import('./SearchEmptyView.vue')).default;\n }\n else {\n instance.$destroy();\n }\n instance = new Vue(view);\n instance.$mount(el);\n },\n icon: MagnifySvg,\n order: 10,\n parent: FILES_VIEW_ID,\n // it should be shown expanded\n expanded: true,\n // this view is hidden by default and only shown when active\n hidden: true,\n getContents,\n }));\n}\n","import svgCloudUpload from '@mdi/svg/svg/cloud-upload.svg?raw';\nimport { Folder, getNavigation, Permission, View } from '@nextcloud/files';\nimport { defaultRemoteURL, defaultRootPath } from '@nextcloud/files/dav';\nimport { loadState } from '@nextcloud/initial-state';\nimport { translate as t } from '@nextcloud/l10n';\nimport Vue from 'vue';\nexport default () => {\n const foldername = loadState('files_sharing', 'filename');\n let FilesViewFileDropEmptyContent;\n let fileDropEmptyContentInstance;\n const view = new View({\n id: 'public-file-drop',\n name: t('files_sharing', 'File drop'),\n caption: t('files_sharing', 'Upload files to {foldername}', { foldername }),\n icon: svgCloudUpload,\n order: 1,\n emptyView: async (div) => {\n if (FilesViewFileDropEmptyContent === undefined) {\n const { default: component } = await import('../views/FilesViewFileDropEmptyContent.vue');\n FilesViewFileDropEmptyContent = Vue.extend(component);\n }\n if (fileDropEmptyContentInstance) {\n fileDropEmptyContentInstance.$destroy();\n }\n fileDropEmptyContentInstance = new FilesViewFileDropEmptyContent({\n propsData: {\n foldername,\n },\n });\n fileDropEmptyContentInstance.$mount(div);\n },\n getContents: async () => {\n return {\n contents: [],\n // Fake a writeonly folder as root\n folder: new Folder({\n id: 0,\n source: `${defaultRemoteURL}${defaultRootPath}`,\n root: defaultRootPath,\n owner: null,\n permissions: Permission.CREATE,\n }),\n };\n },\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","/**\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { Folder, getNavigation, Permission, View } from '@nextcloud/files';\nimport { getDefaultPropfind, getRemoteURL, getRootPath, resultToNode } from '@nextcloud/files/dav';\nimport { translate as t } from '@nextcloud/l10n';\nimport { client } from '../../../files/src/services/WebdavClient.ts';\nimport logger from '../services/logger.ts';\nexport default () => {\n const view = new View({\n id: 'public-file-share',\n name: t('files_sharing', 'Public file share'),\n caption: t('files_sharing', 'Publicly shared file.'),\n emptyTitle: t('files_sharing', 'No file'),\n emptyCaption: t('files_sharing', 'The file shared with you will show up here'),\n icon: LinkSvg,\n order: 1,\n getContents: async (path, { signal }) => {\n try {\n const node = await client.stat(getRootPath(), {\n data: getDefaultPropfind(),\n details: true,\n signal,\n });\n return {\n // We only have one file as the content\n contents: [resultToNode(node.data)],\n // Fake a readonly folder as root\n folder: new Folder({\n id: 0,\n source: `${getRemoteURL()}${getRootPath()}`,\n root: getRootPath(),\n owner: null,\n permissions: Permission.READ,\n attributes: {\n // Ensure the share note is set on the root\n note: node.data.props?.note,\n },\n }),\n };\n }\n catch (error) {\n if (signal.aborted) {\n logger.info('Fetching contents for public file share was aborted', { error });\n throw new DOMException('Aborted', 'AbortError');\n }\n logger.error('Failed to get contents for public file share', { error });\n throw error;\n }\n },\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","import LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { getNavigation, View } from '@nextcloud/files';\n/**\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { getContents } from '../../../files/src/services/Files.ts';\nexport default () => {\n const view = new View({\n id: 'public-share',\n name: t('files_sharing', 'Public share'),\n caption: t('files_sharing', 'Publicly shared files.'),\n emptyTitle: t('files_sharing', 'No files'),\n emptyCaption: t('files_sharing', 'Files and folders shared with you will show up here'),\n icon: LinkSvg,\n order: 1,\n getContents,\n });\n const Navigation = getNavigation();\n Navigation.register(view);\n};\n","import { loadState } from '@nextcloud/initial-state';\nimport { generateUrl } from '@nextcloud/router';\nimport queryString from 'query-string';\nimport Vue from 'vue';\nimport Router, { isNavigationFailure, NavigationFailureType } from 'vue-router';\nimport logger from '../services/logger.ts';\nconst view = loadState('files_sharing', 'view');\nconst sharingToken = loadState('files_sharing', 'sharingToken');\nVue.use(Router);\n// Prevent router from throwing errors when we're already on the page we're trying to go to\nconst originalPush = Router.prototype.push;\nRouter.prototype.push = (function (...args) {\n if (args.length > 1) {\n return originalPush.call(this, ...args);\n }\n return originalPush.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\nconst originalReplace = Router.prototype.replace;\nRouter.prototype.replace = (function (...args) {\n if (args.length > 1) {\n return originalReplace.call(this, ...args);\n }\n return originalReplace.call(this, args[0]).catch(ignoreDuplicateNavigation);\n});\n/**\n * Ignore duplicated-navigation error but forward real exceptions\n *\n * @param error The thrown error\n */\nfunction ignoreDuplicateNavigation(error) {\n if (isNavigationFailure(error, NavigationFailureType.duplicated)) {\n logger.debug('Ignoring duplicated navigation from vue-router', { error });\n }\n else {\n throw error;\n }\n}\nconst router = new Router({\n mode: 'history',\n // if index.php is in the url AND we got this far, then it's working:\n // let's keep using index.php in the url\n base: generateUrl('/s'),\n linkActiveClass: 'active',\n routes: [\n {\n path: '/',\n // Pretending we're using the default view\n redirect: { name: 'filelist', params: { view, token: sharingToken } },\n },\n {\n path: '/:token',\n name: 'filelist',\n props: true,\n },\n ],\n // Custom stringifyQuery to prevent encoding of slashes in the url\n stringifyQuery(query) {\n const result = queryString.stringify(query).replace(/%2F/gmi, '/');\n return result ? ('?' + result) : '';\n },\n});\nexport default router;\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { emit, subscribe, unsubscribe } from '@nextcloud/event-bus';\nimport { getNavigation } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport RouterService from '../../files/src/services/RouterService.ts';\nimport registerFileDropView from './files_views/publicFileDrop.ts';\nimport registerPublicFileShareView from './files_views/publicFileShare.ts';\nimport registerPublicShareView from './files_views/publicShare.ts';\nimport router from './router/index.ts';\nimport logger from './services/logger.ts';\nregisterFileDropView();\nregisterPublicShareView();\nregisterPublicFileShareView();\n// Get the current view from state and set it active\nconst view = loadState('files_sharing', 'view');\nconst navigation = getNavigation();\ntry {\n navigation.setActive(view);\n}\ncatch {\n // no such view\n navigation.setActive(null);\n}\n// Force our own router\nwindow.OCP.Files = window.OCP.Files ?? {};\nwindow.OCP.Files.Router = new RouterService(router);\n// If this is a single file share, so set the fileid as active in the URL\nconst fileId = loadState('files_sharing', 'fileId', null);\nconst token = loadState('files_sharing', 'sharingToken');\nif (fileId !== null) {\n window.OCP.Files.Router.goToRoute('filelist', { ...window.OCP.Files.Router.params, token, fileid: String(fileId) }, { ...window.OCP.Files.Router.query, openfile: 'true' });\n}\n// When the file list is loaded we need to apply the \"userconfig\" setup on the share\nsubscribe('files:list:updated', loadShareConfig);\n/**\n * Event handler to load the view config for the current share.\n * This is done on the `files:list:updated` event to ensure the list and especially the config store was correctly initialized.\n *\n * @param context The event context\n * @param context.folder The current folder\n */\nfunction loadShareConfig({ folder }) {\n // Only setup config once\n unsubscribe('files:list:updated', loadShareConfig);\n // Share attributes (the same) are set on all folders of a share\n if (folder.attributes['share-attributes']) {\n const shareAttributes = JSON.parse(folder.attributes['share-attributes'] || '[]');\n const gridViewAttribute = shareAttributes.find(({ scope, key }) => scope === 'config' && key === 'grid_view');\n if (gridViewAttribute !== undefined) {\n logger.debug('Loading share attributes', { gridViewAttribute });\n emit('files:config:updated', { key: 'grid_view', value: gridViewAttribute.value === true });\n }\n }\n}\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nexport default class RouterService {\n // typescript compiles this to `#router` to make it private even in JS,\n // but in TS it needs to be called without the visibility specifier\n router;\n constructor(router) {\n this.router = router;\n }\n get name() {\n return this.router.currentRoute.name;\n }\n get query() {\n return this.router.currentRoute.query || {};\n }\n get params() {\n return this.router.currentRoute.params || {};\n }\n /**\n * This is a protected getter only for internal use\n *\n */\n get _router() {\n return this.router;\n }\n /**\n * Trigger a route change on the files app\n *\n * @param path the url path, eg: '/trashbin?dir=/Deleted'\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goTo(path, replace = false) {\n return this.router.push({\n path,\n replace,\n });\n }\n /**\n * Trigger a route change on the files App\n *\n * @param name - The route name or null to keep current route and just update params/query\n * @param params the route parameters\n * @param query the url query parameters\n * @param replace replace the current history\n * @see https://router.vuejs.org/guide/essentials/navigation.html#navigate-to-a-different-location\n */\n goToRoute(name, params, query, replace) {\n name ??= this.router.currentRoute.name;\n const location = { name, query, params };\n if (replace) {\n return this._router.replace(location);\n }\n return this._router.push(location);\n }\n}\n","import { getCurrentUser, onRequestTokenUpdate, getRequestToken } from \"@nextcloud/auth\";\nimport { generateRemoteUrl } from \"@nextcloud/router\";\nimport { isPublicShare, getSharingToken } from \"@nextcloud/sharing/public\";\nimport { createClient, getPatcher } from \"webdav\";\nimport { P as Permission, s as scopedGlobals, l as logger, c as NodeStatus, a as File, b as Folder } from \"./chunks/folder-29HuacU_.mjs\";\nimport \"@nextcloud/paths\";\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nfunction parsePermissions(permString = \"\") {\n let permissions = Permission.NONE;\n if (!permString) {\n return permissions;\n }\n if (permString.includes(\"G\")) {\n permissions |= Permission.READ;\n }\n if (permString.includes(\"W\")) {\n permissions |= Permission.WRITE;\n }\n if (permString.includes(\"CK\")) {\n permissions |= Permission.CREATE;\n }\n if (permString.includes(\"NV\")) {\n permissions |= Permission.UPDATE;\n }\n if (permString.includes(\"D\")) {\n permissions |= Permission.DELETE;\n }\n if (permString.includes(\"R\")) {\n permissions |= Permission.SHARE;\n }\n return permissions;\n}\nconst defaultDavProperties = [\n \"d:getcontentlength\",\n \"d:getcontenttype\",\n \"d:getetag\",\n \"d:getlastmodified\",\n \"d:creationdate\",\n \"d:displayname\",\n \"d:quota-available-bytes\",\n \"d:resourcetype\",\n \"nc:has-preview\",\n \"nc:is-encrypted\",\n \"nc:mount-type\",\n \"oc:comments-unread\",\n \"oc:favorite\",\n \"oc:fileid\",\n \"oc:owner-display-name\",\n \"oc:owner-id\",\n \"oc:permissions\",\n \"oc:size\"\n];\nconst defaultDavNamespaces = {\n d: \"DAV:\",\n nc: \"http://nextcloud.org/ns\",\n oc: \"http://owncloud.org/ns\",\n ocs: \"http://open-collaboration-services.org/ns\"\n};\nfunction registerDavProperty(prop, namespace = { nc: \"http://nextcloud.org/ns\" }) {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n const namespaces = { ...scopedGlobals.davNamespaces, ...namespace };\n if (scopedGlobals.davProperties.find((search) => search === prop)) {\n logger.warn(`${prop} already registered`, { prop });\n return false;\n }\n if (prop.startsWith(\"<\") || prop.split(\":\").length !== 2) {\n logger.error(`${prop} is not valid. See example: 'oc:fileid'`, { prop });\n return false;\n }\n const ns = prop.split(\":\")[0];\n if (!namespaces[ns]) {\n logger.error(`${prop} namespace unknown`, { prop, namespaces });\n return false;\n }\n scopedGlobals.davProperties.push(prop);\n scopedGlobals.davNamespaces = namespaces;\n return true;\n}\nfunction getDavProperties() {\n scopedGlobals.davProperties ??= [...defaultDavProperties];\n return scopedGlobals.davProperties.map((prop) => `<${prop} />`).join(\" \");\n}\nfunction getDavNameSpaces() {\n scopedGlobals.davNamespaces ??= { ...defaultDavNamespaces };\n return Object.keys(scopedGlobals.davNamespaces).map((ns) => `xmlns:${ns}=\"${scopedGlobals.davNamespaces?.[ns]}\"`).join(\" \");\n}\nfunction getDefaultPropfind() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t`;\n}\nfunction getFavoritesReport() {\n return `\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\t\n\t\t\t\t1\n\t\t\t\n\t\t`;\n}\nfunction getRecentSearch(lastModified) {\n return `\n\n\t\n\t\t\n\t\t\t\n\t\t\t\t${getDavProperties()}\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t/files/${getCurrentUser()?.uid}/\n\t\t\t\tinfinity\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\thttpd/unix-directory\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\t0\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\t${lastModified}\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t\n\t\t\t\t\n\t\t\t\t\t\n\t\t\t\t\n\t\t\t\t\n\t\t\t\n\t\t\n\t\t\n\t\t\t100\n\t\t\t0\n\t\t\n\t\n`;\n}\nfunction getRootPath() {\n if (isPublicShare()) {\n return `/files/${getSharingToken()}`;\n }\n return `/files/${getCurrentUser()?.uid}`;\n}\nconst defaultRootPath = getRootPath();\nfunction getRemoteURL() {\n const url = generateRemoteUrl(\"dav\");\n if (isPublicShare()) {\n return url.replace(\"remote.php\", \"public.php\");\n }\n return url;\n}\nconst defaultRemoteURL = getRemoteURL();\nfunction getClient(remoteURL = defaultRemoteURL, headers = {}) {\n const client = createClient(remoteURL, { headers });\n function setHeaders(token) {\n client.setHeaders({\n ...headers,\n // Add this so the server knows it is an request from the browser\n \"X-Requested-With\": \"XMLHttpRequest\",\n // Inject user auth\n requesttoken: token ?? \"\"\n });\n }\n onRequestTokenUpdate(setHeaders);\n setHeaders(getRequestToken());\n const patcher = getPatcher();\n patcher.patch(\"fetch\", (url, options) => {\n const headers2 = options.headers;\n if (headers2?.method) {\n options.method = headers2.method;\n delete headers2.method;\n }\n return fetch(url, options);\n });\n return client;\n}\nasync function getFavoriteNodes(options = {}) {\n const client = options.client ?? getClient();\n const path = options.path ?? \"/\";\n const davRoot = options.davRoot ?? defaultRootPath;\n const contentsResponse = await client.getDirectoryContents(`${davRoot}${path}`, {\n signal: options.signal,\n details: true,\n data: getFavoritesReport(),\n headers: {\n // see getClient for patched webdav client\n method: \"REPORT\"\n },\n includeSelf: true\n });\n return contentsResponse.data.filter((node) => node.filename !== path).map((result) => resultToNode(result, davRoot));\n}\nfunction resultToNode(node, filesRoot = defaultRootPath, remoteURL = defaultRemoteURL) {\n let userId = getCurrentUser()?.uid;\n if (isPublicShare()) {\n userId = userId ?? \"anonymous\";\n } else if (!userId) {\n throw new Error(\"No user id found\");\n }\n const props = node.props;\n const permissions = parsePermissions(props?.permissions);\n const owner = String(props?.[\"owner-id\"] || userId);\n const id = props.fileid || 0;\n const mtime = new Date(Date.parse(node.lastmod));\n const crtime = new Date(Date.parse(props.creationdate));\n const nodeData = {\n id,\n source: `${remoteURL}${node.filename}`,\n mtime: !isNaN(mtime.getTime()) && mtime.getTime() !== 0 ? mtime : void 0,\n crtime: !isNaN(crtime.getTime()) && crtime.getTime() !== 0 ? crtime : void 0,\n mime: node.mime || \"application/octet-stream\",\n // Manually cast to work around for https://github.com/perry-mitchell/webdav-client/pull/380\n displayname: props.displayname !== void 0 ? String(props.displayname) : void 0,\n size: props?.size || Number.parseInt(props.getcontentlength || \"0\"),\n // The fileid is set to -1 for failed requests\n status: id < 0 ? NodeStatus.FAILED : void 0,\n permissions,\n owner,\n root: filesRoot,\n attributes: {\n ...node,\n ...props,\n hasPreview: props?.[\"has-preview\"]\n }\n };\n delete nodeData.attributes?.props;\n return node.type === \"file\" ? new File(nodeData) : new Folder(nodeData);\n}\nexport {\n defaultDavNamespaces,\n defaultDavProperties,\n defaultRemoteURL,\n defaultRootPath,\n getClient,\n getDavNameSpaces,\n getDavProperties,\n getDefaultPropfind,\n getFavoriteNodes,\n getFavoritesReport,\n getRecentSearch,\n getRemoteURL,\n getRootPath,\n parsePermissions,\n registerDavProperty,\n resultToNode\n};\n//# sourceMappingURL=dav.mjs.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"1035\":\"da08d310d18692ca4e27\",\"1764\":\"3654558a3474ec02b609\",\"2457\":\"ce6348bfa704a5bf56fb\",\"4271\":\"101cdb0f1357424796fd\",\"6798\":\"55fb835b251fd3f7de19\",\"7471\":\"b4ac70873a3ab192efd0\",\"8192\":\"91fbd6f4898978b0533a\",\"9281\":\"29ef7f217a0c6b239922\",\"9906\":\"24447948ddfe6cf1ef05\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5102;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && 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\t5102: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(85908)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","async","getContents","path","options","searchStore","useSearchStore","getPinia","query","length","join","getRootPath","propfindPayload","getDefaultPropfind","contentsResponse","client","getDirectoryContents","details","data","includeSelf","signal","root","contents","slice","filename","logger","debug","Error","folder","resultToNode","map","result","error","basename","filter","Boolean","defaultGetContents","useFilesStore","getDirectoryByPath","rootPath","stat","searchNodes","dir","getLocalSearch","user","getCurrentUser","trim","startsWith","search","getDavNameSpaces","getDavProperties","uid","escapeHTML","replace","aborted","results","defaultRootPath","getBaseUrl","getClient","fetchNode","dummyFolder","Folder","id","source","getRemoteURL","owner","permissions","Permission","NONE","useActiveStore","defineStore","activeAction","shallowRef","activeNode","ref","activeView","activeFolder","onDeletedNode","node","value","undefined","onChangedView","view","watch","fileid","window","OCP","Files","Router","goToRoute","params","String","navigation","getNavigation","active","subscribe","addEventListener","event","detail","initialize","files","roots","getNode","getNodes","sources","getNodesById","Object","values","getRoot","service","pathsStore","usePathsStore","getPath","updateNodes","nodes","newNodes","reduce","acc","activeStore","deleteNodes","entries","some","n","fromEntries","Promise","all","then","oldSource","ourNode","Vue","attributes","getNodesByPath","_children","setRoot","_nc_files_pinia","createPinia","args","state","paths","getters","actions","addPath","payload","this","deletePath","delete","onCreatedNode","type","FileType","addNodeToParentChildren","deleteNodeFromParentChildren","onMovedNode","oldPath","find","oldNode","File","mime","parentSource","dirname","children","Set","parent","add","store","_initialized","scope","updateSearch","old","current","onViewChanged","router","VIEW_ID","flat","info","updateRouter","debounce","isSearch","emit","foldername","loadState","FilesViewFileDropEmptyContent","fileDropEmptyContentInstance","View","name","t","caption","icon","order","emptyView","default","component","extend","$destroy","propsData","$mount","div","defaultRemoteURL","CREATE","register","emptyTitle","emptyCaption","LinkSvg","READ","note","props","DOMException","sharingToken","use","originalPush","prototype","push","call","catch","ignoreDuplicateNavigation","originalReplace","isNavigationFailure","NavigationFailureType","duplicated","mode","base","generateUrl","linkActiveClass","routes","redirect","token","stringifyQuery","queryString","stringify","registerFileDropView","registerPublicShareView","registerPublicFileShareView","setActive","constructor","currentRoute","_router","goTo","location","fileId","openfile","loadShareConfig","unsubscribe","gridViewAttribute","JSON","parse","key","defaultDavProperties","defaultDavNamespaces","d","nc","oc","ocs","s","davProperties","prop","davNamespaces","keys","ns","url","remoteURL","headers","setHeaders","requesttoken","patch","headers2","method","fetch","filesRoot","userId","permString","P","includes","WRITE","UPDATE","DELETE","SHARE","parsePermissions","mtime","Date","lastmod","crtime","creationdate","nodeData","isNaN","getTime","displayname","size","Number","parseInt","getcontentlength","status","FAILED","hasPreview","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","loaded","__webpack_modules__","m","O","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","every","splice","r","getter","__esModule","a","definition","o","defineProperty","enumerable","get","f","e","chunkId","promises","u","obj","hasOwnProperty","l","done","script","needAttach","scripts","document","getElementsByTagName","getAttribute","createElement","charset","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","nmd","scriptUrl","globalThis","importScripts","currentScript","tagName","toUpperCase","test","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file diff --git a/dist/files_trashbin-init.mjs b/dist/files_trashbin-init.mjs index 66008ae8ac77e..f3a1a8e5257e3 100644 --- a/dist/files_trashbin-init.mjs +++ b/dist/files_trashbin-init.mjs @@ -1,4 +1,4 @@ -import{C as c,V as _,g as v,a as x,b as V}from"./index-Dpj4ddZx.chunk.mjs";import{a as o,g as H,e as p}from"./index-DqIuD5e7.chunk.mjs";import{c as u,i as A}from"./index-CPwHjAPR.chunk.mjs";import{a as b,d as C,g as N}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{P as E}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import{d as S,e as $,l as I}from"./index-BgmsSgl5.chunk.mjs";import{t as n,g as y,a as f}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as D,i as L}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{g as M,a as T,b as k,r as F,d as B}from"./dav-C3Vmpmsl.chunk.mjs";import{f as U}from"./index-Bos-XXa5.chunk.mjs";import{h as P}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{N as O}from"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";const R='',q='',g=`/trashbin/${o()?.uid}/trash`,z=M(),K=` +import{C as c,V as _,g as v,a as x,b as V}from"./index-Dpj4ddZx.chunk.mjs";import{a as o,g as H,e as p}from"./index-DqIuD5e7.chunk.mjs";import{c as u,i as A}from"./index-CPwHjAPR.chunk.mjs";import{a as b,d as C,g as N}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{P as E}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import{d as S,e as $,l as I}from"./index-BgmsSgl5.chunk.mjs";import{t as n,g as y,a as f}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as D,i as L}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{g as M,a as T,b as k,r as F,d as B}from"./dav-C3Vmpmsl.chunk.mjs";import{f as U}from"./index-Bos-XXa5.chunk.mjs";import{h as P}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{N as O}from"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";const R='',q='',g=`/trashbin/${o()?.uid}/trash`,z=M(),K=` diff --git a/dist/files_versions-sidebar-tab.mjs b/dist/files_versions-sidebar-tab.mjs index 167423d00921e..6a289d1b59304 100644 --- a/dist/files_versions-sidebar-tab.mjs +++ b/dist/files_versions-sidebar-tab.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/FilesVersionsSidebarTab-xpctu3yN.chunk.mjs'),window.OC.filePath('', '', 'dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/index-Dpj4ddZx.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-CQFyGatl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-TGZB0t_n.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DdQinVMt.chunk.css'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-DS-ziNw6.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-BfjxNgsx-DQQhcX1Z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-ruClKRzS-D_G6wUEW.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-CmCWOFTF.chunk.mjs'),window.OC.filePath('', '', 'dist/TrayArrowDown-D79n0IQ6.chunk.css'),window.OC.filePath('', '', 'dist/dav-C3Vmpmsl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DuirWb3a.chunk.mjs'),window.OC.filePath('', '', 'dist/files_versions-FilesVersionsSidebarTab-Cjl2hr1y.chunk.css')])))=>i.map(i=>d[i]); -import{i as s,_ as e}from"./index-BgmsSgl5.chunk.mjs";import{r}from"./index-Dpj4ddZx.chunk.mjs";import{t}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{d as m,a as n}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{F as a}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const d='',i="files-versions_sidebar-tab";r({id:"files_versions",tagName:i,order:90,displayName:t("files_versions","Versions"),iconSvgInline:d,enabled({node:o}){return!(s()||o.type!==a.File)},async onInit(){const o=n(()=>e(()=>import("./FilesVersionsSidebarTab-xpctu3yN.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]),import.meta.url));window.customElements.define(i,m(o,{shadowRoot:!1}))}}); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/FilesVersionsSidebarTab-BbNsuiND.chunk.mjs'),window.OC.filePath('', '', 'dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/index-Dpj4ddZx.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-CQFyGatl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-TGZB0t_n.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DdQinVMt.chunk.css'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-DS-ziNw6.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-BfjxNgsx-DQQhcX1Z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/NcAvatar-ruClKRzS-D_G6wUEW.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-CmCWOFTF.chunk.mjs'),window.OC.filePath('', '', 'dist/TrayArrowDown-D79n0IQ6.chunk.css'),window.OC.filePath('', '', 'dist/dav-C3Vmpmsl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DuirWb3a.chunk.mjs'),window.OC.filePath('', '', 'dist/files_versions-FilesVersionsSidebarTab-Cjl2hr1y.chunk.css')])))=>i.map(i=>d[i]); +import{i as s,_ as e}from"./index-BgmsSgl5.chunk.mjs";import{r}from"./index-Dpj4ddZx.chunk.mjs";import{t}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{d as m,a as n}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{F as a}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const d='',i="files-versions_sidebar-tab";r({id:"files_versions",tagName:i,order:90,displayName:t("files_versions","Versions"),iconSvgInline:d,enabled({node:o}){return!(s()||o.type!==a.File)},async onInit(){const o=n(()=>e(()=>import("./FilesVersionsSidebarTab-BbNsuiND.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36]),import.meta.url));window.customElements.define(i,m(o,{shadowRoot:!1}))}}); //# sourceMappingURL=files_versions-sidebar-tab.mjs.map diff --git a/dist/index-BpgPbDC6.chunk.mjs b/dist/index-Bk4hMpWo.chunk.mjs similarity index 99% rename from dist/index-BpgPbDC6.chunk.mjs rename to dist/index-Bk4hMpWo.chunk.mjs index 0efa13aa0aa2c..5fe05a6f5564d 100644 --- a/dist/index-BpgPbDC6.chunk.mjs +++ b/dist/index-Bk4hMpWo.chunk.mjs @@ -1,2 +1,2 @@ -import{r as Fe,T as fl,U as gl,V as bl,x as wl,W as kl,X as _l,R as xl,a as fe,Y as Ml,Z as Dl,$ as fr,a0 as Tl,a1 as Sl,a2 as Pl,a3 as Al,a4 as $l,c as gr,a5 as Ol,N as St,_ as za,l as Il,a6 as Rl,a7 as Yl,a8 as Cl,a9 as Nl,Q as Bl,aa as Vl,ab as El}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{d as Ll}from"./index-DqIuD5e7.chunk.mjs";import{a as Jt}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{z as zl,A as Fl,k as Hl,x as Wl,B as jl,C as ql,N as an,m as Ul,l as Ql,i as nn,c as Xl,j as Gl}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{a as Zl,j as Kl,R as Jl,S as eo}from"./index-Bos-XXa5.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import{N as br,_ as to}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{b as Ge,q as ia,s as Fa,i as Gt,x as gn,v as dt,r as G,j as H,o as _,e as Ie,l as q,w as pe,u as i,n as ke,m as le,J as vt,A as at,B as va,V as _a,c as _e,y as tt,C as Be,z as Ve,O as qn,ab as ya,p as z,a9 as et,aa as ut,H as Ha,ao as wr,am as ao,a5 as no,aq as Un,I as Sa,k as ve,E as xa,F as Me,D as pt,t as He,a1 as ro,af as kr,g as ht,R as lo,S as oo,ar as io,_ as Ba,$ as Va,X as so,f as rn}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";import{P as uo}from"./NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs";import{b as co,N as po}from"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import{g as mo}from"./index-BgmsSgl5.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{N as vo}from"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";Fe(),Fe(fl),{...Zl.props},Fe(gl),Fe(bl),Fe(kl,wl),Fe(xl,_l),fe("Search …"),Fe(Ml),Fe(Dl),Fe(fr);const yo="LOCALHOST",ho="COLON",Ma={defaultProtocol:"http",events:null,format:Qn,formatHref:Qn,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function _r(e,t=null){let n=Object.assign({},Ma);e&&(n=Object.assign(n,e instanceof _r?e.o:e));const a=n.ignoreTags,r=[];for(let l=0;ln?a.substring(0,n)+"…":a},toFormattedHref(e){return e.get("formatHref",this.toHref(e.get("defaultProtocol")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(e=Ma.defaultProtocol){return{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(e),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(e){return{type:this.t,value:this.toFormattedString(e),isLink:this.isLink,href:this.toFormattedHref(e),start:this.startIndex(),end:this.endIndex()}},validate(e){return e.get("validate",this.toString(),this)},render(e){const t=this,n=this.toHref(e.get("defaultProtocol")),a=e.get("formatHref",n,this),r=e.get("tagName",n,t),l=this.toFormattedString(e),o={},c=e.get("className",n,t),u=e.get("target",n,t),w=e.get("rel",n,t),m=e.getObj("attributes",n,t),d=e.getObj("events",n,t);return o.href=a,c&&(o.class=c),u&&(o.target=u),w&&(o.rel=w),m&&Object.assign(o,m),{tagName:r,attributes:o,content:l,eventListeners:d}}};function Ra(e,t){class n extends xr{constructor(r,l){super(r,l),this.t=e}}for(const a in t)n.prototype[a]=t[a];return n.t=e,n}Ra("email",{isLink:!0,toHref(){return"mailto:"+this.toString()}}),Ra("text"),Ra("nl"),Ra("url",{isLink:!0,toHref(e=Ma.defaultProtocol){return this.hasProtocol()?this.v:`${e}://${this.v}`},hasProtocol(){const e=this.tk;return e.length>=2&&e[0].t!==yo&&e[1].t===ho}}),Fe(Tl),new uo({concurrency:5}),Fe(Sl),Fe(Pl),Fe(Al),fe("More items …");const Mr=6048e5,fo=864e5,go=6e4,Dr=36e5,bo=1e3,Xn=Symbol.for("constructDateFrom");function Re(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&Xn in e?e[Xn](t):e instanceof Date?new e.constructor(t):new Date(t)}function ge(e,t){return Re(t||e,e)}function yt(e,t,n){const a=ge(e,n?.in);return isNaN(t)?Re(n?.in||e,NaN):(t&&a.setDate(a.getDate()+t),a)}function xt(e,t,n){const a=ge(e,n?.in);if(isNaN(t))return Re(e,NaN);if(!t)return a;const r=a.getDate(),l=Re(e,a.getTime());l.setMonth(a.getMonth()+t+1,0);const o=l.getDate();return r>=o?l:(a.setFullYear(l.getFullYear(),l.getMonth(),r),a)}function Tr(e,t,n){const{years:a=0,months:r=0,weeks:l=0,days:o=0,hours:c=0,minutes:u=0,seconds:w=0}=t,m=ge(e,n?.in),d=r||a?xt(m,r+a*12):m,f=o||l?yt(d,o+l*7):d,x=u+c*60,$=(w+x*60)*1e3;return Re(e,+f+$)}function wo(e,t,n){return Re(e,+ge(e)+t)}function ko(e,t,n){return wo(e,t*Dr)}let _o={};function Zt(){return _o}function Mt(e,t){const n=Zt(),a=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,r=ge(e,t?.in),l=r.getDay(),o=(l=l.getTime()?a+1:n.getTime()>=c.getTime()?a:a-1}function Ea(e){const t=ge(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function Pa(e,...t){const n=Re.bind(null,t.find(a=>typeof a=="object"));return t.map(n)}function Gn(e,t){const n=ge(e,t?.in);return n.setHours(0,0,0,0),n}function Pr(e,t,n){const[a,r]=Pa(n?.in,e,t),l=Gn(a),o=Gn(r),c=+l-Ea(l),u=+o-Ea(o);return Math.round((c-u)/fo)}function xo(e,t){const n=Sr(e,t),a=Re(e,0);return a.setFullYear(n,0,4),a.setHours(0,0,0,0),sa(a)}function Mo(e,t,n){return xt(e,t*3,n)}function Tn(e,t,n){return xt(e,t*12,n)}function Zn(e,t){const n=+ge(e)-+ge(t);return n<0?-1:n>0?1:n}function Ar(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function wa(e){return!(!Ar(e)&&typeof e!="number"||isNaN(+ge(e)))}function Kn(e,t){const n=ge(e,t?.in);return Math.trunc(n.getMonth()/3)+1}function Do(e,t,n){const[a,r]=Pa(n?.in,e,t);return a.getFullYear()-r.getFullYear()}function To(e,t,n){const[a,r]=Pa(n?.in,e,t),l=Zn(a,r),o=Math.abs(Do(a,r));a.setFullYear(1584),r.setFullYear(1584);const c=Zn(a,r)===-l,u=l*(o-+c);return u===0?0:u}function $r(e,t){const[n,a]=Pa(e,t.start,t.end);return{start:n,end:a}}function Or(e,t){const{start:n,end:a}=$r(t?.in,e);let r=+n>+a;const l=r?+n:+a,o=r?a:n;o.setHours(0,0,0,0);let c=1;const u=[];for(;+o<=l;)u.push(Re(n,o)),o.setDate(o.getDate()+c),o.setHours(0,0,0,0);return r?u.reverse():u}function ra(e,t){const n=ge(e,t?.in),a=n.getMonth(),r=a-a%3;return n.setMonth(r,1),n.setHours(0,0,0,0),n}function So(e,t){const{start:n,end:a}=$r(t?.in,e);let r=+n>+a;const l=r?+ra(n):+ra(a);let o=ra(r?a:n),c=1;const u=[];for(;+o<=l;)u.push(Re(n,o)),o=Mo(o,c);return r?u.reverse():u}function Po(e,t){const n=ge(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function Ir(e,t){const n=ge(e,t?.in),a=n.getFullYear();return n.setFullYear(a+1,0,0),n.setHours(23,59,59,999),n}function la(e,t){const n=ge(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function Rr(e,t){const n=Zt(),a=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,r=ge(e,t?.in),l=r.getDay(),o=(l{let a;const r=Ao[e];return typeof r=="string"?a=r:t===1?a=r.one:a=r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+a:a+" ago":a};function ln(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const Oo={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Io={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Ro={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Yo={date:ln({formats:Oo,defaultWidth:"full"}),time:ln({formats:Io,defaultWidth:"full"}),dateTime:ln({formats:Ro,defaultWidth:"full"})},Co={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},No=(e,t,n,a)=>Co[e];function fa(e){return(t,n)=>{const a=n?.context?String(n.context):"standalone";let r;if(a==="formatting"&&e.formattingValues){const o=e.defaultFormattingWidth||e.defaultWidth,c=n?.width?String(n.width):o;r=e.formattingValues[c]||e.formattingValues[o]}else{const o=e.defaultWidth,c=n?.width?String(n.width):e.defaultWidth;r=e.values[c]||e.values[o]}const l=e.argumentCallback?e.argumentCallback(t):t;return r[l]}}const Bo={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Vo={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Eo={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Lo={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},zo={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},Fo={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Ho=(e,t)=>{const n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},Wo={ordinalNumber:Ho,era:fa({values:Bo,defaultWidth:"wide"}),quarter:fa({values:Vo,defaultWidth:"wide",argumentCallback:e=>e-1}),month:fa({values:Eo,defaultWidth:"wide"}),day:fa({values:Lo,defaultWidth:"wide"}),dayPeriod:fa({values:zo,defaultWidth:"wide",formattingValues:Fo,defaultFormattingWidth:"wide"})};function ga(e){return(t,n={})=>{const a=n.width,r=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],l=t.match(r);if(!l)return null;const o=l[0],c=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(c)?qo(c,d=>d.test(o)):jo(c,d=>d.test(o));let w;w=e.valueCallback?e.valueCallback(u):u,w=n.valueCallback?n.valueCallback(w):w;const m=t.slice(o.length);return{value:w,rest:m}}}function jo(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function qo(e,t){for(let n=0;n{const a=t.match(e.matchPattern);if(!a)return null;const r=a[0],l=t.match(e.parsePattern);if(!l)return null;let o=e.valueCallback?e.valueCallback(l[0]):l[0];o=n.valueCallback?n.valueCallback(o):o;const c=t.slice(r.length);return{value:o,rest:c}}}const Qo=/^(\d+)(th|st|nd|rd)?/i,Xo=/\d+/i,Go={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Zo={any:[/^b/i,/^(a|c)/i]},Ko={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Jo={any:[/1/i,/2/i,/3/i,/4/i]},ei={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},ti={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},ai={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},ni={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},ri={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},li={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},oi={ordinalNumber:Uo({matchPattern:Qo,parsePattern:Xo,valueCallback:e=>parseInt(e,10)}),era:ga({matchPatterns:Go,defaultMatchWidth:"wide",parsePatterns:Zo,defaultParseWidth:"any"}),quarter:ga({matchPatterns:Ko,defaultMatchWidth:"wide",parsePatterns:Jo,defaultParseWidth:"any",valueCallback:e=>e+1}),month:ga({matchPatterns:ei,defaultMatchWidth:"wide",parsePatterns:ti,defaultParseWidth:"any"}),day:ga({matchPatterns:ai,defaultMatchWidth:"wide",parsePatterns:ni,defaultParseWidth:"any"}),dayPeriod:ga({matchPatterns:ri,defaultMatchWidth:"any",parsePatterns:li,defaultParseWidth:"any"})},Yr={code:"en-US",formatDistance:$o,formatLong:Yo,formatRelative:No,localize:Wo,match:oi,options:{weekStartsOn:0,firstWeekContainsDate:1}};function ii(e,t){const n=ge(e,t?.in);return Pr(n,la(n))+1}function Sn(e,t){const n=ge(e,t?.in),a=+sa(n)-+xo(n);return Math.round(a/Mr)+1}function Pn(e,t){const n=ge(e,t?.in),a=n.getFullYear(),r=Zt(),l=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=Re(t?.in||e,0);o.setFullYear(a+1,0,l),o.setHours(0,0,0,0);const c=Mt(o,t),u=Re(t?.in||e,0);u.setFullYear(a,0,l),u.setHours(0,0,0,0);const w=Mt(u,t);return+n>=+c?a+1:+n>=+w?a:a-1}function si(e,t){const n=Zt(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,r=Pn(e,t),l=Re(t?.in||e,0);return l.setFullYear(r,0,a),l.setHours(0,0,0,0),Mt(l,t)}function An(e,t){const n=ge(e,t?.in),a=+Mt(n,t)-+si(n,t);return Math.round(a/Mr)+1}function Oe(e,t){const n=e<0?"-":"",a=Math.abs(e).toString().padStart(t,"0");return n+a}const Bt={y(e,t){const n=e.getFullYear(),a=n>0?n:1-n;return Oe(t==="yy"?a%100:a,t.length)},M(e,t){const n=e.getMonth();return t==="M"?String(n+1):Oe(n+1,2)},d(e,t){return Oe(e.getDate(),t.length)},a(e,t){const n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];default:return n==="am"?"a.m.":"p.m."}},h(e,t){return Oe(e.getHours()%12||12,t.length)},H(e,t){return Oe(e.getHours(),t.length)},m(e,t){return Oe(e.getMinutes(),t.length)},s(e,t){return Oe(e.getSeconds(),t.length)},S(e,t){const n=t.length,a=e.getMilliseconds(),r=Math.trunc(a*Math.pow(10,n-3));return Oe(r,t.length)}},ea={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},er={G:function(e,t,n){const a=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(a,{width:"abbreviated"});case"GGGGG":return n.era(a,{width:"narrow"});default:return n.era(a,{width:"wide"})}},y:function(e,t,n){if(t==="yo"){const a=e.getFullYear(),r=a>0?a:1-a;return n.ordinalNumber(r,{unit:"year"})}return Bt.y(e,t)},Y:function(e,t,n,a){const r=Pn(e,a),l=r>0?r:1-r;if(t==="YY"){const o=l%100;return Oe(o,2)}return t==="Yo"?n.ordinalNumber(l,{unit:"year"}):Oe(l,t.length)},R:function(e,t){const n=Sr(e);return Oe(n,t.length)},u:function(e,t){const n=e.getFullYear();return Oe(n,t.length)},Q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return Oe(a,2);case"Qo":return n.ordinalNumber(a,{unit:"quarter"});case"QQQ":return n.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(a,{width:"narrow",context:"formatting"});default:return n.quarter(a,{width:"wide",context:"formatting"})}},q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return Oe(a,2);case"qo":return n.ordinalNumber(a,{unit:"quarter"});case"qqq":return n.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(a,{width:"narrow",context:"standalone"});default:return n.quarter(a,{width:"wide",context:"standalone"})}},M:function(e,t,n){const a=e.getMonth();switch(t){case"M":case"MM":return Bt.M(e,t);case"Mo":return n.ordinalNumber(a+1,{unit:"month"});case"MMM":return n.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(a,{width:"narrow",context:"formatting"});default:return n.month(a,{width:"wide",context:"formatting"})}},L:function(e,t,n){const a=e.getMonth();switch(t){case"L":return String(a+1);case"LL":return Oe(a+1,2);case"Lo":return n.ordinalNumber(a+1,{unit:"month"});case"LLL":return n.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(a,{width:"narrow",context:"standalone"});default:return n.month(a,{width:"wide",context:"standalone"})}},w:function(e,t,n,a){const r=An(e,a);return t==="wo"?n.ordinalNumber(r,{unit:"week"}):Oe(r,t.length)},I:function(e,t,n){const a=Sn(e);return t==="Io"?n.ordinalNumber(a,{unit:"week"}):Oe(a,t.length)},d:function(e,t,n){return t==="do"?n.ordinalNumber(e.getDate(),{unit:"date"}):Bt.d(e,t)},D:function(e,t,n){const a=ii(e);return t==="Do"?n.ordinalNumber(a,{unit:"dayOfYear"}):Oe(a,t.length)},E:function(e,t,n){const a=e.getDay();switch(t){case"E":case"EE":case"EEE":return n.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},e:function(e,t,n,a){const r=e.getDay(),l=(r-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(l);case"ee":return Oe(l,2);case"eo":return n.ordinalNumber(l,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,a){const r=e.getDay(),l=(r-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(l);case"cc":return Oe(l,t.length);case"co":return n.ordinalNumber(l,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n){const a=e.getDay(),r=a===0?7:a;switch(t){case"i":return String(r);case"ii":return Oe(r,t.length);case"io":return n.ordinalNumber(r,{unit:"day"});case"iii":return n.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},a:function(e,t,n){const a=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(e,t,n){const a=e.getHours();let r;switch(a===12?r=ea.noon:a===0?r=ea.midnight:r=a/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){const a=e.getHours();let r;switch(a>=17?r=ea.evening:a>=12?r=ea.afternoon:a>=4?r=ea.morning:r=ea.night,t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if(t==="ho"){let a=e.getHours()%12;return a===0&&(a=12),n.ordinalNumber(a,{unit:"hour"})}return Bt.h(e,t)},H:function(e,t,n){return t==="Ho"?n.ordinalNumber(e.getHours(),{unit:"hour"}):Bt.H(e,t)},K:function(e,t,n){const a=e.getHours()%12;return t==="Ko"?n.ordinalNumber(a,{unit:"hour"}):Oe(a,t.length)},k:function(e,t,n){let a=e.getHours();return a===0&&(a=24),t==="ko"?n.ordinalNumber(a,{unit:"hour"}):Oe(a,t.length)},m:function(e,t,n){return t==="mo"?n.ordinalNumber(e.getMinutes(),{unit:"minute"}):Bt.m(e,t)},s:function(e,t,n){return t==="so"?n.ordinalNumber(e.getSeconds(),{unit:"second"}):Bt.s(e,t)},S:function(e,t){return Bt.S(e,t)},X:function(e,t,n){const a=e.getTimezoneOffset();if(a===0)return"Z";switch(t){case"X":return ar(a);case"XXXX":case"XX":return qt(a);default:return qt(a,":")}},x:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"x":return ar(a);case"xxxx":case"xx":return qt(a);default:return qt(a,":")}},O:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+tr(a,":");default:return"GMT"+qt(a,":")}},z:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+tr(a,":");default:return"GMT"+qt(a,":")}},t:function(e,t,n){const a=Math.trunc(+e/1e3);return Oe(a,t.length)},T:function(e,t,n){return Oe(+e,t.length)}};function tr(e,t=""){const n=e>0?"-":"+",a=Math.abs(e),r=Math.trunc(a/60),l=a%60;return l===0?n+String(r):n+String(r)+t+Oe(l,2)}function ar(e,t){return e%60===0?(e>0?"-":"+")+Oe(Math.abs(e)/60,2):qt(e,t)}function qt(e,t=""){const n=e>0?"-":"+",a=Math.abs(e),r=Oe(Math.trunc(a/60),2),l=Oe(a%60,2);return n+r+t+l}const nr=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Cr=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},ui=(e,t)=>{const n=e.match(/(P+)(p+)?/)||[],a=n[1],r=n[2];if(!r)return nr(e,t);let l;switch(a){case"P":l=t.dateTime({width:"short"});break;case"PP":l=t.dateTime({width:"medium"});break;case"PPP":l=t.dateTime({width:"long"});break;default:l=t.dateTime({width:"full"});break}return l.replace("{{date}}",nr(a,t)).replace("{{time}}",Cr(r,t))},bn={p:Cr,P:ui},di=/^D+$/,ci=/^Y+$/,pi=["D","DD","YY","YYYY"];function Nr(e){return di.test(e)}function Br(e){return ci.test(e)}function wn(e,t,n){const a=mi(e,t,n);if(console.warn(a),pi.includes(e))throw new RangeError(a)}function mi(e,t,n){const a=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${a} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const vi=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,yi=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,hi=/^'([^]*?)'?$/,fi=/''/g,gi=/[a-zA-Z]/;function $t(e,t,n){const a=Zt(),r=n?.locale??a.locale??Yr,l=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,c=ge(e,n?.in);if(!wa(c))throw new RangeError("Invalid time value");let u=t.match(yi).map(m=>{const d=m[0];if(d==="p"||d==="P"){const f=bn[d];return f(m,r.formatLong)}return m}).join("").match(vi).map(m=>{if(m==="''")return{isToken:!1,value:"'"};const d=m[0];if(d==="'")return{isToken:!1,value:bi(m)};if(er[d])return{isToken:!0,value:m};if(d.match(gi))throw new RangeError("Format string contains an unescaped latin alphabet character `"+d+"`");return{isToken:!1,value:m}});r.localize.preprocessor&&(u=r.localize.preprocessor(c,u));const w={firstWeekContainsDate:l,weekStartsOn:o,locale:r};return u.map(m=>{if(!m.isToken)return m.value;const d=m.value;(!n?.useAdditionalWeekYearTokens&&Br(d)||!n?.useAdditionalDayOfYearTokens&&Nr(d))&&wn(d,t,String(e));const f=er[d[0]];return f(c,d,r.localize,w)}).join("")}function bi(e){const t=e.match(hi);return t?t[1].replace(fi,"'"):e}function wi(e,t){return ge(e,t?.in).getDay()}function ki(e,t){const n=ge(e,t?.in),a=n.getFullYear(),r=n.getMonth(),l=Re(n,0);return l.setFullYear(a,r+1,0),l.setHours(0,0,0,0),l.getDate()}function _i(){return Object.assign({},Zt())}function Yt(e,t){return ge(e,t?.in).getHours()}function xi(e,t){const n=ge(e,t?.in).getDay();return n===0?7:n}function Ft(e,t){return ge(e,t?.in).getMinutes()}function Se(e,t){return ge(e,t?.in).getMonth()}function ua(e){return ge(e).getSeconds()}function we(e,t){return ge(e,t?.in).getFullYear()}function Xt(e,t){return+ge(e)>+ge(t)}function da(e,t){return+ge(e)<+ge(t)}function na(e,t){return+ge(e)==+ge(t)}function Mi(e,t){const n=Di(t)?new t(0):Re(t,0);return n.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),n.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),n}function Di(e){return typeof e=="function"&&e.prototype?.constructor===e}const Ti=10;class Vr{subPriority=0;validate(t,n){return!0}}class Si extends Vr{constructor(t,n,a,r,l){super(),this.value=t,this.validateValue=n,this.setValue=a,this.priority=r,l&&(this.subPriority=l)}validate(t,n){return this.validateValue(t,this.value,n)}set(t,n,a){return this.setValue(t,n,this.value,a)}}class Pi extends Vr{priority=Ti;subPriority=-1;constructor(t,n){super(),this.context=t||(a=>Re(n,a))}set(t,n){return n.timestampIsSet?t:Re(t,Mi(t,this.context))}}class $e{run(t,n,a,r){const l=this.parse(t,n,a,r);return l?{setter:new Si(l.value,this.validate,this.set,this.priority,this.subPriority),rest:l.rest}:null}validate(t,n,a){return!0}}class Ai extends $e{priority=140;parse(t,n,a){switch(n){case"G":case"GG":case"GGG":return a.era(t,{width:"abbreviated"})||a.era(t,{width:"narrow"});case"GGGGG":return a.era(t,{width:"narrow"});default:return a.era(t,{width:"wide"})||a.era(t,{width:"abbreviated"})||a.era(t,{width:"narrow"})}}set(t,n,a){return n.era=a,t.setFullYear(a,0,1),t.setHours(0,0,0,0),t}incompatibleTokens=["R","u","t","T"]}const Qe={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},Pt={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/};function Xe(e,t){return e&&{value:t(e.value),rest:e.rest}}function Le(e,t){const n=t.match(e);return n?{value:parseInt(n[0],10),rest:t.slice(n[0].length)}:null}function At(e,t){const n=t.match(e);if(!n)return null;if(n[0]==="Z")return{value:0,rest:t.slice(1)};const a=n[1]==="+"?1:-1,r=n[2]?parseInt(n[2],10):0,l=n[3]?parseInt(n[3],10):0,o=n[5]?parseInt(n[5],10):0;return{value:a*(r*Dr+l*go+o*bo),rest:t.slice(n[0].length)}}function Er(e){return Le(Qe.anyDigitsSigned,e)}function We(e,t){switch(e){case 1:return Le(Qe.singleDigit,t);case 2:return Le(Qe.twoDigits,t);case 3:return Le(Qe.threeDigits,t);case 4:return Le(Qe.fourDigits,t);default:return Le(new RegExp("^\\d{1,"+e+"}"),t)}}function Lr(e,t){switch(e){case 1:return Le(Qe.singleDigitSigned,t);case 2:return Le(Qe.twoDigitsSigned,t);case 3:return Le(Qe.threeDigitsSigned,t);case 4:return Le(Qe.fourDigitsSigned,t);default:return Le(new RegExp("^-?\\d{1,"+e+"}"),t)}}function $n(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;default:return 0}}function zr(e,t){const n=t>0,a=n?t:1-t;let r;if(a<=50)r=e||100;else{const l=a+50,o=Math.trunc(l/100)*100,c=e>=l%100;r=e+o-(c?100:0)}return n?r:1-r}function Fr(e){return e%400===0||e%4===0&&e%100!==0}class $i extends $e{priority=130;incompatibleTokens=["Y","R","u","w","I","i","e","c","t","T"];parse(t,n,a){const r=l=>({year:l,isTwoDigitYear:n==="yy"});switch(n){case"y":return Xe(We(4,t),r);case"yo":return Xe(a.ordinalNumber(t,{unit:"year"}),r);default:return Xe(We(n.length,t),r)}}validate(t,n){return n.isTwoDigitYear||n.year>0}set(t,n,a){const r=t.getFullYear();if(a.isTwoDigitYear){const o=zr(a.year,r);return t.setFullYear(o,0,1),t.setHours(0,0,0,0),t}const l=!("era"in n)||n.era===1?a.year:1-a.year;return t.setFullYear(l,0,1),t.setHours(0,0,0,0),t}}class Oi extends $e{priority=130;parse(t,n,a){const r=l=>({year:l,isTwoDigitYear:n==="YY"});switch(n){case"Y":return Xe(We(4,t),r);case"Yo":return Xe(a.ordinalNumber(t,{unit:"year"}),r);default:return Xe(We(n.length,t),r)}}validate(t,n){return n.isTwoDigitYear||n.year>0}set(t,n,a,r){const l=Pn(t,r);if(a.isTwoDigitYear){const c=zr(a.year,l);return t.setFullYear(c,0,r.firstWeekContainsDate),t.setHours(0,0,0,0),Mt(t,r)}const o=!("era"in n)||n.era===1?a.year:1-a.year;return t.setFullYear(o,0,r.firstWeekContainsDate),t.setHours(0,0,0,0),Mt(t,r)}incompatibleTokens=["y","R","u","Q","q","M","L","I","d","D","i","t","T"]}class Ii extends $e{priority=130;parse(t,n){return Lr(n==="R"?4:n.length,t)}set(t,n,a){const r=Re(t,0);return r.setFullYear(a,0,4),r.setHours(0,0,0,0),sa(r)}incompatibleTokens=["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"]}class Ri extends $e{priority=130;parse(t,n){return Lr(n==="u"?4:n.length,t)}set(t,n,a){return t.setFullYear(a,0,1),t.setHours(0,0,0,0),t}incompatibleTokens=["G","y","Y","R","w","I","i","e","c","t","T"]}class Yi extends $e{priority=120;parse(t,n,a){switch(n){case"Q":case"QQ":return We(n.length,t);case"Qo":return a.ordinalNumber(t,{unit:"quarter"});case"QQQ":return a.quarter(t,{width:"abbreviated",context:"formatting"})||a.quarter(t,{width:"narrow",context:"formatting"});case"QQQQQ":return a.quarter(t,{width:"narrow",context:"formatting"});default:return a.quarter(t,{width:"wide",context:"formatting"})||a.quarter(t,{width:"abbreviated",context:"formatting"})||a.quarter(t,{width:"narrow",context:"formatting"})}}validate(t,n){return n>=1&&n<=4}set(t,n,a){return t.setMonth((a-1)*3,1),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"]}class Ci extends $e{priority=120;parse(t,n,a){switch(n){case"q":case"qq":return We(n.length,t);case"qo":return a.ordinalNumber(t,{unit:"quarter"});case"qqq":return a.quarter(t,{width:"abbreviated",context:"standalone"})||a.quarter(t,{width:"narrow",context:"standalone"});case"qqqqq":return a.quarter(t,{width:"narrow",context:"standalone"});default:return a.quarter(t,{width:"wide",context:"standalone"})||a.quarter(t,{width:"abbreviated",context:"standalone"})||a.quarter(t,{width:"narrow",context:"standalone"})}}validate(t,n){return n>=1&&n<=4}set(t,n,a){return t.setMonth((a-1)*3,1),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"]}class Ni extends $e{incompatibleTokens=["Y","R","q","Q","L","w","I","D","i","e","c","t","T"];priority=110;parse(t,n,a){const r=l=>l-1;switch(n){case"M":return Xe(Le(Qe.month,t),r);case"MM":return Xe(We(2,t),r);case"Mo":return Xe(a.ordinalNumber(t,{unit:"month"}),r);case"MMM":return a.month(t,{width:"abbreviated",context:"formatting"})||a.month(t,{width:"narrow",context:"formatting"});case"MMMMM":return a.month(t,{width:"narrow",context:"formatting"});default:return a.month(t,{width:"wide",context:"formatting"})||a.month(t,{width:"abbreviated",context:"formatting"})||a.month(t,{width:"narrow",context:"formatting"})}}validate(t,n){return n>=0&&n<=11}set(t,n,a){return t.setMonth(a,1),t.setHours(0,0,0,0),t}}class Bi extends $e{priority=110;parse(t,n,a){const r=l=>l-1;switch(n){case"L":return Xe(Le(Qe.month,t),r);case"LL":return Xe(We(2,t),r);case"Lo":return Xe(a.ordinalNumber(t,{unit:"month"}),r);case"LLL":return a.month(t,{width:"abbreviated",context:"standalone"})||a.month(t,{width:"narrow",context:"standalone"});case"LLLLL":return a.month(t,{width:"narrow",context:"standalone"});default:return a.month(t,{width:"wide",context:"standalone"})||a.month(t,{width:"abbreviated",context:"standalone"})||a.month(t,{width:"narrow",context:"standalone"})}}validate(t,n){return n>=0&&n<=11}set(t,n,a){return t.setMonth(a,1),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","q","Q","M","w","I","D","i","e","c","t","T"]}function Vi(e,t,n){const a=ge(e,n?.in),r=An(a,n)-t;return a.setDate(a.getDate()-r*7),ge(a,n?.in)}class Ei extends $e{priority=100;parse(t,n,a){switch(n){case"w":return Le(Qe.week,t);case"wo":return a.ordinalNumber(t,{unit:"week"});default:return We(n.length,t)}}validate(t,n){return n>=1&&n<=53}set(t,n,a,r){return Mt(Vi(t,a,r),r)}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","i","t","T"]}function Li(e,t,n){const a=ge(e,n?.in),r=Sn(a,n)-t;return a.setDate(a.getDate()-r*7),a}class zi extends $e{priority=100;parse(t,n,a){switch(n){case"I":return Le(Qe.week,t);case"Io":return a.ordinalNumber(t,{unit:"week"});default:return We(n.length,t)}}validate(t,n){return n>=1&&n<=53}set(t,n,a){return sa(Li(t,a))}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"]}const Fi=[31,28,31,30,31,30,31,31,30,31,30,31],Hi=[31,29,31,30,31,30,31,31,30,31,30,31];class Wi extends $e{priority=90;subPriority=1;parse(t,n,a){switch(n){case"d":return Le(Qe.date,t);case"do":return a.ordinalNumber(t,{unit:"date"});default:return We(n.length,t)}}validate(t,n){const a=t.getFullYear(),r=Fr(a),l=t.getMonth();return r?n>=1&&n<=Hi[l]:n>=1&&n<=Fi[l]}set(t,n,a){return t.setDate(a),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","q","Q","w","I","D","i","e","c","t","T"]}class ji extends $e{priority=90;subpriority=1;parse(t,n,a){switch(n){case"D":case"DD":return Le(Qe.dayOfYear,t);case"Do":return a.ordinalNumber(t,{unit:"date"});default:return We(n.length,t)}}validate(t,n){const a=t.getFullYear();return Fr(a)?n>=1&&n<=366:n>=1&&n<=365}set(t,n,a){return t.setMonth(0,a),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"]}function On(e,t,n){const a=Zt(),r=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,l=ge(e,n?.in),o=l.getDay(),c=(t%7+7)%7,u=7-r,w=t<0||t>6?t-(o+u)%7:(c+u)%7-(o+u)%7;return yt(l,w,n)}class qi extends $e{priority=90;parse(t,n,a){switch(n){case"E":case"EE":case"EEE":return a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"});case"EEEEE":return a.day(t,{width:"narrow",context:"formatting"});case"EEEEEE":return a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"});default:return a.day(t,{width:"wide",context:"formatting"})||a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"})}}validate(t,n){return n>=0&&n<=6}set(t,n,a,r){return t=On(t,a,r),t.setHours(0,0,0,0),t}incompatibleTokens=["D","i","e","c","t","T"]}class Ui extends $e{priority=90;parse(t,n,a,r){const l=o=>{const c=Math.floor((o-1)/7)*7;return(o+r.weekStartsOn+6)%7+c};switch(n){case"e":case"ee":return Xe(We(n.length,t),l);case"eo":return Xe(a.ordinalNumber(t,{unit:"day"}),l);case"eee":return a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"});case"eeeee":return a.day(t,{width:"narrow",context:"formatting"});case"eeeeee":return a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"});default:return a.day(t,{width:"wide",context:"formatting"})||a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"})}}validate(t,n){return n>=0&&n<=6}set(t,n,a,r){return t=On(t,a,r),t.setHours(0,0,0,0),t}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"]}class Qi extends $e{priority=90;parse(t,n,a,r){const l=o=>{const c=Math.floor((o-1)/7)*7;return(o+r.weekStartsOn+6)%7+c};switch(n){case"c":case"cc":return Xe(We(n.length,t),l);case"co":return Xe(a.ordinalNumber(t,{unit:"day"}),l);case"ccc":return a.day(t,{width:"abbreviated",context:"standalone"})||a.day(t,{width:"short",context:"standalone"})||a.day(t,{width:"narrow",context:"standalone"});case"ccccc":return a.day(t,{width:"narrow",context:"standalone"});case"cccccc":return a.day(t,{width:"short",context:"standalone"})||a.day(t,{width:"narrow",context:"standalone"});default:return a.day(t,{width:"wide",context:"standalone"})||a.day(t,{width:"abbreviated",context:"standalone"})||a.day(t,{width:"short",context:"standalone"})||a.day(t,{width:"narrow",context:"standalone"})}}validate(t,n){return n>=0&&n<=6}set(t,n,a,r){return t=On(t,a,r),t.setHours(0,0,0,0),t}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"]}function Xi(e,t,n){const a=ge(e,n?.in),r=xi(a,n),l=t-r;return yt(a,l,n)}class Gi extends $e{priority=90;parse(t,n,a){const r=l=>l===0?7:l;switch(n){case"i":case"ii":return We(n.length,t);case"io":return a.ordinalNumber(t,{unit:"day"});case"iii":return Xe(a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"}),r);case"iiiii":return Xe(a.day(t,{width:"narrow",context:"formatting"}),r);case"iiiiii":return Xe(a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"}),r);default:return Xe(a.day(t,{width:"wide",context:"formatting"})||a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"}),r)}}validate(t,n){return n>=1&&n<=7}set(t,n,a){return t=Xi(t,a),t.setHours(0,0,0,0),t}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"]}class Zi extends $e{priority=80;parse(t,n,a){switch(n){case"a":case"aa":case"aaa":return a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"});case"aaaaa":return a.dayPeriod(t,{width:"narrow",context:"formatting"});default:return a.dayPeriod(t,{width:"wide",context:"formatting"})||a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"})}}set(t,n,a){return t.setHours($n(a),0,0,0),t}incompatibleTokens=["b","B","H","k","t","T"]}class Ki extends $e{priority=80;parse(t,n,a){switch(n){case"b":case"bb":case"bbb":return a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"});case"bbbbb":return a.dayPeriod(t,{width:"narrow",context:"formatting"});default:return a.dayPeriod(t,{width:"wide",context:"formatting"})||a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"})}}set(t,n,a){return t.setHours($n(a),0,0,0),t}incompatibleTokens=["a","B","H","k","t","T"]}class Ji extends $e{priority=80;parse(t,n,a){switch(n){case"B":case"BB":case"BBB":return a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"});case"BBBBB":return a.dayPeriod(t,{width:"narrow",context:"formatting"});default:return a.dayPeriod(t,{width:"wide",context:"formatting"})||a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"})}}set(t,n,a){return t.setHours($n(a),0,0,0),t}incompatibleTokens=["a","b","t","T"]}class es extends $e{priority=70;parse(t,n,a){switch(n){case"h":return Le(Qe.hour12h,t);case"ho":return a.ordinalNumber(t,{unit:"hour"});default:return We(n.length,t)}}validate(t,n){return n>=1&&n<=12}set(t,n,a){const r=t.getHours()>=12;return r&&a<12?t.setHours(a+12,0,0,0):!r&&a===12?t.setHours(0,0,0,0):t.setHours(a,0,0,0),t}incompatibleTokens=["H","K","k","t","T"]}class ts extends $e{priority=70;parse(t,n,a){switch(n){case"H":return Le(Qe.hour23h,t);case"Ho":return a.ordinalNumber(t,{unit:"hour"});default:return We(n.length,t)}}validate(t,n){return n>=0&&n<=23}set(t,n,a){return t.setHours(a,0,0,0),t}incompatibleTokens=["a","b","h","K","k","t","T"]}class as extends $e{priority=70;parse(t,n,a){switch(n){case"K":return Le(Qe.hour11h,t);case"Ko":return a.ordinalNumber(t,{unit:"hour"});default:return We(n.length,t)}}validate(t,n){return n>=0&&n<=11}set(t,n,a){return t.getHours()>=12&&a<12?t.setHours(a+12,0,0,0):t.setHours(a,0,0,0),t}incompatibleTokens=["h","H","k","t","T"]}class ns extends $e{priority=70;parse(t,n,a){switch(n){case"k":return Le(Qe.hour24h,t);case"ko":return a.ordinalNumber(t,{unit:"hour"});default:return We(n.length,t)}}validate(t,n){return n>=1&&n<=24}set(t,n,a){const r=a<=24?a%24:a;return t.setHours(r,0,0,0),t}incompatibleTokens=["a","b","h","H","K","t","T"]}class rs extends $e{priority=60;parse(t,n,a){switch(n){case"m":return Le(Qe.minute,t);case"mo":return a.ordinalNumber(t,{unit:"minute"});default:return We(n.length,t)}}validate(t,n){return n>=0&&n<=59}set(t,n,a){return t.setMinutes(a,0,0),t}incompatibleTokens=["t","T"]}class ls extends $e{priority=50;parse(t,n,a){switch(n){case"s":return Le(Qe.second,t);case"so":return a.ordinalNumber(t,{unit:"second"});default:return We(n.length,t)}}validate(t,n){return n>=0&&n<=59}set(t,n,a){return t.setSeconds(a,0),t}incompatibleTokens=["t","T"]}class os extends $e{priority=30;parse(t,n){const a=r=>Math.trunc(r*Math.pow(10,-n.length+3));return Xe(We(n.length,t),a)}set(t,n,a){return t.setMilliseconds(a),t}incompatibleTokens=["t","T"]}class is extends $e{priority=10;parse(t,n){switch(n){case"X":return At(Pt.basicOptionalMinutes,t);case"XX":return At(Pt.basic,t);case"XXXX":return At(Pt.basicOptionalSeconds,t);case"XXXXX":return At(Pt.extendedOptionalSeconds,t);default:return At(Pt.extended,t)}}set(t,n,a){return n.timestampIsSet?t:Re(t,t.getTime()-Ea(t)-a)}incompatibleTokens=["t","T","x"]}class ss extends $e{priority=10;parse(t,n){switch(n){case"x":return At(Pt.basicOptionalMinutes,t);case"xx":return At(Pt.basic,t);case"xxxx":return At(Pt.basicOptionalSeconds,t);case"xxxxx":return At(Pt.extendedOptionalSeconds,t);default:return At(Pt.extended,t)}}set(t,n,a){return n.timestampIsSet?t:Re(t,t.getTime()-Ea(t)-a)}incompatibleTokens=["t","T","X"]}class us extends $e{priority=40;parse(t){return Er(t)}set(t,n,a){return[Re(t,a*1e3),{timestampIsSet:!0}]}incompatibleTokens="*"}class ds extends $e{priority=20;parse(t){return Er(t)}set(t,n,a){return[Re(t,a),{timestampIsSet:!0}]}incompatibleTokens="*"}const cs={G:new Ai,y:new $i,Y:new Oi,R:new Ii,u:new Ri,Q:new Yi,q:new Ci,M:new Ni,L:new Bi,w:new Ei,I:new zi,d:new Wi,D:new ji,E:new qi,e:new Ui,c:new Qi,i:new Gi,a:new Zi,b:new Ki,B:new Ji,h:new es,H:new ts,K:new as,k:new ns,m:new rs,s:new ls,S:new os,X:new is,x:new ss,t:new us,T:new ds},ps=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,ms=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,vs=/^'([^]*?)'?$/,ys=/''/g,hs=/\S/,fs=/[a-zA-Z]/;function kn(e,t,n,a){const r=()=>Re(a?.in||n,NaN),l=_i(),o=a?.locale??l.locale??Yr,c=a?.firstWeekContainsDate??a?.locale?.options?.firstWeekContainsDate??l.firstWeekContainsDate??l.locale?.options?.firstWeekContainsDate??1,u=a?.weekStartsOn??a?.locale?.options?.weekStartsOn??l.weekStartsOn??l.locale?.options?.weekStartsOn??0;if(!t)return e?r():ge(n,a?.in);const w={firstWeekContainsDate:c,weekStartsOn:u,locale:o},m=[new Pi(a?.in,n)],d=t.match(ms).map(S=>{const O=S[0];if(O in bn){const R=bn[O];return R(S,o.formatLong)}return S}).join("").match(ps),f=[];for(let S of d){!a?.useAdditionalWeekYearTokens&&Br(S)&&wn(S,t,e),!a?.useAdditionalDayOfYearTokens&&Nr(S)&&wn(S,t,e);const O=S[0],R=cs[O];if(R){const{incompatibleTokens:M}=R;if(Array.isArray(M)){const U=f.find(Y=>M.includes(Y.token)||Y.token===O);if(U)throw new RangeError(`The format string mustn't contain \`${U.fullToken}\` and \`${S}\` at the same time`)}else if(R.incompatibleTokens==="*"&&f.length>0)throw new RangeError(`The format string mustn't contain \`${S}\` and any other token at the same time`);f.push({token:O,fullToken:S});const B=R.run(e,S,o.match,w);if(!B)return r();m.push(B.setter),e=B.rest}else{if(O.match(fs))throw new RangeError("Format string contains an unescaped latin alphabet character `"+O+"`");if(S==="''"?S="'":O==="'"&&(S=gs(S)),e.indexOf(S)===0)e=e.slice(S.length);else return r()}}if(e.length>0&&hs.test(e))return r();const x=m.map(S=>S.priority).sort((S,O)=>O-S).filter((S,O,R)=>R.indexOf(S)===O).map(S=>m.filter(O=>O.priority===S).sort((O,R)=>R.subPriority-O.subPriority)).map(S=>S[0]);let $=ge(n,a?.in);if(isNaN(+$))return r();const C={};for(const S of x){if(!S.validate($,w))return r();const O=S.set($,C,w);Array.isArray(O)?($=O[0],Object.assign(C,O[1])):$=O}return $}function gs(e){return e.match(vs)[1].replace(ys,"'")}function rr(e,t,n){const[a,r]=Pa(n?.in,e,t);return+ra(a)==+ra(r)}function Hr(e,t,n){return yt(e,-t,n)}function Wr(e,t,n){const a=ge(e,n?.in),r=a.getFullYear(),l=a.getDate(),o=Re(e,0);o.setFullYear(r,t,15),o.setHours(0,0,0,0);const c=ki(o);return a.setMonth(t,Math.min(l,c)),a}function Ye(e,t,n){let a=ge(e,n?.in);return isNaN(+a)?Re(e,NaN):(t.year!=null&&a.setFullYear(t.year),t.month!=null&&(a=Wr(a,t.month)),t.date!=null&&a.setDate(t.date),t.hours!=null&&a.setHours(t.hours),t.minutes!=null&&a.setMinutes(t.minutes),t.seconds!=null&&a.setSeconds(t.seconds),t.milliseconds!=null&&a.setMilliseconds(t.milliseconds),a)}function bs(e,t,n){const a=ge(e,n?.in);return a.setHours(t),a}function jr(e,t,n){const a=ge(e,n?.in);return a.setMilliseconds(t),a}function ws(e,t,n){const a=ge(e,n?.in);return a.setMinutes(t),a}function qr(e,t,n){const a=ge(e,n?.in);return a.setSeconds(t),a}function kt(e,t,n){const a=ge(e,n?.in);return isNaN(+a)?Re(e,NaN):(a.setFullYear(t),a)}function ca(e,t,n){return xt(e,-t,n)}function ks(e,t,n){const{years:a=0,months:r=0,weeks:l=0,days:o=0,hours:c=0,minutes:u=0,seconds:w=0}=t,m=ca(e,r+a*12,n),d=Hr(m,o+l*7,n),f=u+c*60,x=(w+f*60)*1e3;return Re(e,+d-x)}function Ur(e,t,n){return Tn(e,-t,n)}function ha(){const e=kr();return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img",...e},[ve("path",{d:"M29.333 8c0-2.208-1.792-4-4-4h-18.667c-2.208 0-4 1.792-4 4v18.667c0 2.208 1.792 4 4 4h18.667c2.208 0 4-1.792 4-4v-18.667zM26.667 8v18.667c0 0.736-0.597 1.333-1.333 1.333 0 0-18.667 0-18.667 0-0.736 0-1.333-0.597-1.333-1.333 0 0 0-18.667 0-18.667 0-0.736 0.597-1.333 1.333-1.333 0 0 18.667 0 18.667 0 0.736 0 1.333 0.597 1.333 1.333z"}),ve("path",{d:"M20 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z"}),ve("path",{d:"M9.333 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z"}),ve("path",{d:"M4 14.667h24c0.736 0 1.333-0.597 1.333-1.333s-0.597-1.333-1.333-1.333h-24c-0.736 0-1.333 0.597-1.333 1.333s0.597 1.333 1.333 1.333z"})])}ha.compatConfig={MODE:3};function Qr(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z"}),ve("path",{d:"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z"})])}Qr.compatConfig={MODE:3};function In(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M20.943 23.057l-7.057-7.057c0 0 7.057-7.057 7.057-7.057 0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-8 8c-0.521 0.521-0.521 1.365 0 1.885l8 8c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z"})])}In.compatConfig={MODE:3};function Rn(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M12.943 24.943l8-8c0.521-0.521 0.521-1.365 0-1.885l-8-8c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885l7.057 7.057c0 0-7.057 7.057-7.057 7.057-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0z"})])}Rn.compatConfig={MODE:3};function Yn(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M16 1.333c-8.095 0-14.667 6.572-14.667 14.667s6.572 14.667 14.667 14.667c8.095 0 14.667-6.572 14.667-14.667s-6.572-14.667-14.667-14.667zM16 4c6.623 0 12 5.377 12 12s-5.377 12-12 12c-6.623 0-12-5.377-12-12s5.377-12 12-12z"}),ve("path",{d:"M14.667 8v8c0 0.505 0.285 0.967 0.737 1.193l5.333 2.667c0.658 0.329 1.46 0.062 1.789-0.596s0.062-1.46-0.596-1.789l-4.596-2.298c0 0 0-7.176 0-7.176 0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z"})])}Yn.compatConfig={MODE:3};function Cn(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M24.943 19.057l-8-8c-0.521-0.521-1.365-0.521-1.885 0l-8 8c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l7.057-7.057c0 0 7.057 7.057 7.057 7.057 0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z"})])}Cn.compatConfig={MODE:3};function Nn(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M7.057 12.943l8 8c0.521 0.521 1.365 0.521 1.885 0l8-8c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-7.057 7.057c0 0-7.057-7.057-7.057-7.057-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z"})])}Nn.compatConfig={MODE:3};const ct=(e,t)=>t?new Date(e.toLocaleString("en-US",{timeZone:t})):new Date(e),Bn=(e,t,n)=>_n(e,t,n)||j(),_s=(e,t,n)=>{const a=t.dateInTz?ct(new Date(e),t.dateInTz):j(e);return n?Ke(a,!0):a},_n=(e,t,n)=>{if(!e)return null;const a=n?Ke(j(e),!0):j(e);return t?t.exactMatch?_s(e,t,n):ct(a,t.timezone):a},xs=e=>{const t=new Date(e.getFullYear(),0,1).getTimezoneOffset();return e.getTimezoneOffset(){if(!e)return 0;const n=new Date,a=new Date(n.toLocaleString("en-US",{timeZone:"UTC"})),r=new Date(n.toLocaleString("en-US",{timeZone:e})),l=(xs(t??r)?r:t??r).getTimezoneOffset()/60;return(+a-+r)/(1e3*60*60)-l};var bt=(e=>(e.month="month",e.year="year",e))(bt||{}),wt=(e=>(e.top="top",e.bottom="bottom",e))(wt||{}),Ut=(e=>(e.header="header",e.calendar="calendar",e.timePicker="timePicker",e))(Ut||{}),lt=(e=>(e.month="month",e.year="year",e.calendar="calendar",e.time="time",e.minutes="minutes",e.hours="hours",e.seconds="seconds",e))(lt||{});const Ds=["timestamp","date","iso"];var ot=(e=>(e.up="up",e.down="down",e.left="left",e.right="right",e))(ot||{}),Ne=(e=>(e.arrowUp="ArrowUp",e.arrowDown="ArrowDown",e.arrowLeft="ArrowLeft",e.arrowRight="ArrowRight",e.enter="Enter",e.space=" ",e.esc="Escape",e.tab="Tab",e.home="Home",e.end="End",e.pageUp="PageUp",e.pageDown="PageDown",e))(Ne||{}),oa=(e=>(e.MONTH_AND_YEAR="MM-yyyy",e.YEAR="yyyy",e.DATE="dd-MM-yyyy",e))(oa||{});function lr(e){return t=>{const n=new Intl.DateTimeFormat(e,{weekday:"short",timeZone:"UTC"}).format(new Date(`2017-01-0${t}T00:00:00+00:00`));return e==="ar"?n.slice(2,5):n.slice(0,2)}}function Ts(e){return t=>$t(ct(new Date(`2017-01-0${t}T00:00:00+00:00`),"UTC"),"EEEEEE",{locale:e})}const Ss=(e,t,n)=>{const a=[1,2,3,4,5,6,7];let r;if(e!==null)try{r=a.map(Ts(e))}catch{r=a.map(lr(t))}else r=a.map(lr(t));const l=r.slice(0,n),o=r.slice(n+1,r.length);return[r[n]].concat(...o).concat(...l)},Vn=(e,t,n)=>{const a=[];for(let r=+e[0];r<=+e[1];r++)a.push({value:+r,text:Ln(r,t)});return n?a.reverse():a},Xr=(e,t,n)=>{const a=[1,2,3,4,5,6,7,8,9,10,11,12].map(l=>{const o=l<10?`0${l}`:l;return new Date(`2017-${o}-01T00:00:00+00:00`)});if(e!==null)try{const l=n==="long"?"LLLL":"LLL";return a.map((o,c)=>{const u=$t(ct(o,"UTC"),l,{locale:e});return{text:u.charAt(0).toUpperCase()+u.substring(1),value:c}})}catch{}const r=new Intl.DateTimeFormat(t,{month:n,timeZone:"UTC"});return a.map((l,o)=>{const c=r.format(l);return{text:c.charAt(0).toUpperCase()+c.substring(1),value:o}})},Ps=e=>[12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11][e],Ze=e=>{const t=i(e);return t?.$el?t?.$el:t},As=e=>({type:"dot",...e??{}}),Gr=e=>Array.isArray(e)?!!e[0]&&!!e[1]:!1,En={prop:e=>`"${e}" prop must be enabled!`,dateArr:e=>`You need to use array as "model-value" binding in order to support "${e}"`},Je=e=>e,or=e=>e===0?e:!e||isNaN(+e)?null:+e,ir=e=>e===null,Zr=e=>{if(e)return[...e.querySelectorAll("input, button, select, textarea, a[href]")][0]},$s=e=>{const t=[],n=a=>a.filter(r=>r);for(let a=0;a{const a=n!=null,r=t!=null;if(!a&&!r)return!1;const l=+n,o=+t;return a&&r?+e>l||+el:r?+e$s(e).map(n=>n.map(a=>{const{active:r,disabled:l,isBetween:o,highlighted:c}=t(a);return{...a,active:r,disabled:l,className:{dp__overlay_cell_active:r,dp__overlay_cell:!r,dp__overlay_cell_disabled:l,dp__overlay_cell_pad:!0,dp__overlay_cell_active_disabled:l&&r,dp__cell_in_between:o,"dp--highlighted":c}}})),Lt=(e,t,n=!1)=>{e&&t.allowStopPropagation&&(n&&e.stopImmediatePropagation(),e.stopPropagation())},Os=()=>["a[href]","area[href]","input:not([disabled]):not([type='hidden'])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","[tabindex]:not([tabindex='-1'])","[data-datepicker-instance]"].join(", ");function Is(e,t){let n=[...document.querySelectorAll(Os())];n=n.filter(r=>!e.contains(r)||r.hasAttribute("data-datepicker-instance"));const a=n.indexOf(e);if(a>=0&&(t?a-1>=0:a+1<=n.length))return n[a+(t?-1:1)]}const xn=(e,t)=>e?.querySelector(`[data-dp-element="${t}"]`),Ln=(e,t)=>new Intl.NumberFormat(t,{useGrouping:!1,style:"decimal"}).format(e),zn=(e,t)=>$t(e,t??oa.DATE),on=e=>Array.isArray(e),La=(e,t,n)=>t.get(zn(e,n)),Rs=(e,t)=>e?t?t instanceof Map?!!La(e,t):t(j(e)):!1:!0,it=(e,t,n=!1,a)=>{if(e.key===Ne.enter||e.key===Ne.space)return n&&e.preventDefault(),t();if(a)return a(e)},Ys=()=>"ontouchstart"in window||navigator.maxTouchPoints>0,Kr=(e,t)=>e?oa.MONTH_AND_YEAR:t?oa.YEAR:oa.DATE,Jr=e=>e<10?`0${e}`:e,sr=(e,t,n,a,r,l)=>{const o=kn(e,t.slice(0,e.length),new Date,{locale:l});return wa(o)&&Ar(o)?a||r?o:Ye(o,{hours:+n.hours,minutes:+n?.minutes,seconds:+n?.seconds,milliseconds:0}):null},Cs=(e,t,n,a,r,l)=>{const o=Array.isArray(n)?n[0]:n;if(typeof t=="string")return sr(e,t,o,a,r,l);if(Array.isArray(t)){let c=null;for(const u of t)if(c=sr(e,u,o,a,r,l),c)break;return c}return typeof t=="function"?t(e):null},j=e=>e?new Date(e):new Date,Ns=(e,t,n)=>{if(t){const r=(e.getMonth()+1).toString().padStart(2,"0"),l=e.getDate().toString().padStart(2,"0"),o=e.getHours().toString().padStart(2,"0"),c=e.getMinutes().toString().padStart(2,"0"),u=n?e.getSeconds().toString().padStart(2,"0"):"00";return`${e.getFullYear()}-${r}-${l}T${o}:${c}:${u}.000Z`}const a=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return new Date(a).toISOString()},Ke=(e,t)=>{const n=j(JSON.parse(JSON.stringify(e))),a=Ye(n,{hours:0,minutes:0,seconds:0,milliseconds:0});return t?Po(a):a},zt=(e,t,n,a)=>{let r=e?j(e):j();return(t||t===0)&&(r=bs(r,+t)),(n||n===0)&&(r=ws(r,+n)),(a||a===0)&&(r=qr(r,+a)),jr(r,0)},ze=(e,t)=>!e||!t?!1:da(Ke(e),Ke(t)),Pe=(e,t)=>!e||!t?!1:na(Ke(e),Ke(t)),Ue=(e,t)=>!e||!t?!1:Xt(Ke(e),Ke(t)),Ta=(e,t,n)=>e?.[0]&&e?.[1]?Ue(n,e[0])&&ze(n,e[1]):e?.[0]&&t?Ue(n,e[0])&&ze(n,t)||ze(n,e[0])&&Ue(n,t):!1,_t=e=>{const t=Ye(new Date(e),{date:1});return Ke(t)},sn=(e,t,n)=>t&&(n||n===0)?Object.fromEntries(["hours","minutes","seconds"].map(a=>a===t?[a,n]:[a,isNaN(+e[a])?void 0:+e[a]])):{hours:isNaN(+e.hours)?void 0:+e.hours,minutes:isNaN(+e.minutes)?void 0:+e.minutes,seconds:isNaN(+e.seconds)?void 0:+e.seconds},Qt=e=>({hours:Yt(e),minutes:Ft(e),seconds:ua(e)}),el=(e,t)=>{if(t){const n=we(j(t));if(n>e)return 12;if(n===e)return Se(j(t))}},tl=(e,t)=>{if(t){const n=we(j(t));return n{if(e)return we(j(e))},al=(e,t)=>{const n=Ue(e,t)?t:e,a=Ue(t,e)?t:e;return Or({start:n,end:a})},Bs=e=>{const t=xt(e,1);return{month:Se(t),year:we(t)}},It=(e,t)=>{const n=Mt(e,{weekStartsOn:+t}),a=Rr(e,{weekStartsOn:+t});return[n,a]},nl=(e,t)=>{const n={hours:Yt(j()),minutes:Ft(j()),seconds:t?ua(j()):0};return Object.assign(n,e)},Et=(e,t,n)=>[Ye(j(e),{date:1}),Ye(j(),{month:t,year:n,date:1})],Rt=(e,t,n)=>{let a=e?j(e):j();return(t||t===0)&&(a=Wr(a,t)),n&&(a=kt(a,n)),a},rl=(e,t,n,a,r)=>{if(!a||r&&!t||!r&&!n)return!1;const l=r?xt(e,1):ca(e,1),o=[Se(l),we(l)];return r?!Es(...o,t):!Vs(...o,n)},Vs=(e,t,n)=>ze(...Et(n,e,t))||Pe(...Et(n,e,t)),Es=(e,t,n)=>Ue(...Et(n,e,t))||Pe(...Et(n,e,t)),ll=(e,t,n,a,r,l,o)=>{if(typeof t=="function"&&!o)return t(e);const c=n?{locale:n}:void 0;return Array.isArray(e)?`${$t(e[0],l,c)}${r&&!e[1]?"":a}${e[1]?$t(e[1],l,c):""}`:$t(e,l,c)},ta=e=>{if(e)return null;throw new Error(En.prop("partial-range"))},Ya=(e,t)=>{if(t)return e();throw new Error(En.prop("range"))},Mn=e=>Array.isArray(e)?wa(e[0])&&(e[1]?wa(e[1]):!0):e?wa(e):!1,Ls=(e,t)=>Ye(t??j(),{hours:+e.hours||0,minutes:+e.minutes||0,seconds:+e.seconds||0}),un=(e,t,n,a)=>{if(!e)return!0;if(a){const r=n==="max"?da(e,t):Xt(e,t),l={seconds:0,milliseconds:0};return r||na(Ye(e,l),Ye(t,l))}return n==="max"?e.getTime()<=t.getTime():e.getTime()>=t.getTime()},dn=(e,t,n)=>e?Ls(e,t):j(n??t),ur=(e,t,n,a,r)=>{if(Array.isArray(a)){const o=dn(e,a[0],t),c=dn(e,a[1],t);return un(a[0],o,n,!!t)&&un(a[1],c,n,!!t)&&r}const l=dn(e,a,t);return un(a,l,n,!!t)&&r},cn=e=>Ye(j(),Qt(e)),zs=(e,t,n)=>{if(e instanceof Map){const a=`${Jr(n+1)}-${t}`;return e.size?e.has(a):!1}return typeof e=="function"?e(Ke(Ye(j(),{month:n,year:t}),!0)):!1},Fs=(e,t,n)=>{if(e instanceof Map){const a=`${Jr(n+1)}-${t}`;return e.size?e.has(a):!0}return!0},ol=(e,t,n)=>typeof e=="function"?e({month:t,year:n}):!!e.months.find(a=>a.month===t&&a.year===n),Fn=(e,t)=>typeof e=="function"?e(t):e.years.includes(t),Dn=e=>`dp-${$t(e,"yyyy-MM-dd")}`,dr=(e,t)=>{const n=Hr(Ke(t),e),a=yt(Ke(t),e);return{before:n,after:a}},il=(e,t)=>t<+e[0]||t>+e[1],ba=Sa({menuFocused:!1,shiftKeyInMenu:!1}),sl=()=>{const e=n=>{ba.menuFocused=n},t=n=>{ba.shiftKeyInMenu!==n&&(ba.shiftKeyInMenu=n)};return{control:z(()=>({shiftKeyInMenu:ba.shiftKeyInMenu,menuFocused:ba.menuFocused})),setMenuFocused:e,setShiftKey:t}},Ce=Sa({monthYear:[],calendar:[],time:[],actionRow:[],selectionGrid:[],timePicker:{0:[],1:[]},monthPicker:[]}),pn=G(null),Ca=G(!1),mn=G(!1),vn=G(!1),yn=G(!1),rt=G(0),qe=G(0),Ht=()=>{const e=z(()=>Ca.value?[...Ce.selectionGrid,Ce.actionRow].filter(d=>d.length):mn.value?[...Ce.timePicker[0],...Ce.timePicker[1],yn.value?[]:[pn.value],Ce.actionRow].filter(d=>d.length):vn.value?[...Ce.monthPicker,Ce.actionRow]:[Ce.monthYear,...Ce.calendar,Ce.time,Ce.actionRow].filter(d=>d.length)),t=d=>{rt.value=d?rt.value+1:rt.value-1;let f=null;e.value[qe.value]&&(f=e.value[qe.value][rt.value]),!f&&e.value[qe.value+(d?1:-1)]?(qe.value=qe.value+(d?1:-1),rt.value=d?0:e.value[qe.value].length-1):f||(rt.value=d?rt.value-1:rt.value+1)},n=d=>{qe.value===0&&!d||qe.value===e.value.length&&d||(qe.value=d?qe.value+1:qe.value-1,e.value[qe.value]?e.value[qe.value]&&!e.value[qe.value][rt.value]&&rt.value!==0&&(rt.value=e.value[qe.value].length-1):qe.value=d?qe.value-1:qe.value+1)},a=d=>{let f=null;e.value[qe.value]&&(f=e.value[qe.value][rt.value]),f?f.focus({preventScroll:!Ca.value}):rt.value=d?rt.value-1:rt.value+1},r=()=>{t(!0),a(!0)},l=()=>{t(!1),a(!1)},o=()=>{n(!1),a(!0)},c=()=>{n(!0),a(!0)},u=(d,f)=>{Ce[f]=d},w=(d,f)=>{Ce[f]=d},m=()=>{rt.value=0,qe.value=0};return{buildMatrix:u,buildMultiLevelMatrix:w,setTimePickerBackRef:d=>{pn.value=d},setSelectionGrid:d=>{Ca.value=d,m(),d||(Ce.selectionGrid=[])},setTimePicker:(d,f=!1)=>{mn.value=d,yn.value=f,m(),d||(Ce.timePicker[0]=[],Ce.timePicker[1]=[])},setTimePickerElements:(d,f=0)=>{Ce.timePicker[f]=d},arrowRight:r,arrowLeft:l,arrowUp:o,arrowDown:c,clearArrowNav:()=>{Ce.monthYear=[],Ce.calendar=[],Ce.time=[],Ce.actionRow=[],Ce.selectionGrid=[],Ce.timePicker[0]=[],Ce.timePicker[1]=[],Ca.value=!1,mn.value=!1,yn.value=!1,vn.value=!1,m(),pn.value=null},setMonthPicker:d=>{vn.value=d,m()},refSets:Ce}},cr=e=>({menuAppearTop:"dp-menu-appear-top",menuAppearBottom:"dp-menu-appear-bottom",open:"dp-slide-down",close:"dp-slide-up",next:"calendar-next",previous:"calendar-prev",vNext:"dp-slide-up",vPrevious:"dp-slide-down",...e??{}}),Hs=e=>({toggleOverlay:"Toggle overlay",menu:"Datepicker menu",input:"Datepicker input",openTimePicker:"Open time picker",closeTimePicker:"Close time Picker",incrementValue:t=>`Increment ${t}`,decrementValue:t=>`Decrement ${t}`,openTpOverlay:t=>`Open ${t} overlay`,amPmButton:"Switch AM/PM mode",openYearsOverlay:"Open years overlay",openMonthsOverlay:"Open months overlay",nextMonth:"Next month",prevMonth:"Previous month",nextYear:"Next year",prevYear:"Previous year",day:void 0,weekDay:void 0,clearInput:"Clear value",calendarIcon:"Calendar icon",timePicker:"Time picker",monthPicker:t=>`Month picker${t?" overlay":""}`,yearPicker:t=>`Year picker${t?" overlay":""}`,timeOverlay:t=>`${t} overlay`,...e??{}}),pr=e=>e?typeof e=="boolean"?e?2:0:+e>=2?+e:2:0,Ws=e=>{const t=typeof e=="object"&&e,n={static:!0,solo:!1};if(!e)return{...n,count:pr(!1)};const a=t?e:{},r=t?a.count??!0:e,l=pr(r);return Object.assign(n,a,{count:l})},js=(e,t,n)=>e||(typeof n=="string"?n:t),qs=e=>typeof e=="boolean"?e?cr({}):!1:cr(e),Us=e=>{const t={enterSubmit:!0,tabSubmit:!0,openMenu:"open",selectOnFocus:!1,rangeSeparator:" - ",escClose:!0};return typeof e=="object"?{...t,...e??{},enabled:!0}:{...t,enabled:e}},Qs=e=>({months:[],years:[],times:{hours:[],minutes:[],seconds:[]},...e??{}}),Xs=e=>({showSelect:!0,showCancel:!0,showNow:!1,showPreview:!0,...e??{}}),Gs=e=>{const t={input:!1};return typeof e=="object"?{...t,...e??{},enabled:!0}:{enabled:e,...t}},Zs=e=>({allowStopPropagation:!0,closeOnScroll:!1,modeHeight:255,allowPreventDefault:!1,closeOnClearValue:!0,closeOnAutoApply:!0,noSwipe:!1,keepActionRow:!1,onClickOutside:void 0,tabOutClosesMenu:!0,arrowLeft:void 0,keepViewOnOffsetClick:!1,timeArrowHoldThreshold:0,shadowDom:!1,mobileBreakpoint:600,setDateOnMenuClose:!1,...e??{}}),Ks=e=>{const t={dates:Array.isArray(e)?e.map(n=>j(n)):[],years:[],months:[],quarters:[],weeks:[],weekdays:[],options:{highlightDisabled:!1}};return typeof e=="function"?e:{...t,...e??{}}},Js=e=>typeof e=="object"?{type:e?.type??"local",hideOnOffsetDates:e?.hideOnOffsetDates??!1}:{type:e,hideOnOffsetDates:!1},eu=e=>{const t={noDisabledRange:!1,showLastInRange:!0,minMaxRawRange:!1,partialRange:!0,disableTimeRangeValidation:!1,maxRange:void 0,minRange:void 0,autoRange:void 0,fixedStart:!1,fixedEnd:!1};return typeof e=="object"?{enabled:!0,...t,...e}:{enabled:e,...t}},tu=e=>e?typeof e=="string"?{timezone:e,exactMatch:!1,dateInTz:void 0,emitTimezone:void 0,convertModel:!0}:{timezone:e.timezone,exactMatch:e.exactMatch??!1,dateInTz:e.dateInTz??void 0,emitTimezone:e.emitTimezone??void 0,convertModel:e.convertModel??!0}:{timezone:void 0,exactMatch:!1,emitTimezone:void 0},hn=(e,t,n,a)=>new Map(e.map(r=>{const l=Bn(r,t,a);return[zn(l,n),l]})),au=(e,t)=>e.length?new Map(e.map(n=>{const a=Bn(n.date,t);return[zn(a,oa.DATE),n]})):null,nu=e=>{const t=Kr(e.isMonthPicker,e.isYearPicker);return{minDate:_n(e.minDate,e.timezone,e.isSpecific),maxDate:_n(e.maxDate,e.timezone,e.isSpecific),disabledDates:on(e.disabledDates)?hn(e.disabledDates,e.timezone,t,e.isSpecific):e.disabledDates,allowedDates:on(e.allowedDates)?hn(e.allowedDates,e.timezone,t,e.isSpecific):null,highlight:typeof e.highlight=="object"&&on(e.highlight?.dates)?hn(e.highlight.dates,e.timezone,t):e.highlight,markers:au(e.markers,e.timezone)}},ru=e=>typeof e=="boolean"?{enabled:e,dragSelect:!0,limit:null}:{enabled:!!e,limit:e.limit?+e.limit:null,dragSelect:e.dragSelect??!0},lu=e=>({...Object.fromEntries(Object.keys(e).map(t=>{const n=t,a=e[n],r=typeof e[n]=="string"?{[a]:!0}:Object.fromEntries(a.map(l=>[l,!0]));return[t,r]}))}),Ee=e=>{const t=()=>{const Y=e.enableSeconds?":ss":"",y=e.enableMinutes?":mm":"";return e.is24?`HH${y}${Y}`:`hh${y}${Y} aa`},n=()=>e.format?e.format:e.monthPicker?"MM/yyyy":e.timePicker?t():e.weekPicker?`${S.value?.type==="iso"?"II":"ww"}-RR`:e.yearPicker?"yyyy":e.quarterPicker?"QQQ/yyyy":e.enableTimePicker?`MM/dd/yyyy, ${t()}`:"MM/dd/yyyy",a=Y=>nl(Y,e.enableSeconds),r=()=>B.value.enabled?e.startTime&&Array.isArray(e.startTime)?[a(e.startTime[0]),a(e.startTime[1])]:null:e.startTime&&!Array.isArray(e.startTime)?a(e.startTime):null,l=z(()=>Ws(e.multiCalendars)),o=z(()=>r()),c=z(()=>Hs(e.ariaLabels)),u=z(()=>Qs(e.filters)),w=z(()=>qs(e.transitions)),m=z(()=>Xs(e.actionRow)),d=z(()=>js(e.previewFormat,e.format,n())),f=z(()=>Us(e.textInput)),x=z(()=>Gs(e.inline)),$=z(()=>Zs(e.config)),C=z(()=>Ks(e.highlight)),S=z(()=>Js(e.weekNumbers)),O=z(()=>tu(e.timezone)),R=z(()=>ru(e.multiDates)),M=z(()=>nu({minDate:e.minDate,maxDate:e.maxDate,disabledDates:e.disabledDates,allowedDates:e.allowedDates,highlight:C.value,markers:e.markers,timezone:O.value,isSpecific:e.monthPicker||e.yearPicker||e.quarterPicker,isMonthPicker:e.monthPicker,isYearPicker:e.yearPicker})),B=z(()=>eu(e.range)),U=z(()=>lu(e.ui));return{defaultedTransitions:w,defaultedMultiCalendars:l,defaultedStartTime:o,defaultedAriaLabels:c,defaultedFilters:u,defaultedActionRow:m,defaultedPreviewFormat:d,defaultedTextInput:f,defaultedInline:x,defaultedConfig:$,defaultedHighlight:C,defaultedWeekNumbers:S,defaultedRange:B,propDates:M,defaultedTz:O,defaultedMultiDates:R,defaultedUI:U,getDefaultPattern:n,getDefaultStartTime:r,handleEventPropagation:Y=>{$.value.allowStopPropagation&&Y.stopPropagation(),$.value.allowPreventDefault&&Y.preventDefault()}}},ou=(e,t,{isInputFocused:n,isTextInputDate:a})=>{const r=G(),{defaultedTextInput:l,defaultedRange:o,defaultedTz:c,defaultedMultiDates:u,getDefaultPattern:w}=Ee(t),m=G(""),d=_a(t,"format"),f=_a(t,"formatLocale");dt(r,()=>{typeof t.onInternalModelChange=="function"&&e("internal-model-change",r.value,v(!0))},{deep:!0}),dt(o,(p,Q)=>{p.enabled!==Q.enabled&&(r.value=null)}),dt(d,()=>{V()});const x=p=>c.value.timezone&&c.value.convertModel?ct(p,c.value.timezone):p,$=p=>{if(c.value.timezone&&c.value.convertModel){const Q=Ms(c.value.timezone,p);return ko(p,Q)}return p},C=(p,Q,Ae=!1)=>ll(p,t.format,t.formatLocale,l.value.rangeSeparator,t.modelAuto,Q??w(),Ae),S=p=>p?t.modelType?P(p):{hours:Yt(p),minutes:Ft(p),seconds:t.enableSeconds?ua(p):0}:null,O=p=>t.modelType?P(p):{month:Se(p),year:we(p)},R=p=>Array.isArray(p)?u.value.enabled?p.map(Q=>M(Q,kt(j(),Q))):Ya(()=>[kt(j(),p[0]),p[1]?kt(j(),p[1]):ta(o.value.partialRange)],o.value.enabled):kt(j(),+p),M=(p,Q)=>(typeof p=="string"||typeof p=="number")&&t.modelType?J(p):Q,B=p=>Array.isArray(p)?[M(p[0],zt(null,+p[0].hours,+p[0].minutes,p[0].seconds)),M(p[1],zt(null,+p[1].hours,+p[1].minutes,p[1].seconds))]:M(p,zt(null,p.hours,p.minutes,p.seconds)),U=p=>{const Q=Ye(j(),{date:1});return Array.isArray(p)?u.value.enabled?p.map(Ae=>M(Ae,Rt(Q,+Ae.month,+Ae.year))):Ya(()=>[M(p[0],Rt(Q,+p[0].month,+p[0].year)),M(p[1],p[1]?Rt(Q,+p[1].month,+p[1].year):ta(o.value.partialRange))],o.value.enabled):M(p,Rt(Q,+p.month,+p.year))},Y=p=>{if(Array.isArray(p))return p.map(Q=>J(Q));throw new Error(En.dateArr("multi-dates"))},y=p=>{if(Array.isArray(p)&&o.value.enabled){const Q=p[0],Ae=p[1];return[j(Array.isArray(Q)?Q[0]:null),Array.isArray(Ae)&&Ae.length?j(Ae[0]):null]}return j(p[0])},L=p=>t.modelAuto?Array.isArray(p)?[J(p[0]),J(p[1])]:t.autoApply?[J(p)]:[J(p),null]:Array.isArray(p)?Ya(()=>p[1]?[J(p[0]),p[1]?J(p[1]):ta(o.value.partialRange)]:[J(p[0])],o.value.enabled):J(p),F=()=>{Array.isArray(r.value)&&o.value.enabled&&r.value.length===1&&r.value.push(ta(o.value.partialRange))},E=()=>{const p=r.value;return[P(p[0]),p[1]?P(p[1]):ta(o.value.partialRange)]},ne=()=>Array.isArray(r.value)?r.value[1]?E():P(Je(r.value[0])):[],ue=()=>(r.value||[]).map(p=>P(p)),be=(p=!1)=>(p||F(),t.modelAuto?ne():u.value.enabled?ue():Array.isArray(r.value)?Ya(()=>E(),o.value.enabled):P(Je(r.value))),g=p=>!p||Array.isArray(p)&&!p.length?null:t.timePicker?B(Je(p)):t.monthPicker?U(Je(p)):t.yearPicker?R(Je(p)):u.value.enabled?Y(Je(p)):t.weekPicker?y(Je(p)):L(Je(p)),D=p=>{if(a.value)return;const Q=g(p);Mn(Je(Q))?(r.value=Je(Q),V()):(r.value=null,m.value="")},b=()=>{const p=Q=>$t(Q,l.value.format);return`${p(r.value[0])} ${l.value.rangeSeparator} ${r.value[1]?p(r.value[1]):""}`},W=()=>n.value&&r.value?Array.isArray(r.value)?b():$t(r.value,l.value.format):C(r.value),te=()=>r.value?u.value.enabled?r.value.map(p=>C(p)).join("; "):l.value.enabled&&typeof l.value.format=="string"?W():C(r.value):"",V=()=>{!t.format||typeof t.format=="string"||l.value.enabled&&typeof l.value.format=="string"?m.value=te():m.value=t.format(r.value)},J=p=>{if(t.utc){const Q=new Date(p);return t.utc==="preserve"?new Date(Q.getTime()+Q.getTimezoneOffset()*6e4):Q}return t.modelType?Ds.includes(t.modelType)?x(new Date(p)):t.modelType==="format"&&(typeof t.format=="string"||!t.format)?x(kn(p,w(),new Date,{locale:f.value})):x(kn(p,t.modelType,new Date,{locale:f.value})):x(new Date(p))},P=p=>p?t.utc?Ns(p,t.utc==="preserve",t.enableSeconds):t.modelType?t.modelType==="timestamp"?+$(p):t.modelType==="iso"?$(p).toISOString():t.modelType==="format"&&(typeof t.format=="string"||!t.format)?C($(p)):C($(p),t.modelType,!0):$(p):"",se=(p,Q=!1,Ae=!1)=>{if(Ae)return p;if(e("update:model-value",p),c.value.emitTimezone&&Q){const X=Array.isArray(p)?p.map(xe=>ct(Je(xe),c.value.emitTimezone)):ct(Je(p),c.value.emitTimezone);e("update:model-timezone-value",X)}},h=p=>Array.isArray(r.value)?u.value.enabled?r.value.map(Q=>p(Q)):[p(r.value[0]),r.value[1]?p(r.value[1]):ta(o.value.partialRange)]:p(Je(r.value)),N=()=>{if(Array.isArray(r.value)){const p=It(r.value[0],t.weekStart),Q=r.value[1]?It(r.value[1],t.weekStart):[];return[p.map(Ae=>j(Ae)),Q.map(Ae=>j(Ae))]}return It(r.value,t.weekStart).map(p=>j(p))},T=(p,Q)=>se(Je(h(p)),!1,Q),re=p=>{const Q=N();return p?Q:e("update:model-value",N())},v=(p=!1)=>(p||V(),t.monthPicker?T(O,p):t.timePicker?T(S,p):t.yearPicker?T(we,p):t.weekPicker?re(p):se(be(p),!0,p));return{inputValue:m,internalModelValue:r,checkBeforeEmit:()=>r.value?o.value.enabled?o.value.partialRange?r.value.length>=1:r.value.length===2:!!r.value:!1,parseExternalModelValue:D,formatInputValue:V,emitModelValue:v}},iu=(e,t)=>{const{defaultedFilters:n,propDates:a}=Ee(e),{validateMonthYearInRange:r}=Wt(e),l=(m,d)=>{let f=m;return n.value.months.includes(Se(f))?(f=d?xt(m,1):ca(m,1),l(f,d)):f},o=(m,d)=>{let f=m;return n.value.years.includes(we(f))?(f=d?Tn(m,1):Ur(m,1),o(f,d)):f},c=(m,d=!1)=>{const f=Ye(j(),{month:e.month,year:e.year});let x=m?xt(f,1):ca(f,1);e.disableYearSelect&&(x=kt(x,e.year));let $=Se(x),C=we(x);n.value.months.includes($)&&(x=l(x,m),$=Se(x),C=we(x)),n.value.years.includes(C)&&(x=o(x,m),C=we(x)),r($,C,m,e.preventMinMaxNavigation)&&u($,C,d)},u=(m,d,f)=>{t("update-month-year",{month:m,year:d,fromNav:f})},w=z(()=>m=>rl(Ye(j(),{month:e.month,year:e.year}),a.value.maxDate,a.value.minDate,e.preventMinMaxNavigation,m));return{handleMonthYearChange:c,isDisabled:w,updateMonthYear:u}},Wa={multiCalendars:{type:[Boolean,Number,String,Object],default:void 0},modelValue:{type:[String,Date,Array,Object,Number],default:null},modelType:{type:String,default:null},position:{type:String,default:"center"},dark:{type:Boolean,default:!1},format:{type:[String,Function],default:()=>null},autoPosition:{type:[Boolean,String],default:!0},altPosition:{type:Function,default:null},transitions:{type:[Boolean,Object],default:!0},formatLocale:{type:Object,default:null},utc:{type:[Boolean,String],default:!1},ariaLabels:{type:Object,default:()=>({})},offset:{type:[Number,String],default:10},hideNavigation:{type:Array,default:()=>[]},timezone:{type:[String,Object],default:null},vertical:{type:Boolean,default:!1},disableMonthYearSelect:{type:Boolean,default:!1},disableYearSelect:{type:Boolean,default:!1},dayClass:{type:Function,default:null},yearRange:{type:Array,default:()=>[1900,2100]},enableTimePicker:{type:Boolean,default:!0},autoApply:{type:Boolean,default:!1},disabledDates:{type:[Array,Function],default:()=>[]},monthNameFormat:{type:String,default:"short"},startDate:{type:[Date,String],default:null},startTime:{type:[Object,Array],default:null},hideOffsetDates:{type:Boolean,default:!1},noToday:{type:Boolean,default:!1},disabledWeekDays:{type:Array,default:()=>[]},allowedDates:{type:Array,default:null},nowButtonLabel:{type:String,default:"Now"},markers:{type:Array,default:()=>[]},escClose:{type:Boolean,default:!0},spaceConfirm:{type:Boolean,default:!0},monthChangeOnArrows:{type:Boolean,default:!0},presetDates:{type:Array,default:()=>[]},flow:{type:Array,default:()=>[]},partialFlow:{type:Boolean,default:!1},preventMinMaxNavigation:{type:Boolean,default:!1},reverseYears:{type:Boolean,default:!1},weekPicker:{type:Boolean,default:!1},filters:{type:Object,default:()=>({})},arrowNavigation:{type:Boolean,default:!1},highlight:{type:[Function,Object],default:null},teleport:{type:[Boolean,String,Object],default:null},teleportCenter:{type:Boolean,default:!1},locale:{type:String,default:"en-Us"},weekNumName:{type:String,default:"W"},weekStart:{type:[Number,String],default:1},weekNumbers:{type:[String,Function,Object],default:null},monthChangeOnScroll:{type:[Boolean,String],default:!0},dayNames:{type:[Function,Array],default:null},monthPicker:{type:Boolean,default:!1},customProps:{type:Object,default:null},yearPicker:{type:Boolean,default:!1},modelAuto:{type:Boolean,default:!1},selectText:{type:String,default:"Select"},cancelText:{type:String,default:"Cancel"},previewFormat:{type:[String,Function],default:()=>""},multiDates:{type:[Object,Boolean],default:!1},ignoreTimeValidation:{type:Boolean,default:!1},minDate:{type:[Date,String],default:null},maxDate:{type:[Date,String],default:null},minTime:{type:Object,default:null},maxTime:{type:Object,default:null},name:{type:String,default:null},placeholder:{type:String,default:""},hideInputIcon:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},alwaysClearable:{type:Boolean,default:!1},state:{type:Boolean,default:null},required:{type:Boolean,default:!1},autocomplete:{type:String,default:"off"},timePicker:{type:Boolean,default:!1},enableSeconds:{type:Boolean,default:!1},is24:{type:Boolean,default:!0},noHoursOverlay:{type:Boolean,default:!1},noMinutesOverlay:{type:Boolean,default:!1},noSecondsOverlay:{type:Boolean,default:!1},hoursGridIncrement:{type:[String,Number],default:1},minutesGridIncrement:{type:[String,Number],default:5},secondsGridIncrement:{type:[String,Number],default:5},hoursIncrement:{type:[Number,String],default:1},minutesIncrement:{type:[Number,String],default:1},secondsIncrement:{type:[Number,String],default:1},range:{type:[Boolean,Object],default:!1},uid:{type:String,default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},inline:{type:[Boolean,Object],default:!1},textInput:{type:[Boolean,Object],default:!1},sixWeeks:{type:[Boolean,String],default:!1},actionRow:{type:Object,default:()=>({})},focusStartDate:{type:Boolean,default:!1},disabledTimes:{type:[Function,Array],default:void 0},timePickerInline:{type:Boolean,default:!1},calendar:{type:Function,default:null},config:{type:Object,default:void 0},quarterPicker:{type:Boolean,default:!1},yearFirst:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},onInternalModelChange:{type:[Function,Object],default:null},enableMinutes:{type:Boolean,default:!0},ui:{type:Object,default:()=>({})}},Dt={...Wa,shadow:{type:Boolean,default:!1},flowStep:{type:Number,default:0},internalModelValue:{type:[Date,Array],default:null},noOverlayFocus:{type:Boolean,default:!1},collapse:{type:Boolean,default:!1},menuWrapRef:{type:Object,default:null},getInputRect:{type:Function,default:()=>({})},isTextInputDate:{type:Boolean,default:!1},isMobile:{type:Boolean,default:void 0}},su=["title"],uu=["disabled"],du=Ge({compatConfig:{MODE:3},__name:"ActionRow",props:{menuMount:{type:Boolean,default:!1},calendarWidth:{type:Number,default:0},...Dt},emits:["close-picker","select-date","select-now","invalid-select"],setup(e,{emit:t}){const n=t,a=e,{defaultedActionRow:r,defaultedPreviewFormat:l,defaultedMultiCalendars:o,defaultedTextInput:c,defaultedInline:u,defaultedRange:w,defaultedMultiDates:m}=Ee(a),{isTimeValid:d,isMonthValid:f}=Wt(a),{buildMatrix:x}=Ht(),$=G(null),C=G(null),S=G(!1),O=G({}),R=G(null),M=G(null);at(()=>{a.arrowNavigation&&x([Ze($),Ze(C)],"actionRow"),B(),window.addEventListener("resize",B)}),va(()=>{window.removeEventListener("resize",B)});const B=()=>{S.value=!1,setTimeout(()=>{const g=R.value?.getBoundingClientRect(),D=M.value?.getBoundingClientRect();g&&D&&(O.value.maxWidth=`${D.width-g.width-20}px`),S.value=!0},0)},U=z(()=>w.value.enabled&&!w.value.partialRange&&a.internalModelValue?a.internalModelValue.length===2:!0),Y=z(()=>!d.value(a.internalModelValue)||!f.value(a.internalModelValue)||!U.value),y=()=>{const g=l.value;return a.timePicker||a.monthPicker,g(Je(a.internalModelValue))},L=()=>{const g=a.internalModelValue;return o.value.count>0?`${F(g[0])} - ${F(g[1])}`:[F(g[0]),F(g[1])]},F=g=>ll(g,l.value,a.formatLocale,c.value.rangeSeparator,a.modelAuto,l.value),E=z(()=>!a.internalModelValue||!a.menuMount?"":typeof l.value=="string"?Array.isArray(a.internalModelValue)?a.internalModelValue.length===2&&a.internalModelValue[1]?L():m.value.enabled?a.internalModelValue.map(g=>`${F(g)}`):a.modelAuto?`${F(a.internalModelValue[0])}`:`${F(a.internalModelValue[0])} -`:F(a.internalModelValue):y()),ne=()=>m.value.enabled?"; ":" - ",ue=z(()=>Array.isArray(E.value)?E.value.join(ne()):E.value),be=()=>{d.value(a.internalModelValue)&&f.value(a.internalModelValue)&&U.value?n("select-date"):n("invalid-select")};return(g,D)=>(_(),H("div",{ref_key:"actionRowRef",ref:M,class:"dp__action_row"},[g.$slots["action-row"]?le(g.$slots,"action-row",et(Ve({key:0},{internalModelValue:g.internalModelValue,disabled:Y.value,selectDate:()=>g.$emit("select-date"),closePicker:()=>g.$emit("close-picker")}))):(_(),H(Me,{key:1},[i(r).showPreview?(_(),H("div",{key:0,class:"dp__selection_preview",title:ue.value,style:pt(O.value)},[g.$slots["action-preview"]&&S.value?le(g.$slots,"action-preview",{key:0,value:g.internalModelValue}):q("",!0),!g.$slots["action-preview"]&&S.value?(_(),H(Me,{key:1},[ht(He(ue.value),1)],64)):q("",!0)],12,su)):q("",!0),ve("div",{ref_key:"actionBtnContainer",ref:R,class:"dp__action_buttons","data-dp-element":"action-row"},[g.$slots["action-buttons"]?le(g.$slots,"action-buttons",{key:0,value:g.internalModelValue}):q("",!0),g.$slots["action-buttons"]?q("",!0):(_(),H(Me,{key:1},[!i(u).enabled&&i(r).showCancel?(_(),H("button",{key:0,ref_key:"cancelButtonRef",ref:$,type:"button",class:"dp__action_button dp__action_cancel",onClick:D[0]||(D[0]=b=>g.$emit("close-picker")),onKeydown:D[1]||(D[1]=b=>i(it)(b,()=>g.$emit("close-picker")))},He(g.cancelText),545)):q("",!0),i(r).showNow?(_(),H("button",{key:1,type:"button",class:"dp__action_button dp__action_cancel",onClick:D[2]||(D[2]=b=>g.$emit("select-now")),onKeydown:D[3]||(D[3]=b=>i(it)(b,()=>g.$emit("select-now")))},He(g.nowButtonLabel),33)):q("",!0),i(r).showSelect?(_(),H("button",{key:2,ref_key:"selectButtonRef",ref:C,type:"button",class:"dp__action_button dp__action_select",disabled:Y.value,"data-test-id":"select-button",onKeydown:D[4]||(D[4]=b=>i(it)(b,()=>be())),onClick:be},He(g.selectText),41,uu)):q("",!0)],64))],512)],64))],512))}}),cu=["role","aria-label","tabindex"],pu={class:"dp__selection_grid_header"},mu=["aria-selected","aria-disabled","data-test-id","onClick","onKeydown","onMouseover"],vu=["aria-label"],Aa=Ge({__name:"SelectionOverlay",props:{items:{},type:{},isLast:{type:Boolean},arrowNavigation:{type:Boolean},skipButtonRef:{type:Boolean},headerRefs:{},hideNavigation:{},escClose:{type:Boolean},useRelative:{type:Boolean},height:{},textInput:{type:[Boolean,Object]},config:{},noOverlayFocus:{type:Boolean},focusValue:{},menuWrapRef:{},ariaLabels:{},overlayLabel:{}},emits:["selected","toggle","reset-flow","hover-value"],setup(e,{expose:t,emit:n}){const{setSelectionGrid:a,buildMultiLevelMatrix:r,setMonthPicker:l}=Ht(),o=n,c=e,{defaultedAriaLabels:u,defaultedTextInput:w,defaultedConfig:m,handleEventPropagation:d}=Ee(c),{hideNavigationButtons:f}=Ua(),x=G(!1),$=G(null),C=G(null),S=G([]),O=G(),R=G(null),M=G(0),B=G(null);io(()=>{$.value=null}),at(()=>{vt().then(()=>ue()),c.noOverlayFocus||Y(),U(!0)}),va(()=>U(!1));const U=h=>{c.arrowNavigation&&(c.headerRefs?.length?l(h):a(h))},Y=()=>{const h=Ze(C);h&&(w.value.enabled||($.value?$.value?.focus({preventScroll:!0}):h.focus({preventScroll:!0})),x.value=h.clientHeight({dp__overlay:!0,"dp--overlay-absolute":!c.useRelative,"dp--overlay-relative":c.useRelative})),L=z(()=>c.useRelative?{height:`${c.height}px`,width:"var(--dp-menu-min-width)"}:void 0),F=z(()=>({dp__overlay_col:!0})),E=z(()=>({dp__btn:!0,dp__button:!0,dp__overlay_action:!0,dp__over_action_scroll:x.value,dp__button_bottom:c.isLast})),ne=z(()=>({dp__overlay_container:!0,dp__container_flex:c.items?.length<=6,dp__container_block:c.items?.length>6}));dt(()=>c.items,()=>ue(!1),{deep:!0});const ue=(h=!0)=>{vt().then(()=>{const N=Ze($),T=Ze(C),re=Ze(R),v=Ze(B),p=re?re.getBoundingClientRect().height:0;T&&(T.getBoundingClientRect().height?M.value=T.getBoundingClientRect().height-p:M.value=m.value.modeHeight-p),N&&v&&h&&(v.scrollTop=N.offsetTop-v.offsetTop-(M.value/2-N.getBoundingClientRect().height)-p)})},be=h=>{h.disabled||o("selected",h.value)},g=()=>{o("toggle"),o("reset-flow")},D=h=>{c.escClose&&(g(),d(h))},b=(h,N,T,re)=>{h&&((N.active||N.value===c.focusValue)&&($.value=h),c.arrowNavigation&&(Array.isArray(S.value[T])?S.value[T][re]=h:S.value[T]=[h],W()))},W=()=>{const h=c.headerRefs?.length?[c.headerRefs].concat(S.value):S.value.concat([c.skipButtonRef?[]:[R.value]]);r(Je(h),c.headerRefs?.length?"monthPicker":"selectionGrid")},te=h=>{c.arrowNavigation||Lt(h,m.value,!0)},V=h=>{O.value=h,o("hover-value",h)},J=()=>{if(g(),!c.isLast){const h=xn(c.menuWrapRef??null,"action-row");h&&Zr(h)?.focus()}},P=h=>{switch(h.key){case Ne.esc:return D(h);case Ne.arrowLeft:return te(h);case Ne.arrowRight:return te(h);case Ne.arrowUp:return te(h);case Ne.arrowDown:return te(h);default:return}},se=h=>{if(h.key===Ne.enter)return g();if(h.key===Ne.tab)return J()};return t({focusGrid:Y}),(h,N)=>(_(),H("div",{ref_key:"gridWrapRef",ref:C,class:ke(y.value),style:pt(L.value),role:e.useRelative?void 0:"dialog","aria-label":e.overlayLabel,tabindex:e.useRelative?void 0:"0",onKeydown:P,onClick:N[0]||(N[0]=xa(()=>{},["prevent"]))},[ve("div",{ref_key:"containerRef",ref:B,class:ke(ne.value),style:pt({"--dp-overlay-height":`${M.value}px`}),role:"grid"},[ve("div",pu,[le(h.$slots,"header")]),h.$slots.overlay?le(h.$slots,"overlay",{key:0}):(_(!0),H(Me,{key:1},Be(e.items,(T,re)=>(_(),H("div",{key:re,class:ke(["dp__overlay_row",{dp__flex_row:e.items.length>=3}]),role:"row"},[(_(!0),H(Me,null,Be(T,(v,p)=>(_(),H("div",{key:v.value,ref_for:!0,ref:Q=>b(Q,v,re,p),role:"gridcell",class:ke(F.value),"aria-selected":v.active||void 0,"aria-disabled":v.disabled||void 0,tabindex:"0","data-test-id":v.text,onClick:xa(Q=>be(v),["prevent"]),onKeydown:Q=>i(it)(Q,()=>be(v),!0),onMouseover:Q=>V(v.value)},[ve("div",{class:ke(v.className)},[h.$slots.item?le(h.$slots,"item",{key:0,item:v}):q("",!0),h.$slots.item?q("",!0):(_(),H(Me,{key:1},[ht(He(v.text),1)],64))],2)],42,mu))),128))],2))),128))],6),h.$slots["button-icon"]?Ba((_(),H("button",{key:0,ref_key:"toggleButton",ref:R,type:"button","aria-label":i(u)?.toggleOverlay,class:ke(E.value),tabindex:"0",onClick:g,onKeydown:se},[le(h.$slots,"button-icon")],42,vu)),[[Va,!i(f)(e.hideNavigation,e.type)]]):q("",!0)],46,cu))}}),yu=["data-dp-mobile"],ja=Ge({__name:"InstanceWrap",props:{multiCalendars:{},stretch:{type:Boolean},collapse:{type:Boolean},isMobile:{type:Boolean}},setup(e){const t=e,n=z(()=>t.multiCalendars>0?[...Array(t.multiCalendars).keys()]:[0]),a=z(()=>({dp__instance_calendar:t.multiCalendars>0}));return(r,l)=>(_(),H("div",{class:ke({dp__menu_inner:!e.stretch,"dp--menu--inner-stretched":e.stretch,dp__flex_display:e.multiCalendars>0,"dp--flex-display-collapsed":e.collapse}),"data-dp-mobile":e.isMobile},[(_(!0),H(Me,null,Be(n.value,(o,c)=>(_(),H("div",{key:o,class:ke(a.value)},[le(r.$slots,"default",{instance:o,index:c})],2))),128))],10,yu))}}),hu=["data-dp-element","aria-label","aria-disabled"],ka=Ge({compatConfig:{MODE:3},__name:"ArrowBtn",props:{ariaLabel:{},elName:{},disabled:{type:Boolean}},emits:["activate","set-ref"],setup(e,{emit:t}){const n=t,a=G(null);return at(()=>n("set-ref",a)),(r,l)=>(_(),H("button",{ref_key:"elRef",ref:a,type:"button","data-dp-element":e.elName,class:"dp__btn dp--arrow-btn-nav",tabindex:"0","aria-label":e.ariaLabel,"aria-disabled":e.disabled||void 0,onClick:l[0]||(l[0]=o=>n("activate")),onKeydown:l[1]||(l[1]=o=>i(it)(o,()=>n("activate"),!0))},[ve("span",{class:ke(["dp__inner_nav",{dp__inner_nav_disabled:e.disabled}])},[le(r.$slots,"default")],2)],40,hu))}}),fu=["aria-label","data-test-id"],ul=Ge({__name:"YearModePicker",props:{...Dt,showYearPicker:{type:Boolean,default:!1},items:{type:Array,default:()=>[]},instance:{type:Number,default:0},year:{type:Number,default:0},isDisabled:{type:Function,default:()=>!1}},emits:["toggle-year-picker","year-select","handle-year"],setup(e,{emit:t}){const n=t,a=e,{showRightIcon:r,showLeftIcon:l}=Ua(),{defaultedConfig:o,defaultedMultiCalendars:c,defaultedAriaLabels:u,defaultedTransitions:w,defaultedUI:m}=Ee(a),{showTransition:d,transitionName:f}=$a(w),x=G(!1),$=z(()=>Ln(a.year,a.locale)),C=(R=!1,M)=>{x.value=!x.value,n("toggle-year-picker",{flow:R,show:M})},S=R=>{x.value=!1,n("year-select",R)},O=(R=!1)=>{n("handle-year",R)};return(R,M)=>(_(),H(Me,null,[ve("div",{class:ke(["dp--year-mode-picker",{"dp--hidden-el":x.value}])},[i(l)(i(c),e.instance)?(_(),_e(ka,{key:0,ref:"mpPrevIconRef","aria-label":i(u)?.prevYear,disabled:e.isDisabled(!1),class:ke(i(m)?.navBtnPrev),onActivate:M[0]||(M[0]=B=>O(!1))},{default:pe(()=>[R.$slots["arrow-left"]?le(R.$slots,"arrow-left",{key:0}):q("",!0),R.$slots["arrow-left"]?q("",!0):(_(),_e(i(In),{key:1}))]),_:3},8,["aria-label","disabled","class"])):q("",!0),ve("button",{ref:"mpYearButtonRef",class:"dp__btn dp--year-select",type:"button","aria-label":`${e.year}-${i(u)?.openYearsOverlay}`,"data-test-id":`year-mode-btn-${e.instance}`,onClick:M[1]||(M[1]=()=>C(!1)),onKeydown:M[2]||(M[2]=so(()=>C(!1),["enter"]))},[R.$slots.year?le(R.$slots,"year",{key:0,year:e.year,text:$.value,value:e.year}):q("",!0),R.$slots.year?q("",!0):(_(),H(Me,{key:1},[ht(He($.value),1)],64))],40,fu),i(r)(i(c),e.instance)?(_(),_e(ka,{key:1,ref:"mpNextIconRef","aria-label":i(u)?.nextYear,disabled:e.isDisabled(!0),class:ke(i(m)?.navBtnNext),onActivate:M[3]||(M[3]=B=>O(!0))},{default:pe(()=>[R.$slots["arrow-right"]?le(R.$slots,"arrow-right",{key:0}):q("",!0),R.$slots["arrow-right"]?q("",!0):(_(),_e(i(Rn),{key:1}))]),_:3},8,["aria-label","disabled","class"])):q("",!0)],2),Ie(ya,{name:i(f)(e.showYearPicker),css:i(d)},{default:pe(()=>[e.showYearPicker?(_(),_e(Aa,{key:0,items:e.items,"text-input":R.textInput,"esc-close":R.escClose,config:R.config,"is-last":R.autoApply&&!i(o).keepActionRow,"hide-navigation":R.hideNavigation,"aria-labels":R.ariaLabels,"overlay-label":i(u)?.yearPicker?.(!0),type:"year",onToggle:C,onSelected:M[4]||(M[4]=B=>S(B))},tt({"button-icon":pe(()=>[R.$slots["calendar-icon"]?le(R.$slots,"calendar-icon",{key:0}):q("",!0),R.$slots["calendar-icon"]?q("",!0):(_(),_e(i(ha),{key:1}))]),_:2},[R.$slots["year-overlay-value"]?{name:"item",fn:pe(({item:B})=>[le(R.$slots,"year-overlay-value",{text:B.text,value:B.value})]),key:"0"}:void 0]),1032,["items","text-input","esc-close","config","is-last","hide-navigation","aria-labels","overlay-label"])):q("",!0)]),_:3},8,["name","css"])],64))}}),Hn=(e,t,n)=>{if(t.value&&Array.isArray(t.value))if(t.value.some(a=>Pe(e,a))){const a=t.value.filter(r=>!Pe(r,e));t.value=a.length?a:null}else(n&&+n>t.value.length||!n)&&t.value.push(e);else t.value=[e]},Wn=(e,t,n)=>{let a=e.value?e.value.slice():[];return a.length===2&&a[1]!==null&&(a=[]),a.length?(ze(t,a[0])?a.unshift(t):a[1]=t,n("range-end",t)):(a=[t],n("range-start",t)),a},qa=(e,t,n,a)=>{e&&(e[0]&&e[1]&&n&&t("auto-apply"),e[0]&&!e[1]&&a&&n&&t("auto-apply"))},dl=e=>{Array.isArray(e.value)&&e.value.length<=2&&e.range?e.modelValue.value=e.value.map(t=>ct(j(t),e.timezone)):Array.isArray(e.value)||(e.modelValue.value=ct(j(e.value),e.timezone))},cl=(e,t,n,a)=>Array.isArray(t.value)&&(t.value.length===2||t.value.length===1&&a.value.partialRange)?a.value.fixedStart&&(Ue(e,t.value[0])||Pe(e,t.value[0]))?[t.value[0],e]:a.value.fixedEnd&&(ze(e,t.value[1])||Pe(e,t.value[1]))?[e,t.value[1]]:(n("invalid-fixed-range",e),t.value):[],pl=({multiCalendars:e,range:t,highlight:n,propDates:a,calendars:r,modelValue:l,props:o,filters:c,year:u,month:w,emit:m})=>{const d=z(()=>Vn(o.yearRange,o.locale,o.reverseYears)),f=G([!1]),x=z(()=>(E,ne)=>{const ue=Ye(_t(new Date),{month:w.value(E),year:u.value(E)}),be=ne?Ir(ue):la(ue);return rl(be,a.value.maxDate,a.value.minDate,o.preventMinMaxNavigation,ne)}),$=()=>Array.isArray(l.value)&&e.value.solo&&l.value[1],C=()=>{for(let E=0;E{if(!E)return C();const ne=Ye(j(),r.value[E]);return r.value[0].year=we(Ur(ne,e.value.count-1)),C()},O=(E,ne)=>{const ue=To(ne,E);return t.value.showLastInRange&&ue>1?ne:E},R=E=>o.focusStartDate||e.value.solo?E[0]:E[1]?O(E[0],E[1]):E[0],M=()=>{if(l.value){const E=Array.isArray(l.value)?R(l.value):l.value;r.value[0]={month:Se(E),year:we(E)}}},B=()=>{M(),e.value.count&&C()};dt(l,(E,ne)=>{o.isTextInputDate&&JSON.stringify(E??{})!==JSON.stringify(ne??{})&&B()}),at(()=>{B()});const U=(E,ne)=>{r.value[ne].year=E,m("update-month-year",{instance:ne,year:E,month:r.value[ne].month}),e.value.count&&!e.value.solo&&S(ne)},Y=z(()=>E=>pa(d.value,ne=>{const ue=u.value(E)===ne.value,be=Da(ne.value,ma(a.value.minDate),ma(a.value.maxDate))||c.value.years?.includes(u.value(E)),g=Fn(n.value,ne.value);return{active:ue,disabled:be,highlighted:g}})),y=(E,ne)=>{U(E,ne),F(ne)},L=(E,ne=!1)=>{if(!x.value(E,ne)){const ue=ne?u.value(E)+1:u.value(E)-1;U(ue,E)}},F=(E,ne=!1,ue)=>{ne||m("reset-flow"),ue!==void 0?f.value[E]=ue:f.value[E]=!f.value[E],f.value[E]?m("overlay-toggle",{open:!0,overlay:lt.year}):(m("overlay-closed"),m("overlay-toggle",{open:!1,overlay:lt.year}))};return{isDisabled:x,groupedYears:Y,showYearPicker:f,selectYear:U,toggleYearPicker:F,handleYearSelect:y,handleYear:L}},gu=(e,t)=>{const{defaultedMultiCalendars:n,defaultedAriaLabels:a,defaultedTransitions:r,defaultedConfig:l,defaultedRange:o,defaultedHighlight:c,propDates:u,defaultedTz:w,defaultedFilters:m,defaultedMultiDates:d}=Ee(e),f=()=>{e.isTextInputDate&&B(we(j(e.startDate)),0)},{modelValue:x,year:$,month:C,calendars:S}=Oa(e,t,f),O=z(()=>Xr(e.formatLocale,e.locale,e.monthNameFormat)),R=G(null),{checkMinMaxRange:M}=Wt(e),{selectYear:B,groupedYears:U,showYearPicker:Y,toggleYearPicker:y,handleYearSelect:L,handleYear:F,isDisabled:E}=pl({modelValue:x,multiCalendars:n,range:o,highlight:c,calendars:S,year:$,propDates:u,month:C,filters:m,props:e,emit:t});at(()=>{e.startDate&&(x.value&&e.focusStartDate||!x.value)&&B(we(j(e.startDate)),0)});const ne=N=>N?{month:Se(N),year:we(N)}:{month:null,year:null},ue=()=>x.value?Array.isArray(x.value)?x.value.map(N=>ne(N)):ne(x.value):ne(),be=(N,T)=>{const re=S.value[N],v=ue();return Array.isArray(v)?v.some(p=>p.year===re?.year&&p.month===T):re?.year===v.year&&T===v.month},g=(N,T,re)=>{const v=ue();return Array.isArray(v)?$.value(T)===v[re]?.year&&N===v[re]?.month:!1},D=(N,T)=>{if(o.value.enabled){const re=ue();if(Array.isArray(x.value)&&Array.isArray(re)){const v=g(N,T,0)||g(N,T,1),p=Rt(_t(j()),N,$.value(T));return Ta(x.value,R.value,p)&&!v}return!1}return!1},b=z(()=>N=>pa(O.value,T=>{const re=be(N,T.value),v=Da(T.value,el($.value(N),u.value.minDate),tl($.value(N),u.value.maxDate))||zs(u.value.disabledDates,$.value(N),T.value)||m.value.months?.includes(T.value)||!Fs(u.value.allowedDates,$.value(N),T.value)||il(e.yearRange,$.value(N)),p=D(T.value,N),Q=ol(c.value,T.value,$.value(N));return{active:re,disabled:v,isBetween:p,highlighted:Q}})),W=(N,T)=>Rt(_t(j()),N,$.value(T)),te=(N,T)=>{const re=x.value?x.value:_t(new Date);x.value=Rt(re,N,$.value(T)),t("auto-apply"),t("update-flow-step")},V=(N,T)=>{const re=W(N,T);o.value.fixedEnd||o.value.fixedStart?x.value=cl(re,x,t,o):x.value?M(re,x.value)&&(x.value=Wn(x,W(N,T),t)):x.value=[W(N,T)],vt().then(()=>{qa(x.value,t,e.autoApply,e.modelAuto)})},J=(N,T)=>{Hn(W(N,T),x,d.value.limit),t("auto-apply",!0)},P=(N,T)=>(S.value[T].month=N,h(T,S.value[T].year,N),d.value.enabled?J(N,T):o.value.enabled?V(N,T):te(N,T)),se=(N,T)=>{B(N,T),h(T,N,null)},h=(N,T,re)=>{let v=re;if(!v&&v!==0){const p=ue();v=Array.isArray(p)?p[N].month:p.month}t("update-month-year",{instance:N,year:T,month:v})};return{groupedMonths:b,groupedYears:U,year:$,isDisabled:E,defaultedMultiCalendars:n,defaultedAriaLabels:a,defaultedTransitions:r,defaultedConfig:l,showYearPicker:Y,modelValue:x,presetDate:(N,T)=>{dl({value:N,modelValue:x,range:o.value.enabled,timezone:T?void 0:w.value.timezone}),t("auto-apply")},setHoverDate:(N,T)=>{R.value=W(N,T)},selectMonth:P,selectYear:se,toggleYearPicker:y,handleYearSelect:L,handleYear:F,getModelMonthYear:ue}},bu=Ge({compatConfig:{MODE:3},__name:"MonthPicker",props:{...Dt},emits:["update:internal-model-value","overlay-closed","reset-flow","range-start","range-end","auto-apply","update-month-year","update-flow-step","mount","invalid-fixed-range","overlay-toggle"],setup(e,{expose:t,emit:n}){const a=n,r=Gt(),l=mt(r,"yearMode"),o=e;at(()=>{o.shadow||a("mount",null)});const{groupedMonths:c,groupedYears:u,year:w,isDisabled:m,defaultedMultiCalendars:d,defaultedConfig:f,showYearPicker:x,modelValue:$,presetDate:C,setHoverDate:S,selectMonth:O,selectYear:R,toggleYearPicker:M,handleYearSelect:B,handleYear:U,getModelMonthYear:Y}=gu(o,a);return t({getSidebarProps:()=>({modelValue:$,year:w,getModelMonthYear:Y,selectMonth:O,selectYear:R,handleYear:U}),presetDate:C,toggleYearPicker:y=>M(0,y)}),(y,L)=>(_(),_e(ja,{"multi-calendars":i(d).count,collapse:y.collapse,stretch:"","is-mobile":y.isMobile},{default:pe(({instance:F})=>[y.$slots["top-extra"]?le(y.$slots,"top-extra",{key:0,value:y.internalModelValue}):q("",!0),y.$slots["month-year"]?le(y.$slots,"month-year",et(Ve({key:1},{year:i(w),months:i(c)(F),years:i(u)(F),selectMonth:i(O),selectYear:i(R),instance:F}))):(_(),_e(Aa,{key:2,items:i(c)(F),"arrow-navigation":y.arrowNavigation,"is-last":y.autoApply&&!i(f).keepActionRow,"esc-close":y.escClose,height:i(f).modeHeight,config:y.config,"no-overlay-focus":!!(y.noOverlayFocus||y.textInput),"use-relative":"",type:"month",onSelected:E=>i(O)(E,F),onHoverValue:E=>i(S)(E,F)},tt({header:pe(()=>[Ie(ul,Ve(y.$props,{items:i(u)(F),instance:F,"show-year-picker":i(x)[F],year:i(w)(F),"is-disabled":E=>i(m)(F,E),onHandleYear:E=>i(U)(F,E),onYearSelect:E=>i(B)(E,F),onToggleYearPicker:E=>i(M)(F,E?.flow,E?.show)}),tt({_:2},[Be(i(l),(E,ne)=>({name:E,fn:pe(ue=>[le(y.$slots,E,et(ut(ue)))])}))]),1040,["items","instance","show-year-picker","year","is-disabled","onHandleYear","onYearSelect","onToggleYearPicker"])]),_:2},[y.$slots["month-overlay-value"]?{name:"item",fn:pe(({item:E})=>[le(y.$slots,"month-overlay-value",{text:E.text,value:E.value})]),key:"0"}:void 0]),1032,["items","arrow-navigation","is-last","esc-close","height","config","no-overlay-focus","onSelected","onHoverValue"]))]),_:3},8,["multi-calendars","collapse","is-mobile"]))}}),wu=(e,t)=>{const n=()=>{e.isTextInputDate&&(m.value=we(j(e.startDate)))},{modelValue:a}=Oa(e,t,n),r=G(null),{defaultedHighlight:l,defaultedMultiDates:o,defaultedFilters:c,defaultedRange:u,propDates:w}=Ee(e),m=G();at(()=>{e.startDate&&(a.value&&e.focusStartDate||!a.value)&&(m.value=we(j(e.startDate)))});const d=O=>Array.isArray(a.value)?a.value.some(R=>we(R)===O):a.value?we(a.value)===O:!1,f=O=>u.value.enabled&&Array.isArray(a.value)?Ta(a.value,r.value,S(O)):!1,x=O=>w.value.allowedDates instanceof Map?w.value.allowedDates.size?w.value.allowedDates.has(`${O}`):!1:!0,$=O=>w.value.disabledDates instanceof Map?w.value.disabledDates.size?w.value.disabledDates.has(`${O}`):!1:typeof w.value.disabledDates=="function"?w.value.disabledDates(kt(Ke(la(j())),O)):!0,C=z(()=>pa(Vn(e.yearRange,e.locale,e.reverseYears),O=>{const R=d(O.value),M=Da(O.value,ma(w.value.minDate),ma(w.value.maxDate))||c.value.years.includes(O.value)||!x(O.value)||$(O.value),B=f(O.value)&&!R,U=Fn(l.value,O.value);return{active:R,disabled:M,isBetween:B,highlighted:U}})),S=O=>kt(_t(la(new Date)),O);return{groupedYears:C,modelValue:a,focusYear:m,setHoverValue:O=>{r.value=kt(_t(new Date),O)},selectYear:O=>{if(t("update-month-year",{instance:0,year:O}),o.value.enabled)return a.value?Array.isArray(a.value)&&((a.value?.map(R=>we(R))).includes(O)?a.value=a.value.filter(R=>we(R)!==O):a.value.push(kt(Ke(j()),O))):a.value=[kt(Ke(la(j())),O)],t("auto-apply",!0);u.value.enabled?(a.value=Wn(a,S(O),t),vt().then(()=>{qa(a.value,t,e.autoApply,e.modelAuto)})):(a.value=S(O),t("auto-apply"))}}},ku=Ge({compatConfig:{MODE:3},__name:"YearPicker",props:{...Dt},emits:["update:internal-model-value","reset-flow","range-start","range-end","auto-apply","update-month-year"],setup(e,{expose:t,emit:n}){const a=n,r=e,{groupedYears:l,modelValue:o,focusYear:c,selectYear:u,setHoverValue:w}=wu(r,a),{defaultedConfig:m}=Ee(r);return t({getSidebarProps:()=>({modelValue:o,selectYear:u})}),(d,f)=>(_(),H("div",null,[d.$slots["top-extra"]?le(d.$slots,"top-extra",{key:0,value:d.internalModelValue}):q("",!0),d.$slots["month-year"]?le(d.$slots,"month-year",et(Ve({key:1},{years:i(l),selectYear:i(u)}))):(_(),_e(Aa,{key:2,items:i(l),"is-last":d.autoApply&&!i(m).keepActionRow,height:i(m).modeHeight,config:d.config,"no-overlay-focus":!!(d.noOverlayFocus||d.textInput),"focus-value":i(c),type:"year","use-relative":"",onSelected:i(u),onHoverValue:i(w)},tt({_:2},[d.$slots["year-overlay-value"]?{name:"item",fn:pe(({item:x})=>[le(d.$slots,"year-overlay-value",{text:x.text,value:x.value})]),key:"0"}:void 0]),1032,["items","is-last","height","config","no-overlay-focus","focus-value","onSelected","onHoverValue"]))]))}}),_u={key:0,class:"dp__time_input"},xu=["data-compact","data-collapsed"],Mu=["data-test-id","aria-label","onKeydown","onClick","onMousedown"],Du=["aria-label","disabled","data-test-id","onKeydown","onClick"],Tu=["data-test-id","aria-label","onKeydown","onClick","onMousedown"],Su={key:0},Pu=["aria-label","data-compact"],Au=Ge({compatConfig:{MODE:3},__name:"TimeInput",props:{hours:{type:Number,default:0},minutes:{type:Number,default:0},seconds:{type:Number,default:0},closeTimePickerBtn:{type:Object,default:null},order:{type:Number,default:0},disabledTimesConfig:{type:Function,default:null},validateTime:{type:Function,default:()=>!1},...Dt},emits:["set-hours","set-minutes","update:hours","update:minutes","update:seconds","reset-flow","mounted","overlay-closed","overlay-opened","am-pm-change"],setup(e,{expose:t,emit:n}){const a=n,r=e,{setTimePickerElements:l,setTimePickerBackRef:o}=Ht(),{defaultedAriaLabels:c,defaultedTransitions:u,defaultedFilters:w,defaultedConfig:m,defaultedRange:d,defaultedMultiCalendars:f}=Ee(r),{transitionName:x,showTransition:$}=$a(u),C=Sa({hours:!1,minutes:!1,seconds:!1}),S=G("AM"),O=G(null),R=G([]),M=G(),B=G(!1);at(()=>{a("mounted")});const U=s=>Ye(new Date,{hours:s.hours,minutes:s.minutes,seconds:r.enableSeconds?s.seconds:0,milliseconds:0}),Y=z(()=>s=>V(s,r[s])||L(s,r[s])),y=z(()=>({hours:r.hours,minutes:r.minutes,seconds:r.seconds})),L=(s,oe)=>d.value.enabled&&!d.value.disableTimeRangeValidation?!r.validateTime(s,oe):!1,F=(s,oe)=>{if(d.value.enabled&&!d.value.disableTimeRangeValidation){const I=oe?+r[`${s}Increment`]:-+r[`${s}Increment`],De=r[s]+I;return!r.validateTime(s,De)}return!1},E=z(()=>s=>!N(+r[s]+ +r[`${s}Increment`],s)||F(s,!0)),ne=z(()=>s=>!N(+r[s]-+r[`${s}Increment`],s)||F(s,!1)),ue=(s,oe)=>Tr(Ye(j(),s),oe),be=(s,oe)=>ks(Ye(j(),s),oe),g=z(()=>({dp__time_col:!0,dp__time_col_block:!r.timePickerInline,dp__time_col_reg_block:!r.enableSeconds&&r.is24&&!r.timePickerInline,dp__time_col_reg_inline:!r.enableSeconds&&r.is24&&r.timePickerInline,dp__time_col_reg_with_button:!r.enableSeconds&&!r.is24,dp__time_col_sec:r.enableSeconds&&r.is24,dp__time_col_sec_with_button:r.enableSeconds&&!r.is24})),D=z(()=>r.timePickerInline&&d.value.enabled&&!f.value.count),b=z(()=>{const s=[{type:"hours"}];return r.enableMinutes&&s.push({type:"",separator:!0},{type:"minutes"}),r.enableSeconds&&s.push({type:"",separator:!0},{type:"seconds"}),s}),W=z(()=>b.value.filter(s=>!s.separator)),te=z(()=>s=>{if(s==="hours"){const oe=Ae(+r.hours);return{text:oe<10?`0${oe}`:`${oe}`,value:oe}}return{text:r[s]<10?`0${r[s]}`:`${r[s]}`,value:r[s]}}),V=(s,oe)=>{if(!r.disabledTimesConfig)return!1;const I=r.disabledTimesConfig(r.order,s==="hours"?oe:void 0);return I[s]?!!I[s]?.includes(oe):!0},J=(s,oe)=>oe!=="hours"||S.value==="AM"?s:s+12,P=s=>{const oe=r.is24?24:12,I=s==="hours"?oe:60,De=+r[`${s}GridIncrement`],ye=s==="hours"&&!r.is24?De:0,nt=[];for(let je=ye;je({active:!1,disabled:w.value.times[s].includes(je.value)||!N(je.value,s)||V(s,je.value)||L(s,je.value)}))},se=s=>s>=0?s:59,h=s=>s>=0?s:23,N=(s,oe)=>{const I=r.minTime?U(sn(r.minTime)):null,De=r.maxTime?U(sn(r.maxTime)):null,ye=U(sn(y.value,oe,oe==="minutes"||oe==="seconds"?se(s):h(s)));return I&&De?(da(ye,De)||na(ye,De))&&(Xt(ye,I)||na(ye,I)):I?Xt(ye,I)||na(ye,I):De?da(ye,De)||na(ye,De):!0},T=s=>r[`no${s[0].toUpperCase()+s.slice(1)}Overlay`],re=s=>{T(s)||(C[s]=!C[s],C[s]?(B.value=!0,a("overlay-opened",s)):(B.value=!1,a("overlay-closed",s)))},v=s=>s==="hours"?Yt:s==="minutes"?Ft:ua,p=()=>{M.value&&clearTimeout(M.value)},Q=(s,oe=!0,I)=>{const De=oe?ue:be,ye=oe?+r[`${s}Increment`]:-+r[`${s}Increment`];N(+r[s]+ye,s)&&a(`update:${s}`,v(s)(De({[s]:+r[s]},{[s]:+r[`${s}Increment`]}))),!I?.keyboard&&m.value.timeArrowHoldThreshold&&(M.value=setTimeout(()=>{Q(s,oe)},m.value.timeArrowHoldThreshold))},Ae=s=>r.is24?s:(s>=12?S.value="PM":S.value="AM",Ps(s)),X=()=>{S.value==="PM"?(S.value="AM",a("update:hours",r.hours-12)):(S.value="PM",a("update:hours",r.hours+12)),a("am-pm-change",S.value)},xe=s=>{C[s]=!0},K=(s,oe,I)=>{if(s&&r.arrowNavigation){Array.isArray(R.value[oe])?R.value[oe][I]=s:R.value[oe]=[s];const De=R.value.reduce((ye,nt)=>nt.map((je,ft)=>[...ye[ft]||[],nt[ft]]),[]);o(r.closeTimePickerBtn),O.value&&(De[1]=De[1].concat(O.value)),l(De,r.order)}},ae=(s,oe)=>(re(s),a(`update:${s}`,oe));return t({openChildCmp:xe}),(s,oe)=>s.disabled?q("",!0):(_(),H("div",_u,[(_(!0),H(Me,null,Be(b.value,(I,De)=>(_(),H("div",{key:De,class:ke(g.value),"data-compact":D.value&&!s.enableSeconds,"data-collapsed":D.value&&s.enableSeconds},[I.separator?(_(),H(Me,{key:0},[B.value?q("",!0):(_(),H(Me,{key:0},[ht(":")],64))],64)):(_(),H(Me,{key:1},[ve("button",{ref_for:!0,ref:ye=>K(ye,De,0),type:"button",class:ke({dp__btn:!0,dp__inc_dec_button:!s.timePickerInline,dp__inc_dec_button_inline:s.timePickerInline,dp__tp_inline_btn_top:s.timePickerInline,dp__inc_dec_button_disabled:E.value(I.type),"dp--hidden-el":B.value}),"data-test-id":`${I.type}-time-inc-btn-${r.order}`,"aria-label":i(c)?.incrementValue(I.type),tabindex:"0",onKeydown:ye=>i(it)(ye,()=>Q(I.type,!0,{keyboard:!0}),!0),onClick:ye=>i(m).timeArrowHoldThreshold?void 0:Q(I.type,!0),onMousedown:ye=>i(m).timeArrowHoldThreshold?Q(I.type,!0):void 0,onMouseup:p},[r.timePickerInline?(_(),H(Me,{key:1},[s.$slots["tp-inline-arrow-up"]?le(s.$slots,"tp-inline-arrow-up",{key:0}):(_(),H(Me,{key:1},[oe[2]||(oe[2]=ve("span",{class:"dp__tp_inline_btn_bar dp__tp_btn_in_l"},null,-1)),oe[3]||(oe[3]=ve("span",{class:"dp__tp_inline_btn_bar dp__tp_btn_in_r"},null,-1))],64))],64)):(_(),H(Me,{key:0},[s.$slots["arrow-up"]?le(s.$slots,"arrow-up",{key:0}):q("",!0),s.$slots["arrow-up"]?q("",!0):(_(),_e(i(Cn),{key:1}))],64))],42,Mu),ve("button",{ref_for:!0,ref:ye=>K(ye,De,1),type:"button","aria-label":`${te.value(I.type).text}-${i(c)?.openTpOverlay(I.type)}`,class:ke({dp__time_display:!0,dp__time_display_block:!s.timePickerInline,dp__time_display_inline:s.timePickerInline,"dp--time-invalid":Y.value(I.type),"dp--time-overlay-btn":!Y.value(I.type),"dp--hidden-el":B.value}),disabled:T(I.type),tabindex:"0","data-test-id":`${I.type}-toggle-overlay-btn-${r.order}`,onKeydown:ye=>i(it)(ye,()=>re(I.type),!0),onClick:ye=>re(I.type)},[s.$slots[I.type]?le(s.$slots,I.type,{key:0,text:te.value(I.type).text,value:te.value(I.type).value}):q("",!0),s.$slots[I.type]?q("",!0):(_(),H(Me,{key:1},[ht(He(te.value(I.type).text),1)],64))],42,Du),ve("button",{ref_for:!0,ref:ye=>K(ye,De,2),type:"button",class:ke({dp__btn:!0,dp__inc_dec_button:!s.timePickerInline,dp__inc_dec_button_inline:s.timePickerInline,dp__tp_inline_btn_bottom:s.timePickerInline,dp__inc_dec_button_disabled:ne.value(I.type),"dp--hidden-el":B.value}),"data-test-id":`${I.type}-time-dec-btn-${r.order}`,"aria-label":i(c)?.decrementValue(I.type),tabindex:"0",onKeydown:ye=>i(it)(ye,()=>Q(I.type,!1,{keyboard:!0}),!0),onClick:ye=>i(m).timeArrowHoldThreshold?void 0:Q(I.type,!1),onMousedown:ye=>i(m).timeArrowHoldThreshold?Q(I.type,!1):void 0,onMouseup:p},[r.timePickerInline?(_(),H(Me,{key:1},[s.$slots["tp-inline-arrow-down"]?le(s.$slots,"tp-inline-arrow-down",{key:0}):(_(),H(Me,{key:1},[oe[4]||(oe[4]=ve("span",{class:"dp__tp_inline_btn_bar dp__tp_btn_in_l"},null,-1)),oe[5]||(oe[5]=ve("span",{class:"dp__tp_inline_btn_bar dp__tp_btn_in_r"},null,-1))],64))],64)):(_(),H(Me,{key:0},[s.$slots["arrow-down"]?le(s.$slots,"arrow-down",{key:0}):q("",!0),s.$slots["arrow-down"]?q("",!0):(_(),_e(i(Nn),{key:1}))],64))],42,Tu)],64))],10,xu))),128)),s.is24?q("",!0):(_(),H("div",Su,[s.$slots["am-pm-button"]?le(s.$slots,"am-pm-button",{key:0,toggle:X,value:S.value}):q("",!0),s.$slots["am-pm-button"]?q("",!0):(_(),H("button",{key:1,ref_key:"amPmButton",ref:O,type:"button",class:"dp__pm_am_button",role:"button","aria-label":i(c)?.amPmButton,tabindex:"0","data-compact":D.value,onClick:X,onKeydown:oe[0]||(oe[0]=I=>i(it)(I,()=>X(),!0))},He(S.value),41,Pu))])),(_(!0),H(Me,null,Be(W.value,(I,De)=>(_(),_e(ya,{key:De,name:i(x)(C[I.type]),css:i($)},{default:pe(()=>[C[I.type]?(_(),_e(Aa,{key:0,items:P(I.type),"is-last":s.autoApply&&!i(m).keepActionRow,"esc-close":s.escClose,type:I.type,"text-input":s.textInput,config:s.config,"arrow-navigation":s.arrowNavigation,"aria-labels":s.ariaLabels,"overlay-label":i(c).timeOverlay?.(I.type),onSelected:ye=>ae(I.type,ye),onToggle:ye=>re(I.type),onResetFlow:oe[1]||(oe[1]=ye=>s.$emit("reset-flow"))},tt({"button-icon":pe(()=>[s.$slots["clock-icon"]?le(s.$slots,"clock-icon",{key:0}):q("",!0),s.$slots["clock-icon"]?q("",!0):(_(),_e(Ha(s.timePickerInline?i(ha):i(Yn)),{key:1}))]),_:2},[s.$slots[`${I.type}-overlay-value`]?{name:"item",fn:pe(({item:ye})=>[le(s.$slots,`${I.type}-overlay-value`,{text:ye.text,value:ye.value})]),key:"0"}:void 0,s.$slots[`${I.type}-overlay-header`]?{name:"header",fn:pe(()=>[le(s.$slots,`${I.type}-overlay-header`,{toggle:()=>re(I.type)})]),key:"1"}:void 0]),1032,["items","is-last","esc-close","type","text-input","config","arrow-navigation","aria-labels","overlay-label","onSelected","onToggle"])):q("",!0)]),_:2},1032,["name","css"]))),128))]))}}),$u=["data-dp-mobile"],Ou=["aria-label","tabindex"],Iu=["role","aria-label","tabindex"],Ru=["aria-label"],ml=Ge({compatConfig:{MODE:3},__name:"TimePicker",props:{hours:{type:[Number,Array],default:0},minutes:{type:[Number,Array],default:0},seconds:{type:[Number,Array],default:0},disabledTimesConfig:{type:Function,default:null},validateTime:{type:Function,default:()=>!1},...Dt},emits:["update:hours","update:minutes","update:seconds","mount","reset-flow","overlay-opened","overlay-closed","am-pm-change"],setup(e,{expose:t,emit:n}){const a=n,r=e,{buildMatrix:l,setTimePicker:o}=Ht(),c=Gt(),{defaultedTransitions:u,defaultedAriaLabels:w,defaultedTextInput:m,defaultedConfig:d,defaultedRange:f}=Ee(r),{transitionName:x,showTransition:$}=$a(u),{hideNavigationButtons:C}=Ua(),S=G(null),O=G(null),R=G([]),M=G(null),B=G(!1);at(()=>{a("mount"),!r.timePicker&&r.arrowNavigation?l([Ze(S.value)],"time"):o(!0,r.timePicker)});const U=z(()=>f.value.enabled&&r.modelAuto?Gr(r.internalModelValue):!0),Y=G(!1),y=V=>({hours:Array.isArray(r.hours)?r.hours[V]:r.hours,minutes:Array.isArray(r.minutes)?r.minutes[V]:r.minutes,seconds:Array.isArray(r.seconds)?r.seconds[V]:r.seconds}),L=z(()=>{const V=[];if(f.value.enabled)for(let J=0;J<2;J++)V.push(y(J));else V.push(y(0));return V}),F=(V,J=!1,P="")=>{J||a("reset-flow"),Y.value=V,a(V?"overlay-opened":"overlay-closed",lt.time),r.arrowNavigation&&o(V),vt(()=>{P!==""&&R.value[0]&&R.value[0].openChildCmp(P)})},E=z(()=>({dp__btn:!0,dp__button:!0,dp__button_bottom:r.autoApply&&!d.value.keepActionRow})),ne=mt(c,"timePicker"),ue=(V,J,P)=>f.value.enabled?J===0?[V,L.value[1][P]]:[L.value[0][P],V]:V,be=V=>{a("update:hours",V)},g=V=>{a("update:minutes",V)},D=V=>{a("update:seconds",V)},b=()=>{if(M.value&&!m.value.enabled&&!r.noOverlayFocus){const V=Zr(M.value);V&&V.focus({preventScroll:!0})}},W=V=>{B.value=!1,a("overlay-closed",V)},te=V=>{B.value=!0,a("overlay-opened",V)};return t({toggleTimePicker:F}),(V,J)=>(_(),H("div",{class:"dp--tp-wrap","data-dp-mobile":V.isMobile},[!V.timePicker&&!V.timePickerInline?Ba((_(),H("button",{key:0,ref_key:"openTimePickerBtn",ref:S,type:"button",class:ke({...E.value,"dp--hidden-el":Y.value}),"aria-label":i(w)?.openTimePicker,tabindex:V.noOverlayFocus?void 0:0,"data-test-id":"open-time-picker-btn",onKeydown:J[0]||(J[0]=P=>i(it)(P,()=>F(!0))),onClick:J[1]||(J[1]=P=>F(!0))},[V.$slots["clock-icon"]?le(V.$slots,"clock-icon",{key:0}):q("",!0),V.$slots["clock-icon"]?q("",!0):(_(),_e(i(Yn),{key:1}))],42,Ou)),[[Va,!i(C)(V.hideNavigation,"time")]]):q("",!0),Ie(ya,{name:i(x)(Y.value),css:i($)&&!V.timePickerInline},{default:pe(()=>[Y.value||V.timePicker||V.timePickerInline?(_(),H("div",{key:0,ref_key:"overlayRef",ref:M,role:V.timePickerInline?void 0:"dialog",class:ke({dp__overlay:!V.timePickerInline,"dp--overlay-absolute":!r.timePicker&&!V.timePickerInline,"dp--overlay-relative":r.timePicker}),style:pt(V.timePicker?{height:`${i(d).modeHeight}px`}:void 0),"aria-label":i(w)?.timePicker,tabindex:V.timePickerInline?void 0:0},[ve("div",{class:ke(V.timePickerInline?"dp__time_picker_inline_container":"dp__overlay_container dp__container_flex dp__time_picker_overlay_container"),style:{display:"flex"}},[V.$slots["time-picker-overlay"]?le(V.$slots,"time-picker-overlay",{key:0,hours:e.hours,minutes:e.minutes,seconds:e.seconds,setHours:be,setMinutes:g,setSeconds:D}):q("",!0),V.$slots["time-picker-overlay"]?q("",!0):(_(),H("div",{key:1,class:ke(V.timePickerInline?"dp__flex":"dp__overlay_row dp__flex_row")},[(_(!0),H(Me,null,Be(L.value,(P,se)=>Ba((_(),_e(Au,Ve({key:se},{ref_for:!0},{...V.$props,order:se,hours:P.hours,minutes:P.minutes,seconds:P.seconds,closeTimePickerBtn:O.value,disabledTimesConfig:e.disabledTimesConfig,disabled:se===0?i(f).fixedStart:i(f).fixedEnd},{ref_for:!0,ref_key:"timeInputRefs",ref:R,"validate-time":(h,N)=>e.validateTime(h,ue(N,se,h)),"onUpdate:hours":h=>be(ue(h,se,"hours")),"onUpdate:minutes":h=>g(ue(h,se,"minutes")),"onUpdate:seconds":h=>D(ue(h,se,"seconds")),onMounted:b,onOverlayClosed:W,onOverlayOpened:te,onAmPmChange:J[2]||(J[2]=h=>V.$emit("am-pm-change",h))}),tt({_:2},[Be(i(ne),(h,N)=>({name:h,fn:pe(T=>[le(V.$slots,h,Ve({ref_for:!0},T))])}))]),1040,["validate-time","onUpdate:hours","onUpdate:minutes","onUpdate:seconds"])),[[Va,se===0?!0:U.value]])),128))],2)),!V.timePicker&&!V.timePickerInline?Ba((_(),H("button",{key:2,ref_key:"closeTimePickerBtn",ref:O,type:"button",class:ke({...E.value,"dp--hidden-el":B.value}),"aria-label":i(w)?.closeTimePicker,tabindex:"0",onKeydown:J[3]||(J[3]=P=>i(it)(P,()=>F(!1))),onClick:J[4]||(J[4]=P=>F(!1))},[V.$slots["calendar-icon"]?le(V.$slots,"calendar-icon",{key:0}):q("",!0),V.$slots["calendar-icon"]?q("",!0):(_(),_e(i(ha),{key:1}))],42,Ru)),[[Va,!i(C)(V.hideNavigation,"time")]]):q("",!0)],2)],14,Iu)):q("",!0)]),_:3},8,["name","css"])],8,$u))}}),vl=(e,t,n,a)=>{const{defaultedRange:r}=Ee(e),l=(M,B)=>Array.isArray(t[M])?t[M][B]:t[M],o=M=>e.enableSeconds?Array.isArray(t.seconds)?t.seconds[M]:t.seconds:0,c=(M,B)=>M?B!==void 0?zt(M,l("hours",B),l("minutes",B),o(B)):zt(M,t.hours,t.minutes,o()):qr(j(),o(B)),u=(M,B)=>{t[M]=B},w=z(()=>e.modelAuto&&r.value.enabled?Array.isArray(n.value)?n.value.length>1:!1:r.value.enabled),m=(M,B)=>{const U=Object.fromEntries(Object.keys(t).map(Y=>Y===M?[Y,B]:[Y,t[Y]].slice()));if(w.value&&!r.value.disableTimeRangeValidation){const Y=L=>n.value?zt(n.value[L],U.hours[L],U.minutes[L],U.seconds[L]):null,y=L=>jr(n.value[L],0);return!(Pe(Y(0),Y(1))&&(Xt(Y(0),y(1))||da(Y(1),y(0))))}return!0},d=(M,B)=>{m(M,B)&&(u(M,B),a&&a())},f=M=>{d("hours",M)},x=M=>{d("minutes",M)},$=M=>{d("seconds",M)},C=(M,B,U,Y)=>{B&&f(M),!B&&!U&&x(M),U&&$(M),n.value&&Y(n.value)},S=M=>{if(M){const B=Array.isArray(M),U=B?[+M[0].hours,+M[1].hours]:+M.hours,Y=B?[+M[0].minutes,+M[1].minutes]:+M.minutes,y=B?[+M[0].seconds,+M[1].seconds]:+M.seconds;u("hours",U),u("minutes",Y),e.enableSeconds&&u("seconds",y)}},O=(M,B)=>{const U={hours:Array.isArray(t.hours)?t.hours[M]:t.hours,disabledArr:[]};return(B||B===0)&&(U.hours=B),Array.isArray(e.disabledTimes)&&(U.disabledArr=r.value.enabled&&Array.isArray(e.disabledTimes[M])?e.disabledTimes[M]:e.disabledTimes),U},R=z(()=>(M,B)=>{if(Array.isArray(e.disabledTimes)){const{disabledArr:U,hours:Y}=O(M,B),y=U.filter(L=>+L.hours===Y);return y[0]?.minutes==="*"?{hours:[Y],minutes:void 0,seconds:void 0}:{hours:[],minutes:y?.map(L=>+L.minutes)??[],seconds:y?.map(L=>L.seconds?+L.seconds:void 0)??[]}}return{hours:[],minutes:[],seconds:[]}});return{setTime:u,updateHours:f,updateMinutes:x,updateSeconds:$,getSetDateTime:c,updateTimeValues:C,getSecondsValue:o,assignStartTime:S,validateTime:m,disabledTimesConfig:R}},Yu=(e,t)=>{const n=()=>{e.isTextInputDate&&B()},{modelValue:a,time:r}=Oa(e,t,n),{defaultedStartTime:l,defaultedRange:o,defaultedTz:c}=Ee(e),{updateTimeValues:u,getSetDateTime:w,setTime:m,assignStartTime:d,disabledTimesConfig:f,validateTime:x}=vl(e,r,a,$);function $(){t("update-flow-step")}const C=Y=>{const{hours:y,minutes:L,seconds:F}=Y;return{hours:+y,minutes:+L,seconds:F?+F:0}},S=()=>{if(e.startTime){if(Array.isArray(e.startTime)){const y=C(e.startTime[0]),L=C(e.startTime[1]);return[Ye(j(),y),Ye(j(),L)]}const Y=C(e.startTime);return Ye(j(),Y)}return o.value.enabled?[null,null]:null},O=()=>{if(o.value.enabled){const[Y,y]=S();a.value=[ct(w(Y,0),c.value.timezone),ct(w(y,1),c.value.timezone)]}else a.value=ct(w(S()),c.value.timezone)},R=Y=>Array.isArray(Y)?[Qt(j(Y[0])),Qt(j(Y[1]))]:[Qt(Y??j())],M=(Y,y,L)=>{m("hours",Y),m("minutes",y),m("seconds",e.enableSeconds?L:0)},B=()=>{const[Y,y]=R(a.value);return o.value.enabled?M([Y.hours,y.hours],[Y.minutes,y.minutes],[Y.seconds,y.seconds]):M(Y.hours,Y.minutes,Y.seconds)};at(()=>{if(!e.shadow)return d(l.value),a.value?B():O()});const U=()=>{Array.isArray(a.value)?a.value=a.value.map((Y,y)=>Y&&w(Y,y)):a.value=w(a.value),t("time-update")};return{modelValue:a,time:r,disabledTimesConfig:f,updateTime:(Y,y=!0,L=!1)=>{u(Y,y,L,U)},validateTime:x}},Cu=Ge({compatConfig:{MODE:3},__name:"TimePickerSolo",props:{...Dt},emits:["update:internal-model-value","time-update","am-pm-change","mount","reset-flow","update-flow-step","overlay-toggle"],setup(e,{expose:t,emit:n}){const a=n,r=e,l=Gt(),o=mt(l,"timePicker"),c=G(null),{time:u,modelValue:w,disabledTimesConfig:m,updateTime:d,validateTime:f}=Yu(r,a);return at(()=>{r.shadow||a("mount",null)}),t({getSidebarProps:()=>({modelValue:w,time:u,updateTime:d}),toggleTimePicker:(x,$=!1,C="")=>{c.value?.toggleTimePicker(x,$,C)}}),(x,$)=>(_(),_e(ja,{"multi-calendars":0,stretch:"","is-mobile":x.isMobile},{default:pe(()=>[Ie(ml,Ve({ref_key:"tpRef",ref:c},x.$props,{hours:i(u).hours,minutes:i(u).minutes,seconds:i(u).seconds,"internal-model-value":x.internalModelValue,"disabled-times-config":i(m),"validate-time":i(f),"onUpdate:hours":$[0]||($[0]=C=>i(d)(C)),"onUpdate:minutes":$[1]||($[1]=C=>i(d)(C,!1)),"onUpdate:seconds":$[2]||($[2]=C=>i(d)(C,!1,!0)),onAmPmChange:$[3]||($[3]=C=>x.$emit("am-pm-change",C)),onResetFlow:$[4]||($[4]=C=>x.$emit("reset-flow")),onOverlayClosed:$[5]||($[5]=C=>x.$emit("overlay-toggle",{open:!1,overlay:C})),onOverlayOpened:$[6]||($[6]=C=>x.$emit("overlay-toggle",{open:!0,overlay:C}))}),tt({_:2},[Be(i(o),(C,S)=>({name:C,fn:pe(O=>[le(x.$slots,C,et(ut(O)))])}))]),1040,["hours","minutes","seconds","internal-model-value","disabled-times-config","validate-time"])]),_:3},8,["is-mobile"]))}}),Nu={class:"dp--header-wrap"},Bu={key:0,class:"dp__month_year_wrap"},Vu={key:0},Eu={class:"dp__month_year_wrap"},Lu=["data-dp-element","aria-label","data-test-id","onClick","onKeydown"],zu=Ge({compatConfig:{MODE:3},__name:"DpHeader",props:{month:{type:Number,default:0},year:{type:Number,default:0},instance:{type:Number,default:0},years:{type:Array,default:()=>[]},months:{type:Array,default:()=>[]},...Dt},emits:["update-month-year","mount","reset-flow","overlay-closed","overlay-opened"],setup(e,{expose:t,emit:n}){const a=n,r=e,{defaultedTransitions:l,defaultedAriaLabels:o,defaultedMultiCalendars:c,defaultedFilters:u,defaultedConfig:w,defaultedHighlight:m,propDates:d,defaultedUI:f}=Ee(r),{transitionName:x,showTransition:$}=$a(l),{buildMatrix:C}=Ht(),{handleMonthYearChange:S,isDisabled:O,updateMonthYear:R}=iu(r,a),{showLeftIcon:M,showRightIcon:B}=Ua(),U=G(!1),Y=G(!1),y=G(!1),L=G([null,null,null,null]);at(()=>{a("mount")});const F=h=>({get:()=>r[h],set:N=>{const T=h===bt.month?bt.year:bt.month;a("update-month-year",{[h]:N,[T]:r[T]}),h===bt.month?W(!0):te(!0)}}),E=z(F(bt.month)),ne=z(F(bt.year)),ue=z(()=>h=>({month:r.month,year:r.year,items:h===bt.month?r.months:r.years,instance:r.instance,updateMonthYear:R,toggle:h===bt.month?W:te})),be=z(()=>r.months.find(h=>h.value===r.month)||{text:"",value:0}),g=z(()=>pa(r.months,h=>{const N=r.month===h.value,T=Da(h.value,el(r.year,d.value.minDate),tl(r.year,d.value.maxDate))||u.value.months.includes(h.value),re=ol(m.value,h.value,r.year);return{active:N,disabled:T,highlighted:re}})),D=z(()=>pa(r.years,h=>{const N=r.year===h.value,T=Da(h.value,ma(d.value.minDate),ma(d.value.maxDate))||u.value.years.includes(h.value),re=Fn(m.value,h.value);return{active:N,disabled:T,highlighted:re}})),b=(h,N,T)=>{T!==void 0?h.value=T:h.value=!h.value,h.value?(y.value=!0,a("overlay-opened",N)):(y.value=!1,a("overlay-closed",N))},W=(h=!1,N)=>{V(h),b(U,lt.month,N)},te=(h=!1,N)=>{V(h),b(Y,lt.year,N)},V=h=>{h||a("reset-flow")},J=(h,N)=>{r.arrowNavigation&&(L.value[N]=Ze(h),C(L.value,"monthYear"))},P=z(()=>[{type:bt.month,index:1,toggle:W,modelValue:E.value,updateModelValue:h=>E.value=h,text:be.value.text,showSelectionGrid:U.value,items:g.value,ariaLabel:o.value?.openMonthsOverlay,overlayLabel:o.value.monthPicker?.(!0)??void 0},{type:bt.year,index:2,toggle:te,modelValue:ne.value,updateModelValue:h=>ne.value=h,text:Ln(r.year,r.locale),showSelectionGrid:Y.value,items:D.value,ariaLabel:o.value?.openYearsOverlay,overlayLabel:o.value.yearPicker?.(!0)??void 0}]),se=z(()=>r.disableYearSelect?[P.value[0]]:r.yearFirst?[...P.value].reverse():P.value);return t({toggleMonthPicker:W,toggleYearPicker:te,handleMonthYearChange:S}),(h,N)=>(_(),H("div",Nu,[h.$slots["month-year"]?(_(),H("div",Bu,[le(h.$slots,"month-year",et(ut({month:e.month,year:e.year,months:e.months,years:e.years,updateMonthYear:i(R),handleMonthYearChange:i(S),instance:e.instance,isDisabled:i(O)})))])):(_(),H(Me,{key:1},[h.$slots["top-extra"]?(_(),H("div",Vu,[le(h.$slots,"top-extra",{value:h.internalModelValue})])):q("",!0),ve("div",Eu,[i(M)(i(c),e.instance)&&!h.vertical?(_(),_e(ka,{key:0,"aria-label":i(o)?.prevMonth,disabled:i(O)(!1),class:ke(i(f)?.navBtnPrev),"el-name":"action-prev",onActivate:N[0]||(N[0]=T=>i(S)(!1,!0)),onSetRef:N[1]||(N[1]=T=>J(T,0))},{default:pe(()=>[h.$slots["arrow-left"]?le(h.$slots,"arrow-left",{key:0}):q("",!0),h.$slots["arrow-left"]?q("",!0):(_(),_e(i(In),{key:1}))]),_:3},8,["aria-label","disabled","class"])):q("",!0),ve("div",{class:ke(["dp__month_year_wrap",{dp__year_disable_select:h.disableYearSelect}])},[(_(!0),H(Me,null,Be(se.value,(T,re)=>(_(),H(Me,{key:T.type},[ve("button",{ref_for:!0,ref:v=>J(v,re+1),type:"button","data-dp-element":`overlay-${T.type}`,class:ke(["dp__btn dp__month_year_select",{"dp--hidden-el":y.value}]),"aria-label":`${T.text}-${T.ariaLabel}`,"data-test-id":`${T.type}-toggle-overlay-${e.instance}`,onClick:T.toggle,onKeydown:v=>i(it)(v,()=>T.toggle(),!0)},[h.$slots[T.type]?le(h.$slots,T.type,{key:0,text:T.text,value:r[T.type]}):q("",!0),h.$slots[T.type]?q("",!0):(_(),H(Me,{key:1},[ht(He(T.text),1)],64))],42,Lu),Ie(ya,{name:i(x)(T.showSelectionGrid),css:i($)},{default:pe(()=>[T.showSelectionGrid?(_(),_e(Aa,{key:0,items:T.items,"arrow-navigation":h.arrowNavigation,"hide-navigation":h.hideNavigation,"is-last":h.autoApply&&!i(w).keepActionRow,"skip-button-ref":!1,config:h.config,type:T.type,"header-refs":[],"esc-close":h.escClose,"menu-wrap-ref":h.menuWrapRef,"text-input":h.textInput,"aria-labels":h.ariaLabels,"overlay-label":T.overlayLabel,onSelected:T.updateModelValue,onToggle:T.toggle},tt({"button-icon":pe(()=>[h.$slots["calendar-icon"]?le(h.$slots,"calendar-icon",{key:0}):q("",!0),h.$slots["calendar-icon"]?q("",!0):(_(),_e(i(ha),{key:1}))]),_:2},[h.$slots[`${T.type}-overlay-value`]?{name:"item",fn:pe(({item:v})=>[le(h.$slots,`${T.type}-overlay-value`,{text:v.text,value:v.value})]),key:"0"}:void 0,h.$slots[`${T.type}-overlay`]?{name:"overlay",fn:pe(()=>[le(h.$slots,`${T.type}-overlay`,Ve({ref_for:!0},ue.value(T.type)))]),key:"1"}:void 0,h.$slots[`${T.type}-overlay-header`]?{name:"header",fn:pe(()=>[le(h.$slots,`${T.type}-overlay-header`,{toggle:T.toggle})]),key:"2"}:void 0]),1032,["items","arrow-navigation","hide-navigation","is-last","config","type","esc-close","menu-wrap-ref","text-input","aria-labels","overlay-label","onSelected","onToggle"])):q("",!0)]),_:2},1032,["name","css"])],64))),128))],2),i(M)(i(c),e.instance)&&h.vertical?(_(),_e(ka,{key:1,"aria-label":i(o)?.prevMonth,"el-name":"action-prev",disabled:i(O)(!1),class:ke(i(f)?.navBtnPrev),onActivate:N[2]||(N[2]=T=>i(S)(!1,!0))},{default:pe(()=>[h.$slots["arrow-up"]?le(h.$slots,"arrow-up",{key:0}):q("",!0),h.$slots["arrow-up"]?q("",!0):(_(),_e(i(Cn),{key:1}))]),_:3},8,["aria-label","disabled","class"])):q("",!0),i(B)(i(c),e.instance)?(_(),_e(ka,{key:2,ref:"rightIcon","el-name":"action-next",disabled:i(O)(!0),"aria-label":i(o)?.nextMonth,class:ke(i(f)?.navBtnNext),onActivate:N[3]||(N[3]=T=>i(S)(!0,!0)),onSetRef:N[4]||(N[4]=T=>J(T,h.disableYearSelect?2:3))},{default:pe(()=>[h.$slots[h.vertical?"arrow-down":"arrow-right"]?le(h.$slots,h.vertical?"arrow-down":"arrow-right",{key:0}):q("",!0),h.$slots[h.vertical?"arrow-down":"arrow-right"]?q("",!0):(_(),_e(Ha(h.vertical?i(Nn):i(Rn)),{key:1}))]),_:3},8,["disabled","aria-label","class"])):q("",!0)])],64))]))}}),Fu={class:"dp__calendar_header",role:"row"},Hu={key:0,class:"dp__calendar_header_item",role:"gridcell"},Wu=["aria-label"],ju={key:0,class:"dp__calendar_item dp__week_num",role:"gridcell"},qu={class:"dp__cell_inner"},Uu=["id","aria-selected","aria-disabled","aria-label","tabindex","data-test-id","onClick","onTouchend","onKeydown","onMouseenter","onMouseleave","onMousedown"],Qu=Ge({compatConfig:{MODE:3},__name:"DpCalendar",props:{mappedDates:{type:Array,default:()=>[]},instance:{type:Number,default:0},month:{type:Number,default:0},year:{type:Number,default:0},...Dt},emits:["select-date","set-hover-date","handle-scroll","mount","handle-swipe","handle-space","tooltip-open","tooltip-close"],setup(e,{expose:t,emit:n}){const a=n,r=e,{buildMultiLevelMatrix:l}=Ht(),{defaultedTransitions:o,defaultedConfig:c,defaultedAriaLabels:u,defaultedMultiCalendars:w,defaultedWeekNumbers:m,defaultedMultiDates:d,defaultedUI:f}=Ee(r),x=G(null),$=G({bottom:"",left:"",transform:""}),C=G([]),S=G(null),O=G(!0),R=G(""),M=G({startX:0,endX:0,startY:0,endY:0}),B=G([]),U=G({left:"50%"}),Y=G(!1),y=z(()=>r.calendar?r.calendar(r.mappedDates):r.mappedDates),L=z(()=>r.dayNames?Array.isArray(r.dayNames)?r.dayNames:r.dayNames(r.locale,+r.weekStart):Ss(r.formatLocale,r.locale,+r.weekStart));at(()=>{a("mount",{cmp:"calendar",refs:C}),c.value.noSwipe||S.value&&(S.value.addEventListener("touchstart",J,{passive:!1}),S.value.addEventListener("touchend",P,{passive:!1}),S.value.addEventListener("touchmove",se,{passive:!1})),r.monthChangeOnScroll&&S.value&&S.value.addEventListener("wheel",T,{passive:!1})}),va(()=>{c.value.noSwipe||S.value&&(S.value.removeEventListener("touchstart",J),S.value.removeEventListener("touchend",P),S.value.removeEventListener("touchmove",se)),r.monthChangeOnScroll&&S.value&&S.value.removeEventListener("wheel",T)});const F=X=>X?r.vertical?"vNext":"next":r.vertical?"vPrevious":"previous",E=(X,xe)=>{if(r.transitions){const K=Ke(Rt(j(),r.month,r.year));R.value=Ue(Ke(Rt(j(),X,xe)),K)?o.value[F(!0)]:o.value[F(!1)],O.value=!1,vt(()=>{O.value=!0})}},ne=z(()=>({...f.value.calendar??{}})),ue=z(()=>X=>{const xe=As(X);return{dp__marker_dot:xe.type==="dot",dp__marker_line:xe.type==="line"}}),be=z(()=>X=>Pe(X,x.value)),g=z(()=>({dp__calendar:!0,dp__calendar_next:w.value.count>0&&r.instance!==0})),D=z(()=>X=>r.hideOffsetDates?X.current:!0),b=async(X,xe)=>{const{width:K,height:ae}=X.getBoundingClientRect();x.value=xe.value;let s={left:`${K/2}px`},oe=-50;if(await vt(),B.value[0]){const{left:I,width:De}=B.value[0].getBoundingClientRect();I<0&&(s={left:"0"},oe=0,U.value.left=`${K/2}px`),window.innerWidth{const ae=Ze(C.value[xe][K]);ae&&(X.marker?.customPosition&&X.marker?.tooltip?.length?$.value=X.marker.customPosition(ae):await b(ae,X),a("tooltip-open",X.marker))},te=async(X,xe,K)=>{if(Y.value&&d.value.enabled&&d.value.dragSelect)return a("select-date",X);if(a("set-hover-date",X),X.marker?.tooltip?.length){if(r.hideOffsetDates&&!X.current)return;await W(X,xe,K)}},V=X=>{x.value&&(x.value=null,$.value=JSON.parse(JSON.stringify({bottom:"",left:"",transform:""})),a("tooltip-close",X.marker))},J=X=>{M.value.startX=X.changedTouches[0].screenX,M.value.startY=X.changedTouches[0].screenY},P=X=>{M.value.endX=X.changedTouches[0].screenX,M.value.endY=X.changedTouches[0].screenY,h()},se=X=>{r.vertical&&!r.inline&&X.preventDefault()},h=()=>{const X=r.vertical?"Y":"X";Math.abs(M.value[`start${X}`]-M.value[`end${X}`])>10&&a("handle-swipe",M.value[`start${X}`]>M.value[`end${X}`]?"right":"left")},N=(X,xe,K)=>{X&&(Array.isArray(C.value[xe])?C.value[xe][K]=X:C.value[xe]=[X]),r.arrowNavigation&&l(C.value,"calendar")},T=X=>{r.monthChangeOnScroll&&(X.preventDefault(),a("handle-scroll",X))},re=X=>m.value.type==="local"?An(X.value,{weekStartsOn:+r.weekStart}):m.value.type==="iso"?Sn(X.value):typeof m.value.type=="function"?m.value.type(X.value):"",v=X=>{const xe=X[0];return m.value.hideOnOffsetDates?X.some(K=>K.current)?re(xe):"":re(xe)},p=(X,xe,K=!0)=>{!K&&Ys()||(!d.value.enabled||c.value.allowPreventDefault)&&(Lt(X,c.value),a("select-date",xe))},Q=X=>{Lt(X,c.value)},Ae=X=>{d.value.enabled&&d.value.dragSelect?(Y.value=!0,a("select-date",X)):d.value.enabled&&a("select-date",X)};return t({triggerTransition:E}),(X,xe)=>(_(),H("div",{class:ke(g.value)},[ve("div",{ref_key:"calendarWrapRef",ref:S,class:ke(ne.value),role:"grid"},[ve("div",Fu,[X.weekNumbers?(_(),H("div",Hu,He(X.weekNumName),1)):q("",!0),(_(!0),H(Me,null,Be(L.value,(K,ae)=>(_(),H("div",{key:ae,class:"dp__calendar_header_item",role:"gridcell","data-test-id":"calendar-header","aria-label":i(u)?.weekDay?.(ae)},[X.$slots["calendar-header"]?le(X.$slots,"calendar-header",{key:0,day:K,index:ae}):q("",!0),X.$slots["calendar-header"]?q("",!0):(_(),H(Me,{key:1},[ht(He(K),1)],64))],8,Wu))),128))]),xe[2]||(xe[2]=ve("div",{class:"dp__calendar_header_separator"},null,-1)),Ie(ya,{name:R.value,css:!!X.transitions},{default:pe(()=>[O.value?(_(),H("div",{key:0,class:"dp__calendar",role:"rowgroup",onMouseleave:xe[1]||(xe[1]=K=>Y.value=!1)},[(_(!0),H(Me,null,Be(y.value,(K,ae)=>(_(),H("div",{key:ae,class:"dp__calendar_row",role:"row"},[X.weekNumbers?(_(),H("div",ju,[ve("div",qu,He(v(K.days)),1)])):q("",!0),(_(!0),H(Me,null,Be(K.days,(s,oe)=>(_(),H("div",{id:i(Dn)(s.value),ref_for:!0,ref:I=>N(I,ae,oe),key:oe+ae,role:"gridcell",class:"dp__calendar_item","aria-selected":(s.classData.dp__active_date||s.classData.dp__range_start||s.classData.dp__range_end)??void 0,"aria-disabled":s.classData.dp__cell_disabled||void 0,"aria-label":i(u)?.day?.(s),tabindex:!s.current&&X.hideOffsetDates?void 0:0,"data-test-id":i(Dn)(s.value),onClick:xa(I=>p(I,s),["prevent"]),onTouchend:I=>p(I,s,!1),onKeydown:I=>i(it)(I,()=>X.$emit("select-date",s)),onMouseenter:I=>te(s,ae,oe),onMouseleave:I=>V(s),onMousedown:I=>Ae(s),onMouseup:xe[0]||(xe[0]=I=>Y.value=!1)},[ve("div",{class:ke(["dp__cell_inner",s.classData])},[X.$slots.day&&D.value(s)?le(X.$slots,"day",{key:0,day:+s.text,date:s.value}):q("",!0),X.$slots.day?q("",!0):(_(),H(Me,{key:1},[ht(He(s.text),1)],64)),s.marker&&D.value(s)?(_(),H(Me,{key:2},[X.$slots.marker?le(X.$slots,"marker",{key:0,marker:s.marker,day:+s.text,date:s.value}):(_(),H("div",{key:1,class:ke(ue.value(s.marker)),style:pt(s.marker.color?{backgroundColor:s.marker.color}:{})},null,6))],64)):q("",!0),be.value(s.value)?(_(),H("div",{key:3,ref_for:!0,ref_key:"activeTooltip",ref:B,class:"dp__marker_tooltip",style:pt($.value)},[s.marker?.tooltip?(_(),H("div",{key:0,class:"dp__tooltip_content",onClick:Q},[(_(!0),H(Me,null,Be(s.marker.tooltip,(I,De)=>(_(),H("div",{key:De,class:"dp__tooltip_text"},[X.$slots["marker-tooltip"]?le(X.$slots,"marker-tooltip",{key:0,tooltip:I,day:s.value}):q("",!0),X.$slots["marker-tooltip"]?q("",!0):(_(),H(Me,{key:1},[ve("div",{class:"dp__tooltip_mark",style:pt(I.color?{backgroundColor:I.color}:{})},null,4),ve("div",null,He(I.text),1)],64))]))),128)),ve("div",{class:"dp__arrow_bottom_tp",style:pt(U.value)},null,4)])):q("",!0)],4)):q("",!0)],2)],40,Uu))),128))]))),128))],32)):q("",!0)]),_:3},8,["name","css"])],2)],2))}}),mr=e=>Array.isArray(e),Xu=(e,t,n,a)=>{const r=G([]),l=G(new Date),o=G(),c=()=>P(e.isTextInputDate),{modelValue:u,calendars:w,time:m,today:d}=Oa(e,t,c),{defaultedMultiCalendars:f,defaultedStartTime:x,defaultedRange:$,defaultedConfig:C,defaultedTz:S,propDates:O,defaultedMultiDates:R}=Ee(e),{validateMonthYearInRange:M,isDisabled:B,isDateRangeAllowed:U,checkMinMaxRange:Y}=Wt(e),{updateTimeValues:y,getSetDateTime:L,setTime:F,assignStartTime:E,validateTime:ne,disabledTimesConfig:ue}=vl(e,m,u,a),be=z(()=>k=>w.value[k]?w.value[k].month:0),g=z(()=>k=>w.value[k]?w.value[k].year:0),D=k=>!C.value.keepViewOnOffsetClick||k?!0:!o.value,b=(k,ee,me,Te=!1)=>{D(Te)&&(w.value[k]||(w.value[k]={month:0,year:0}),w.value[k].month=ir(ee)?w.value[k]?.month:ee,w.value[k].year=ir(me)?w.value[k]?.year:me)},W=()=>{e.autoApply&&t("select-date")},te=()=>{x.value&&E(x.value)};at(()=>{e.shadow||(u.value||(xe(),te()),P(!0),e.focusStartDate&&e.startDate&&xe())});const V=z(()=>e.flow?.length&&!e.partialFlow?e.flowStep===e.flow.length:!0),J=()=>{e.autoApply&&V.value&&t("auto-apply",e.partialFlow?e.flowStep!==e.flow.length:!1)},P=(k=!1)=>{if(u.value)return Array.isArray(u.value)?(r.value=u.value,p(k)):N(u.value,k);if(f.value.count&&k&&!e.startDate)return h(j(),k)},se=()=>Array.isArray(u.value)&&$.value.enabled?Se(u.value[0])===Se(u.value[1]??u.value[0]):!1,h=(k=new Date,ee=!1)=>{if((!f.value.count||!f.value.static||ee)&&b(0,Se(k),we(k)),f.value.count&&(!u.value||se()||!f.value.solo)&&(!f.value.solo||ee))for(let me=1;me{h(k),F("hours",Yt(k)),F("minutes",Ft(k)),F("seconds",ua(k)),f.value.count&&ee&&X()},T=k=>{if(f.value.count){if(f.value.solo)return 0;const ee=Se(k[0]),me=Se(k[1]);return Math.abs(me-ee){k[1]&&$.value.showLastInRange?h(k[T(k)],ee):h(k[0],ee);const me=(Te,Z)=>[Te(k[0]),k[1]?Te(k[1]):m[Z][1]];F("hours",me(Yt,"hours")),F("minutes",me(Ft,"minutes")),F("seconds",me(ua,"seconds"))},v=(k,ee)=>{if(($.value.enabled||e.weekPicker)&&!R.value.enabled)return re(k,ee);if(R.value.enabled&&ee){const me=k[k.length-1];return N(me,ee)}},p=k=>{const ee=u.value;v(ee,k),f.value.count&&f.value.solo&&X()},Q=(k,ee)=>{const me=Ye(j(),{month:be.value(ee),year:g.value(ee)}),Te=k<0?xt(me,1):ca(me,1);M(Se(Te),we(Te),k<0,e.preventMinMaxNavigation)&&(b(ee,Se(Te),we(Te)),t("update-month-year",{instance:ee,month:Se(Te),year:we(Te)}),f.value.count&&!f.value.solo&&Ae(ee),n())},Ae=k=>{for(let ee=k-1;ee>=0;ee--){const me=ca(Ye(j(),{month:be.value(ee+1),year:g.value(ee+1)}),1);b(ee,Se(me),we(me))}for(let ee=k+1;ee<=f.value.count-1;ee++){const me=xt(Ye(j(),{month:be.value(ee-1),year:g.value(ee-1)}),1);b(ee,Se(me),we(me))}},X=()=>{if(Array.isArray(u.value)&&u.value.length===2){const k=j(j(u.value[1]?u.value[1]:xt(u.value[0],1))),[ee,me]=[Se(u.value[0]),we(u.value[0])],[Te,Z]=[Se(u.value[1]),we(u.value[1])];(ee!==Te||ee===Te&&me!==Z)&&f.value.solo&&b(1,Se(k),we(k))}else u.value&&!Array.isArray(u.value)&&(b(0,Se(u.value),we(u.value)),h(j()))},xe=()=>{e.startDate&&(b(0,Se(j(e.startDate)),we(j(e.startDate))),f.value.count&&Ae(0))},K=(k,ee)=>{if(e.monthChangeOnScroll){const me=new Date().getTime()-l.value.getTime(),Te=Math.abs(k.deltaY);let Z=500;Te>1&&(Z=100),Te>100&&(Z=0),me>Z&&(l.value=new Date,Q(e.monthChangeOnScroll!=="inverse"?-k.deltaY:k.deltaY,ee))}},ae=(k,ee,me=!1)=>{e.monthChangeOnArrows&&e.vertical===me&&s(k,ee)},s=(k,ee)=>{Q(k==="right"?-1:1,ee)},oe=k=>{if(O.value.markers)return La(k.value,O.value.markers)},I=(k,ee)=>{switch(e.sixWeeks===!0?"append":e.sixWeeks){case"prepend":return[!0,!1];case"center":return[k==0,!0];case"fair":return[k==0||ee>k,!0];case"append":return[!1,!1];default:return[!1,!1]}},De=(k,ee,me,Te)=>{if(e.sixWeeks&&k.length<6){const Z=6-k.length,ce=(ee.getDay()+7-Te)%7,he=6-(me.getDay()+7-Te)%7,[Ot,Tt]=I(ce,he);for(let jt=1;jt<=Z;jt++)if(Tt?!!(jt%2)==Ot:Ot){const Nt=k[0].days[0],tn=ye(yt(Nt.value,-7),Se(ee));k.unshift({days:tn})}else{const Nt=k[k.length-1],tn=Nt.days[Nt.days.length-1],hl=ye(yt(tn.value,1),Se(ee));k.push({days:hl})}}return k},ye=(k,ee)=>{const me=j(k),Te=[];for(let Z=0;Z<7;Z++){const ce=yt(me,Z),he=Se(ce)!==ee;Te.push({text:e.hideOffsetDates&&he?"":ce.getDate(),value:ce,current:!he,classData:{}})}return Te},nt=(k,ee)=>{const me=[],Te=new Date(ee,k),Z=new Date(ee,k+1,0),ce=e.weekStart,he=Mt(Te,{weekStartsOn:ce}),Ot=Tt=>{const jt=ye(Tt,k);if(me.push({days:jt}),!me[me.length-1].days.some(Nt=>Pe(Ke(Nt.value),Ke(Z)))){const Nt=yt(Tt,7);Ot(Nt)}};return Ot(he),De(me,Te,Z,ce)},je=k=>{const ee=zt(j(k.value),m.hours,m.minutes,Kt());t("date-update",ee),R.value.enabled?Hn(ee,u,R.value.limit):u.value=ee,a(),vt().then(()=>{J()})},ft=k=>$.value.noDisabledRange?al(r.value[0],k).some(ee=>B(ee)):!1,A=()=>{r.value=u.value?u.value.slice():[],r.value.length===2&&!($.value.fixedStart||$.value.fixedEnd)&&(r.value=[])},ie=(k,ee)=>{const me=[j(k.value),yt(j(k.value),+$.value.autoRange)];U(me)?(ee&&de(k.value),r.value=me):t("invalid-date",k.value)},de=k=>{const ee=Se(j(k)),me=we(j(k));if(b(0,ee,me),f.value.count>0)for(let Te=1;Te{if(ft(k.value)||!Y(k.value,u.value,$.value.fixedStart?0:1))return t("invalid-date",k.value);r.value=cl(j(k.value),u,t,$)},gt=(k,ee)=>{if(A(),$.value.autoRange)return ie(k,ee);if($.value.fixedStart||$.value.fixedEnd)return Ct(k);r.value[0]?Y(j(k.value),u.value)&&!ft(k.value)?ze(j(k.value),j(r.value[0]))?(r.value.unshift(j(k.value)),t("range-end",r.value[0])):(r.value[1]=j(k.value),t("range-end",r.value[1])):(e.autoApply&&t("auto-apply-invalid",k.value),t("invalid-date",k.value)):(r.value[0]=j(k.value),t("range-start",r.value[0]))},Kt=(k=!0)=>e.enableSeconds?Array.isArray(m.seconds)?k?m.seconds[0]:m.seconds[1]:m.seconds:0,st=k=>{r.value[k]=zt(r.value[k],m.hours[k],m.minutes[k],Kt(k!==1))},Qa=()=>{r.value[0]&&r.value[1]&&+r.value?.[0]>+r.value?.[1]&&(r.value.reverse(),t("range-start",r.value[0]),t("range-end",r.value[1]))},Xa=()=>{r.value.length&&(r.value[0]&&!r.value[1]?st(0):(st(0),st(1),a()),Qa(),u.value=r.value.slice(),qa(r.value,t,e.autoApply,e.modelAuto))},Ia=(k,ee=!1)=>{if(B(k.value)||!k.current&&e.hideOffsetDates)return t("invalid-date",k.value);if(o.value=JSON.parse(JSON.stringify(k)),!$.value.enabled)return je(k);mr(m.hours)&&mr(m.minutes)&&!R.value.enabled&&(gt(k,ee),Xa())},Ga=(k,ee)=>{b(k,ee.month,ee.year,!0),f.value.count&&!f.value.solo&&Ae(k),t("update-month-year",{instance:k,month:ee.month,year:ee.year}),n(f.value.solo?k:void 0);const me=e.flow?.length?e.flow[e.flowStep]:void 0;!ee.fromNav&&(me===lt.month||me===lt.year)&&a()},Za=(k,ee)=>{dl({value:k,modelValue:u,range:$.value.enabled,timezone:ee?void 0:S.value.timezone}),W(),e.multiCalendars&&vt().then(()=>P(!0))},Ka=()=>{const k=Bn(j(),S.value);!$.value.enabled&&!R.value.enabled?u.value=k:u.value&&Array.isArray(u.value)&&u.value[0]?R.value.enabled?u.value=[...u.value,k]:u.value=ze(k,u.value[0])?[k,u.value[0]]:[u.value[0],k]:u.value=[k],W()},Ja=()=>{if(Array.isArray(u.value))if(R.value.enabled){const k=en();u.value[u.value.length-1]=L(k)}else u.value=u.value.map((k,ee)=>k&&L(k,ee));else u.value=L(u.value);t("time-update")},en=()=>Array.isArray(u.value)&&u.value.length?u.value[u.value.length-1]:null;return{calendars:w,modelValue:u,month:be,year:g,time:m,disabledTimesConfig:ue,today:d,validateTime:ne,getCalendarDays:nt,getMarker:oe,handleScroll:K,handleSwipe:s,handleArrow:ae,selectDate:Ia,updateMonthYear:Ga,presetDate:Za,selectCurrentDate:Ka,updateTime:(k,ee=!0,me=!1)=>{y(k,ee,me,Ja)},assignMonthAndYear:h,setStartTime:te}},Gu={key:0},Zu=Ge({__name:"DatePicker",props:{...Dt},emits:["tooltip-open","tooltip-close","mount","update:internal-model-value","update-flow-step","reset-flow","auto-apply","focus-menu","select-date","range-start","range-end","invalid-fixed-range","time-update","am-pm-change","time-picker-open","time-picker-close","recalculate-position","update-month-year","auto-apply-invalid","date-update","invalid-date","overlay-toggle"],setup(e,{expose:t,emit:n}){const a=n,r=e,{calendars:l,month:o,year:c,modelValue:u,time:w,disabledTimesConfig:m,today:d,validateTime:f,getCalendarDays:x,getMarker:$,handleArrow:C,handleScroll:S,handleSwipe:O,selectDate:R,updateMonthYear:M,presetDate:B,selectCurrentDate:U,updateTime:Y,assignMonthAndYear:y,setStartTime:L}=Xu(r,a,se,h),F=Gt(),{setHoverDate:E,getDayClassData:ne,clearHoverDate:ue}=vd(u,r),{defaultedMultiCalendars:be}=Ee(r),g=G([]),D=G([]),b=G(null),W=mt(F,"calendar"),te=mt(F,"monthYear"),V=mt(F,"timePicker"),J=K=>{r.shadow||a("mount",K)};dt(l,()=>{r.shadow||setTimeout(()=>{a("recalculate-position")},0)},{deep:!0}),dt(be,(K,ae)=>{K.count-ae.count>0&&y()},{deep:!0});const P=z(()=>K=>x(o.value(K),c.value(K)).map(ae=>({...ae,days:ae.days.map(s=>(s.marker=$(s),s.classData=ne(s),s))})));function se(K){K||K===0?D.value[K]?.triggerTransition(o.value(K),c.value(K)):D.value.forEach((ae,s)=>ae.triggerTransition(o.value(s),c.value(s)))}function h(){a("update-flow-step")}const N=(K,ae=!1)=>{R(K,ae),r.spaceConfirm&&a("select-date")},T=(K,ae,s=0)=>{g.value[s]?.toggleMonthPicker(K,ae)},re=(K,ae,s=0)=>{g.value[s]?.toggleYearPicker(K,ae)},v=(K,ae,s)=>{b.value?.toggleTimePicker(K,ae,s)},p=(K,ae)=>{if(!r.range){const s=u.value?u.value:d,oe=ae?new Date(ae):s,I=K?Mt(oe,{weekStartsOn:1}):Rr(oe,{weekStartsOn:1});R({value:I,current:Se(oe)===o.value(0),text:"",classData:{}}),document.getElementById(Dn(I))?.focus()}},Q=K=>{g.value[0]?.handleMonthYearChange(K,!0)},Ae=K=>{M(0,{month:o.value(0),year:c.value(0)+(K?1:-1),fromNav:!0})},X=(K,ae)=>{K===lt.time&&a(`time-picker-${ae?"open":"close"}`),a("overlay-toggle",{open:ae,overlay:K})},xe=K=>{a("overlay-toggle",{open:!1,overlay:K}),a("focus-menu")};return t({clearHoverDate:ue,presetDate:B,selectCurrentDate:U,toggleMonthPicker:T,toggleYearPicker:re,toggleTimePicker:v,handleArrow:C,updateMonthYear:M,getSidebarProps:()=>({modelValue:u,month:o,year:c,time:w,updateTime:Y,updateMonthYear:M,selectDate:R,presetDate:B}),changeMonth:Q,changeYear:Ae,selectWeekDate:p,setStartTime:L}),(K,ae)=>(_(),H(Me,null,[Ie(ja,{"multi-calendars":i(be).count,collapse:K.collapse,"is-mobile":K.isMobile},{default:pe(({instance:s,index:oe})=>[K.disableMonthYearSelect?q("",!0):(_(),_e(zu,Ve({key:0,ref:I=>{I&&(g.value[oe]=I)},months:i(Xr)(K.formatLocale,K.locale,K.monthNameFormat),years:i(Vn)(K.yearRange,K.locale,K.reverseYears),month:i(o)(s),year:i(c)(s),instance:s},K.$props,{onMount:ae[0]||(ae[0]=I=>J(i(Ut).header)),onResetFlow:ae[1]||(ae[1]=I=>K.$emit("reset-flow")),onUpdateMonthYear:I=>i(M)(s,I),onOverlayClosed:xe,onOverlayOpened:ae[2]||(ae[2]=I=>K.$emit("overlay-toggle",{open:!0,overlay:I}))}),tt({_:2},[Be(i(te),(I,De)=>({name:I,fn:pe(ye=>[le(K.$slots,I,et(ut(ye)))])}))]),1040,["months","years","month","year","instance","onUpdateMonthYear"])),Ie(Qu,Ve({ref:I=>{I&&(D.value[oe]=I)},"mapped-dates":P.value(s),month:i(o)(s),year:i(c)(s),instance:s},K.$props,{onSelectDate:I=>i(R)(I,s!==1),onHandleSpace:I=>N(I,s!==1),onSetHoverDate:ae[3]||(ae[3]=I=>i(E)(I)),onHandleScroll:I=>i(S)(I,s),onHandleSwipe:I=>i(O)(I,s),onMount:ae[4]||(ae[4]=I=>J(i(Ut).calendar)),onResetFlow:ae[5]||(ae[5]=I=>K.$emit("reset-flow")),onTooltipOpen:ae[6]||(ae[6]=I=>K.$emit("tooltip-open",I)),onTooltipClose:ae[7]||(ae[7]=I=>K.$emit("tooltip-close",I))}),tt({_:2},[Be(i(W),(I,De)=>({name:I,fn:pe(ye=>[le(K.$slots,I,et(ut({...ye})))])}))]),1040,["mapped-dates","month","year","instance","onSelectDate","onHandleSpace","onHandleScroll","onHandleSwipe"])]),_:3},8,["multi-calendars","collapse","is-mobile"]),K.enableTimePicker?(_(),H("div",Gu,[K.$slots["time-picker"]?le(K.$slots,"time-picker",et(Ve({key:0},{time:i(w),updateTime:i(Y)}))):(_(),_e(ml,Ve({key:1,ref_key:"timePickerRef",ref:b},K.$props,{hours:i(w).hours,minutes:i(w).minutes,seconds:i(w).seconds,"internal-model-value":K.internalModelValue,"disabled-times-config":i(m),"validate-time":i(f),onMount:ae[8]||(ae[8]=s=>J(i(Ut).timePicker)),"onUpdate:hours":ae[9]||(ae[9]=s=>i(Y)(s)),"onUpdate:minutes":ae[10]||(ae[10]=s=>i(Y)(s,!1)),"onUpdate:seconds":ae[11]||(ae[11]=s=>i(Y)(s,!1,!0)),onResetFlow:ae[12]||(ae[12]=s=>K.$emit("reset-flow")),onOverlayClosed:ae[13]||(ae[13]=s=>X(s,!1)),onOverlayOpened:ae[14]||(ae[14]=s=>X(s,!0)),onAmPmChange:ae[15]||(ae[15]=s=>K.$emit("am-pm-change",s))}),tt({_:2},[Be(i(V),(s,oe)=>({name:s,fn:pe(I=>[le(K.$slots,s,et(ut(I)))])}))]),1040,["hours","minutes","seconds","internal-model-value","disabled-times-config","validate-time"]))])):q("",!0)],64))}}),Ku=(e,t)=>{const n=G(),{defaultedMultiCalendars:a,defaultedConfig:r,defaultedHighlight:l,defaultedRange:o,propDates:c,defaultedFilters:u,defaultedMultiDates:w}=Ee(e),{modelValue:m,year:d,month:f,calendars:x}=Oa(e,t),{isDisabled:$}=Wt(e),{selectYear:C,groupedYears:S,showYearPicker:O,isDisabled:R,toggleYearPicker:M,handleYearSelect:B,handleYear:U}=pl({modelValue:m,multiCalendars:a,range:o,highlight:l,calendars:x,propDates:c,month:f,year:d,filters:u,props:e,emit:t}),Y=(D,b)=>[D,b].map(W=>$t(W,"MMMM",{locale:e.formatLocale})).join("-"),y=z(()=>D=>m.value?Array.isArray(m.value)?m.value.some(b=>rr(D,b)):rr(m.value,D):!1),L=D=>{if(o.value.enabled){if(Array.isArray(m.value)){const b=Pe(D,m.value[0])||Pe(D,m.value[1]);return Ta(m.value,n.value,D)&&!b}return!1}return!1},F=(D,b)=>D.quarter===Kn(b)&&D.year===we(b),E=D=>typeof l.value=="function"?l.value({quarter:Kn(D),year:we(D)}):!!l.value.quarters.find(b=>F(b,D)),ne=z(()=>D=>{const b=Ye(new Date,{year:d.value(D)});return So({start:la(b),end:Ir(b)}).map(W=>{const te=ra(W),V=Jn(W),J=$(W),P=L(te),se=E(te);return{text:Y(te,V),value:te,active:y.value(te),highlighted:se,disabled:J,isBetween:P}})}),ue=D=>{Hn(D,m,w.value.limit),t("auto-apply",!0)},be=D=>{m.value=Wn(m,D,t),qa(m.value,t,e.autoApply,e.modelAuto)},g=D=>{m.value=D,t("auto-apply")};return{defaultedConfig:r,defaultedMultiCalendars:a,groupedYears:S,year:d,isDisabled:R,quarters:ne,showYearPicker:O,modelValue:m,setHoverDate:D=>{n.value=D},selectYear:C,selectQuarter:(D,b,W)=>{if(!W)return x.value[b].month=Se(Jn(D)),w.value.enabled?ue(D):o.value.enabled?be(D):g(D)},toggleYearPicker:M,handleYearSelect:B,handleYear:U}},Ju={class:"dp--quarter-items"},ed=["data-test-id","disabled","onClick","onMouseover"],td=Ge({compatConfig:{MODE:3},__name:"QuarterPicker",props:{...Dt},emits:["update:internal-model-value","reset-flow","overlay-closed","auto-apply","range-start","range-end","overlay-toggle","update-month-year"],setup(e,{expose:t,emit:n}){const a=n,r=e,l=Gt(),o=mt(l,"yearMode"),{defaultedMultiCalendars:c,defaultedConfig:u,groupedYears:w,year:m,isDisabled:d,quarters:f,modelValue:x,showYearPicker:$,setHoverDate:C,selectQuarter:S,toggleYearPicker:O,handleYearSelect:R,handleYear:M}=Ku(r,a);return t({getSidebarProps:()=>({modelValue:x,year:m,selectQuarter:S,handleYearSelect:R,handleYear:M})}),(B,U)=>(_(),_e(ja,{"multi-calendars":i(c).count,collapse:B.collapse,stretch:"","is-mobile":B.isMobile},{default:pe(({instance:Y})=>[ve("div",{class:"dp-quarter-picker-wrap",style:pt({minHeight:`${i(u).modeHeight}px`})},[B.$slots["top-extra"]?le(B.$slots,"top-extra",{key:0,value:B.internalModelValue}):q("",!0),ve("div",null,[Ie(ul,Ve(B.$props,{items:i(w)(Y),instance:Y,"show-year-picker":i($)[Y],year:i(m)(Y),"is-disabled":y=>i(d)(Y,y),onHandleYear:y=>i(M)(Y,y),onYearSelect:y=>i(R)(y,Y),onToggleYearPicker:y=>i(O)(Y,y?.flow,y?.show)}),tt({_:2},[Be(i(o),(y,L)=>({name:y,fn:pe(F=>[le(B.$slots,y,et(ut(F)))])}))]),1040,["items","instance","show-year-picker","year","is-disabled","onHandleYear","onYearSelect","onToggleYearPicker"])]),ve("div",Ju,[(_(!0),H(Me,null,Be(i(f)(Y),(y,L)=>(_(),H("div",{key:L},[ve("button",{type:"button",class:ke(["dp--qr-btn",{"dp--qr-btn-active":y.active,"dp--qr-btn-between":y.isBetween,"dp--qr-btn-disabled":y.disabled,"dp--highlighted":y.highlighted}]),"data-test-id":y.value,disabled:y.disabled,onClick:F=>i(S)(y.value,Y,y.disabled),onMouseover:F=>i(C)(y.value)},[B.$slots.quarter?le(B.$slots,"quarter",{key:0,value:y.value,text:y.text}):(_(),H(Me,{key:1},[ht(He(y.text),1)],64))],42,ed)]))),128))])],4)]),_:3},8,["multi-calendars","collapse","is-mobile"]))}}),yl=(e,t)=>{const n=G(0);at(()=>{a(),window.addEventListener("resize",a,{passive:!0})}),va(()=>{window.removeEventListener("resize",a)});const a=()=>{n.value=window.document.documentElement.clientWidth};return{isMobile:z(()=>n.value<=e.value.mobileBreakpoint&&!t?!0:void 0)}},ad=["id","tabindex","role","aria-label"],nd={key:0,class:"dp--menu-load-container"},rd={key:1,class:"dp--menu-header"},ld=["data-dp-mobile"],od={key:0,class:"dp__sidebar_left"},id=["data-dp-mobile"],sd=["data-test-id","data-dp-mobile","onClick","onKeydown"],ud={key:2,class:"dp__sidebar_right"},dd={key:3,class:"dp__action_extra"},vr=Ge({compatConfig:{MODE:3},__name:"DatepickerMenu",props:{...Wa,shadow:{type:Boolean,default:!1},openOnTop:{type:Boolean,default:!1},internalModelValue:{type:[Date,Array],default:null},noOverlayFocus:{type:Boolean,default:!1},collapse:{type:Boolean,default:!1},getInputRect:{type:Function,default:()=>({})},isTextInputDate:{type:Boolean,default:!1}},emits:["close-picker","select-date","auto-apply","time-update","flow-step","update-month-year","invalid-select","update:internal-model-value","recalculate-position","invalid-fixed-range","tooltip-open","tooltip-close","time-picker-open","time-picker-close","am-pm-change","range-start","range-end","auto-apply-invalid","date-update","invalid-date","overlay-toggle","menu-blur"],setup(e,{expose:t,emit:n}){const a=n,r=e,l=G(null),o=z(()=>{const{openOnTop:A,...ie}=r;return{...ie,isMobile:S.value,flowStep:be.value,menuWrapRef:l.value}}),{setMenuFocused:c,setShiftKey:u,control:w}=sl(),m=Gt(),{defaultedTextInput:d,defaultedInline:f,defaultedConfig:x,defaultedUI:$,handleEventPropagation:C}=Ee(r),{isMobile:S}=yl(x,r.shadow),O=G(null),R=G(0),M=G(null),B=G(!1),U=G(null),Y=G(!1),y=A=>{Y.value=!0,x.value.allowPreventDefault&&A.preventDefault(),Lt(A,x.value,!0)};at(()=>{if(!r.shadow){B.value=!0,L(),window.addEventListener("resize",L);const A=Ze(l);A&&!d.value.enabled&&!f.value.enabled&&(c(!0),J()),A&&(A.addEventListener("pointerdown",y),A.addEventListener("mousedown",y))}document.addEventListener("mousedown",ft)}),va(()=>{window.removeEventListener("resize",L),document.removeEventListener("mousedown",ft);const A=Ze(l);A&&(A.removeEventListener("pointerdown",y),A.removeEventListener("mousedown",y))});const L=()=>{const A=Ze(M);A&&(R.value=A.getBoundingClientRect().width)},{arrowRight:F,arrowLeft:E,arrowDown:ne,arrowUp:ue}=Ht(),{flowStep:be,updateFlowStep:g,childMount:D,resetFlow:b,handleFlow:W}=yd(r,a,U),te=z(()=>r.monthPicker?bu:r.yearPicker?ku:r.timePicker?Cu:r.quarterPicker?td:Zu),V=z(()=>{if(x.value.arrowLeft)return x.value.arrowLeft;const A=l.value?.getBoundingClientRect(),ie=r.getInputRect();return ie?.width=(A?.right??0)&&ie?.width{const A=Ze(l);A&&A.focus({preventScroll:!0})},P=z(()=>U.value?.getSidebarProps()||{}),se=()=>{r.openOnTop&&a("recalculate-position")},h=mt(m,"action"),N=z(()=>r.monthPicker||r.yearPicker?mt(m,"monthYear"):r.timePicker?mt(m,"timePicker"):mt(m,"shared")),T=z(()=>r.openOnTop?"dp__arrow_bottom":"dp__arrow_top"),re=z(()=>({dp__menu_disabled:r.disabled,dp__menu_readonly:r.readonly,"dp-menu-loading":r.loading})),v=z(()=>({dp__menu:!0,dp__menu_index:!f.value.enabled,dp__relative:f.value.enabled,...$.value.menu??{}})),p=A=>{Lt(A,x.value,!0)},Q=A=>{r.escClose&&(a("close-picker"),C(A))},Ae=A=>{if(r.arrowNavigation){if(A===ot.up)return ue();if(A===ot.down)return ne();if(A===ot.left)return E();if(A===ot.right)return F()}else A===ot.left||A===ot.up?s("handleArrow",ot.left,0,A===ot.up):s("handleArrow",ot.right,0,A===ot.down)},X=A=>{u(A.shiftKey),!r.disableMonthYearSelect&&A.code===Ne.tab&&A.target.classList.contains("dp__menu")&&w.value.shiftKeyInMenu&&(A.preventDefault(),Lt(A,x.value,!0),a("close-picker"))},xe=()=>{J(),a("time-picker-close")},K=A=>{U.value?.toggleTimePicker(!1,!1),U.value?.toggleMonthPicker(!1,!1,A),U.value?.toggleYearPicker(!1,!1,A)},ae=(A,ie=0)=>A==="month"?U.value?.toggleMonthPicker(!1,!0,ie):A==="year"?U.value?.toggleYearPicker(!1,!0,ie):A==="time"?U.value?.toggleTimePicker(!0,!1):K(ie),s=(A,...ie)=>{U.value?.[A]&&U.value?.[A](...ie)},oe=()=>{s("selectCurrentDate")},I=(A,ie)=>{s("presetDate",ro(A),ie)},De=()=>{s("clearHoverDate")},ye=(A,ie)=>{s("updateMonthYear",A,ie)},nt=(A,ie)=>{A.preventDefault(),Ae(ie)},je=A=>{if(X(A),A.key===Ne.home||A.key===Ne.end)return s("selectWeekDate",A.key===Ne.home,A.target.getAttribute("id"));switch((A.key===Ne.pageUp||A.key===Ne.pageDown)&&(A.shiftKey?(s("changeYear",A.key===Ne.pageUp),xn(l.value,"overlay-year")?.focus()):(s("changeMonth",A.key===Ne.pageUp),xn(l.value,A.key===Ne.pageUp?"action-prev":"action-next")?.focus()),A.target.getAttribute("id")&&l.value?.focus({preventScroll:!0})),A.key){case Ne.esc:return Q(A);case Ne.arrowLeft:return nt(A,ot.left);case Ne.arrowRight:return nt(A,ot.right);case Ne.arrowUp:return nt(A,ot.up);case Ne.arrowDown:return nt(A,ot.down);default:return}},ft=A=>{f.value.enabled&&!f.value.input&&!l.value?.contains(A.target)&&Y.value&&(Y.value=!1,a("menu-blur"))};return t({updateMonthYear:ye,switchView:ae,handleFlow:W,onValueCleared:()=>{U.value?.setStartTime?.()}}),(A,ie)=>(_(),H("div",{id:A.uid?`dp-menu-${A.uid}`:void 0,ref_key:"dpMenuRef",ref:l,tabindex:i(f).enabled?void 0:"0",role:i(f).enabled?void 0:"dialog","aria-label":A.ariaLabels?.menu,class:ke(v.value),style:pt({"--dp-arrow-left":V.value}),onMouseleave:De,onClick:p,onKeydown:je},[(A.disabled||A.readonly)&&i(f).enabled||A.loading?(_(),H("div",{key:0,class:ke(re.value)},[A.loading?(_(),H("div",nd,[...ie[19]||(ie[19]=[ve("span",{class:"dp--menu-loader"},null,-1)])])):q("",!0)],2)):q("",!0),A.$slots["menu-header"]?(_(),H("div",rd,[le(A.$slots,"menu-header")])):q("",!0),!i(f).enabled&&!A.teleportCenter?(_(),H("div",{key:2,class:ke(T.value)},null,2)):q("",!0),ve("div",{ref_key:"innerMenuRef",ref:M,class:ke({dp__menu_content_wrapper:A.presetDates?.length||!!A.$slots["left-sidebar"]||!!A.$slots["right-sidebar"],"dp--menu-content-wrapper-collapsed":e.collapse&&(A.presetDates?.length||!!A.$slots["left-sidebar"]||!!A.$slots["right-sidebar"])}),"data-dp-mobile":i(S),style:pt({"--dp-menu-width":`${R.value}px`})},[A.$slots["left-sidebar"]?(_(),H("div",od,[le(A.$slots,"left-sidebar",et(ut(P.value)))])):q("",!0),A.presetDates.length?(_(),H("div",{key:1,class:ke({"dp--preset-dates-collapsed":e.collapse,"dp--preset-dates":!0}),"data-dp-mobile":i(S)},[(_(!0),H(Me,null,Be(A.presetDates,(de,Ct)=>(_(),H(Me,{key:Ct},[de.slot?le(A.$slots,de.slot,{key:0,presetDate:I,label:de.label,value:de.value}):(_(),H("button",{key:1,type:"button",style:pt(de.style||{}),class:ke(["dp__btn dp--preset-range",{"dp--preset-range-collapsed":e.collapse}]),"data-test-id":de.testId??void 0,"data-dp-mobile":i(S),onClick:xa(gt=>I(de.value,de.noTz),["prevent"]),onKeydown:gt=>i(it)(gt,()=>I(de.value,de.noTz),!0)},He(de.label),47,sd))],64))),128))],10,id)):q("",!0),ve("div",{ref_key:"calendarWrapperRef",ref:O,class:"dp__instance_calendar",role:"document"},[(_(),_e(Ha(te.value),Ve({ref_key:"dynCmpRef",ref:U},o.value,{"flow-step":i(be),onMount:i(D),onUpdateFlowStep:i(g),onResetFlow:i(b),onFocusMenu:J,onSelectDate:ie[0]||(ie[0]=de=>A.$emit("select-date")),onDateUpdate:ie[1]||(ie[1]=de=>A.$emit("date-update",de)),onTooltipOpen:ie[2]||(ie[2]=de=>A.$emit("tooltip-open",de)),onTooltipClose:ie[3]||(ie[3]=de=>A.$emit("tooltip-close",de)),onAutoApply:ie[4]||(ie[4]=de=>A.$emit("auto-apply",de)),onRangeStart:ie[5]||(ie[5]=de=>A.$emit("range-start",de)),onRangeEnd:ie[6]||(ie[6]=de=>A.$emit("range-end",de)),onInvalidFixedRange:ie[7]||(ie[7]=de=>A.$emit("invalid-fixed-range",de)),onTimeUpdate:ie[8]||(ie[8]=de=>A.$emit("time-update")),onAmPmChange:ie[9]||(ie[9]=de=>A.$emit("am-pm-change",de)),onTimePickerOpen:ie[10]||(ie[10]=de=>A.$emit("time-picker-open",de)),onTimePickerClose:xe,onRecalculatePosition:se,onUpdateMonthYear:ie[11]||(ie[11]=de=>A.$emit("update-month-year",de)),onAutoApplyInvalid:ie[12]||(ie[12]=de=>A.$emit("auto-apply-invalid",de)),onInvalidDate:ie[13]||(ie[13]=de=>A.$emit("invalid-date",de)),onOverlayToggle:ie[14]||(ie[14]=de=>A.$emit("overlay-toggle",de)),"onUpdate:internalModelValue":ie[15]||(ie[15]=de=>A.$emit("update:internal-model-value",de))}),tt({_:2},[Be(N.value,(de,Ct)=>({name:de,fn:pe(gt=>[le(A.$slots,de,et(ut({...gt})))])}))]),1040,["flow-step","onMount","onUpdateFlowStep","onResetFlow"]))],512),A.$slots["right-sidebar"]?(_(),H("div",ud,[le(A.$slots,"right-sidebar",et(ut(P.value)))])):q("",!0),A.$slots["action-extra"]?(_(),H("div",dd,[A.$slots["action-extra"]?le(A.$slots,"action-extra",{key:0,selectCurrentDate:oe}):q("",!0)])):q("",!0)],14,ld),!A.autoApply||i(x).keepActionRow?(_(),_e(du,Ve({key:3,"menu-mount":B.value},o.value,{"calendar-width":R.value,onClosePicker:ie[16]||(ie[16]=de=>A.$emit("close-picker")),onSelectDate:ie[17]||(ie[17]=de=>A.$emit("select-date")),onInvalidSelect:ie[18]||(ie[18]=de=>A.$emit("invalid-select")),onSelectNow:oe}),tt({_:2},[Be(i(h),(de,Ct)=>({name:de,fn:pe(gt=>[le(A.$slots,de,et(ut({...gt})))])}))]),1040,["menu-mount","calendar-width"])):q("",!0)],46,ad))}});var aa=(e=>(e.center="center",e.left="left",e.right="right",e))(aa||{});const cd=({menuRef:e,menuRefInner:t,inputRef:n,pickerWrapperRef:a,inline:r,emit:l,props:o,slots:c})=>{const{defaultedConfig:u}=Ee(o),w=G({}),m=G(!1),d=G({top:"0",left:"0"}),f=G(!1),x=_a(o,"teleportCenter");dt(x,()=>{d.value=JSON.parse(JSON.stringify({})),U()});const $=b=>{if(o.teleport){const W=b.getBoundingClientRect();return{left:W.left+window.scrollX,top:W.top+window.scrollY}}return{top:0,left:0}},C=(b,W)=>{d.value.left=`${b+W-w.value.width}px`},S=b=>{d.value.left=`${b}px`},O=(b,W)=>{o.position===aa.left&&S(b),o.position===aa.right&&C(b,W),o.position===aa.center&&(d.value.left=`${b+W/2-w.value.width/2}px`)},R=b=>{const{width:W,height:te}=b.getBoundingClientRect(),{top:V,left:J}=$(b);return{top:+V,left:+J,width:W,height:te}},M=()=>{d.value.left="50%",d.value.top="50%",d.value.transform="translate(-50%, -50%)",d.value.position="fixed",delete d.value.opacity},B=()=>{const b=Ze(n);d.value=o.altPosition(b)},U=(b=!0)=>{if(!r.value.enabled){if(x.value)return M();if(o.altPosition!==null)return B();if(b){const W=o.teleport?t.value?.$el:e.value;W&&(w.value=W.getBoundingClientRect()),l("recalculate-position")}return ue()}},Y=({inputEl:b,left:W,width:te})=>{window.screen.width>768&&!m.value&&O(W,te),F(b)},y=b=>{const{top:W,left:te,height:V,width:J}=R(b);d.value.top=`${V+W+ +o.offset}px`,f.value=!1,m.value||(d.value.left=`${te+J/2-w.value.width/2}px`),Y({inputEl:b,left:te,width:J})},L=b=>{const{top:W,left:te,width:V}=R(b);d.value.top=`${W-+o.offset-w.value.height}px`,f.value=!0,Y({inputEl:b,left:te,width:V})},F=b=>{if(o.autoPosition){const{left:W,width:te}=R(b),{left:V,right:J}=w.value;if(!m.value){if(Math.abs(V)!==Math.abs(J)){if(V<=0)return m.value=!0,S(W);if(J>=document.documentElement.clientWidth)return m.value=!0,C(W,te)}return O(W,te)}}},E=()=>{const b=Ze(n);if(b){if(o.autoPosition===wt.top)return wt.top;if(o.autoPosition===wt.bottom)return wt.bottom;const{height:W}=w.value,{top:te,height:V}=b.getBoundingClientRect(),J=window.innerHeight-te-V,P=te;return W<=J?wt.bottom:W>J&&W<=P?wt.top:J>=P?wt.bottom:wt.top}return wt.bottom},ne=b=>E()===wt.bottom?y(b):L(b),ue=()=>{const b=Ze(n);if(b)return o.autoPosition?ne(b):y(b)},be=function(b){if(b){const W=b.scrollHeight>b.clientHeight,te=window.getComputedStyle(b).overflowY.indexOf("hidden")!==-1;return W&&!te}return!0},g=function(b){return!b||b===document.body||b.nodeType===Node.DOCUMENT_FRAGMENT_NODE?window:be(b)?b:g(b.assignedSlot&&u.value.shadowDom?b.assignedSlot.parentNode:b.parentNode)},D=b=>{if(b)switch(o.position){case aa.left:return{left:0,transform:"translateX(0)"};case aa.right:return{left:`${b.width}px`,transform:"translateX(-100%)"};default:return{left:`${b.width/2}px`,transform:"translateX(-50%)"}}return{}};return{openOnTop:f,menuStyle:d,xCorrect:m,setMenuPosition:U,getScrollableParent:g,shadowRender:(b,W,te)=>{const V=document.createElement("div"),J=Ze(n)?.getBoundingClientRect();V.setAttribute("id","dp--temp-container");const P=a.value?.clientWidth?a.value:document.body;P.append(V);const se=D(J),h=u.value.shadowDom?Object.keys(c).filter(T=>["right-sidebar","left-sidebar","top-extra","action-extra"].includes(T)):Object.keys(c),N=no(W,{...te,shadow:!0,style:{opacity:0,position:"absolute",...se}},Object.fromEntries(h.map(T=>[T,c[T]])));b!=null&&(N.appContext=b.appContext),Un(N,V),w.value=N.el?.getBoundingClientRect(),Un(null,V),P.removeChild(V)}}},Vt=[{name:"clock-icon",use:["time","calendar","shared"]},{name:"arrow-left",use:["month-year","calendar","shared","year-mode"]},{name:"arrow-right",use:["month-year","calendar","shared","year-mode"]},{name:"arrow-up",use:["time","calendar","month-year","shared"]},{name:"arrow-down",use:["time","calendar","month-year","shared"]},{name:"calendar-icon",use:["month-year","time","calendar","shared","year-mode"]},{name:"day",use:["calendar","shared"]},{name:"month-overlay-value",use:["calendar","month-year","shared"]},{name:"year-overlay-value",use:["calendar","month-year","shared","year-mode"]},{name:"year-overlay",use:["month-year","shared"]},{name:"month-overlay",use:["month-year","shared"]},{name:"month-overlay-header",use:["month-year","shared"]},{name:"year-overlay-header",use:["month-year","shared"]},{name:"hours-overlay-value",use:["calendar","time","shared"]},{name:"hours-overlay-header",use:["calendar","time","shared"]},{name:"minutes-overlay-value",use:["calendar","time","shared"]},{name:"minutes-overlay-header",use:["calendar","time","shared"]},{name:"seconds-overlay-value",use:["calendar","time","shared"]},{name:"seconds-overlay-header",use:["calendar","time","shared"]},{name:"hours",use:["calendar","time","shared"]},{name:"minutes",use:["calendar","time","shared"]},{name:"month",use:["calendar","month-year","shared"]},{name:"year",use:["calendar","month-year","shared","year-mode"]},{name:"action-buttons",use:["action"]},{name:"action-preview",use:["action"]},{name:"calendar-header",use:["calendar","shared"]},{name:"marker-tooltip",use:["calendar","shared"]},{name:"action-extra",use:["menu"]},{name:"time-picker-overlay",use:["calendar","time","shared"]},{name:"am-pm-button",use:["calendar","time","shared"]},{name:"left-sidebar",use:["menu"]},{name:"right-sidebar",use:["menu"]},{name:"month-year",use:["month-year","shared"]},{name:"time-picker",use:["menu","shared"]},{name:"action-row",use:["action"]},{name:"marker",use:["calendar","shared"]},{name:"quarter",use:["shared"]},{name:"top-extra",use:["shared","month-year"]},{name:"tp-inline-arrow-up",use:["shared","time"]},{name:"tp-inline-arrow-down",use:["shared","time"]},{name:"menu-header",use:["menu"]}],pd=[{name:"trigger"},{name:"input-icon"},{name:"clear-icon"},{name:"dp-input"}],md={all:()=>Vt,monthYear:()=>Vt.filter(e=>e.use.includes("month-year")),input:()=>pd,timePicker:()=>Vt.filter(e=>e.use.includes("time")),action:()=>Vt.filter(e=>e.use.includes("action")),calendar:()=>Vt.filter(e=>e.use.includes("calendar")),menu:()=>Vt.filter(e=>e.use.includes("menu")),shared:()=>Vt.filter(e=>e.use.includes("shared")),yearMode:()=>Vt.filter(e=>e.use.includes("year-mode"))},mt=(e,t,n)=>{const a=[];return md[t]().forEach(r=>{e[r.name]&&a.push(r.name)}),n?.length&&n.forEach(r=>{r.slot&&a.push(r.slot)}),a},$a=e=>{const t=z(()=>a=>e.value?a?e.value.open:e.value.close:""),n=z(()=>a=>e.value?a?e.value.menuAppearTop:e.value.menuAppearBottom:"");return{transitionName:t,showTransition:!!e.value,menuTransition:n}},Oa=(e,t,n)=>{const{defaultedRange:a,defaultedTz:r}=Ee(e),l=j(ct(j(),r.value.timezone)),o=G([{month:Se(l),year:we(l)}]),c=f=>{const x={hours:Yt(l),minutes:Ft(l),seconds:0};return a.value.enabled?[x[f],x[f]]:x[f]},u=Sa({hours:c("hours"),minutes:c("minutes"),seconds:c("seconds")});dt(a,(f,x)=>{f.enabled!==x.enabled&&(u.hours=c("hours"),u.minutes=c("minutes"),u.seconds=c("seconds"))},{deep:!0});const w=z({get:()=>e.internalModelValue,set:f=>{!e.readonly&&!e.disabled&&t("update:internal-model-value",f)}}),m=z(()=>f=>o.value[f]?o.value[f].month:0),d=z(()=>f=>o.value[f]?o.value[f].year:0);return dt(w,(f,x)=>{n&&JSON.stringify(f??{})!==JSON.stringify(x??{})&&n()},{deep:!0}),{calendars:o,time:u,modelValue:w,month:m,year:d,today:l}},vd=(e,t)=>{const{defaultedMultiCalendars:n,defaultedMultiDates:a,defaultedUI:r,defaultedHighlight:l,defaultedTz:o,propDates:c,defaultedRange:u}=Ee(t),{isDisabled:w}=Wt(t),m=G(null),d=G(ct(new Date,o.value.timezone)),f=v=>{!v.current&&t.hideOffsetDates||(m.value=v.value)},x=()=>{m.value=null},$=v=>Array.isArray(e.value)&&u.value.enabled&&e.value[0]&&m.value?v?Ue(m.value,e.value[0]):ze(m.value,e.value[0]):!0,C=(v,p)=>{const Q=()=>e.value?p?e.value[0]||null:e.value[1]:null,Ae=e.value&&Array.isArray(e.value)?Q():null;return Pe(j(v.value),Ae)},S=v=>{const p=Array.isArray(e.value)?e.value[0]:null;return v?!ze(m.value??null,p):!0},O=(v,p=!0)=>(u.value.enabled||t.weekPicker)&&Array.isArray(e.value)&&e.value.length===2?t.hideOffsetDates&&!v.current?!1:Pe(j(v.value),e.value[p?0:1]):u.value.enabled?C(v,p)&&S(p)||Pe(v.value,Array.isArray(e.value)?e.value[0]:null)&&$(p):!1,R=(v,p)=>{if(Array.isArray(e.value)&&e.value[0]&&e.value.length===1){const Q=Pe(v.value,m.value);return p?Ue(e.value[0],v.value)&&Q:ze(e.value[0],v.value)&&Q}return!1},M=v=>!e.value||t.hideOffsetDates&&!v.current?!1:u.value.enabled?t.modelAuto&&Array.isArray(e.value)?Pe(v.value,e.value[0]?e.value[0]:d.value):!1:a.value.enabled&&Array.isArray(e.value)?e.value.some(p=>Pe(p,v.value)):Pe(v.value,e.value?e.value:d.value),B=v=>{if(u.value.autoRange||t.weekPicker){if(m.value){if(t.hideOffsetDates&&!v.current)return!1;const p=yt(m.value,+u.value.autoRange),Q=It(j(m.value),t.weekStart);return t.weekPicker?Pe(Q[1],j(v.value)):Pe(p,j(v.value))}return!1}return!1},U=v=>{if(u.value.autoRange||t.weekPicker){if(m.value){const p=yt(m.value,+u.value.autoRange);if(t.hideOffsetDates&&!v.current)return!1;const Q=It(j(m.value),t.weekStart);return t.weekPicker?Ue(v.value,Q[0])&&ze(v.value,Q[1]):Ue(v.value,m.value)&&ze(v.value,p)}return!1}return!1},Y=v=>{if(u.value.autoRange||t.weekPicker){if(m.value){if(t.hideOffsetDates&&!v.current)return!1;const p=It(j(m.value),t.weekStart);return t.weekPicker?Pe(p[0],v.value):Pe(m.value,v.value)}return!1}return!1},y=v=>Ta(e.value,m.value,v.value),L=()=>t.modelAuto&&Array.isArray(t.internalModelValue)?!!t.internalModelValue[0]:!1,F=()=>t.modelAuto?Gr(t.internalModelValue):!0,E=v=>{if(t.weekPicker)return!1;const p=u.value.enabled?!O(v)&&!O(v,!1):!0;return!w(v.value)&&!M(v)&&!(!v.current&&t.hideOffsetDates)&&p},ne=v=>u.value.enabled?t.modelAuto?L()&&M(v):!1:M(v),ue=v=>l.value?Rs(v.value,c.value.highlight):!1,be=v=>{const p=w(v.value);return p&&(typeof l.value=="function"?!l.value(v.value,p):!l.value.options.highlightDisabled)},g=v=>typeof l.value=="function"?l.value(v.value):l.value.weekdays?.includes(v.value.getDay()),D=v=>(u.value.enabled||t.weekPicker)&&(!(n.value.count>0)||v.current)&&F()&&!(!v.current&&t.hideOffsetDates)&&!M(v)?y(v):!1,b=v=>{if(Array.isArray(e.value)&&e.value.length===1){const{before:p,after:Q}=dr(+u.value.maxRange,e.value[0]);return da(v.value,p)||Xt(v.value,Q)}return!1},W=v=>{if(Array.isArray(e.value)&&e.value.length===1){const{before:p,after:Q}=dr(+u.value.minRange,e.value[0]);return Ta([p,Q],e.value[0],v.value)}return!1},te=v=>u.value.enabled&&(u.value.maxRange||u.value.minRange)?u.value.maxRange&&u.value.minRange?b(v)||W(v):u.value.maxRange?b(v):W(v):!1,V=v=>{const{isRangeStart:p,isRangeEnd:Q}=h(v),Ae=u.value.enabled?p||Q:!1;return{dp__cell_offset:!v.current,dp__pointer:!t.disabled&&!(!v.current&&t.hideOffsetDates)&&!w(v.value)&&!te(v),dp__cell_disabled:w(v.value)||te(v),dp__cell_highlight:!be(v)&&(ue(v)||g(v))&&!ne(v)&&!Ae&&!Y(v)&&!(D(v)&&t.weekPicker)&&!Q,dp__cell_highlight_active:!be(v)&&(ue(v)||g(v))&&ne(v),dp__today:!t.noToday&&Pe(v.value,d.value)&&v.current,"dp--past":ze(v.value,d.value),"dp--future":Ue(v.value,d.value)}},J=v=>({dp__active_date:ne(v),dp__date_hover:E(v)}),P=v=>{if(e.value&&!Array.isArray(e.value)){const p=It(e.value,t.weekStart);return{...T(v),dp__range_start:Pe(p[0],v.value),dp__range_end:Pe(p[1],v.value),dp__range_between_week:Ue(v.value,p[0])&&ze(v.value,p[1])}}return{...T(v)}},se=v=>{if(e.value&&Array.isArray(e.value)){const p=It(e.value[0],t.weekStart),Q=e.value[1]?It(e.value[1],t.weekStart):[];return{...T(v),dp__range_start:Pe(p[0],v.value)||Pe(Q[0],v.value),dp__range_end:Pe(p[1],v.value)||Pe(Q[1],v.value),dp__range_between_week:Ue(v.value,p[0])&&ze(v.value,p[1])||Ue(v.value,Q[0])&&ze(v.value,Q[1]),dp__range_between:Ue(v.value,p[1])&&ze(v.value,Q[0])}}return{...T(v)}},h=v=>{const p=n.value.count>0?v.current&&O(v)&&F():O(v)&&F(),Q=n.value.count>0?v.current&&O(v,!1)&&F():O(v,!1)&&F();return{isRangeStart:p,isRangeEnd:Q}},N=v=>{const{isRangeStart:p,isRangeEnd:Q}=h(v);return{dp__range_start:p,dp__range_end:Q,dp__range_between:D(v),dp__date_hover:Pe(v.value,m.value)&&!p&&!Q&&!t.weekPicker,dp__date_hover_start:R(v,!0),dp__date_hover_end:R(v,!1)}},T=v=>({...N(v),dp__cell_auto_range:U(v),dp__cell_auto_range_start:Y(v),dp__cell_auto_range_end:B(v)}),re=v=>u.value.enabled?u.value.autoRange?T(v):t.modelAuto?{...J(v),...N(v)}:t.weekPicker?se(v):N(v):t.weekPicker?P(v):J(v);return{setHoverDate:f,clearHoverDate:x,getDayClassData:v=>t.hideOffsetDates&&!v.current?{}:{...V(v),...re(v),[t.dayClass?t.dayClass(v.value,t.internalModelValue):""]:!0,...r.value.calendarCell??{}}}},Wt=e=>{const{defaultedFilters:t,defaultedRange:n,propDates:a,defaultedMultiDates:r}=Ee(e),l=g=>a.value.disabledDates?typeof a.value.disabledDates=="function"?a.value.disabledDates(j(g)):!!La(g,a.value.disabledDates):!1,o=g=>a.value.maxDate?e.yearPicker?we(g)>we(a.value.maxDate):Ue(g,a.value.maxDate):!1,c=g=>a.value.minDate?e.yearPicker?we(g){const D=o(g),b=c(g),W=l(g),te=t.value.months.map(h=>+h).includes(Se(g)),V=e.disabledWeekDays.length?e.disabledWeekDays.some(h=>+h===wi(g)):!1,J=x(g),P=we(g),se=il(e.yearRange,P);return!(D||b||W||te||se||V||J)},w=(g,D)=>ze(...Et(a.value.minDate,g,D))||Pe(...Et(a.value.minDate,g,D)),m=(g,D)=>Ue(...Et(a.value.maxDate,g,D))||Pe(...Et(a.value.maxDate,g,D)),d=(g,D,b)=>{let W=!1;return a.value.maxDate&&b&&m(g,D)&&(W=!0),a.value.minDate&&!b&&w(g,D)&&(W=!0),W},f=(g,D,b,W)=>{let te=!1;return W&&(a.value.minDate||a.value.maxDate)?a.value.minDate&&a.value.maxDate?te=d(g,D,b):(a.value.minDate&&w(g,D)||a.value.maxDate&&m(g,D))&&(te=!0):te=!0,te},x=g=>Array.isArray(a.value.allowedDates)&&!a.value.allowedDates.length?!0:a.value.allowedDates?!La(g,a.value.allowedDates,Kr(e.monthPicker,e.yearPicker)):!1,$=g=>!u(g),C=g=>n.value.noDisabledRange?!Or({start:g[0],end:g[1]}).some(D=>$(D)):!0,S=g=>{if(g){const D=we(g);return D>=+e.yearRange[0]&&D<=e.yearRange[1]}return!0},O=(g,D)=>!!(Array.isArray(g)&&g[D]&&(n.value.maxRange||n.value.minRange)&&S(g[D])),R=(g,D,b=0)=>{if(O(D,b)&&S(g)){const W=Pr(g,D[b]),te=al(D[b],g),V=te.length===1?0:te.filter(P=>$(P)).length,J=Math.abs(W)-(n.value.minMaxRawRange?0:V);if(n.value.minRange&&n.value.maxRange)return J>=+n.value.minRange&&J<=+n.value.maxRange;if(n.value.minRange)return J>=+n.value.minRange;if(n.value.maxRange)return J<=+n.value.maxRange}return!0},M=()=>!e.enableTimePicker||e.monthPicker||e.yearPicker||e.ignoreTimeValidation,B=g=>Array.isArray(g)?[g[0]?cn(g[0]):null,g[1]?cn(g[1]):null]:cn(g),U=(g,D,b)=>g.find(W=>+W.hours===Yt(D)&&W.minutes==="*"?!0:+W.minutes===Ft(D)&&+W.hours===Yt(D))&&b,Y=(g,D,b)=>{const[W,te]=g,[V,J]=D;return!U(W,V,b)&&!U(te,J,b)&&b},y=(g,D)=>{const b=Array.isArray(D)?D:[D];return Array.isArray(e.disabledTimes)?Array.isArray(e.disabledTimes[0])?Y(e.disabledTimes,b,g):!b.some(W=>U(e.disabledTimes,W,g)):g},L=(g,D)=>{const b=Array.isArray(D)?[Qt(D[0]),D[1]?Qt(D[1]):void 0]:Qt(D),W=!e.disabledTimes(b);return g&&W},F=(g,D)=>e.disabledTimes?Array.isArray(e.disabledTimes)?y(D,g):L(D,g):D,E=g=>{let D=!0;if(!g||M())return!0;const b=!a.value.minDate&&!a.value.maxDate?B(g):g;return(e.maxTime||a.value.maxDate)&&(D=ur(e.maxTime,a.value.maxDate,"max",Je(b),D)),(e.minTime||a.value.minDate)&&(D=ur(e.minTime,a.value.minDate,"min",Je(b),D)),F(g,D)},ne=g=>{if(!e.monthPicker)return!0;let D=!0;const b=j(_t(g));if(a.value.minDate&&a.value.maxDate){const W=j(_t(a.value.minDate)),te=j(_t(a.value.maxDate));return Ue(b,W)&&ze(b,te)||Pe(b,W)||Pe(b,te)}if(a.value.minDate){const W=j(_t(a.value.minDate));D=Ue(b,W)||Pe(b,W)}if(a.value.maxDate){const W=j(_t(a.value.maxDate));D=ze(b,W)||Pe(b,W)}return D},ue=z(()=>g=>!e.enableTimePicker||e.ignoreTimeValidation?!0:E(g)),be=z(()=>g=>e.monthPicker?Array.isArray(g)&&(n.value.enabled||r.value.enabled)?!g.filter(D=>!ne(D)).length:ne(g):!0);return{isDisabled:$,validateDate:u,validateMonthYearInRange:f,isDateRangeAllowed:C,checkMinMaxRange:R,isValidTime:E,isTimeValid:ue,isMonthValid:be}},Ua=()=>{const e=z(()=>(a,r)=>a?.includes(r)),t=z(()=>(a,r)=>a.count?a.solo?!0:r===0:!0),n=z(()=>(a,r)=>a.count?a.solo?!0:r===a.count-1:!0);return{hideNavigationButtons:e,showLeftIcon:t,showRightIcon:n}},yd=(e,t,n)=>{const a=G(0),r=Sa({[Ut.timePicker]:!e.enableTimePicker||e.timePicker||e.monthPicker,[Ut.calendar]:!1,[Ut.header]:!1}),l=z(()=>e.monthPicker||e.timePicker),o=d=>{if(e.flow?.length){if(!d&&l.value)return m();r[d]=!0,Object.keys(r).filter(f=>!r[f]).length||m()}},c=()=>{e.flow?.length&&a.value!==-1&&(a.value+=1,t("flow-step",a.value),m()),e.flow?.length===a.value&&vt().then(()=>u())},u=()=>{a.value=-1},w=(d,f,...x)=>{e.flow[a.value]===d&&n.value&&n.value[f]?.(...x)},m=(d=0)=>{d&&(a.value+=d),w(lt.month,"toggleMonthPicker",!0),w(lt.year,"toggleYearPicker",!0),w(lt.calendar,"toggleTimePicker",!1,!0),w(lt.time,"toggleTimePicker",!0,!0);const f=e.flow[a.value];(f===lt.hours||f===lt.minutes||f===lt.seconds)&&w(f,"toggleTimePicker",!0,!0,f)};return{childMount:o,updateFlowStep:c,resetFlow:u,handleFlow:m,flowStep:a}},hd={key:1,class:"dp__input_wrap"},fd=["id","name","inputmode","placeholder","disabled","readonly","required","value","autocomplete","aria-label","aria-disabled","aria-invalid"],gd={key:2,class:"dp--clear-btn"},bd=["aria-label"],wd=Ge({compatConfig:{MODE:3},__name:"DatepickerInput",props:{isMenuOpen:{type:Boolean,default:!1},inputValue:{type:String,default:""},...Wa},emits:["clear","open","update:input-value","set-input-date","close","select-date","set-empty-date","toggle","focus-prev","focus","blur","real-blur","text-input"],setup(e,{expose:t,emit:n}){const a=n,r=e,{defaultedTextInput:l,defaultedAriaLabels:o,defaultedInline:c,defaultedConfig:u,defaultedRange:w,defaultedMultiDates:m,defaultedUI:d,getDefaultPattern:f,getDefaultStartTime:x}=Ee(r),{checkMinMaxRange:$}=Wt(r),C=G(),S=G(null),O=G(!1),R=G(!1),M=z(()=>({dp__pointer:!r.disabled&&!r.readonly&&!l.value.enabled,dp__disabled:r.disabled,dp__input_readonly:!l.value.enabled,dp__input:!0,dp__input_not_clearable:!r.clearable,dp__input_icon_pad:!r.hideInputIcon,dp__input_valid:typeof r.state=="boolean"?r.state:!1,dp__input_invalid:typeof r.state=="boolean"?!r.state:!1,dp__input_focus:O.value||r.isMenuOpen,dp__input_reg:!l.value.enabled,...d.value.input??{}})),B=()=>{a("set-input-date",null),r.clearable&&r.autoApply&&(a("set-empty-date"),C.value=null)},U=P=>{const se=x();return Cs(P,l.value.format??f(),se??nl({},r.enableSeconds),r.inputValue,R.value,r.formatLocale)},Y=P=>{const{rangeSeparator:se}=l.value,[h,N]=P.split(`${se}`);if(h){const T=U(h.trim()),re=N?U(N.trim()):void 0;if(Xt(T,re))return;const v=T&&re?[T,re]:[T];$(re,v,0)&&(C.value=T?v:null)}},y=()=>{R.value=!0},L=P=>{if(w.value.enabled)Y(P);else if(m.value.enabled){const se=P.split(";");C.value=se.map(h=>U(h.trim())).filter(h=>h)}else C.value=U(P)},F=P=>{const se=typeof P=="string"?P:P.target?.value;se!==""?(l.value.openMenu&&!r.isMenuOpen&&a("open"),L(se),a("set-input-date",C.value)):B(),R.value=!1,a("update:input-value",se),a("text-input",P,C.value)},E=P=>{l.value.enabled?(L(P.target.value),l.value.enterSubmit&&Mn(C.value)&&r.inputValue!==""?(a("set-input-date",C.value,!0),C.value=null):l.value.enterSubmit&&r.inputValue===""&&(C.value=null,a("clear"))):be(P)},ne=(P,se)=>{l.value.enabled&&l.value.tabSubmit&&!se&&L(P.target.value),l.value.tabSubmit&&Mn(C.value)&&r.inputValue!==""?(a("set-input-date",C.value,!0,!0),C.value=null):l.value.tabSubmit&&r.inputValue===""&&(C.value=null,a("clear",!0))},ue=()=>{O.value=!0,a("focus"),vt().then(()=>{l.value.enabled&&l.value.selectOnFocus&&S.value?.select()})},be=P=>{if(Lt(P,u.value,!0),l.value.enabled&&l.value.openMenu&&!c.value.input){if(l.value.openMenu==="open"&&!r.isMenuOpen)return a("open");if(l.value.openMenu==="toggle")return a("toggle")}else l.value.enabled||a("toggle")},g=()=>{a("real-blur"),O.value=!1,(!r.isMenuOpen||c.value.enabled&&c.value.input)&&a("blur"),r.autoApply&&l.value.enabled&&C.value&&!r.isMenuOpen&&(a("set-input-date",C.value),a("select-date"),C.value=null)},D=P=>{Lt(P,u.value,!0),a("clear")},b=()=>{a("close")},W=P=>{if(P.key==="Tab"&&ne(P),P.key==="Enter"&&E(P),P.key==="Escape"&&l.value.escClose&&b(),!l.value.enabled){if(P.code==="Tab")return;P.preventDefault()}},te=()=>{S.value?.focus({preventScroll:!0})},V=P=>{C.value=P},J=P=>{P.key===Ne.tab&&ne(P,!0)};return t({focusInput:te,setParsedDate:V}),(P,se)=>(_(),H("div",{onClick:be},[P.$slots.trigger&&!P.$slots["dp-input"]&&!i(c).enabled?le(P.$slots,"trigger",{key:0}):q("",!0),!P.$slots.trigger&&(!i(c).enabled||i(c).input)?(_(),H("div",hd,[P.$slots["dp-input"]&&!P.$slots.trigger&&(!i(c).enabled||i(c).enabled&&i(c).input)?le(P.$slots,"dp-input",{key:0,value:e.inputValue,isMenuOpen:e.isMenuOpen,onInput:F,onEnter:E,onTab:ne,onClear:D,onBlur:g,onKeypress:W,onPaste:y,onFocus:ue,openMenu:()=>P.$emit("open"),closeMenu:()=>P.$emit("close"),toggleMenu:()=>P.$emit("toggle")}):q("",!0),P.$slots["dp-input"]?q("",!0):(_(),H("input",{key:1,id:P.uid?`dp-input-${P.uid}`:void 0,ref_key:"inputRef",ref:S,"data-test-id":"dp-input",name:P.name,class:ke(M.value),inputmode:i(l).enabled?"text":"none",placeholder:P.placeholder,disabled:P.disabled,readonly:P.readonly,required:P.required,value:e.inputValue,autocomplete:P.autocomplete,"aria-label":i(o)?.input,"aria-disabled":P.disabled||void 0,"aria-invalid":P.state===!1?!0:void 0,onInput:F,onBlur:g,onFocus:ue,onKeypress:W,onKeydown:se[0]||(se[0]=h=>W(h)),onPaste:y},null,42,fd)),ve("div",{onClick:se[3]||(se[3]=h=>a("toggle"))},[P.$slots["input-icon"]&&!P.hideInputIcon?(_(),H("span",{key:0,class:"dp__input_icon",onClick:se[1]||(se[1]=h=>a("toggle"))},[le(P.$slots,"input-icon")])):q("",!0),!P.$slots["input-icon"]&&!P.hideInputIcon&&!P.$slots["dp-input"]?(_(),_e(i(ha),{key:1,"aria-label":i(o)?.calendarIcon,class:"dp__input_icon dp__input_icons",onClick:se[2]||(se[2]=h=>a("toggle"))},null,8,["aria-label"])):q("",!0)]),P.$slots["clear-icon"]&&(P.alwaysClearable||e.inputValue&&P.clearable&&!P.disabled&&!P.readonly)?(_(),H("span",gd,[le(P.$slots,"clear-icon",{clear:D})])):q("",!0),!P.$slots["clear-icon"]&&(P.alwaysClearable||P.clearable&&e.inputValue&&!P.disabled&&!P.readonly)?(_(),H("button",{key:3,"aria-label":i(o)?.clearInput,class:"dp--clear-btn",type:"button",onKeydown:se[4]||(se[4]=h=>i(it)(h,()=>D(h),!0,J)),onClick:se[5]||(se[5]=xa(h=>D(h),["prevent"]))},[Ie(i(Qr),{class:"dp__input_icons","data-test-id":"clear-icon"})],40,bd)):q("",!0)])):q("",!0)]))}}),kd=typeof window<"u"?window:void 0,fn=()=>{},_d=e=>lo()?(oo(e),!0):!1,xd=(e,t,n,a)=>{if(!e)return fn;let r=fn;const l=dt(()=>i(e),c=>{r(),c&&(c.removeEventListener(t,n),c.addEventListener(t,n,a),r=()=>{c.removeEventListener(t,n,a),r=fn})},{immediate:!0,flush:"post"}),o=()=>{l(),r()};return _d(o),o},Md=(e,t,n,a={})=>{const{window:r=kd,event:l="pointerdown"}=a;return r?xd(r,l,o=>{const c=Ze(e),u=Ze(t);!c||!u||c===o.target||o.composedPath().includes(c)||o.composedPath().includes(u)||n(o)},{passive:!0}):void 0},Dd=["data-dp-mobile"],Td=Ge({compatConfig:{MODE:3},__name:"VueDatePicker",props:{...Wa},emits:["update:model-value","update:model-timezone-value","text-submit","closed","cleared","open","focus","blur","internal-model-change","recalculate-position","flow-step","update-month-year","invalid-select","invalid-fixed-range","tooltip-open","tooltip-close","time-picker-open","time-picker-close","am-pm-change","range-start","range-end","date-update","invalid-date","overlay-toggle","text-input"],setup(e,{expose:t,emit:n}){const a=n,r=e,l=Gt(),o=G(!1),c=_a(r,"modelValue"),u=_a(r,"timezone"),w=G(null),m=G(null),d=G(null),f=G(!1),x=G(null),$=G(!1),C=G(!1),S=G(!1),O=G(!1),{setMenuFocused:R,setShiftKey:M}=sl(),{clearArrowNav:B}=Ht(),{validateDate:U,isValidTime:Y}=Wt(r),{defaultedTransitions:y,defaultedTextInput:L,defaultedInline:F,defaultedConfig:E,defaultedRange:ne,defaultedMultiDates:ue}=Ee(r),{menuTransition:be,showTransition:g}=$a(y),{isMobile:D}=yl(E),b=ao();at(()=>{v(r.modelValue),vt().then(()=>{F.value.enabled||(h(x.value)?.addEventListener("scroll",I),window?.addEventListener("resize",De))}),F.value.enabled&&(o.value=!0),window?.addEventListener("keyup",ye),window?.addEventListener("keydown",nt)}),va(()=>{F.value.enabled||(h(x.value)?.removeEventListener("scroll",I),window?.removeEventListener("resize",De)),window?.removeEventListener("keyup",ye),window?.removeEventListener("keydown",nt)});const W=mt(l,"all",r.presetDates),te=mt(l,"input");dt([c,u],()=>{v(c.value)},{deep:!0});const{openOnTop:V,menuStyle:J,xCorrect:P,setMenuPosition:se,getScrollableParent:h,shadowRender:N}=cd({menuRef:w,menuRefInner:m,inputRef:d,pickerWrapperRef:x,inline:F,emit:a,props:r,slots:l}),{inputValue:T,internalModelValue:re,parseExternalModelValue:v,emitModelValue:p,formatInputValue:Q,checkBeforeEmit:Ae}=ou(a,r,{isInputFocused:f,isTextInputDate:O}),X=z(()=>({dp__main:!0,dp__theme_dark:r.dark,dp__theme_light:!r.dark,dp__flex_display:F.value.enabled,"dp--flex-display-collapsed":S.value,dp__flex_display_with_input:F.value.input})),xe=z(()=>r.dark?"dp__theme_dark":"dp__theme_light"),K=z(()=>r.teleport?{to:typeof r.teleport=="boolean"?"body":r.teleport,disabled:!r.teleport||F.value.enabled}:{}),ae=z(()=>({class:"dp__outer_menu_wrap"})),s=z(()=>F.value.enabled&&(r.timePicker||r.monthPicker||r.yearPicker||r.quarterPicker)),oe=()=>d.value?.$el?.getBoundingClientRect()??{width:0,left:0,right:0},I=()=>{o.value&&(E.value.closeOnScroll?st():se())},De=()=>{o.value&&se();const Z=m.value?.$el.getBoundingClientRect().width??0;S.value=document.body.offsetWidth<=Z},ye=Z=>{Z.key==="Tab"&&!F.value.enabled&&!r.teleport&&E.value.tabOutClosesMenu&&(x.value.contains(document.activeElement)||st()),C.value=Z.shiftKey},nt=Z=>{C.value=Z.shiftKey},je=()=>{!r.disabled&&!r.readonly&&(N(b,vr,r),se(!1),o.value=!0,o.value&&a("open"),o.value||Kt(),v(r.modelValue))},ft=()=>{T.value="",Kt(),m.value?.onValueCleared(),d.value?.setParsedDate(null),a("update:model-value",null),a("update:model-timezone-value",null),a("cleared"),E.value.closeOnClearValue&&st()},A=()=>{const Z=re.value;return!Z||!Array.isArray(Z)&&U(Z)?!0:Array.isArray(Z)?ue.value.enabled||Z.length===2&&U(Z[0])&&U(Z[1])?!0:ne.value.partialRange&&!r.timePicker?U(Z[0]):!1:!1},ie=()=>{Ae()&&A()?(p(),st()):a("invalid-select",re.value)},de=Z=>{Ct(),p(),E.value.closeOnAutoApply&&!Z&&st()},Ct=()=>{d.value&&L.value.enabled&&d.value.setParsedDate(re.value)},gt=(Z=!1)=>{r.autoApply&&Y(re.value)&&A()&&(ne.value.enabled&&Array.isArray(re.value)?(ne.value.partialRange||re.value.length===2)&&de(Z):de(Z))},Kt=()=>{L.value.enabled||(re.value=null)},st=(Z=!1)=>{Z&&re.value&&E.value.setDateOnMenuClose&&ie(),F.value.enabled||(o.value&&(o.value=!1,P.value=!1,R(!1),M(!1),B(),a("closed"),T.value&&v(c.value)),Kt(),a("blur"),m.value?.$el?.remove())},Qa=(Z,ce,he=!1)=>{if(!Z){re.value=null;return}const Ot=Array.isArray(Z)?!Z.some(jt=>!U(jt)):U(Z),Tt=Y(Z);Ot&&Tt?(O.value=!0,re.value=Z,ce?($.value=he,ie(),a("text-submit")):r.autoApply&>(!0),vt().then(()=>{O.value=!1})):a("invalid-date",Z)},Xa=()=>{r.autoApply&&Y(re.value)&&p(),Ct()},Ia=()=>o.value?st():je(),Ga=Z=>{re.value=Z},Za=()=>{L.value.enabled&&(f.value=!0,Q()),a("focus")},Ka=()=>{L.value.enabled&&(f.value=!1,v(r.modelValue),$.value&&Is(x.value,C.value)?.focus()),a("blur")},Ja=Z=>{m.value&&m.value.updateMonthYear(0,{month:or(Z.month),year:or(Z.year)})},en=Z=>{v(Z??r.modelValue)},k=(Z,ce)=>{m.value?.switchView(Z,ce)},ee=(Z,ce)=>E.value.onClickOutside?E.value.onClickOutside(Z,ce):st(!0),me=(Z=0)=>{m.value?.handleFlow(Z)},Te=()=>w;return Md(w,d,Z=>ee(A,Z)),t({closeMenu:st,selectDate:ie,clearValue:ft,openMenu:je,onScroll:I,formatInputValue:Q,updateInternalModelValue:Ga,setMonthYear:Ja,parseModel:en,switchView:k,toggleMenu:Ia,handleFlow:me,getDpWrapMenuRef:Te}),(Z,ce)=>(_(),H("div",{ref_key:"pickerWrapperRef",ref:x,class:ke(X.value),"data-datepicker-instance":"","data-dp-mobile":i(D)},[Ie(wd,Ve({ref_key:"inputRef",ref:d,"input-value":i(T),"onUpdate:inputValue":ce[0]||(ce[0]=he=>qn(T)?T.value=he:null),"is-menu-open":o.value},Z.$props,{onClear:ft,onOpen:je,onSetInputDate:Qa,onSetEmptyDate:i(p),onSelectDate:ie,onToggle:Ia,onClose:st,onFocus:Za,onBlur:Ka,onRealBlur:ce[1]||(ce[1]=he=>f.value=!1),onTextInput:ce[2]||(ce[2]=he=>Z.$emit("text-input",he))}),tt({_:2},[Be(i(te),(he,Ot)=>({name:he,fn:pe(Tt=>[le(Z.$slots,he,et(ut(Tt)))])}))]),1040,["input-value","is-menu-open","onSetEmptyDate"]),(_(),_e(Ha(Z.teleport?wr:"div"),et(ut(K.value)),{default:pe(()=>[Ie(ya,{name:i(be)(i(V)),css:i(g)&&!i(F).enabled},{default:pe(()=>[o.value?(_(),H("div",Ve({key:0,ref_key:"dpWrapMenuRef",ref:w},ae.value,{class:{"dp--menu-wrapper":!i(F).enabled},style:i(F).enabled?void 0:i(J)}),[Ie(vr,Ve({ref_key:"dpMenuRef",ref:m},Z.$props,{"internal-model-value":i(re),"onUpdate:internalModelValue":ce[3]||(ce[3]=he=>qn(re)?re.value=he:null),class:{[xe.value]:!0,"dp--menu-wrapper":Z.teleport},"open-on-top":i(V),"no-overlay-focus":s.value,collapse:S.value,"get-input-rect":oe,"is-text-input-date":O.value,onClosePicker:st,onSelectDate:ie,onAutoApply:gt,onTimeUpdate:Xa,onFlowStep:ce[4]||(ce[4]=he=>Z.$emit("flow-step",he)),onUpdateMonthYear:ce[5]||(ce[5]=he=>Z.$emit("update-month-year",he)),onInvalidSelect:ce[6]||(ce[6]=he=>Z.$emit("invalid-select",i(re))),onAutoApplyInvalid:ce[7]||(ce[7]=he=>Z.$emit("invalid-select",he)),onInvalidFixedRange:ce[8]||(ce[8]=he=>Z.$emit("invalid-fixed-range",he)),onRecalculatePosition:i(se),onTooltipOpen:ce[9]||(ce[9]=he=>Z.$emit("tooltip-open",he)),onTooltipClose:ce[10]||(ce[10]=he=>Z.$emit("tooltip-close",he)),onTimePickerOpen:ce[11]||(ce[11]=he=>Z.$emit("time-picker-open",he)),onTimePickerClose:ce[12]||(ce[12]=he=>Z.$emit("time-picker-close",he)),onAmPmChange:ce[13]||(ce[13]=he=>Z.$emit("am-pm-change",he)),onRangeStart:ce[14]||(ce[14]=he=>Z.$emit("range-start",he)),onRangeEnd:ce[15]||(ce[15]=he=>Z.$emit("range-end",he)),onDateUpdate:ce[16]||(ce[16]=he=>Z.$emit("date-update",he)),onInvalidDate:ce[17]||(ce[17]=he=>Z.$emit("invalid-date",he)),onOverlayToggle:ce[18]||(ce[18]=he=>Z.$emit("overlay-toggle",he)),onMenuBlur:ce[19]||(ce[19]=he=>Z.$emit("blur"))}),tt({_:2},[Be(i(W),(he,Ot)=>({name:he,fn:pe(Tt=>[le(Z.$slots,he,et(ut({...Tt})))])}))]),1040,["internal-model-value","class","open-on-top","no-overlay-focus","collapse","is-text-input-date","onRecalculatePosition"])],16)):q("",!0)]),_:3},8,["name","css"])]),_:3},16))],10,Dd))}}),jn=(()=>{const e=Td;return e.install=t=>{t.component("Vue3DatePicker",e)},e})(),Sd=Object.freeze(Object.defineProperty({__proto__:null,default:jn},Symbol.toStringTag,{value:"Module"}));Object.entries(Sd).forEach(([e,t])=>{e!=="default"&&(jn[e]=t)}),Fe($l);function Pd(e){return e.slice(e.indexOf("/")+1).replaceAll("/"," - ").replaceAll("_"," ")}function Ad(){return Intl.supportedValuesOf("timeZone").filter(e=>!e.startsWith("Etc/")).map(e=>({timezoneId:e,label:Pd(e)})).sort((e,t)=>e.timezoneId.localeCompare(t.timezoneId))}const $d=Ge({__name:"NcTimezonePicker",props:ia({additionalTimezones:{default:()=>[]},uid:{default:gr()}},{modelValue:{default:"floating"},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=Fa(e,"modelValue"),n=e,a=z(()=>n.additionalTimezones.map(({timezoneId:o,label:c})=>({timezoneId:o,label:c}))),r=z(()=>{const o=Ad();return o.unshift(...a.value),o});function l(o,c,u){const w=u.trim().split(/\s+/),m=Object.values(o);return w.every(d=>m.some(f=>f.toLowerCase().includes(d.toLowerCase())))}return(o,c)=>(_(),_e(br,{modelValue:t.value,"onUpdate:modelValue":c[0]||(c[0]=u=>t.value=u),"aria-label-combobox":i(fe)("Search for time zone"),clearable:!1,filterBy:l,multiple:!1,options:r.value,placeholder:i(fe)("Type to search time zone"),uid:o.uid,reduce:u=>u.timezoneId,label:"label"},null,8,["modelValue","aria-label-combobox","options","placeholder","uid","reduce"]))}});Fe(Ol);const Od={class:"vue-date-time-picker__wrapper"},Id={ref:"target",class:"vue-date-time-picker__wrapper vue-date-time-picker__wrapper--teleport"},Rd=Ge({__name:"NcDateTimePicker",props:ia({appendToBody:{type:Boolean},ariaLabel:{default:fe("Datepicker input")},ariaLabelMenu:{default:fe("Datepicker menu")},clearable:{type:Boolean},confirm:{type:Boolean},format:{type:[String,Function],default:void 0},locale:{default:Jt()},max:{default:void 0},min:{default:void 0},minuteStep:{default:10},modelValue:{default:null},placeholder:{default:void 0},showTimezoneSelect:{type:Boolean},showWeekNumber:{type:Boolean},type:{default:"date"},inline:{type:Boolean,default:!1}},{timezoneId:{default:"UTC"},timezoneIdModifiers:{}}),emits:ia(["update:modelValue","update:timezoneId","blur"],["update:timezoneId"]),setup(e,{emit:t}){const n=Fa(e,"timezoneId"),a=e,r=t,l=gn("target"),o=gn("picker"),c=z(()=>{if(a.modelValue===null&&a.clearable)return null;if(a.type==="week"){const y=a.modelValue instanceof Date?a.modelValue:new Date,L=new Date(y);return L.setUTCDate(y.getUTCDate()+6),[y,L]}else{if(a.type==="year")return(a.modelValue instanceof Date?a.modelValue:new Date).getUTCFullYear();if(a.type==="month"){const y=a.modelValue instanceof Date?a.modelValue:new Date;return{year:y.getUTCFullYear(),month:y.getUTCMonth()}}else if(a.type==="time"){const y=a.modelValue instanceof Date?a.modelValue:new Date;return{hours:y.getHours(),minutes:y.getMinutes(),seconds:y.getSeconds()}}else if(a.type==="time-range"){const y=[a.modelValue].flat();if(y.length!==2){const L=new Date,F=new Date(L);F.setHours(F.getHours()+1),y.splice(0,2,L,F)}return y.map(L=>({hours:L.getHours(),minutes:L.getMinutes(),seconds:L.getSeconds()}))}else if(a.type.endsWith("-range")){if(a.modelValue===void 0){const y=new Date,L=new Date(y);return L.setUTCDate(y.getUTCDate()+7),[y,L]}return a.modelValue}}return a.modelValue??new Date}),u=z(()=>a.type==="date"?fe("Select date"):a.type==="time"?fe("Select time"):a.type==="datetime"?fe("Select date and time"):a.type==="week"?fe("Select week"):a.type==="month"?fe("Select month"):a.type==="year"?fe("Select year"):a.type.endsWith("-range")?fe("Select time range"):fe("Select date and time")),w=z(()=>{if(a.format)return a.format;if(a.type==="week")return"RR-II";let y;if(a.type==="date"||a.type==="date-range"?y=new Intl.DateTimeFormat(Jt(),{dateStyle:"medium"}):a.type==="time"||a.type==="time-range"?y=new Intl.DateTimeFormat(Jt(),{timeStyle:"short"}):a.type==="datetime"||a.type==="datetime-range"?y=new Intl.DateTimeFormat(Jt(),{dateStyle:"medium",timeStyle:"short"}):a.type==="month"?y=new Intl.DateTimeFormat(Jt(),{year:"numeric",month:"2-digit"}):a.type==="year"&&(y=new Intl.DateTimeFormat(Jt(),{year:"numeric"})),y)return L=>Array.isArray(L)?y.formatRange(L[0],L[1]):y.format(L)}),m=z(()=>({timePicker:a.type==="time"||a.type==="time-range",yearPicker:a.type==="year",monthPicker:a.type==="month",weekPicker:a.type==="week",range:a.type.endsWith("-range")&&{partialRange:!1},enableTimePicker:!(a.type==="date"||a.type==="date-range"),flow:a.type==="datetime"?["calendar","time"]:void 0})),d=z(()=>a.min&&{hours:a.min.getHours(),minutes:a.min.getMinutes(),seconds:a.min.getSeconds()}),f=z(()=>a.max&&{hours:a.max.getHours(),minutes:a.max.getMinutes(),seconds:a.max.getSeconds()});function x(y){if(y===null)return r("update:modelValue",null);if(a.type==="time")r("update:modelValue",$(y));else if(a.type==="time-range"){const L=$(y[0]),F=$(y[1]);F.getTime()({toggleOverlay:fe("Toggle overlay"),menu:a.ariaLabelMenu,input:a.ariaLabel,openTimePicker:fe("Open time picker"),closeTimePicker:fe("Close time Picker"),incrementValue:y=>y==="hours"?fe("Increment hours"):y==="minutes"?fe("Increment minutes"):fe("Increment seconds"),decrementValue:y=>y==="hours"?fe("Decrement hours"):y==="minutes"?fe("Decrement minutes"):fe("Decrement seconds"),openTpOverlay:y=>y==="hours"?fe("Open hours overlay"):y==="minutes"?fe("Open minutes overlay"):fe("Open seconds overlay"),amPmButton:fe("Switch AM/PM mode"),openYearsOverlay:fe("Open years overlay"),openMonthsOverlay:fe("Open months overlay"),nextMonth:fe("Next month"),prevMonth:fe("Previous month"),nextYear:fe("Next year"),prevYear:fe("Previous year"),weekDay:y=>eo()[y],clearInput:fe("Clear value"),calendarIcon:fe("Calendar icon"),timePicker:fe("Time picker"),monthPicker:y=>y?fe("Month picker overlay"):fe("Month picker"),yearPicker:y=>y?fe("Year picker overlay"):fe("Year picker")}));function M(){o.value.selectDate()}function B(){o.value.closeMenu()}const U=z(()=>a.type==="datetime"?{minDate:a.min,maxDate:a.max,minTime:a.min&&c.value&&Y(a.min,c.value)?d.value:void 0,maxTime:a.max&&c.value&&Y(a.max,c.value)?f.value:void 0}:a.type==="datetime-range"?{minDate:a.min,maxDate:a.max,minTime:a.min&&c.value&&Y(a.min,c.value[0])?d.value:void 0,maxTime:a.max&&c.value&&Y(a.max,c.value[1])?f.value:void 0}:a.type==="time"||a.type==="time-range"?{minTime:a.min?d.value:void 0,maxTime:a.max?f.value:void 0}:{minDate:a.min,maxDate:a.max});function Y(y,L){return y.getFullYear()===L.getFullYear()&&y.getMonth()===L.getMonth()&&y.getDate()===L.getDate()}return(y,L)=>(_(),H("div",Od,[Ie(i(jn),Ve({ref:"picker","aria-labels":R.value,autoApply:!y.confirm,class:["vue-date-time-picker",{"vue-date-time-picker--clearable":y.clearable}],cancelText:i(fe)("Cancel"),clearable:y.clearable,dayNames:S,placeholder:y.placeholder??u.value,format:w.value,locale:y.locale,minDate:U.value.minDate,maxDate:U.value.maxDate,minTime:U.value.minTime,maxTime:U.value.maxTime,minutesIncrement:y.minuteStep,modelValue:c.value,nowButtonLabel:i(fe)("Now"),selectText:i(fe)("Pick"),sixWeeks:"fair",inline:y.inline,teleport:y.appendToBody?l.value||void 0:!1,textInput:"",weekNumName:i(O),weekNumbers:y.showWeekNumber?{type:"iso"}:void 0,weekStart:i(C)},m.value,{"onUpdate:modelValue":x,onBlur:L[1]||(L[1]=F=>r("blur"))}),tt({"action-buttons":pe(()=>[Ie(i(an),{size:"small",variant:"tertiary",onClick:B},{default:pe(()=>[ht(He(i(fe)("Cancel")),1)]),_:1}),Ie(i(an),{size:"small",variant:"primary",onClick:M},{default:pe(()=>[ht(He(i(fe)("Pick")),1)]),_:1})]),"clear-icon":pe(({clear:F})=>[Ie(i(an),{"aria-label":i(fe)("Clear value"),variant:"tertiary-no-background",onClick:F},{icon:pe(()=>[Ie(St,{inline:"",path:i(Ul),size:20},null,8,["path"])]),_:2},1032,["aria-label","onClick"])]),"input-icon":pe(()=>[Ie(St,{path:i(ql),size:20},null,8,["path"])]),"clock-icon":pe(()=>[Ie(St,{inline:"",path:i(jl),size:20},null,8,["path"])]),"arrow-left":pe(()=>[Ie(St,{inline:"",path:i(Wl),size:20},null,8,["path"])]),"arrow-right":pe(()=>[Ie(St,{inline:"",path:i(Hl),size:20},null,8,["path"])]),"arrow-down":pe(()=>[Ie(St,{inline:"",path:i(Fl),size:20},null,8,["path"])]),"arrow-up":pe(()=>[Ie(St,{inline:"",path:i(zl),size:20},null,8,["path"])]),_:2},[y.showTimezoneSelect?{name:"action-extra",fn:pe(()=>[Ie($d,{modelValue:n.value,"onUpdate:modelValue":L[0]||(L[0]=F=>n.value=F),class:"vue-date-time-picker__timezone",appendToBody:!1,inputLabel:i(fe)("Time zone")},null,8,["modelValue","inputLabel"])]),key:"0"}:void 0]),1040,["aria-labels","autoApply","class","cancelText","clearable","placeholder","format","locale","minDate","maxDate","minTime","maxTime","minutesIncrement","modelValue","nowButtonLabel","selectText","inline","teleport","weekNumName","weekNumbers","weekStart"]),(_(),_e(wr,{to:"body",disabled:!y.appendToBody},[ve("div",Id,null,512)],8,["disabled"]))]))}}),Yd=za(Rd,[["__scopeId","data-v-e6654786"]]),Cd=Il().detectLanguage(),Na=Cd.build();Na.ngettext.bind(Na),Na.gettext.bind(Na),Fe(Rl),Fe(fr);const Nd=8,yr=32,Bd={name:"NcListItemIcon",components:{NcAvatar:po,NcHighlight:to,NcIconSvgWrapper:St},mixins:[co],props:{name:{type:String,required:!0},subname:{type:String,default:""},icon:{type:String,default:""},iconSvg:{type:String,default:""},iconName:{type:String,default:""},search:{type:String,default:""},avatarSize:{type:Number,default:yr},noMargin:{type:Boolean,default:!1},displayName:{type:String,default:null},isNoUser:{type:Boolean,default:!1},id:{type:String,default:null}},setup(){return{margin:Nd,defaultSize:yr}},computed:{hasIcon(){return this.icon!==""},hasIconSvg(){return this.iconSvg!==""},isValidSubname(){return this.subname?.trim?.()!==""},isSizeBigEnough(){return this.avatarSize>=26},cssVars(){const e=this.noMargin?0:this.margin;return{"--height":this.avatarSize+2*e+"px","--margin":this.margin+"px"}},searchParts(){const e=/^([^<]*)<([^>]+)>?$/,t=this.search.match(e);return this.isNoUser||!t?[this.search,this.search]:[t[1].trim(),t[2]]}},beforeMount(){!this.isNoUser&&!this.subname&&this.fetchUserStatus(this.user)}},Vd=["id"],Ed={class:"option__details"},Ld={key:1},zd=["aria-label"];function Fd(e,t,n,a,r,l){const o=rn("NcAvatar"),c=rn("NcHighlight"),u=rn("NcIconSvgWrapper");return _(),H("span",{id:n.id,class:ke(["option",{"option--compact":n.avatarSize[l.hasIconSvg?(_(),_e(u,{key:0,class:"option__icon",svg:n.iconSvg,name:n.iconName},null,8,["svg","name"])):l.hasIcon?(_(),H("span",{key:1,class:ke(["icon option__icon",n.icon]),"aria-label":n.iconName},null,10,zd)):q("",!0)],!0)],14,Vd)}const hr=za(Bd,[["render",Fd],["__scopeId","data-v-0ee94269"]]);if(Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-grid-baseline")),Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-clickable-area")),Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--clickable-area-small")),Fe(Yl),Fe(Cl),mo()?.circles?.teamResourceProviders,Fe(Nl),fe("Related resources"),fe("Anything shared with the same group of people will show up here"),Array.prototype.find||(Array.prototype.find=function(e){if(this===null)throw new TypeError("Array.prototype.find called on null or undefined");if(typeof e!="function")throw new TypeError("predicate must be a function");for(var t=Object(this),n=t.length>>>0,a=arguments[1],r,l=0;la("search",r.value));const l=Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-clickable-area")),o=Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-grid-baseline")),c=l-2*o;function u(w,m,d){const f=/[^<]*<([^>]+)/,x=d.match(f),$=w.subname?.toLocaleLowerCase()??"";return x&&$.indexOf(x[1].toLocaleLowerCase())>-1||`${m} ${w.subname}`.toLocaleLowerCase().indexOf(d.toLocaleLowerCase())>-1}return(w,m)=>(_(),_e(i(br),Ve({modelValue:n.value,"onUpdate:modelValue":m[0]||(m[0]=d=>n.value=d),class:"nc-select-users"},w.$props,{filterBy:u,label:"displayName",onSearch:m[1]||(m[1]=d=>r.value=d)}),{option:pe(d=>[Ie(i(hr),Ve(d,{avatarSize:32,name:d.displayName,search:r.value}),null,16,["name","search"])]),"selected-option":pe(d=>[Ie(i(hr),Ve(d,{avatarSize:c,name:d.displayName,noMargin:"",search:r.value}),null,16,["name","search"])]),_:1},16,["modelValue"]))}}),gc=za(Hd,[["__scopeId","data-v-e8e18fd3"]]);Fe(El),Ll(function(e){this.loadGroup(e)},200);const Wd={class:"textarea__main-wrapper"},jd=["id","aria-describedby","disabled","placeholder","value"],qd=["for"],Ud=["id"],Qd=Ge({inheritAttrs:!1,__name:"NcTextArea",props:ia({disabled:{type:Boolean},error:{type:Boolean},helperText:{default:void 0},id:{default:()=>gr()},inputClass:{default:""},label:{default:void 0},labelOutside:{type:Boolean},placeholder:{default:void 0},resize:{default:"both"},success:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e,{expose:t}){const n=Fa(e,"modelValue"),a=e;t({focus:w,select:m});const r=kr(),l=gn("input"),o=z(()=>a.placeholder||(nn?a.label:void 0));dt(()=>a.labelOutside,()=>{!a.labelOutside&&!a.label&&Ql.warn("[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.")});const c=z(()=>{const d=[];return a.helperText&&d.push(`${a.id}-helper-text`),typeof r["aria-describedby"]=="string"&&d.push(r["aria-describedby"]),d.join(" ")||void 0});function u(d){const{value:f}=d.target;n.value=f}function w(d){l.value.focus(d)}function m(){l.value.select()}return(d,f)=>(_(),H("div",{class:ke(["textarea",[d.$attrs.class,{"textarea--disabled":d.disabled,"textarea--legacy":i(nn)}]])},[ve("div",Wd,[ve("textarea",Ve({...d.$attrs,class:void 0},{id:d.id,ref:"input","aria-describedby":c.value,"aria-live":"polite",class:["textarea__input",[d.inputClass,{"textarea__input--label-outside":d.labelOutside,"textarea__input--legacy":i(nn),"textarea__input--success":d.success,"textarea__input--error":d.error}]],disabled:d.disabled,placeholder:o.value,style:{resize:d.resize},value:n.value,onInput:u}),null,16,jd),d.labelOutside?q("",!0):(_(),H("label",{key:0,class:"textarea__label",for:d.id},He(d.label),9,qd))]),d.helperText?(_(),H("p",{key:0,id:`${d.id}-helper-text`,class:ke(["textarea__helper-text-message",{"textarea__helper-text-message--error":d.error,"textarea__helper-text-message--success":d.success}])},[d.success?(_(),_e(St,{key:0,class:"textarea__helper-text-message__icon",path:i(Xl),inline:""},null,8,["path"])):d.error?(_(),_e(St,{key:1,class:"textarea__helper-text-message__icon",path:i(Gl),inline:""},null,8,["path"])):q("",!0),ht(" "+He(d.helperText),1)],10,Ud)):q("",!0)],2))}}),bc=za(Qd,[["__scopeId","data-v-657c47f8"]]),wc=Object.freeze(Object.defineProperty({__proto__:null,default:vo},Symbol.toStringTag,{value:"Module"})),kc=Object.freeze(Object.defineProperty({__proto__:null,default:Yd},Symbol.toStringTag,{value:"Module"}));export{gc as N,bc as a,kc as b,wc as i}; -//# sourceMappingURL=index-BpgPbDC6.chunk.mjs.map +import{r as Fe,T as fl,U as gl,V as bl,x as wl,W as kl,X as _l,R as xl,a as fe,Y as Ml,Z as Dl,$ as fr,a0 as Tl,a1 as Sl,a2 as Pl,a3 as Al,a4 as $l,c as gr,a5 as Ol,N as St,_ as za,l as Il,a6 as Rl,a7 as Yl,a8 as Cl,a9 as Nl,Q as Bl,aa as Vl,ab as El}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{d as Ll}from"./index-DqIuD5e7.chunk.mjs";import{a as Jt}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{z as zl,A as Fl,k as Hl,x as Wl,B as jl,C as ql,N as an,m as Ul,l as Ql,i as nn,c as Xl,j as Gl}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{a as Zl,j as Kl,R as Jl,S as eo}from"./index-Bos-XXa5.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import{N as br,_ as to}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{b as Ge,q as ia,s as Fa,i as Gt,x as gn,v as dt,r as G,j as H,o as _,e as Ie,l as q,w as pe,u as i,n as ke,m as le,J as vt,A as at,B as va,V as _a,c as _e,y as tt,C as Be,z as Ve,O as qn,ab as ya,p as z,a9 as et,aa as ut,H as Ha,ao as wr,am as ao,a5 as no,aq as Un,I as Sa,k as ve,E as xa,F as Me,D as pt,t as He,a1 as ro,af as kr,g as ht,R as lo,S as oo,ar as io,_ as Ba,$ as Va,X as so,f as rn}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import"./Plus-BsxGg9Cm.chunk.mjs";import{P as uo}from"./NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs";import{b as co,N as po}from"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import{g as mo}from"./index-BgmsSgl5.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{N as vo}from"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";Fe(),Fe(fl),{...Zl.props},Fe(gl),Fe(bl),Fe(kl,wl),Fe(xl,_l),fe("Search …"),Fe(Ml),Fe(Dl),Fe(fr);const yo="LOCALHOST",ho="COLON",Ma={defaultProtocol:"http",events:null,format:Qn,formatHref:Qn,nl2br:!1,tagName:"a",target:null,rel:null,validate:!0,truncate:1/0,className:null,attributes:null,ignoreTags:[],render:null};function _r(e,t=null){let n=Object.assign({},Ma);e&&(n=Object.assign(n,e instanceof _r?e.o:e));const a=n.ignoreTags,r=[];for(let l=0;ln?a.substring(0,n)+"…":a},toFormattedHref(e){return e.get("formatHref",this.toHref(e.get("defaultProtocol")),this)},startIndex(){return this.tk[0].s},endIndex(){return this.tk[this.tk.length-1].e},toObject(e=Ma.defaultProtocol){return{type:this.t,value:this.toString(),isLink:this.isLink,href:this.toHref(e),start:this.startIndex(),end:this.endIndex()}},toFormattedObject(e){return{type:this.t,value:this.toFormattedString(e),isLink:this.isLink,href:this.toFormattedHref(e),start:this.startIndex(),end:this.endIndex()}},validate(e){return e.get("validate",this.toString(),this)},render(e){const t=this,n=this.toHref(e.get("defaultProtocol")),a=e.get("formatHref",n,this),r=e.get("tagName",n,t),l=this.toFormattedString(e),o={},c=e.get("className",n,t),u=e.get("target",n,t),w=e.get("rel",n,t),m=e.getObj("attributes",n,t),d=e.getObj("events",n,t);return o.href=a,c&&(o.class=c),u&&(o.target=u),w&&(o.rel=w),m&&Object.assign(o,m),{tagName:r,attributes:o,content:l,eventListeners:d}}};function Ra(e,t){class n extends xr{constructor(r,l){super(r,l),this.t=e}}for(const a in t)n.prototype[a]=t[a];return n.t=e,n}Ra("email",{isLink:!0,toHref(){return"mailto:"+this.toString()}}),Ra("text"),Ra("nl"),Ra("url",{isLink:!0,toHref(e=Ma.defaultProtocol){return this.hasProtocol()?this.v:`${e}://${this.v}`},hasProtocol(){const e=this.tk;return e.length>=2&&e[0].t!==yo&&e[1].t===ho}}),Fe(Tl),new uo({concurrency:5}),Fe(Sl),Fe(Pl),Fe(Al),fe("More items …");const Mr=6048e5,fo=864e5,go=6e4,Dr=36e5,bo=1e3,Xn=Symbol.for("constructDateFrom");function Re(e,t){return typeof e=="function"?e(t):e&&typeof e=="object"&&Xn in e?e[Xn](t):e instanceof Date?new e.constructor(t):new Date(t)}function ge(e,t){return Re(t||e,e)}function yt(e,t,n){const a=ge(e,n?.in);return isNaN(t)?Re(n?.in||e,NaN):(t&&a.setDate(a.getDate()+t),a)}function xt(e,t,n){const a=ge(e,n?.in);if(isNaN(t))return Re(e,NaN);if(!t)return a;const r=a.getDate(),l=Re(e,a.getTime());l.setMonth(a.getMonth()+t+1,0);const o=l.getDate();return r>=o?l:(a.setFullYear(l.getFullYear(),l.getMonth(),r),a)}function Tr(e,t,n){const{years:a=0,months:r=0,weeks:l=0,days:o=0,hours:c=0,minutes:u=0,seconds:w=0}=t,m=ge(e,n?.in),d=r||a?xt(m,r+a*12):m,f=o||l?yt(d,o+l*7):d,x=u+c*60,$=(w+x*60)*1e3;return Re(e,+f+$)}function wo(e,t,n){return Re(e,+ge(e)+t)}function ko(e,t,n){return wo(e,t*Dr)}let _o={};function Zt(){return _o}function Mt(e,t){const n=Zt(),a=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,r=ge(e,t?.in),l=r.getDay(),o=(l=l.getTime()?a+1:n.getTime()>=c.getTime()?a:a-1}function Ea(e){const t=ge(e),n=new Date(Date.UTC(t.getFullYear(),t.getMonth(),t.getDate(),t.getHours(),t.getMinutes(),t.getSeconds(),t.getMilliseconds()));return n.setUTCFullYear(t.getFullYear()),+e-+n}function Pa(e,...t){const n=Re.bind(null,t.find(a=>typeof a=="object"));return t.map(n)}function Gn(e,t){const n=ge(e,t?.in);return n.setHours(0,0,0,0),n}function Pr(e,t,n){const[a,r]=Pa(n?.in,e,t),l=Gn(a),o=Gn(r),c=+l-Ea(l),u=+o-Ea(o);return Math.round((c-u)/fo)}function xo(e,t){const n=Sr(e,t),a=Re(e,0);return a.setFullYear(n,0,4),a.setHours(0,0,0,0),sa(a)}function Mo(e,t,n){return xt(e,t*3,n)}function Tn(e,t,n){return xt(e,t*12,n)}function Zn(e,t){const n=+ge(e)-+ge(t);return n<0?-1:n>0?1:n}function Ar(e){return e instanceof Date||typeof e=="object"&&Object.prototype.toString.call(e)==="[object Date]"}function wa(e){return!(!Ar(e)&&typeof e!="number"||isNaN(+ge(e)))}function Kn(e,t){const n=ge(e,t?.in);return Math.trunc(n.getMonth()/3)+1}function Do(e,t,n){const[a,r]=Pa(n?.in,e,t);return a.getFullYear()-r.getFullYear()}function To(e,t,n){const[a,r]=Pa(n?.in,e,t),l=Zn(a,r),o=Math.abs(Do(a,r));a.setFullYear(1584),r.setFullYear(1584);const c=Zn(a,r)===-l,u=l*(o-+c);return u===0?0:u}function $r(e,t){const[n,a]=Pa(e,t.start,t.end);return{start:n,end:a}}function Or(e,t){const{start:n,end:a}=$r(t?.in,e);let r=+n>+a;const l=r?+n:+a,o=r?a:n;o.setHours(0,0,0,0);let c=1;const u=[];for(;+o<=l;)u.push(Re(n,o)),o.setDate(o.getDate()+c),o.setHours(0,0,0,0);return r?u.reverse():u}function ra(e,t){const n=ge(e,t?.in),a=n.getMonth(),r=a-a%3;return n.setMonth(r,1),n.setHours(0,0,0,0),n}function So(e,t){const{start:n,end:a}=$r(t?.in,e);let r=+n>+a;const l=r?+ra(n):+ra(a);let o=ra(r?a:n),c=1;const u=[];for(;+o<=l;)u.push(Re(n,o)),o=Mo(o,c);return r?u.reverse():u}function Po(e,t){const n=ge(e,t?.in);return n.setDate(1),n.setHours(0,0,0,0),n}function Ir(e,t){const n=ge(e,t?.in),a=n.getFullYear();return n.setFullYear(a+1,0,0),n.setHours(23,59,59,999),n}function la(e,t){const n=ge(e,t?.in);return n.setFullYear(n.getFullYear(),0,1),n.setHours(0,0,0,0),n}function Rr(e,t){const n=Zt(),a=t?.weekStartsOn??t?.locale?.options?.weekStartsOn??n.weekStartsOn??n.locale?.options?.weekStartsOn??0,r=ge(e,t?.in),l=r.getDay(),o=(l{let a;const r=Ao[e];return typeof r=="string"?a=r:t===1?a=r.one:a=r.other.replace("{{count}}",t.toString()),n?.addSuffix?n.comparison&&n.comparison>0?"in "+a:a+" ago":a};function ln(e){return(t={})=>{const n=t.width?String(t.width):e.defaultWidth;return e.formats[n]||e.formats[e.defaultWidth]}}const Oo={full:"EEEE, MMMM do, y",long:"MMMM do, y",medium:"MMM d, y",short:"MM/dd/yyyy"},Io={full:"h:mm:ss a zzzz",long:"h:mm:ss a z",medium:"h:mm:ss a",short:"h:mm a"},Ro={full:"{{date}} 'at' {{time}}",long:"{{date}} 'at' {{time}}",medium:"{{date}}, {{time}}",short:"{{date}}, {{time}}"},Yo={date:ln({formats:Oo,defaultWidth:"full"}),time:ln({formats:Io,defaultWidth:"full"}),dateTime:ln({formats:Ro,defaultWidth:"full"})},Co={lastWeek:"'last' eeee 'at' p",yesterday:"'yesterday at' p",today:"'today at' p",tomorrow:"'tomorrow at' p",nextWeek:"eeee 'at' p",other:"P"},No=(e,t,n,a)=>Co[e];function fa(e){return(t,n)=>{const a=n?.context?String(n.context):"standalone";let r;if(a==="formatting"&&e.formattingValues){const o=e.defaultFormattingWidth||e.defaultWidth,c=n?.width?String(n.width):o;r=e.formattingValues[c]||e.formattingValues[o]}else{const o=e.defaultWidth,c=n?.width?String(n.width):e.defaultWidth;r=e.values[c]||e.values[o]}const l=e.argumentCallback?e.argumentCallback(t):t;return r[l]}}const Bo={narrow:["B","A"],abbreviated:["BC","AD"],wide:["Before Christ","Anno Domini"]},Vo={narrow:["1","2","3","4"],abbreviated:["Q1","Q2","Q3","Q4"],wide:["1st quarter","2nd quarter","3rd quarter","4th quarter"]},Eo={narrow:["J","F","M","A","M","J","J","A","S","O","N","D"],abbreviated:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],wide:["January","February","March","April","May","June","July","August","September","October","November","December"]},Lo={narrow:["S","M","T","W","T","F","S"],short:["Su","Mo","Tu","We","Th","Fr","Sa"],abbreviated:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],wide:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},zo={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"}},Fo={narrow:{am:"a",pm:"p",midnight:"mi",noon:"n",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},abbreviated:{am:"AM",pm:"PM",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"},wide:{am:"a.m.",pm:"p.m.",midnight:"midnight",noon:"noon",morning:"in the morning",afternoon:"in the afternoon",evening:"in the evening",night:"at night"}},Ho=(e,t)=>{const n=Number(e),a=n%100;if(a>20||a<10)switch(a%10){case 1:return n+"st";case 2:return n+"nd";case 3:return n+"rd"}return n+"th"},Wo={ordinalNumber:Ho,era:fa({values:Bo,defaultWidth:"wide"}),quarter:fa({values:Vo,defaultWidth:"wide",argumentCallback:e=>e-1}),month:fa({values:Eo,defaultWidth:"wide"}),day:fa({values:Lo,defaultWidth:"wide"}),dayPeriod:fa({values:zo,defaultWidth:"wide",formattingValues:Fo,defaultFormattingWidth:"wide"})};function ga(e){return(t,n={})=>{const a=n.width,r=a&&e.matchPatterns[a]||e.matchPatterns[e.defaultMatchWidth],l=t.match(r);if(!l)return null;const o=l[0],c=a&&e.parsePatterns[a]||e.parsePatterns[e.defaultParseWidth],u=Array.isArray(c)?qo(c,d=>d.test(o)):jo(c,d=>d.test(o));let w;w=e.valueCallback?e.valueCallback(u):u,w=n.valueCallback?n.valueCallback(w):w;const m=t.slice(o.length);return{value:w,rest:m}}}function jo(e,t){for(const n in e)if(Object.prototype.hasOwnProperty.call(e,n)&&t(e[n]))return n}function qo(e,t){for(let n=0;n{const a=t.match(e.matchPattern);if(!a)return null;const r=a[0],l=t.match(e.parsePattern);if(!l)return null;let o=e.valueCallback?e.valueCallback(l[0]):l[0];o=n.valueCallback?n.valueCallback(o):o;const c=t.slice(r.length);return{value:o,rest:c}}}const Qo=/^(\d+)(th|st|nd|rd)?/i,Xo=/\d+/i,Go={narrow:/^(b|a)/i,abbreviated:/^(b\.?\s?c\.?|b\.?\s?c\.?\s?e\.?|a\.?\s?d\.?|c\.?\s?e\.?)/i,wide:/^(before christ|before common era|anno domini|common era)/i},Zo={any:[/^b/i,/^(a|c)/i]},Ko={narrow:/^[1234]/i,abbreviated:/^q[1234]/i,wide:/^[1234](th|st|nd|rd)? quarter/i},Jo={any:[/1/i,/2/i,/3/i,/4/i]},ei={narrow:/^[jfmasond]/i,abbreviated:/^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,wide:/^(january|february|march|april|may|june|july|august|september|october|november|december)/i},ti={narrow:[/^j/i,/^f/i,/^m/i,/^a/i,/^m/i,/^j/i,/^j/i,/^a/i,/^s/i,/^o/i,/^n/i,/^d/i],any:[/^ja/i,/^f/i,/^mar/i,/^ap/i,/^may/i,/^jun/i,/^jul/i,/^au/i,/^s/i,/^o/i,/^n/i,/^d/i]},ai={narrow:/^[smtwf]/i,short:/^(su|mo|tu|we|th|fr|sa)/i,abbreviated:/^(sun|mon|tue|wed|thu|fri|sat)/i,wide:/^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i},ni={narrow:[/^s/i,/^m/i,/^t/i,/^w/i,/^t/i,/^f/i,/^s/i],any:[/^su/i,/^m/i,/^tu/i,/^w/i,/^th/i,/^f/i,/^sa/i]},ri={narrow:/^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,any:/^([ap]\.?\s?m\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i},li={any:{am:/^a/i,pm:/^p/i,midnight:/^mi/i,noon:/^no/i,morning:/morning/i,afternoon:/afternoon/i,evening:/evening/i,night:/night/i}},oi={ordinalNumber:Uo({matchPattern:Qo,parsePattern:Xo,valueCallback:e=>parseInt(e,10)}),era:ga({matchPatterns:Go,defaultMatchWidth:"wide",parsePatterns:Zo,defaultParseWidth:"any"}),quarter:ga({matchPatterns:Ko,defaultMatchWidth:"wide",parsePatterns:Jo,defaultParseWidth:"any",valueCallback:e=>e+1}),month:ga({matchPatterns:ei,defaultMatchWidth:"wide",parsePatterns:ti,defaultParseWidth:"any"}),day:ga({matchPatterns:ai,defaultMatchWidth:"wide",parsePatterns:ni,defaultParseWidth:"any"}),dayPeriod:ga({matchPatterns:ri,defaultMatchWidth:"any",parsePatterns:li,defaultParseWidth:"any"})},Yr={code:"en-US",formatDistance:$o,formatLong:Yo,formatRelative:No,localize:Wo,match:oi,options:{weekStartsOn:0,firstWeekContainsDate:1}};function ii(e,t){const n=ge(e,t?.in);return Pr(n,la(n))+1}function Sn(e,t){const n=ge(e,t?.in),a=+sa(n)-+xo(n);return Math.round(a/Mr)+1}function Pn(e,t){const n=ge(e,t?.in),a=n.getFullYear(),r=Zt(),l=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??r.firstWeekContainsDate??r.locale?.options?.firstWeekContainsDate??1,o=Re(t?.in||e,0);o.setFullYear(a+1,0,l),o.setHours(0,0,0,0);const c=Mt(o,t),u=Re(t?.in||e,0);u.setFullYear(a,0,l),u.setHours(0,0,0,0);const w=Mt(u,t);return+n>=+c?a+1:+n>=+w?a:a-1}function si(e,t){const n=Zt(),a=t?.firstWeekContainsDate??t?.locale?.options?.firstWeekContainsDate??n.firstWeekContainsDate??n.locale?.options?.firstWeekContainsDate??1,r=Pn(e,t),l=Re(t?.in||e,0);return l.setFullYear(r,0,a),l.setHours(0,0,0,0),Mt(l,t)}function An(e,t){const n=ge(e,t?.in),a=+Mt(n,t)-+si(n,t);return Math.round(a/Mr)+1}function Oe(e,t){const n=e<0?"-":"",a=Math.abs(e).toString().padStart(t,"0");return n+a}const Bt={y(e,t){const n=e.getFullYear(),a=n>0?n:1-n;return Oe(t==="yy"?a%100:a,t.length)},M(e,t){const n=e.getMonth();return t==="M"?String(n+1):Oe(n+1,2)},d(e,t){return Oe(e.getDate(),t.length)},a(e,t){const n=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.toUpperCase();case"aaa":return n;case"aaaaa":return n[0];default:return n==="am"?"a.m.":"p.m."}},h(e,t){return Oe(e.getHours()%12||12,t.length)},H(e,t){return Oe(e.getHours(),t.length)},m(e,t){return Oe(e.getMinutes(),t.length)},s(e,t){return Oe(e.getSeconds(),t.length)},S(e,t){const n=t.length,a=e.getMilliseconds(),r=Math.trunc(a*Math.pow(10,n-3));return Oe(r,t.length)}},ea={midnight:"midnight",noon:"noon",morning:"morning",afternoon:"afternoon",evening:"evening",night:"night"},er={G:function(e,t,n){const a=e.getFullYear()>0?1:0;switch(t){case"G":case"GG":case"GGG":return n.era(a,{width:"abbreviated"});case"GGGGG":return n.era(a,{width:"narrow"});default:return n.era(a,{width:"wide"})}},y:function(e,t,n){if(t==="yo"){const a=e.getFullYear(),r=a>0?a:1-a;return n.ordinalNumber(r,{unit:"year"})}return Bt.y(e,t)},Y:function(e,t,n,a){const r=Pn(e,a),l=r>0?r:1-r;if(t==="YY"){const o=l%100;return Oe(o,2)}return t==="Yo"?n.ordinalNumber(l,{unit:"year"}):Oe(l,t.length)},R:function(e,t){const n=Sr(e);return Oe(n,t.length)},u:function(e,t){const n=e.getFullYear();return Oe(n,t.length)},Q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"Q":return String(a);case"QQ":return Oe(a,2);case"Qo":return n.ordinalNumber(a,{unit:"quarter"});case"QQQ":return n.quarter(a,{width:"abbreviated",context:"formatting"});case"QQQQQ":return n.quarter(a,{width:"narrow",context:"formatting"});default:return n.quarter(a,{width:"wide",context:"formatting"})}},q:function(e,t,n){const a=Math.ceil((e.getMonth()+1)/3);switch(t){case"q":return String(a);case"qq":return Oe(a,2);case"qo":return n.ordinalNumber(a,{unit:"quarter"});case"qqq":return n.quarter(a,{width:"abbreviated",context:"standalone"});case"qqqqq":return n.quarter(a,{width:"narrow",context:"standalone"});default:return n.quarter(a,{width:"wide",context:"standalone"})}},M:function(e,t,n){const a=e.getMonth();switch(t){case"M":case"MM":return Bt.M(e,t);case"Mo":return n.ordinalNumber(a+1,{unit:"month"});case"MMM":return n.month(a,{width:"abbreviated",context:"formatting"});case"MMMMM":return n.month(a,{width:"narrow",context:"formatting"});default:return n.month(a,{width:"wide",context:"formatting"})}},L:function(e,t,n){const a=e.getMonth();switch(t){case"L":return String(a+1);case"LL":return Oe(a+1,2);case"Lo":return n.ordinalNumber(a+1,{unit:"month"});case"LLL":return n.month(a,{width:"abbreviated",context:"standalone"});case"LLLLL":return n.month(a,{width:"narrow",context:"standalone"});default:return n.month(a,{width:"wide",context:"standalone"})}},w:function(e,t,n,a){const r=An(e,a);return t==="wo"?n.ordinalNumber(r,{unit:"week"}):Oe(r,t.length)},I:function(e,t,n){const a=Sn(e);return t==="Io"?n.ordinalNumber(a,{unit:"week"}):Oe(a,t.length)},d:function(e,t,n){return t==="do"?n.ordinalNumber(e.getDate(),{unit:"date"}):Bt.d(e,t)},D:function(e,t,n){const a=ii(e);return t==="Do"?n.ordinalNumber(a,{unit:"dayOfYear"}):Oe(a,t.length)},E:function(e,t,n){const a=e.getDay();switch(t){case"E":case"EE":case"EEE":return n.day(a,{width:"abbreviated",context:"formatting"});case"EEEEE":return n.day(a,{width:"narrow",context:"formatting"});case"EEEEEE":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},e:function(e,t,n,a){const r=e.getDay(),l=(r-a.weekStartsOn+8)%7||7;switch(t){case"e":return String(l);case"ee":return Oe(l,2);case"eo":return n.ordinalNumber(l,{unit:"day"});case"eee":return n.day(r,{width:"abbreviated",context:"formatting"});case"eeeee":return n.day(r,{width:"narrow",context:"formatting"});case"eeeeee":return n.day(r,{width:"short",context:"formatting"});default:return n.day(r,{width:"wide",context:"formatting"})}},c:function(e,t,n,a){const r=e.getDay(),l=(r-a.weekStartsOn+8)%7||7;switch(t){case"c":return String(l);case"cc":return Oe(l,t.length);case"co":return n.ordinalNumber(l,{unit:"day"});case"ccc":return n.day(r,{width:"abbreviated",context:"standalone"});case"ccccc":return n.day(r,{width:"narrow",context:"standalone"});case"cccccc":return n.day(r,{width:"short",context:"standalone"});default:return n.day(r,{width:"wide",context:"standalone"})}},i:function(e,t,n){const a=e.getDay(),r=a===0?7:a;switch(t){case"i":return String(r);case"ii":return Oe(r,t.length);case"io":return n.ordinalNumber(r,{unit:"day"});case"iii":return n.day(a,{width:"abbreviated",context:"formatting"});case"iiiii":return n.day(a,{width:"narrow",context:"formatting"});case"iiiiii":return n.day(a,{width:"short",context:"formatting"});default:return n.day(a,{width:"wide",context:"formatting"})}},a:function(e,t,n){const a=e.getHours()/12>=1?"pm":"am";switch(t){case"a":case"aa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"});case"aaa":return n.dayPeriod(a,{width:"abbreviated",context:"formatting"}).toLowerCase();case"aaaaa":return n.dayPeriod(a,{width:"narrow",context:"formatting"});default:return n.dayPeriod(a,{width:"wide",context:"formatting"})}},b:function(e,t,n){const a=e.getHours();let r;switch(a===12?r=ea.noon:a===0?r=ea.midnight:r=a/12>=1?"pm":"am",t){case"b":case"bb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"bbb":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"}).toLowerCase();case"bbbbb":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},B:function(e,t,n){const a=e.getHours();let r;switch(a>=17?r=ea.evening:a>=12?r=ea.afternoon:a>=4?r=ea.morning:r=ea.night,t){case"B":case"BB":case"BBB":return n.dayPeriod(r,{width:"abbreviated",context:"formatting"});case"BBBBB":return n.dayPeriod(r,{width:"narrow",context:"formatting"});default:return n.dayPeriod(r,{width:"wide",context:"formatting"})}},h:function(e,t,n){if(t==="ho"){let a=e.getHours()%12;return a===0&&(a=12),n.ordinalNumber(a,{unit:"hour"})}return Bt.h(e,t)},H:function(e,t,n){return t==="Ho"?n.ordinalNumber(e.getHours(),{unit:"hour"}):Bt.H(e,t)},K:function(e,t,n){const a=e.getHours()%12;return t==="Ko"?n.ordinalNumber(a,{unit:"hour"}):Oe(a,t.length)},k:function(e,t,n){let a=e.getHours();return a===0&&(a=24),t==="ko"?n.ordinalNumber(a,{unit:"hour"}):Oe(a,t.length)},m:function(e,t,n){return t==="mo"?n.ordinalNumber(e.getMinutes(),{unit:"minute"}):Bt.m(e,t)},s:function(e,t,n){return t==="so"?n.ordinalNumber(e.getSeconds(),{unit:"second"}):Bt.s(e,t)},S:function(e,t){return Bt.S(e,t)},X:function(e,t,n){const a=e.getTimezoneOffset();if(a===0)return"Z";switch(t){case"X":return ar(a);case"XXXX":case"XX":return qt(a);default:return qt(a,":")}},x:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"x":return ar(a);case"xxxx":case"xx":return qt(a);default:return qt(a,":")}},O:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"O":case"OO":case"OOO":return"GMT"+tr(a,":");default:return"GMT"+qt(a,":")}},z:function(e,t,n){const a=e.getTimezoneOffset();switch(t){case"z":case"zz":case"zzz":return"GMT"+tr(a,":");default:return"GMT"+qt(a,":")}},t:function(e,t,n){const a=Math.trunc(+e/1e3);return Oe(a,t.length)},T:function(e,t,n){return Oe(+e,t.length)}};function tr(e,t=""){const n=e>0?"-":"+",a=Math.abs(e),r=Math.trunc(a/60),l=a%60;return l===0?n+String(r):n+String(r)+t+Oe(l,2)}function ar(e,t){return e%60===0?(e>0?"-":"+")+Oe(Math.abs(e)/60,2):qt(e,t)}function qt(e,t=""){const n=e>0?"-":"+",a=Math.abs(e),r=Oe(Math.trunc(a/60),2),l=Oe(a%60,2);return n+r+t+l}const nr=(e,t)=>{switch(e){case"P":return t.date({width:"short"});case"PP":return t.date({width:"medium"});case"PPP":return t.date({width:"long"});default:return t.date({width:"full"})}},Cr=(e,t)=>{switch(e){case"p":return t.time({width:"short"});case"pp":return t.time({width:"medium"});case"ppp":return t.time({width:"long"});default:return t.time({width:"full"})}},ui=(e,t)=>{const n=e.match(/(P+)(p+)?/)||[],a=n[1],r=n[2];if(!r)return nr(e,t);let l;switch(a){case"P":l=t.dateTime({width:"short"});break;case"PP":l=t.dateTime({width:"medium"});break;case"PPP":l=t.dateTime({width:"long"});break;default:l=t.dateTime({width:"full"});break}return l.replace("{{date}}",nr(a,t)).replace("{{time}}",Cr(r,t))},bn={p:Cr,P:ui},di=/^D+$/,ci=/^Y+$/,pi=["D","DD","YY","YYYY"];function Nr(e){return di.test(e)}function Br(e){return ci.test(e)}function wn(e,t,n){const a=mi(e,t,n);if(console.warn(a),pi.includes(e))throw new RangeError(a)}function mi(e,t,n){const a=e[0]==="Y"?"years":"days of the month";return`Use \`${e.toLowerCase()}\` instead of \`${e}\` (in \`${t}\`) for formatting ${a} to the input \`${n}\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`}const vi=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,yi=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,hi=/^'([^]*?)'?$/,fi=/''/g,gi=/[a-zA-Z]/;function $t(e,t,n){const a=Zt(),r=n?.locale??a.locale??Yr,l=n?.firstWeekContainsDate??n?.locale?.options?.firstWeekContainsDate??a.firstWeekContainsDate??a.locale?.options?.firstWeekContainsDate??1,o=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,c=ge(e,n?.in);if(!wa(c))throw new RangeError("Invalid time value");let u=t.match(yi).map(m=>{const d=m[0];if(d==="p"||d==="P"){const f=bn[d];return f(m,r.formatLong)}return m}).join("").match(vi).map(m=>{if(m==="''")return{isToken:!1,value:"'"};const d=m[0];if(d==="'")return{isToken:!1,value:bi(m)};if(er[d])return{isToken:!0,value:m};if(d.match(gi))throw new RangeError("Format string contains an unescaped latin alphabet character `"+d+"`");return{isToken:!1,value:m}});r.localize.preprocessor&&(u=r.localize.preprocessor(c,u));const w={firstWeekContainsDate:l,weekStartsOn:o,locale:r};return u.map(m=>{if(!m.isToken)return m.value;const d=m.value;(!n?.useAdditionalWeekYearTokens&&Br(d)||!n?.useAdditionalDayOfYearTokens&&Nr(d))&&wn(d,t,String(e));const f=er[d[0]];return f(c,d,r.localize,w)}).join("")}function bi(e){const t=e.match(hi);return t?t[1].replace(fi,"'"):e}function wi(e,t){return ge(e,t?.in).getDay()}function ki(e,t){const n=ge(e,t?.in),a=n.getFullYear(),r=n.getMonth(),l=Re(n,0);return l.setFullYear(a,r+1,0),l.setHours(0,0,0,0),l.getDate()}function _i(){return Object.assign({},Zt())}function Yt(e,t){return ge(e,t?.in).getHours()}function xi(e,t){const n=ge(e,t?.in).getDay();return n===0?7:n}function Ft(e,t){return ge(e,t?.in).getMinutes()}function Se(e,t){return ge(e,t?.in).getMonth()}function ua(e){return ge(e).getSeconds()}function we(e,t){return ge(e,t?.in).getFullYear()}function Xt(e,t){return+ge(e)>+ge(t)}function da(e,t){return+ge(e)<+ge(t)}function na(e,t){return+ge(e)==+ge(t)}function Mi(e,t){const n=Di(t)?new t(0):Re(t,0);return n.setFullYear(e.getFullYear(),e.getMonth(),e.getDate()),n.setHours(e.getHours(),e.getMinutes(),e.getSeconds(),e.getMilliseconds()),n}function Di(e){return typeof e=="function"&&e.prototype?.constructor===e}const Ti=10;class Vr{subPriority=0;validate(t,n){return!0}}class Si extends Vr{constructor(t,n,a,r,l){super(),this.value=t,this.validateValue=n,this.setValue=a,this.priority=r,l&&(this.subPriority=l)}validate(t,n){return this.validateValue(t,this.value,n)}set(t,n,a){return this.setValue(t,n,this.value,a)}}class Pi extends Vr{priority=Ti;subPriority=-1;constructor(t,n){super(),this.context=t||(a=>Re(n,a))}set(t,n){return n.timestampIsSet?t:Re(t,Mi(t,this.context))}}class $e{run(t,n,a,r){const l=this.parse(t,n,a,r);return l?{setter:new Si(l.value,this.validate,this.set,this.priority,this.subPriority),rest:l.rest}:null}validate(t,n,a){return!0}}class Ai extends $e{priority=140;parse(t,n,a){switch(n){case"G":case"GG":case"GGG":return a.era(t,{width:"abbreviated"})||a.era(t,{width:"narrow"});case"GGGGG":return a.era(t,{width:"narrow"});default:return a.era(t,{width:"wide"})||a.era(t,{width:"abbreviated"})||a.era(t,{width:"narrow"})}}set(t,n,a){return n.era=a,t.setFullYear(a,0,1),t.setHours(0,0,0,0),t}incompatibleTokens=["R","u","t","T"]}const Qe={month:/^(1[0-2]|0?\d)/,date:/^(3[0-1]|[0-2]?\d)/,dayOfYear:/^(36[0-6]|3[0-5]\d|[0-2]?\d?\d)/,week:/^(5[0-3]|[0-4]?\d)/,hour23h:/^(2[0-3]|[0-1]?\d)/,hour24h:/^(2[0-4]|[0-1]?\d)/,hour11h:/^(1[0-1]|0?\d)/,hour12h:/^(1[0-2]|0?\d)/,minute:/^[0-5]?\d/,second:/^[0-5]?\d/,singleDigit:/^\d/,twoDigits:/^\d{1,2}/,threeDigits:/^\d{1,3}/,fourDigits:/^\d{1,4}/,anyDigitsSigned:/^-?\d+/,singleDigitSigned:/^-?\d/,twoDigitsSigned:/^-?\d{1,2}/,threeDigitsSigned:/^-?\d{1,3}/,fourDigitsSigned:/^-?\d{1,4}/},Pt={basicOptionalMinutes:/^([+-])(\d{2})(\d{2})?|Z/,basic:/^([+-])(\d{2})(\d{2})|Z/,basicOptionalSeconds:/^([+-])(\d{2})(\d{2})((\d{2}))?|Z/,extended:/^([+-])(\d{2}):(\d{2})|Z/,extendedOptionalSeconds:/^([+-])(\d{2}):(\d{2})(:(\d{2}))?|Z/};function Xe(e,t){return e&&{value:t(e.value),rest:e.rest}}function Le(e,t){const n=t.match(e);return n?{value:parseInt(n[0],10),rest:t.slice(n[0].length)}:null}function At(e,t){const n=t.match(e);if(!n)return null;if(n[0]==="Z")return{value:0,rest:t.slice(1)};const a=n[1]==="+"?1:-1,r=n[2]?parseInt(n[2],10):0,l=n[3]?parseInt(n[3],10):0,o=n[5]?parseInt(n[5],10):0;return{value:a*(r*Dr+l*go+o*bo),rest:t.slice(n[0].length)}}function Er(e){return Le(Qe.anyDigitsSigned,e)}function We(e,t){switch(e){case 1:return Le(Qe.singleDigit,t);case 2:return Le(Qe.twoDigits,t);case 3:return Le(Qe.threeDigits,t);case 4:return Le(Qe.fourDigits,t);default:return Le(new RegExp("^\\d{1,"+e+"}"),t)}}function Lr(e,t){switch(e){case 1:return Le(Qe.singleDigitSigned,t);case 2:return Le(Qe.twoDigitsSigned,t);case 3:return Le(Qe.threeDigitsSigned,t);case 4:return Le(Qe.fourDigitsSigned,t);default:return Le(new RegExp("^-?\\d{1,"+e+"}"),t)}}function $n(e){switch(e){case"morning":return 4;case"evening":return 17;case"pm":case"noon":case"afternoon":return 12;default:return 0}}function zr(e,t){const n=t>0,a=n?t:1-t;let r;if(a<=50)r=e||100;else{const l=a+50,o=Math.trunc(l/100)*100,c=e>=l%100;r=e+o-(c?100:0)}return n?r:1-r}function Fr(e){return e%400===0||e%4===0&&e%100!==0}class $i extends $e{priority=130;incompatibleTokens=["Y","R","u","w","I","i","e","c","t","T"];parse(t,n,a){const r=l=>({year:l,isTwoDigitYear:n==="yy"});switch(n){case"y":return Xe(We(4,t),r);case"yo":return Xe(a.ordinalNumber(t,{unit:"year"}),r);default:return Xe(We(n.length,t),r)}}validate(t,n){return n.isTwoDigitYear||n.year>0}set(t,n,a){const r=t.getFullYear();if(a.isTwoDigitYear){const o=zr(a.year,r);return t.setFullYear(o,0,1),t.setHours(0,0,0,0),t}const l=!("era"in n)||n.era===1?a.year:1-a.year;return t.setFullYear(l,0,1),t.setHours(0,0,0,0),t}}class Oi extends $e{priority=130;parse(t,n,a){const r=l=>({year:l,isTwoDigitYear:n==="YY"});switch(n){case"Y":return Xe(We(4,t),r);case"Yo":return Xe(a.ordinalNumber(t,{unit:"year"}),r);default:return Xe(We(n.length,t),r)}}validate(t,n){return n.isTwoDigitYear||n.year>0}set(t,n,a,r){const l=Pn(t,r);if(a.isTwoDigitYear){const c=zr(a.year,l);return t.setFullYear(c,0,r.firstWeekContainsDate),t.setHours(0,0,0,0),Mt(t,r)}const o=!("era"in n)||n.era===1?a.year:1-a.year;return t.setFullYear(o,0,r.firstWeekContainsDate),t.setHours(0,0,0,0),Mt(t,r)}incompatibleTokens=["y","R","u","Q","q","M","L","I","d","D","i","t","T"]}class Ii extends $e{priority=130;parse(t,n){return Lr(n==="R"?4:n.length,t)}set(t,n,a){const r=Re(t,0);return r.setFullYear(a,0,4),r.setHours(0,0,0,0),sa(r)}incompatibleTokens=["G","y","Y","u","Q","q","M","L","w","d","D","e","c","t","T"]}class Ri extends $e{priority=130;parse(t,n){return Lr(n==="u"?4:n.length,t)}set(t,n,a){return t.setFullYear(a,0,1),t.setHours(0,0,0,0),t}incompatibleTokens=["G","y","Y","R","w","I","i","e","c","t","T"]}class Yi extends $e{priority=120;parse(t,n,a){switch(n){case"Q":case"QQ":return We(n.length,t);case"Qo":return a.ordinalNumber(t,{unit:"quarter"});case"QQQ":return a.quarter(t,{width:"abbreviated",context:"formatting"})||a.quarter(t,{width:"narrow",context:"formatting"});case"QQQQQ":return a.quarter(t,{width:"narrow",context:"formatting"});default:return a.quarter(t,{width:"wide",context:"formatting"})||a.quarter(t,{width:"abbreviated",context:"formatting"})||a.quarter(t,{width:"narrow",context:"formatting"})}}validate(t,n){return n>=1&&n<=4}set(t,n,a){return t.setMonth((a-1)*3,1),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","q","M","L","w","I","d","D","i","e","c","t","T"]}class Ci extends $e{priority=120;parse(t,n,a){switch(n){case"q":case"qq":return We(n.length,t);case"qo":return a.ordinalNumber(t,{unit:"quarter"});case"qqq":return a.quarter(t,{width:"abbreviated",context:"standalone"})||a.quarter(t,{width:"narrow",context:"standalone"});case"qqqqq":return a.quarter(t,{width:"narrow",context:"standalone"});default:return a.quarter(t,{width:"wide",context:"standalone"})||a.quarter(t,{width:"abbreviated",context:"standalone"})||a.quarter(t,{width:"narrow",context:"standalone"})}}validate(t,n){return n>=1&&n<=4}set(t,n,a){return t.setMonth((a-1)*3,1),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","Q","M","L","w","I","d","D","i","e","c","t","T"]}class Ni extends $e{incompatibleTokens=["Y","R","q","Q","L","w","I","D","i","e","c","t","T"];priority=110;parse(t,n,a){const r=l=>l-1;switch(n){case"M":return Xe(Le(Qe.month,t),r);case"MM":return Xe(We(2,t),r);case"Mo":return Xe(a.ordinalNumber(t,{unit:"month"}),r);case"MMM":return a.month(t,{width:"abbreviated",context:"formatting"})||a.month(t,{width:"narrow",context:"formatting"});case"MMMMM":return a.month(t,{width:"narrow",context:"formatting"});default:return a.month(t,{width:"wide",context:"formatting"})||a.month(t,{width:"abbreviated",context:"formatting"})||a.month(t,{width:"narrow",context:"formatting"})}}validate(t,n){return n>=0&&n<=11}set(t,n,a){return t.setMonth(a,1),t.setHours(0,0,0,0),t}}class Bi extends $e{priority=110;parse(t,n,a){const r=l=>l-1;switch(n){case"L":return Xe(Le(Qe.month,t),r);case"LL":return Xe(We(2,t),r);case"Lo":return Xe(a.ordinalNumber(t,{unit:"month"}),r);case"LLL":return a.month(t,{width:"abbreviated",context:"standalone"})||a.month(t,{width:"narrow",context:"standalone"});case"LLLLL":return a.month(t,{width:"narrow",context:"standalone"});default:return a.month(t,{width:"wide",context:"standalone"})||a.month(t,{width:"abbreviated",context:"standalone"})||a.month(t,{width:"narrow",context:"standalone"})}}validate(t,n){return n>=0&&n<=11}set(t,n,a){return t.setMonth(a,1),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","q","Q","M","w","I","D","i","e","c","t","T"]}function Vi(e,t,n){const a=ge(e,n?.in),r=An(a,n)-t;return a.setDate(a.getDate()-r*7),ge(a,n?.in)}class Ei extends $e{priority=100;parse(t,n,a){switch(n){case"w":return Le(Qe.week,t);case"wo":return a.ordinalNumber(t,{unit:"week"});default:return We(n.length,t)}}validate(t,n){return n>=1&&n<=53}set(t,n,a,r){return Mt(Vi(t,a,r),r)}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","i","t","T"]}function Li(e,t,n){const a=ge(e,n?.in),r=Sn(a,n)-t;return a.setDate(a.getDate()-r*7),a}class zi extends $e{priority=100;parse(t,n,a){switch(n){case"I":return Le(Qe.week,t);case"Io":return a.ordinalNumber(t,{unit:"week"});default:return We(n.length,t)}}validate(t,n){return n>=1&&n<=53}set(t,n,a){return sa(Li(t,a))}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","e","c","t","T"]}const Fi=[31,28,31,30,31,30,31,31,30,31,30,31],Hi=[31,29,31,30,31,30,31,31,30,31,30,31];class Wi extends $e{priority=90;subPriority=1;parse(t,n,a){switch(n){case"d":return Le(Qe.date,t);case"do":return a.ordinalNumber(t,{unit:"date"});default:return We(n.length,t)}}validate(t,n){const a=t.getFullYear(),r=Fr(a),l=t.getMonth();return r?n>=1&&n<=Hi[l]:n>=1&&n<=Fi[l]}set(t,n,a){return t.setDate(a),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","q","Q","w","I","D","i","e","c","t","T"]}class ji extends $e{priority=90;subpriority=1;parse(t,n,a){switch(n){case"D":case"DD":return Le(Qe.dayOfYear,t);case"Do":return a.ordinalNumber(t,{unit:"date"});default:return We(n.length,t)}}validate(t,n){const a=t.getFullYear();return Fr(a)?n>=1&&n<=366:n>=1&&n<=365}set(t,n,a){return t.setMonth(0,a),t.setHours(0,0,0,0),t}incompatibleTokens=["Y","R","q","Q","M","L","w","I","d","E","i","e","c","t","T"]}function On(e,t,n){const a=Zt(),r=n?.weekStartsOn??n?.locale?.options?.weekStartsOn??a.weekStartsOn??a.locale?.options?.weekStartsOn??0,l=ge(e,n?.in),o=l.getDay(),c=(t%7+7)%7,u=7-r,w=t<0||t>6?t-(o+u)%7:(c+u)%7-(o+u)%7;return yt(l,w,n)}class qi extends $e{priority=90;parse(t,n,a){switch(n){case"E":case"EE":case"EEE":return a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"});case"EEEEE":return a.day(t,{width:"narrow",context:"formatting"});case"EEEEEE":return a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"});default:return a.day(t,{width:"wide",context:"formatting"})||a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"})}}validate(t,n){return n>=0&&n<=6}set(t,n,a,r){return t=On(t,a,r),t.setHours(0,0,0,0),t}incompatibleTokens=["D","i","e","c","t","T"]}class Ui extends $e{priority=90;parse(t,n,a,r){const l=o=>{const c=Math.floor((o-1)/7)*7;return(o+r.weekStartsOn+6)%7+c};switch(n){case"e":case"ee":return Xe(We(n.length,t),l);case"eo":return Xe(a.ordinalNumber(t,{unit:"day"}),l);case"eee":return a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"});case"eeeee":return a.day(t,{width:"narrow",context:"formatting"});case"eeeeee":return a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"});default:return a.day(t,{width:"wide",context:"formatting"})||a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"})}}validate(t,n){return n>=0&&n<=6}set(t,n,a,r){return t=On(t,a,r),t.setHours(0,0,0,0),t}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","c","t","T"]}class Qi extends $e{priority=90;parse(t,n,a,r){const l=o=>{const c=Math.floor((o-1)/7)*7;return(o+r.weekStartsOn+6)%7+c};switch(n){case"c":case"cc":return Xe(We(n.length,t),l);case"co":return Xe(a.ordinalNumber(t,{unit:"day"}),l);case"ccc":return a.day(t,{width:"abbreviated",context:"standalone"})||a.day(t,{width:"short",context:"standalone"})||a.day(t,{width:"narrow",context:"standalone"});case"ccccc":return a.day(t,{width:"narrow",context:"standalone"});case"cccccc":return a.day(t,{width:"short",context:"standalone"})||a.day(t,{width:"narrow",context:"standalone"});default:return a.day(t,{width:"wide",context:"standalone"})||a.day(t,{width:"abbreviated",context:"standalone"})||a.day(t,{width:"short",context:"standalone"})||a.day(t,{width:"narrow",context:"standalone"})}}validate(t,n){return n>=0&&n<=6}set(t,n,a,r){return t=On(t,a,r),t.setHours(0,0,0,0),t}incompatibleTokens=["y","R","u","q","Q","M","L","I","d","D","E","i","e","t","T"]}function Xi(e,t,n){const a=ge(e,n?.in),r=xi(a,n),l=t-r;return yt(a,l,n)}class Gi extends $e{priority=90;parse(t,n,a){const r=l=>l===0?7:l;switch(n){case"i":case"ii":return We(n.length,t);case"io":return a.ordinalNumber(t,{unit:"day"});case"iii":return Xe(a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"}),r);case"iiiii":return Xe(a.day(t,{width:"narrow",context:"formatting"}),r);case"iiiiii":return Xe(a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"}),r);default:return Xe(a.day(t,{width:"wide",context:"formatting"})||a.day(t,{width:"abbreviated",context:"formatting"})||a.day(t,{width:"short",context:"formatting"})||a.day(t,{width:"narrow",context:"formatting"}),r)}}validate(t,n){return n>=1&&n<=7}set(t,n,a){return t=Xi(t,a),t.setHours(0,0,0,0),t}incompatibleTokens=["y","Y","u","q","Q","M","L","w","d","D","E","e","c","t","T"]}class Zi extends $e{priority=80;parse(t,n,a){switch(n){case"a":case"aa":case"aaa":return a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"});case"aaaaa":return a.dayPeriod(t,{width:"narrow",context:"formatting"});default:return a.dayPeriod(t,{width:"wide",context:"formatting"})||a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"})}}set(t,n,a){return t.setHours($n(a),0,0,0),t}incompatibleTokens=["b","B","H","k","t","T"]}class Ki extends $e{priority=80;parse(t,n,a){switch(n){case"b":case"bb":case"bbb":return a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"});case"bbbbb":return a.dayPeriod(t,{width:"narrow",context:"formatting"});default:return a.dayPeriod(t,{width:"wide",context:"formatting"})||a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"})}}set(t,n,a){return t.setHours($n(a),0,0,0),t}incompatibleTokens=["a","B","H","k","t","T"]}class Ji extends $e{priority=80;parse(t,n,a){switch(n){case"B":case"BB":case"BBB":return a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"});case"BBBBB":return a.dayPeriod(t,{width:"narrow",context:"formatting"});default:return a.dayPeriod(t,{width:"wide",context:"formatting"})||a.dayPeriod(t,{width:"abbreviated",context:"formatting"})||a.dayPeriod(t,{width:"narrow",context:"formatting"})}}set(t,n,a){return t.setHours($n(a),0,0,0),t}incompatibleTokens=["a","b","t","T"]}class es extends $e{priority=70;parse(t,n,a){switch(n){case"h":return Le(Qe.hour12h,t);case"ho":return a.ordinalNumber(t,{unit:"hour"});default:return We(n.length,t)}}validate(t,n){return n>=1&&n<=12}set(t,n,a){const r=t.getHours()>=12;return r&&a<12?t.setHours(a+12,0,0,0):!r&&a===12?t.setHours(0,0,0,0):t.setHours(a,0,0,0),t}incompatibleTokens=["H","K","k","t","T"]}class ts extends $e{priority=70;parse(t,n,a){switch(n){case"H":return Le(Qe.hour23h,t);case"Ho":return a.ordinalNumber(t,{unit:"hour"});default:return We(n.length,t)}}validate(t,n){return n>=0&&n<=23}set(t,n,a){return t.setHours(a,0,0,0),t}incompatibleTokens=["a","b","h","K","k","t","T"]}class as extends $e{priority=70;parse(t,n,a){switch(n){case"K":return Le(Qe.hour11h,t);case"Ko":return a.ordinalNumber(t,{unit:"hour"});default:return We(n.length,t)}}validate(t,n){return n>=0&&n<=11}set(t,n,a){return t.getHours()>=12&&a<12?t.setHours(a+12,0,0,0):t.setHours(a,0,0,0),t}incompatibleTokens=["h","H","k","t","T"]}class ns extends $e{priority=70;parse(t,n,a){switch(n){case"k":return Le(Qe.hour24h,t);case"ko":return a.ordinalNumber(t,{unit:"hour"});default:return We(n.length,t)}}validate(t,n){return n>=1&&n<=24}set(t,n,a){const r=a<=24?a%24:a;return t.setHours(r,0,0,0),t}incompatibleTokens=["a","b","h","H","K","t","T"]}class rs extends $e{priority=60;parse(t,n,a){switch(n){case"m":return Le(Qe.minute,t);case"mo":return a.ordinalNumber(t,{unit:"minute"});default:return We(n.length,t)}}validate(t,n){return n>=0&&n<=59}set(t,n,a){return t.setMinutes(a,0,0),t}incompatibleTokens=["t","T"]}class ls extends $e{priority=50;parse(t,n,a){switch(n){case"s":return Le(Qe.second,t);case"so":return a.ordinalNumber(t,{unit:"second"});default:return We(n.length,t)}}validate(t,n){return n>=0&&n<=59}set(t,n,a){return t.setSeconds(a,0),t}incompatibleTokens=["t","T"]}class os extends $e{priority=30;parse(t,n){const a=r=>Math.trunc(r*Math.pow(10,-n.length+3));return Xe(We(n.length,t),a)}set(t,n,a){return t.setMilliseconds(a),t}incompatibleTokens=["t","T"]}class is extends $e{priority=10;parse(t,n){switch(n){case"X":return At(Pt.basicOptionalMinutes,t);case"XX":return At(Pt.basic,t);case"XXXX":return At(Pt.basicOptionalSeconds,t);case"XXXXX":return At(Pt.extendedOptionalSeconds,t);default:return At(Pt.extended,t)}}set(t,n,a){return n.timestampIsSet?t:Re(t,t.getTime()-Ea(t)-a)}incompatibleTokens=["t","T","x"]}class ss extends $e{priority=10;parse(t,n){switch(n){case"x":return At(Pt.basicOptionalMinutes,t);case"xx":return At(Pt.basic,t);case"xxxx":return At(Pt.basicOptionalSeconds,t);case"xxxxx":return At(Pt.extendedOptionalSeconds,t);default:return At(Pt.extended,t)}}set(t,n,a){return n.timestampIsSet?t:Re(t,t.getTime()-Ea(t)-a)}incompatibleTokens=["t","T","X"]}class us extends $e{priority=40;parse(t){return Er(t)}set(t,n,a){return[Re(t,a*1e3),{timestampIsSet:!0}]}incompatibleTokens="*"}class ds extends $e{priority=20;parse(t){return Er(t)}set(t,n,a){return[Re(t,a),{timestampIsSet:!0}]}incompatibleTokens="*"}const cs={G:new Ai,y:new $i,Y:new Oi,R:new Ii,u:new Ri,Q:new Yi,q:new Ci,M:new Ni,L:new Bi,w:new Ei,I:new zi,d:new Wi,D:new ji,E:new qi,e:new Ui,c:new Qi,i:new Gi,a:new Zi,b:new Ki,B:new Ji,h:new es,H:new ts,K:new as,k:new ns,m:new rs,s:new ls,S:new os,X:new is,x:new ss,t:new us,T:new ds},ps=/[yYQqMLwIdDecihHKkms]o|(\w)\1*|''|'(''|[^'])+('|$)|./g,ms=/P+p+|P+|p+|''|'(''|[^'])+('|$)|./g,vs=/^'([^]*?)'?$/,ys=/''/g,hs=/\S/,fs=/[a-zA-Z]/;function kn(e,t,n,a){const r=()=>Re(a?.in||n,NaN),l=_i(),o=a?.locale??l.locale??Yr,c=a?.firstWeekContainsDate??a?.locale?.options?.firstWeekContainsDate??l.firstWeekContainsDate??l.locale?.options?.firstWeekContainsDate??1,u=a?.weekStartsOn??a?.locale?.options?.weekStartsOn??l.weekStartsOn??l.locale?.options?.weekStartsOn??0;if(!t)return e?r():ge(n,a?.in);const w={firstWeekContainsDate:c,weekStartsOn:u,locale:o},m=[new Pi(a?.in,n)],d=t.match(ms).map(S=>{const O=S[0];if(O in bn){const R=bn[O];return R(S,o.formatLong)}return S}).join("").match(ps),f=[];for(let S of d){!a?.useAdditionalWeekYearTokens&&Br(S)&&wn(S,t,e),!a?.useAdditionalDayOfYearTokens&&Nr(S)&&wn(S,t,e);const O=S[0],R=cs[O];if(R){const{incompatibleTokens:M}=R;if(Array.isArray(M)){const U=f.find(Y=>M.includes(Y.token)||Y.token===O);if(U)throw new RangeError(`The format string mustn't contain \`${U.fullToken}\` and \`${S}\` at the same time`)}else if(R.incompatibleTokens==="*"&&f.length>0)throw new RangeError(`The format string mustn't contain \`${S}\` and any other token at the same time`);f.push({token:O,fullToken:S});const B=R.run(e,S,o.match,w);if(!B)return r();m.push(B.setter),e=B.rest}else{if(O.match(fs))throw new RangeError("Format string contains an unescaped latin alphabet character `"+O+"`");if(S==="''"?S="'":O==="'"&&(S=gs(S)),e.indexOf(S)===0)e=e.slice(S.length);else return r()}}if(e.length>0&&hs.test(e))return r();const x=m.map(S=>S.priority).sort((S,O)=>O-S).filter((S,O,R)=>R.indexOf(S)===O).map(S=>m.filter(O=>O.priority===S).sort((O,R)=>R.subPriority-O.subPriority)).map(S=>S[0]);let $=ge(n,a?.in);if(isNaN(+$))return r();const C={};for(const S of x){if(!S.validate($,w))return r();const O=S.set($,C,w);Array.isArray(O)?($=O[0],Object.assign(C,O[1])):$=O}return $}function gs(e){return e.match(vs)[1].replace(ys,"'")}function rr(e,t,n){const[a,r]=Pa(n?.in,e,t);return+ra(a)==+ra(r)}function Hr(e,t,n){return yt(e,-t,n)}function Wr(e,t,n){const a=ge(e,n?.in),r=a.getFullYear(),l=a.getDate(),o=Re(e,0);o.setFullYear(r,t,15),o.setHours(0,0,0,0);const c=ki(o);return a.setMonth(t,Math.min(l,c)),a}function Ye(e,t,n){let a=ge(e,n?.in);return isNaN(+a)?Re(e,NaN):(t.year!=null&&a.setFullYear(t.year),t.month!=null&&(a=Wr(a,t.month)),t.date!=null&&a.setDate(t.date),t.hours!=null&&a.setHours(t.hours),t.minutes!=null&&a.setMinutes(t.minutes),t.seconds!=null&&a.setSeconds(t.seconds),t.milliseconds!=null&&a.setMilliseconds(t.milliseconds),a)}function bs(e,t,n){const a=ge(e,n?.in);return a.setHours(t),a}function jr(e,t,n){const a=ge(e,n?.in);return a.setMilliseconds(t),a}function ws(e,t,n){const a=ge(e,n?.in);return a.setMinutes(t),a}function qr(e,t,n){const a=ge(e,n?.in);return a.setSeconds(t),a}function kt(e,t,n){const a=ge(e,n?.in);return isNaN(+a)?Re(e,NaN):(a.setFullYear(t),a)}function ca(e,t,n){return xt(e,-t,n)}function ks(e,t,n){const{years:a=0,months:r=0,weeks:l=0,days:o=0,hours:c=0,minutes:u=0,seconds:w=0}=t,m=ca(e,r+a*12,n),d=Hr(m,o+l*7,n),f=u+c*60,x=(w+f*60)*1e3;return Re(e,+d-x)}function Ur(e,t,n){return Tn(e,-t,n)}function ha(){const e=kr();return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img",...e},[ve("path",{d:"M29.333 8c0-2.208-1.792-4-4-4h-18.667c-2.208 0-4 1.792-4 4v18.667c0 2.208 1.792 4 4 4h18.667c2.208 0 4-1.792 4-4v-18.667zM26.667 8v18.667c0 0.736-0.597 1.333-1.333 1.333 0 0-18.667 0-18.667 0-0.736 0-1.333-0.597-1.333-1.333 0 0 0-18.667 0-18.667 0-0.736 0.597-1.333 1.333-1.333 0 0 18.667 0 18.667 0 0.736 0 1.333 0.597 1.333 1.333z"}),ve("path",{d:"M20 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z"}),ve("path",{d:"M9.333 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z"}),ve("path",{d:"M4 14.667h24c0.736 0 1.333-0.597 1.333-1.333s-0.597-1.333-1.333-1.333h-24c-0.736 0-1.333 0.597-1.333 1.333s0.597 1.333 1.333 1.333z"})])}ha.compatConfig={MODE:3};function Qr(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z"}),ve("path",{d:"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z"})])}Qr.compatConfig={MODE:3};function In(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M20.943 23.057l-7.057-7.057c0 0 7.057-7.057 7.057-7.057 0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-8 8c-0.521 0.521-0.521 1.365 0 1.885l8 8c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z"})])}In.compatConfig={MODE:3};function Rn(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M12.943 24.943l8-8c0.521-0.521 0.521-1.365 0-1.885l-8-8c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885l7.057 7.057c0 0-7.057 7.057-7.057 7.057-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0z"})])}Rn.compatConfig={MODE:3};function Yn(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M16 1.333c-8.095 0-14.667 6.572-14.667 14.667s6.572 14.667 14.667 14.667c8.095 0 14.667-6.572 14.667-14.667s-6.572-14.667-14.667-14.667zM16 4c6.623 0 12 5.377 12 12s-5.377 12-12 12c-6.623 0-12-5.377-12-12s5.377-12 12-12z"}),ve("path",{d:"M14.667 8v8c0 0.505 0.285 0.967 0.737 1.193l5.333 2.667c0.658 0.329 1.46 0.062 1.789-0.596s0.062-1.46-0.596-1.789l-4.596-2.298c0 0 0-7.176 0-7.176 0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z"})])}Yn.compatConfig={MODE:3};function Cn(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M24.943 19.057l-8-8c-0.521-0.521-1.365-0.521-1.885 0l-8 8c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l7.057-7.057c0 0 7.057 7.057 7.057 7.057 0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z"})])}Cn.compatConfig={MODE:3};function Nn(){return _(),H("svg",{xmlns:"http://www.w3.org/2000/svg",viewBox:"0 0 32 32",fill:"currentColor","aria-hidden":"true",class:"dp__icon",role:"img"},[ve("path",{d:"M7.057 12.943l8 8c0.521 0.521 1.365 0.521 1.885 0l8-8c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-7.057 7.057c0 0-7.057-7.057-7.057-7.057-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z"})])}Nn.compatConfig={MODE:3};const ct=(e,t)=>t?new Date(e.toLocaleString("en-US",{timeZone:t})):new Date(e),Bn=(e,t,n)=>_n(e,t,n)||j(),_s=(e,t,n)=>{const a=t.dateInTz?ct(new Date(e),t.dateInTz):j(e);return n?Ke(a,!0):a},_n=(e,t,n)=>{if(!e)return null;const a=n?Ke(j(e),!0):j(e);return t?t.exactMatch?_s(e,t,n):ct(a,t.timezone):a},xs=e=>{const t=new Date(e.getFullYear(),0,1).getTimezoneOffset();return e.getTimezoneOffset(){if(!e)return 0;const n=new Date,a=new Date(n.toLocaleString("en-US",{timeZone:"UTC"})),r=new Date(n.toLocaleString("en-US",{timeZone:e})),l=(xs(t??r)?r:t??r).getTimezoneOffset()/60;return(+a-+r)/(1e3*60*60)-l};var bt=(e=>(e.month="month",e.year="year",e))(bt||{}),wt=(e=>(e.top="top",e.bottom="bottom",e))(wt||{}),Ut=(e=>(e.header="header",e.calendar="calendar",e.timePicker="timePicker",e))(Ut||{}),lt=(e=>(e.month="month",e.year="year",e.calendar="calendar",e.time="time",e.minutes="minutes",e.hours="hours",e.seconds="seconds",e))(lt||{});const Ds=["timestamp","date","iso"];var ot=(e=>(e.up="up",e.down="down",e.left="left",e.right="right",e))(ot||{}),Ne=(e=>(e.arrowUp="ArrowUp",e.arrowDown="ArrowDown",e.arrowLeft="ArrowLeft",e.arrowRight="ArrowRight",e.enter="Enter",e.space=" ",e.esc="Escape",e.tab="Tab",e.home="Home",e.end="End",e.pageUp="PageUp",e.pageDown="PageDown",e))(Ne||{}),oa=(e=>(e.MONTH_AND_YEAR="MM-yyyy",e.YEAR="yyyy",e.DATE="dd-MM-yyyy",e))(oa||{});function lr(e){return t=>{const n=new Intl.DateTimeFormat(e,{weekday:"short",timeZone:"UTC"}).format(new Date(`2017-01-0${t}T00:00:00+00:00`));return e==="ar"?n.slice(2,5):n.slice(0,2)}}function Ts(e){return t=>$t(ct(new Date(`2017-01-0${t}T00:00:00+00:00`),"UTC"),"EEEEEE",{locale:e})}const Ss=(e,t,n)=>{const a=[1,2,3,4,5,6,7];let r;if(e!==null)try{r=a.map(Ts(e))}catch{r=a.map(lr(t))}else r=a.map(lr(t));const l=r.slice(0,n),o=r.slice(n+1,r.length);return[r[n]].concat(...o).concat(...l)},Vn=(e,t,n)=>{const a=[];for(let r=+e[0];r<=+e[1];r++)a.push({value:+r,text:Ln(r,t)});return n?a.reverse():a},Xr=(e,t,n)=>{const a=[1,2,3,4,5,6,7,8,9,10,11,12].map(l=>{const o=l<10?`0${l}`:l;return new Date(`2017-${o}-01T00:00:00+00:00`)});if(e!==null)try{const l=n==="long"?"LLLL":"LLL";return a.map((o,c)=>{const u=$t(ct(o,"UTC"),l,{locale:e});return{text:u.charAt(0).toUpperCase()+u.substring(1),value:c}})}catch{}const r=new Intl.DateTimeFormat(t,{month:n,timeZone:"UTC"});return a.map((l,o)=>{const c=r.format(l);return{text:c.charAt(0).toUpperCase()+c.substring(1),value:o}})},Ps=e=>[12,1,2,3,4,5,6,7,8,9,10,11,12,1,2,3,4,5,6,7,8,9,10,11][e],Ze=e=>{const t=i(e);return t?.$el?t?.$el:t},As=e=>({type:"dot",...e??{}}),Gr=e=>Array.isArray(e)?!!e[0]&&!!e[1]:!1,En={prop:e=>`"${e}" prop must be enabled!`,dateArr:e=>`You need to use array as "model-value" binding in order to support "${e}"`},Je=e=>e,or=e=>e===0?e:!e||isNaN(+e)?null:+e,ir=e=>e===null,Zr=e=>{if(e)return[...e.querySelectorAll("input, button, select, textarea, a[href]")][0]},$s=e=>{const t=[],n=a=>a.filter(r=>r);for(let a=0;a{const a=n!=null,r=t!=null;if(!a&&!r)return!1;const l=+n,o=+t;return a&&r?+e>l||+el:r?+e$s(e).map(n=>n.map(a=>{const{active:r,disabled:l,isBetween:o,highlighted:c}=t(a);return{...a,active:r,disabled:l,className:{dp__overlay_cell_active:r,dp__overlay_cell:!r,dp__overlay_cell_disabled:l,dp__overlay_cell_pad:!0,dp__overlay_cell_active_disabled:l&&r,dp__cell_in_between:o,"dp--highlighted":c}}})),Lt=(e,t,n=!1)=>{e&&t.allowStopPropagation&&(n&&e.stopImmediatePropagation(),e.stopPropagation())},Os=()=>["a[href]","area[href]","input:not([disabled]):not([type='hidden'])","select:not([disabled])","textarea:not([disabled])","button:not([disabled])","[tabindex]:not([tabindex='-1'])","[data-datepicker-instance]"].join(", ");function Is(e,t){let n=[...document.querySelectorAll(Os())];n=n.filter(r=>!e.contains(r)||r.hasAttribute("data-datepicker-instance"));const a=n.indexOf(e);if(a>=0&&(t?a-1>=0:a+1<=n.length))return n[a+(t?-1:1)]}const xn=(e,t)=>e?.querySelector(`[data-dp-element="${t}"]`),Ln=(e,t)=>new Intl.NumberFormat(t,{useGrouping:!1,style:"decimal"}).format(e),zn=(e,t)=>$t(e,t??oa.DATE),on=e=>Array.isArray(e),La=(e,t,n)=>t.get(zn(e,n)),Rs=(e,t)=>e?t?t instanceof Map?!!La(e,t):t(j(e)):!1:!0,it=(e,t,n=!1,a)=>{if(e.key===Ne.enter||e.key===Ne.space)return n&&e.preventDefault(),t();if(a)return a(e)},Ys=()=>"ontouchstart"in window||navigator.maxTouchPoints>0,Kr=(e,t)=>e?oa.MONTH_AND_YEAR:t?oa.YEAR:oa.DATE,Jr=e=>e<10?`0${e}`:e,sr=(e,t,n,a,r,l)=>{const o=kn(e,t.slice(0,e.length),new Date,{locale:l});return wa(o)&&Ar(o)?a||r?o:Ye(o,{hours:+n.hours,minutes:+n?.minutes,seconds:+n?.seconds,milliseconds:0}):null},Cs=(e,t,n,a,r,l)=>{const o=Array.isArray(n)?n[0]:n;if(typeof t=="string")return sr(e,t,o,a,r,l);if(Array.isArray(t)){let c=null;for(const u of t)if(c=sr(e,u,o,a,r,l),c)break;return c}return typeof t=="function"?t(e):null},j=e=>e?new Date(e):new Date,Ns=(e,t,n)=>{if(t){const r=(e.getMonth()+1).toString().padStart(2,"0"),l=e.getDate().toString().padStart(2,"0"),o=e.getHours().toString().padStart(2,"0"),c=e.getMinutes().toString().padStart(2,"0"),u=n?e.getSeconds().toString().padStart(2,"0"):"00";return`${e.getFullYear()}-${r}-${l}T${o}:${c}:${u}.000Z`}const a=Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),e.getUTCHours(),e.getUTCMinutes(),e.getUTCSeconds());return new Date(a).toISOString()},Ke=(e,t)=>{const n=j(JSON.parse(JSON.stringify(e))),a=Ye(n,{hours:0,minutes:0,seconds:0,milliseconds:0});return t?Po(a):a},zt=(e,t,n,a)=>{let r=e?j(e):j();return(t||t===0)&&(r=bs(r,+t)),(n||n===0)&&(r=ws(r,+n)),(a||a===0)&&(r=qr(r,+a)),jr(r,0)},ze=(e,t)=>!e||!t?!1:da(Ke(e),Ke(t)),Pe=(e,t)=>!e||!t?!1:na(Ke(e),Ke(t)),Ue=(e,t)=>!e||!t?!1:Xt(Ke(e),Ke(t)),Ta=(e,t,n)=>e?.[0]&&e?.[1]?Ue(n,e[0])&&ze(n,e[1]):e?.[0]&&t?Ue(n,e[0])&&ze(n,t)||ze(n,e[0])&&Ue(n,t):!1,_t=e=>{const t=Ye(new Date(e),{date:1});return Ke(t)},sn=(e,t,n)=>t&&(n||n===0)?Object.fromEntries(["hours","minutes","seconds"].map(a=>a===t?[a,n]:[a,isNaN(+e[a])?void 0:+e[a]])):{hours:isNaN(+e.hours)?void 0:+e.hours,minutes:isNaN(+e.minutes)?void 0:+e.minutes,seconds:isNaN(+e.seconds)?void 0:+e.seconds},Qt=e=>({hours:Yt(e),minutes:Ft(e),seconds:ua(e)}),el=(e,t)=>{if(t){const n=we(j(t));if(n>e)return 12;if(n===e)return Se(j(t))}},tl=(e,t)=>{if(t){const n=we(j(t));return n{if(e)return we(j(e))},al=(e,t)=>{const n=Ue(e,t)?t:e,a=Ue(t,e)?t:e;return Or({start:n,end:a})},Bs=e=>{const t=xt(e,1);return{month:Se(t),year:we(t)}},It=(e,t)=>{const n=Mt(e,{weekStartsOn:+t}),a=Rr(e,{weekStartsOn:+t});return[n,a]},nl=(e,t)=>{const n={hours:Yt(j()),minutes:Ft(j()),seconds:t?ua(j()):0};return Object.assign(n,e)},Et=(e,t,n)=>[Ye(j(e),{date:1}),Ye(j(),{month:t,year:n,date:1})],Rt=(e,t,n)=>{let a=e?j(e):j();return(t||t===0)&&(a=Wr(a,t)),n&&(a=kt(a,n)),a},rl=(e,t,n,a,r)=>{if(!a||r&&!t||!r&&!n)return!1;const l=r?xt(e,1):ca(e,1),o=[Se(l),we(l)];return r?!Es(...o,t):!Vs(...o,n)},Vs=(e,t,n)=>ze(...Et(n,e,t))||Pe(...Et(n,e,t)),Es=(e,t,n)=>Ue(...Et(n,e,t))||Pe(...Et(n,e,t)),ll=(e,t,n,a,r,l,o)=>{if(typeof t=="function"&&!o)return t(e);const c=n?{locale:n}:void 0;return Array.isArray(e)?`${$t(e[0],l,c)}${r&&!e[1]?"":a}${e[1]?$t(e[1],l,c):""}`:$t(e,l,c)},ta=e=>{if(e)return null;throw new Error(En.prop("partial-range"))},Ya=(e,t)=>{if(t)return e();throw new Error(En.prop("range"))},Mn=e=>Array.isArray(e)?wa(e[0])&&(e[1]?wa(e[1]):!0):e?wa(e):!1,Ls=(e,t)=>Ye(t??j(),{hours:+e.hours||0,minutes:+e.minutes||0,seconds:+e.seconds||0}),un=(e,t,n,a)=>{if(!e)return!0;if(a){const r=n==="max"?da(e,t):Xt(e,t),l={seconds:0,milliseconds:0};return r||na(Ye(e,l),Ye(t,l))}return n==="max"?e.getTime()<=t.getTime():e.getTime()>=t.getTime()},dn=(e,t,n)=>e?Ls(e,t):j(n??t),ur=(e,t,n,a,r)=>{if(Array.isArray(a)){const o=dn(e,a[0],t),c=dn(e,a[1],t);return un(a[0],o,n,!!t)&&un(a[1],c,n,!!t)&&r}const l=dn(e,a,t);return un(a,l,n,!!t)&&r},cn=e=>Ye(j(),Qt(e)),zs=(e,t,n)=>{if(e instanceof Map){const a=`${Jr(n+1)}-${t}`;return e.size?e.has(a):!1}return typeof e=="function"?e(Ke(Ye(j(),{month:n,year:t}),!0)):!1},Fs=(e,t,n)=>{if(e instanceof Map){const a=`${Jr(n+1)}-${t}`;return e.size?e.has(a):!0}return!0},ol=(e,t,n)=>typeof e=="function"?e({month:t,year:n}):!!e.months.find(a=>a.month===t&&a.year===n),Fn=(e,t)=>typeof e=="function"?e(t):e.years.includes(t),Dn=e=>`dp-${$t(e,"yyyy-MM-dd")}`,dr=(e,t)=>{const n=Hr(Ke(t),e),a=yt(Ke(t),e);return{before:n,after:a}},il=(e,t)=>t<+e[0]||t>+e[1],ba=Sa({menuFocused:!1,shiftKeyInMenu:!1}),sl=()=>{const e=n=>{ba.menuFocused=n},t=n=>{ba.shiftKeyInMenu!==n&&(ba.shiftKeyInMenu=n)};return{control:z(()=>({shiftKeyInMenu:ba.shiftKeyInMenu,menuFocused:ba.menuFocused})),setMenuFocused:e,setShiftKey:t}},Ce=Sa({monthYear:[],calendar:[],time:[],actionRow:[],selectionGrid:[],timePicker:{0:[],1:[]},monthPicker:[]}),pn=G(null),Ca=G(!1),mn=G(!1),vn=G(!1),yn=G(!1),rt=G(0),qe=G(0),Ht=()=>{const e=z(()=>Ca.value?[...Ce.selectionGrid,Ce.actionRow].filter(d=>d.length):mn.value?[...Ce.timePicker[0],...Ce.timePicker[1],yn.value?[]:[pn.value],Ce.actionRow].filter(d=>d.length):vn.value?[...Ce.monthPicker,Ce.actionRow]:[Ce.monthYear,...Ce.calendar,Ce.time,Ce.actionRow].filter(d=>d.length)),t=d=>{rt.value=d?rt.value+1:rt.value-1;let f=null;e.value[qe.value]&&(f=e.value[qe.value][rt.value]),!f&&e.value[qe.value+(d?1:-1)]?(qe.value=qe.value+(d?1:-1),rt.value=d?0:e.value[qe.value].length-1):f||(rt.value=d?rt.value-1:rt.value+1)},n=d=>{qe.value===0&&!d||qe.value===e.value.length&&d||(qe.value=d?qe.value+1:qe.value-1,e.value[qe.value]?e.value[qe.value]&&!e.value[qe.value][rt.value]&&rt.value!==0&&(rt.value=e.value[qe.value].length-1):qe.value=d?qe.value-1:qe.value+1)},a=d=>{let f=null;e.value[qe.value]&&(f=e.value[qe.value][rt.value]),f?f.focus({preventScroll:!Ca.value}):rt.value=d?rt.value-1:rt.value+1},r=()=>{t(!0),a(!0)},l=()=>{t(!1),a(!1)},o=()=>{n(!1),a(!0)},c=()=>{n(!0),a(!0)},u=(d,f)=>{Ce[f]=d},w=(d,f)=>{Ce[f]=d},m=()=>{rt.value=0,qe.value=0};return{buildMatrix:u,buildMultiLevelMatrix:w,setTimePickerBackRef:d=>{pn.value=d},setSelectionGrid:d=>{Ca.value=d,m(),d||(Ce.selectionGrid=[])},setTimePicker:(d,f=!1)=>{mn.value=d,yn.value=f,m(),d||(Ce.timePicker[0]=[],Ce.timePicker[1]=[])},setTimePickerElements:(d,f=0)=>{Ce.timePicker[f]=d},arrowRight:r,arrowLeft:l,arrowUp:o,arrowDown:c,clearArrowNav:()=>{Ce.monthYear=[],Ce.calendar=[],Ce.time=[],Ce.actionRow=[],Ce.selectionGrid=[],Ce.timePicker[0]=[],Ce.timePicker[1]=[],Ca.value=!1,mn.value=!1,yn.value=!1,vn.value=!1,m(),pn.value=null},setMonthPicker:d=>{vn.value=d,m()},refSets:Ce}},cr=e=>({menuAppearTop:"dp-menu-appear-top",menuAppearBottom:"dp-menu-appear-bottom",open:"dp-slide-down",close:"dp-slide-up",next:"calendar-next",previous:"calendar-prev",vNext:"dp-slide-up",vPrevious:"dp-slide-down",...e??{}}),Hs=e=>({toggleOverlay:"Toggle overlay",menu:"Datepicker menu",input:"Datepicker input",openTimePicker:"Open time picker",closeTimePicker:"Close time Picker",incrementValue:t=>`Increment ${t}`,decrementValue:t=>`Decrement ${t}`,openTpOverlay:t=>`Open ${t} overlay`,amPmButton:"Switch AM/PM mode",openYearsOverlay:"Open years overlay",openMonthsOverlay:"Open months overlay",nextMonth:"Next month",prevMonth:"Previous month",nextYear:"Next year",prevYear:"Previous year",day:void 0,weekDay:void 0,clearInput:"Clear value",calendarIcon:"Calendar icon",timePicker:"Time picker",monthPicker:t=>`Month picker${t?" overlay":""}`,yearPicker:t=>`Year picker${t?" overlay":""}`,timeOverlay:t=>`${t} overlay`,...e??{}}),pr=e=>e?typeof e=="boolean"?e?2:0:+e>=2?+e:2:0,Ws=e=>{const t=typeof e=="object"&&e,n={static:!0,solo:!1};if(!e)return{...n,count:pr(!1)};const a=t?e:{},r=t?a.count??!0:e,l=pr(r);return Object.assign(n,a,{count:l})},js=(e,t,n)=>e||(typeof n=="string"?n:t),qs=e=>typeof e=="boolean"?e?cr({}):!1:cr(e),Us=e=>{const t={enterSubmit:!0,tabSubmit:!0,openMenu:"open",selectOnFocus:!1,rangeSeparator:" - ",escClose:!0};return typeof e=="object"?{...t,...e??{},enabled:!0}:{...t,enabled:e}},Qs=e=>({months:[],years:[],times:{hours:[],minutes:[],seconds:[]},...e??{}}),Xs=e=>({showSelect:!0,showCancel:!0,showNow:!1,showPreview:!0,...e??{}}),Gs=e=>{const t={input:!1};return typeof e=="object"?{...t,...e??{},enabled:!0}:{enabled:e,...t}},Zs=e=>({allowStopPropagation:!0,closeOnScroll:!1,modeHeight:255,allowPreventDefault:!1,closeOnClearValue:!0,closeOnAutoApply:!0,noSwipe:!1,keepActionRow:!1,onClickOutside:void 0,tabOutClosesMenu:!0,arrowLeft:void 0,keepViewOnOffsetClick:!1,timeArrowHoldThreshold:0,shadowDom:!1,mobileBreakpoint:600,setDateOnMenuClose:!1,...e??{}}),Ks=e=>{const t={dates:Array.isArray(e)?e.map(n=>j(n)):[],years:[],months:[],quarters:[],weeks:[],weekdays:[],options:{highlightDisabled:!1}};return typeof e=="function"?e:{...t,...e??{}}},Js=e=>typeof e=="object"?{type:e?.type??"local",hideOnOffsetDates:e?.hideOnOffsetDates??!1}:{type:e,hideOnOffsetDates:!1},eu=e=>{const t={noDisabledRange:!1,showLastInRange:!0,minMaxRawRange:!1,partialRange:!0,disableTimeRangeValidation:!1,maxRange:void 0,minRange:void 0,autoRange:void 0,fixedStart:!1,fixedEnd:!1};return typeof e=="object"?{enabled:!0,...t,...e}:{enabled:e,...t}},tu=e=>e?typeof e=="string"?{timezone:e,exactMatch:!1,dateInTz:void 0,emitTimezone:void 0,convertModel:!0}:{timezone:e.timezone,exactMatch:e.exactMatch??!1,dateInTz:e.dateInTz??void 0,emitTimezone:e.emitTimezone??void 0,convertModel:e.convertModel??!0}:{timezone:void 0,exactMatch:!1,emitTimezone:void 0},hn=(e,t,n,a)=>new Map(e.map(r=>{const l=Bn(r,t,a);return[zn(l,n),l]})),au=(e,t)=>e.length?new Map(e.map(n=>{const a=Bn(n.date,t);return[zn(a,oa.DATE),n]})):null,nu=e=>{const t=Kr(e.isMonthPicker,e.isYearPicker);return{minDate:_n(e.minDate,e.timezone,e.isSpecific),maxDate:_n(e.maxDate,e.timezone,e.isSpecific),disabledDates:on(e.disabledDates)?hn(e.disabledDates,e.timezone,t,e.isSpecific):e.disabledDates,allowedDates:on(e.allowedDates)?hn(e.allowedDates,e.timezone,t,e.isSpecific):null,highlight:typeof e.highlight=="object"&&on(e.highlight?.dates)?hn(e.highlight.dates,e.timezone,t):e.highlight,markers:au(e.markers,e.timezone)}},ru=e=>typeof e=="boolean"?{enabled:e,dragSelect:!0,limit:null}:{enabled:!!e,limit:e.limit?+e.limit:null,dragSelect:e.dragSelect??!0},lu=e=>({...Object.fromEntries(Object.keys(e).map(t=>{const n=t,a=e[n],r=typeof e[n]=="string"?{[a]:!0}:Object.fromEntries(a.map(l=>[l,!0]));return[t,r]}))}),Ee=e=>{const t=()=>{const Y=e.enableSeconds?":ss":"",y=e.enableMinutes?":mm":"";return e.is24?`HH${y}${Y}`:`hh${y}${Y} aa`},n=()=>e.format?e.format:e.monthPicker?"MM/yyyy":e.timePicker?t():e.weekPicker?`${S.value?.type==="iso"?"II":"ww"}-RR`:e.yearPicker?"yyyy":e.quarterPicker?"QQQ/yyyy":e.enableTimePicker?`MM/dd/yyyy, ${t()}`:"MM/dd/yyyy",a=Y=>nl(Y,e.enableSeconds),r=()=>B.value.enabled?e.startTime&&Array.isArray(e.startTime)?[a(e.startTime[0]),a(e.startTime[1])]:null:e.startTime&&!Array.isArray(e.startTime)?a(e.startTime):null,l=z(()=>Ws(e.multiCalendars)),o=z(()=>r()),c=z(()=>Hs(e.ariaLabels)),u=z(()=>Qs(e.filters)),w=z(()=>qs(e.transitions)),m=z(()=>Xs(e.actionRow)),d=z(()=>js(e.previewFormat,e.format,n())),f=z(()=>Us(e.textInput)),x=z(()=>Gs(e.inline)),$=z(()=>Zs(e.config)),C=z(()=>Ks(e.highlight)),S=z(()=>Js(e.weekNumbers)),O=z(()=>tu(e.timezone)),R=z(()=>ru(e.multiDates)),M=z(()=>nu({minDate:e.minDate,maxDate:e.maxDate,disabledDates:e.disabledDates,allowedDates:e.allowedDates,highlight:C.value,markers:e.markers,timezone:O.value,isSpecific:e.monthPicker||e.yearPicker||e.quarterPicker,isMonthPicker:e.monthPicker,isYearPicker:e.yearPicker})),B=z(()=>eu(e.range)),U=z(()=>lu(e.ui));return{defaultedTransitions:w,defaultedMultiCalendars:l,defaultedStartTime:o,defaultedAriaLabels:c,defaultedFilters:u,defaultedActionRow:m,defaultedPreviewFormat:d,defaultedTextInput:f,defaultedInline:x,defaultedConfig:$,defaultedHighlight:C,defaultedWeekNumbers:S,defaultedRange:B,propDates:M,defaultedTz:O,defaultedMultiDates:R,defaultedUI:U,getDefaultPattern:n,getDefaultStartTime:r,handleEventPropagation:Y=>{$.value.allowStopPropagation&&Y.stopPropagation(),$.value.allowPreventDefault&&Y.preventDefault()}}},ou=(e,t,{isInputFocused:n,isTextInputDate:a})=>{const r=G(),{defaultedTextInput:l,defaultedRange:o,defaultedTz:c,defaultedMultiDates:u,getDefaultPattern:w}=Ee(t),m=G(""),d=_a(t,"format"),f=_a(t,"formatLocale");dt(r,()=>{typeof t.onInternalModelChange=="function"&&e("internal-model-change",r.value,v(!0))},{deep:!0}),dt(o,(p,Q)=>{p.enabled!==Q.enabled&&(r.value=null)}),dt(d,()=>{V()});const x=p=>c.value.timezone&&c.value.convertModel?ct(p,c.value.timezone):p,$=p=>{if(c.value.timezone&&c.value.convertModel){const Q=Ms(c.value.timezone,p);return ko(p,Q)}return p},C=(p,Q,Ae=!1)=>ll(p,t.format,t.formatLocale,l.value.rangeSeparator,t.modelAuto,Q??w(),Ae),S=p=>p?t.modelType?P(p):{hours:Yt(p),minutes:Ft(p),seconds:t.enableSeconds?ua(p):0}:null,O=p=>t.modelType?P(p):{month:Se(p),year:we(p)},R=p=>Array.isArray(p)?u.value.enabled?p.map(Q=>M(Q,kt(j(),Q))):Ya(()=>[kt(j(),p[0]),p[1]?kt(j(),p[1]):ta(o.value.partialRange)],o.value.enabled):kt(j(),+p),M=(p,Q)=>(typeof p=="string"||typeof p=="number")&&t.modelType?J(p):Q,B=p=>Array.isArray(p)?[M(p[0],zt(null,+p[0].hours,+p[0].minutes,p[0].seconds)),M(p[1],zt(null,+p[1].hours,+p[1].minutes,p[1].seconds))]:M(p,zt(null,p.hours,p.minutes,p.seconds)),U=p=>{const Q=Ye(j(),{date:1});return Array.isArray(p)?u.value.enabled?p.map(Ae=>M(Ae,Rt(Q,+Ae.month,+Ae.year))):Ya(()=>[M(p[0],Rt(Q,+p[0].month,+p[0].year)),M(p[1],p[1]?Rt(Q,+p[1].month,+p[1].year):ta(o.value.partialRange))],o.value.enabled):M(p,Rt(Q,+p.month,+p.year))},Y=p=>{if(Array.isArray(p))return p.map(Q=>J(Q));throw new Error(En.dateArr("multi-dates"))},y=p=>{if(Array.isArray(p)&&o.value.enabled){const Q=p[0],Ae=p[1];return[j(Array.isArray(Q)?Q[0]:null),Array.isArray(Ae)&&Ae.length?j(Ae[0]):null]}return j(p[0])},L=p=>t.modelAuto?Array.isArray(p)?[J(p[0]),J(p[1])]:t.autoApply?[J(p)]:[J(p),null]:Array.isArray(p)?Ya(()=>p[1]?[J(p[0]),p[1]?J(p[1]):ta(o.value.partialRange)]:[J(p[0])],o.value.enabled):J(p),F=()=>{Array.isArray(r.value)&&o.value.enabled&&r.value.length===1&&r.value.push(ta(o.value.partialRange))},E=()=>{const p=r.value;return[P(p[0]),p[1]?P(p[1]):ta(o.value.partialRange)]},ne=()=>Array.isArray(r.value)?r.value[1]?E():P(Je(r.value[0])):[],ue=()=>(r.value||[]).map(p=>P(p)),be=(p=!1)=>(p||F(),t.modelAuto?ne():u.value.enabled?ue():Array.isArray(r.value)?Ya(()=>E(),o.value.enabled):P(Je(r.value))),g=p=>!p||Array.isArray(p)&&!p.length?null:t.timePicker?B(Je(p)):t.monthPicker?U(Je(p)):t.yearPicker?R(Je(p)):u.value.enabled?Y(Je(p)):t.weekPicker?y(Je(p)):L(Je(p)),D=p=>{if(a.value)return;const Q=g(p);Mn(Je(Q))?(r.value=Je(Q),V()):(r.value=null,m.value="")},b=()=>{const p=Q=>$t(Q,l.value.format);return`${p(r.value[0])} ${l.value.rangeSeparator} ${r.value[1]?p(r.value[1]):""}`},W=()=>n.value&&r.value?Array.isArray(r.value)?b():$t(r.value,l.value.format):C(r.value),te=()=>r.value?u.value.enabled?r.value.map(p=>C(p)).join("; "):l.value.enabled&&typeof l.value.format=="string"?W():C(r.value):"",V=()=>{!t.format||typeof t.format=="string"||l.value.enabled&&typeof l.value.format=="string"?m.value=te():m.value=t.format(r.value)},J=p=>{if(t.utc){const Q=new Date(p);return t.utc==="preserve"?new Date(Q.getTime()+Q.getTimezoneOffset()*6e4):Q}return t.modelType?Ds.includes(t.modelType)?x(new Date(p)):t.modelType==="format"&&(typeof t.format=="string"||!t.format)?x(kn(p,w(),new Date,{locale:f.value})):x(kn(p,t.modelType,new Date,{locale:f.value})):x(new Date(p))},P=p=>p?t.utc?Ns(p,t.utc==="preserve",t.enableSeconds):t.modelType?t.modelType==="timestamp"?+$(p):t.modelType==="iso"?$(p).toISOString():t.modelType==="format"&&(typeof t.format=="string"||!t.format)?C($(p)):C($(p),t.modelType,!0):$(p):"",se=(p,Q=!1,Ae=!1)=>{if(Ae)return p;if(e("update:model-value",p),c.value.emitTimezone&&Q){const X=Array.isArray(p)?p.map(xe=>ct(Je(xe),c.value.emitTimezone)):ct(Je(p),c.value.emitTimezone);e("update:model-timezone-value",X)}},h=p=>Array.isArray(r.value)?u.value.enabled?r.value.map(Q=>p(Q)):[p(r.value[0]),r.value[1]?p(r.value[1]):ta(o.value.partialRange)]:p(Je(r.value)),N=()=>{if(Array.isArray(r.value)){const p=It(r.value[0],t.weekStart),Q=r.value[1]?It(r.value[1],t.weekStart):[];return[p.map(Ae=>j(Ae)),Q.map(Ae=>j(Ae))]}return It(r.value,t.weekStart).map(p=>j(p))},T=(p,Q)=>se(Je(h(p)),!1,Q),re=p=>{const Q=N();return p?Q:e("update:model-value",N())},v=(p=!1)=>(p||V(),t.monthPicker?T(O,p):t.timePicker?T(S,p):t.yearPicker?T(we,p):t.weekPicker?re(p):se(be(p),!0,p));return{inputValue:m,internalModelValue:r,checkBeforeEmit:()=>r.value?o.value.enabled?o.value.partialRange?r.value.length>=1:r.value.length===2:!!r.value:!1,parseExternalModelValue:D,formatInputValue:V,emitModelValue:v}},iu=(e,t)=>{const{defaultedFilters:n,propDates:a}=Ee(e),{validateMonthYearInRange:r}=Wt(e),l=(m,d)=>{let f=m;return n.value.months.includes(Se(f))?(f=d?xt(m,1):ca(m,1),l(f,d)):f},o=(m,d)=>{let f=m;return n.value.years.includes(we(f))?(f=d?Tn(m,1):Ur(m,1),o(f,d)):f},c=(m,d=!1)=>{const f=Ye(j(),{month:e.month,year:e.year});let x=m?xt(f,1):ca(f,1);e.disableYearSelect&&(x=kt(x,e.year));let $=Se(x),C=we(x);n.value.months.includes($)&&(x=l(x,m),$=Se(x),C=we(x)),n.value.years.includes(C)&&(x=o(x,m),C=we(x)),r($,C,m,e.preventMinMaxNavigation)&&u($,C,d)},u=(m,d,f)=>{t("update-month-year",{month:m,year:d,fromNav:f})},w=z(()=>m=>rl(Ye(j(),{month:e.month,year:e.year}),a.value.maxDate,a.value.minDate,e.preventMinMaxNavigation,m));return{handleMonthYearChange:c,isDisabled:w,updateMonthYear:u}},Wa={multiCalendars:{type:[Boolean,Number,String,Object],default:void 0},modelValue:{type:[String,Date,Array,Object,Number],default:null},modelType:{type:String,default:null},position:{type:String,default:"center"},dark:{type:Boolean,default:!1},format:{type:[String,Function],default:()=>null},autoPosition:{type:[Boolean,String],default:!0},altPosition:{type:Function,default:null},transitions:{type:[Boolean,Object],default:!0},formatLocale:{type:Object,default:null},utc:{type:[Boolean,String],default:!1},ariaLabels:{type:Object,default:()=>({})},offset:{type:[Number,String],default:10},hideNavigation:{type:Array,default:()=>[]},timezone:{type:[String,Object],default:null},vertical:{type:Boolean,default:!1},disableMonthYearSelect:{type:Boolean,default:!1},disableYearSelect:{type:Boolean,default:!1},dayClass:{type:Function,default:null},yearRange:{type:Array,default:()=>[1900,2100]},enableTimePicker:{type:Boolean,default:!0},autoApply:{type:Boolean,default:!1},disabledDates:{type:[Array,Function],default:()=>[]},monthNameFormat:{type:String,default:"short"},startDate:{type:[Date,String],default:null},startTime:{type:[Object,Array],default:null},hideOffsetDates:{type:Boolean,default:!1},noToday:{type:Boolean,default:!1},disabledWeekDays:{type:Array,default:()=>[]},allowedDates:{type:Array,default:null},nowButtonLabel:{type:String,default:"Now"},markers:{type:Array,default:()=>[]},escClose:{type:Boolean,default:!0},spaceConfirm:{type:Boolean,default:!0},monthChangeOnArrows:{type:Boolean,default:!0},presetDates:{type:Array,default:()=>[]},flow:{type:Array,default:()=>[]},partialFlow:{type:Boolean,default:!1},preventMinMaxNavigation:{type:Boolean,default:!1},reverseYears:{type:Boolean,default:!1},weekPicker:{type:Boolean,default:!1},filters:{type:Object,default:()=>({})},arrowNavigation:{type:Boolean,default:!1},highlight:{type:[Function,Object],default:null},teleport:{type:[Boolean,String,Object],default:null},teleportCenter:{type:Boolean,default:!1},locale:{type:String,default:"en-Us"},weekNumName:{type:String,default:"W"},weekStart:{type:[Number,String],default:1},weekNumbers:{type:[String,Function,Object],default:null},monthChangeOnScroll:{type:[Boolean,String],default:!0},dayNames:{type:[Function,Array],default:null},monthPicker:{type:Boolean,default:!1},customProps:{type:Object,default:null},yearPicker:{type:Boolean,default:!1},modelAuto:{type:Boolean,default:!1},selectText:{type:String,default:"Select"},cancelText:{type:String,default:"Cancel"},previewFormat:{type:[String,Function],default:()=>""},multiDates:{type:[Object,Boolean],default:!1},ignoreTimeValidation:{type:Boolean,default:!1},minDate:{type:[Date,String],default:null},maxDate:{type:[Date,String],default:null},minTime:{type:Object,default:null},maxTime:{type:Object,default:null},name:{type:String,default:null},placeholder:{type:String,default:""},hideInputIcon:{type:Boolean,default:!1},clearable:{type:Boolean,default:!0},alwaysClearable:{type:Boolean,default:!1},state:{type:Boolean,default:null},required:{type:Boolean,default:!1},autocomplete:{type:String,default:"off"},timePicker:{type:Boolean,default:!1},enableSeconds:{type:Boolean,default:!1},is24:{type:Boolean,default:!0},noHoursOverlay:{type:Boolean,default:!1},noMinutesOverlay:{type:Boolean,default:!1},noSecondsOverlay:{type:Boolean,default:!1},hoursGridIncrement:{type:[String,Number],default:1},minutesGridIncrement:{type:[String,Number],default:5},secondsGridIncrement:{type:[String,Number],default:5},hoursIncrement:{type:[Number,String],default:1},minutesIncrement:{type:[Number,String],default:1},secondsIncrement:{type:[Number,String],default:1},range:{type:[Boolean,Object],default:!1},uid:{type:String,default:null},disabled:{type:Boolean,default:!1},readonly:{type:Boolean,default:!1},inline:{type:[Boolean,Object],default:!1},textInput:{type:[Boolean,Object],default:!1},sixWeeks:{type:[Boolean,String],default:!1},actionRow:{type:Object,default:()=>({})},focusStartDate:{type:Boolean,default:!1},disabledTimes:{type:[Function,Array],default:void 0},timePickerInline:{type:Boolean,default:!1},calendar:{type:Function,default:null},config:{type:Object,default:void 0},quarterPicker:{type:Boolean,default:!1},yearFirst:{type:Boolean,default:!1},loading:{type:Boolean,default:!1},onInternalModelChange:{type:[Function,Object],default:null},enableMinutes:{type:Boolean,default:!0},ui:{type:Object,default:()=>({})}},Dt={...Wa,shadow:{type:Boolean,default:!1},flowStep:{type:Number,default:0},internalModelValue:{type:[Date,Array],default:null},noOverlayFocus:{type:Boolean,default:!1},collapse:{type:Boolean,default:!1},menuWrapRef:{type:Object,default:null},getInputRect:{type:Function,default:()=>({})},isTextInputDate:{type:Boolean,default:!1},isMobile:{type:Boolean,default:void 0}},su=["title"],uu=["disabled"],du=Ge({compatConfig:{MODE:3},__name:"ActionRow",props:{menuMount:{type:Boolean,default:!1},calendarWidth:{type:Number,default:0},...Dt},emits:["close-picker","select-date","select-now","invalid-select"],setup(e,{emit:t}){const n=t,a=e,{defaultedActionRow:r,defaultedPreviewFormat:l,defaultedMultiCalendars:o,defaultedTextInput:c,defaultedInline:u,defaultedRange:w,defaultedMultiDates:m}=Ee(a),{isTimeValid:d,isMonthValid:f}=Wt(a),{buildMatrix:x}=Ht(),$=G(null),C=G(null),S=G(!1),O=G({}),R=G(null),M=G(null);at(()=>{a.arrowNavigation&&x([Ze($),Ze(C)],"actionRow"),B(),window.addEventListener("resize",B)}),va(()=>{window.removeEventListener("resize",B)});const B=()=>{S.value=!1,setTimeout(()=>{const g=R.value?.getBoundingClientRect(),D=M.value?.getBoundingClientRect();g&&D&&(O.value.maxWidth=`${D.width-g.width-20}px`),S.value=!0},0)},U=z(()=>w.value.enabled&&!w.value.partialRange&&a.internalModelValue?a.internalModelValue.length===2:!0),Y=z(()=>!d.value(a.internalModelValue)||!f.value(a.internalModelValue)||!U.value),y=()=>{const g=l.value;return a.timePicker||a.monthPicker,g(Je(a.internalModelValue))},L=()=>{const g=a.internalModelValue;return o.value.count>0?`${F(g[0])} - ${F(g[1])}`:[F(g[0]),F(g[1])]},F=g=>ll(g,l.value,a.formatLocale,c.value.rangeSeparator,a.modelAuto,l.value),E=z(()=>!a.internalModelValue||!a.menuMount?"":typeof l.value=="string"?Array.isArray(a.internalModelValue)?a.internalModelValue.length===2&&a.internalModelValue[1]?L():m.value.enabled?a.internalModelValue.map(g=>`${F(g)}`):a.modelAuto?`${F(a.internalModelValue[0])}`:`${F(a.internalModelValue[0])} -`:F(a.internalModelValue):y()),ne=()=>m.value.enabled?"; ":" - ",ue=z(()=>Array.isArray(E.value)?E.value.join(ne()):E.value),be=()=>{d.value(a.internalModelValue)&&f.value(a.internalModelValue)&&U.value?n("select-date"):n("invalid-select")};return(g,D)=>(_(),H("div",{ref_key:"actionRowRef",ref:M,class:"dp__action_row"},[g.$slots["action-row"]?le(g.$slots,"action-row",et(Ve({key:0},{internalModelValue:g.internalModelValue,disabled:Y.value,selectDate:()=>g.$emit("select-date"),closePicker:()=>g.$emit("close-picker")}))):(_(),H(Me,{key:1},[i(r).showPreview?(_(),H("div",{key:0,class:"dp__selection_preview",title:ue.value,style:pt(O.value)},[g.$slots["action-preview"]&&S.value?le(g.$slots,"action-preview",{key:0,value:g.internalModelValue}):q("",!0),!g.$slots["action-preview"]&&S.value?(_(),H(Me,{key:1},[ht(He(ue.value),1)],64)):q("",!0)],12,su)):q("",!0),ve("div",{ref_key:"actionBtnContainer",ref:R,class:"dp__action_buttons","data-dp-element":"action-row"},[g.$slots["action-buttons"]?le(g.$slots,"action-buttons",{key:0,value:g.internalModelValue}):q("",!0),g.$slots["action-buttons"]?q("",!0):(_(),H(Me,{key:1},[!i(u).enabled&&i(r).showCancel?(_(),H("button",{key:0,ref_key:"cancelButtonRef",ref:$,type:"button",class:"dp__action_button dp__action_cancel",onClick:D[0]||(D[0]=b=>g.$emit("close-picker")),onKeydown:D[1]||(D[1]=b=>i(it)(b,()=>g.$emit("close-picker")))},He(g.cancelText),545)):q("",!0),i(r).showNow?(_(),H("button",{key:1,type:"button",class:"dp__action_button dp__action_cancel",onClick:D[2]||(D[2]=b=>g.$emit("select-now")),onKeydown:D[3]||(D[3]=b=>i(it)(b,()=>g.$emit("select-now")))},He(g.nowButtonLabel),33)):q("",!0),i(r).showSelect?(_(),H("button",{key:2,ref_key:"selectButtonRef",ref:C,type:"button",class:"dp__action_button dp__action_select",disabled:Y.value,"data-test-id":"select-button",onKeydown:D[4]||(D[4]=b=>i(it)(b,()=>be())),onClick:be},He(g.selectText),41,uu)):q("",!0)],64))],512)],64))],512))}}),cu=["role","aria-label","tabindex"],pu={class:"dp__selection_grid_header"},mu=["aria-selected","aria-disabled","data-test-id","onClick","onKeydown","onMouseover"],vu=["aria-label"],Aa=Ge({__name:"SelectionOverlay",props:{items:{},type:{},isLast:{type:Boolean},arrowNavigation:{type:Boolean},skipButtonRef:{type:Boolean},headerRefs:{},hideNavigation:{},escClose:{type:Boolean},useRelative:{type:Boolean},height:{},textInput:{type:[Boolean,Object]},config:{},noOverlayFocus:{type:Boolean},focusValue:{},menuWrapRef:{},ariaLabels:{},overlayLabel:{}},emits:["selected","toggle","reset-flow","hover-value"],setup(e,{expose:t,emit:n}){const{setSelectionGrid:a,buildMultiLevelMatrix:r,setMonthPicker:l}=Ht(),o=n,c=e,{defaultedAriaLabels:u,defaultedTextInput:w,defaultedConfig:m,handleEventPropagation:d}=Ee(c),{hideNavigationButtons:f}=Ua(),x=G(!1),$=G(null),C=G(null),S=G([]),O=G(),R=G(null),M=G(0),B=G(null);io(()=>{$.value=null}),at(()=>{vt().then(()=>ue()),c.noOverlayFocus||Y(),U(!0)}),va(()=>U(!1));const U=h=>{c.arrowNavigation&&(c.headerRefs?.length?l(h):a(h))},Y=()=>{const h=Ze(C);h&&(w.value.enabled||($.value?$.value?.focus({preventScroll:!0}):h.focus({preventScroll:!0})),x.value=h.clientHeight({dp__overlay:!0,"dp--overlay-absolute":!c.useRelative,"dp--overlay-relative":c.useRelative})),L=z(()=>c.useRelative?{height:`${c.height}px`,width:"var(--dp-menu-min-width)"}:void 0),F=z(()=>({dp__overlay_col:!0})),E=z(()=>({dp__btn:!0,dp__button:!0,dp__overlay_action:!0,dp__over_action_scroll:x.value,dp__button_bottom:c.isLast})),ne=z(()=>({dp__overlay_container:!0,dp__container_flex:c.items?.length<=6,dp__container_block:c.items?.length>6}));dt(()=>c.items,()=>ue(!1),{deep:!0});const ue=(h=!0)=>{vt().then(()=>{const N=Ze($),T=Ze(C),re=Ze(R),v=Ze(B),p=re?re.getBoundingClientRect().height:0;T&&(T.getBoundingClientRect().height?M.value=T.getBoundingClientRect().height-p:M.value=m.value.modeHeight-p),N&&v&&h&&(v.scrollTop=N.offsetTop-v.offsetTop-(M.value/2-N.getBoundingClientRect().height)-p)})},be=h=>{h.disabled||o("selected",h.value)},g=()=>{o("toggle"),o("reset-flow")},D=h=>{c.escClose&&(g(),d(h))},b=(h,N,T,re)=>{h&&((N.active||N.value===c.focusValue)&&($.value=h),c.arrowNavigation&&(Array.isArray(S.value[T])?S.value[T][re]=h:S.value[T]=[h],W()))},W=()=>{const h=c.headerRefs?.length?[c.headerRefs].concat(S.value):S.value.concat([c.skipButtonRef?[]:[R.value]]);r(Je(h),c.headerRefs?.length?"monthPicker":"selectionGrid")},te=h=>{c.arrowNavigation||Lt(h,m.value,!0)},V=h=>{O.value=h,o("hover-value",h)},J=()=>{if(g(),!c.isLast){const h=xn(c.menuWrapRef??null,"action-row");h&&Zr(h)?.focus()}},P=h=>{switch(h.key){case Ne.esc:return D(h);case Ne.arrowLeft:return te(h);case Ne.arrowRight:return te(h);case Ne.arrowUp:return te(h);case Ne.arrowDown:return te(h);default:return}},se=h=>{if(h.key===Ne.enter)return g();if(h.key===Ne.tab)return J()};return t({focusGrid:Y}),(h,N)=>(_(),H("div",{ref_key:"gridWrapRef",ref:C,class:ke(y.value),style:pt(L.value),role:e.useRelative?void 0:"dialog","aria-label":e.overlayLabel,tabindex:e.useRelative?void 0:"0",onKeydown:P,onClick:N[0]||(N[0]=xa(()=>{},["prevent"]))},[ve("div",{ref_key:"containerRef",ref:B,class:ke(ne.value),style:pt({"--dp-overlay-height":`${M.value}px`}),role:"grid"},[ve("div",pu,[le(h.$slots,"header")]),h.$slots.overlay?le(h.$slots,"overlay",{key:0}):(_(!0),H(Me,{key:1},Be(e.items,(T,re)=>(_(),H("div",{key:re,class:ke(["dp__overlay_row",{dp__flex_row:e.items.length>=3}]),role:"row"},[(_(!0),H(Me,null,Be(T,(v,p)=>(_(),H("div",{key:v.value,ref_for:!0,ref:Q=>b(Q,v,re,p),role:"gridcell",class:ke(F.value),"aria-selected":v.active||void 0,"aria-disabled":v.disabled||void 0,tabindex:"0","data-test-id":v.text,onClick:xa(Q=>be(v),["prevent"]),onKeydown:Q=>i(it)(Q,()=>be(v),!0),onMouseover:Q=>V(v.value)},[ve("div",{class:ke(v.className)},[h.$slots.item?le(h.$slots,"item",{key:0,item:v}):q("",!0),h.$slots.item?q("",!0):(_(),H(Me,{key:1},[ht(He(v.text),1)],64))],2)],42,mu))),128))],2))),128))],6),h.$slots["button-icon"]?Ba((_(),H("button",{key:0,ref_key:"toggleButton",ref:R,type:"button","aria-label":i(u)?.toggleOverlay,class:ke(E.value),tabindex:"0",onClick:g,onKeydown:se},[le(h.$slots,"button-icon")],42,vu)),[[Va,!i(f)(e.hideNavigation,e.type)]]):q("",!0)],46,cu))}}),yu=["data-dp-mobile"],ja=Ge({__name:"InstanceWrap",props:{multiCalendars:{},stretch:{type:Boolean},collapse:{type:Boolean},isMobile:{type:Boolean}},setup(e){const t=e,n=z(()=>t.multiCalendars>0?[...Array(t.multiCalendars).keys()]:[0]),a=z(()=>({dp__instance_calendar:t.multiCalendars>0}));return(r,l)=>(_(),H("div",{class:ke({dp__menu_inner:!e.stretch,"dp--menu--inner-stretched":e.stretch,dp__flex_display:e.multiCalendars>0,"dp--flex-display-collapsed":e.collapse}),"data-dp-mobile":e.isMobile},[(_(!0),H(Me,null,Be(n.value,(o,c)=>(_(),H("div",{key:o,class:ke(a.value)},[le(r.$slots,"default",{instance:o,index:c})],2))),128))],10,yu))}}),hu=["data-dp-element","aria-label","aria-disabled"],ka=Ge({compatConfig:{MODE:3},__name:"ArrowBtn",props:{ariaLabel:{},elName:{},disabled:{type:Boolean}},emits:["activate","set-ref"],setup(e,{emit:t}){const n=t,a=G(null);return at(()=>n("set-ref",a)),(r,l)=>(_(),H("button",{ref_key:"elRef",ref:a,type:"button","data-dp-element":e.elName,class:"dp__btn dp--arrow-btn-nav",tabindex:"0","aria-label":e.ariaLabel,"aria-disabled":e.disabled||void 0,onClick:l[0]||(l[0]=o=>n("activate")),onKeydown:l[1]||(l[1]=o=>i(it)(o,()=>n("activate"),!0))},[ve("span",{class:ke(["dp__inner_nav",{dp__inner_nav_disabled:e.disabled}])},[le(r.$slots,"default")],2)],40,hu))}}),fu=["aria-label","data-test-id"],ul=Ge({__name:"YearModePicker",props:{...Dt,showYearPicker:{type:Boolean,default:!1},items:{type:Array,default:()=>[]},instance:{type:Number,default:0},year:{type:Number,default:0},isDisabled:{type:Function,default:()=>!1}},emits:["toggle-year-picker","year-select","handle-year"],setup(e,{emit:t}){const n=t,a=e,{showRightIcon:r,showLeftIcon:l}=Ua(),{defaultedConfig:o,defaultedMultiCalendars:c,defaultedAriaLabels:u,defaultedTransitions:w,defaultedUI:m}=Ee(a),{showTransition:d,transitionName:f}=$a(w),x=G(!1),$=z(()=>Ln(a.year,a.locale)),C=(R=!1,M)=>{x.value=!x.value,n("toggle-year-picker",{flow:R,show:M})},S=R=>{x.value=!1,n("year-select",R)},O=(R=!1)=>{n("handle-year",R)};return(R,M)=>(_(),H(Me,null,[ve("div",{class:ke(["dp--year-mode-picker",{"dp--hidden-el":x.value}])},[i(l)(i(c),e.instance)?(_(),_e(ka,{key:0,ref:"mpPrevIconRef","aria-label":i(u)?.prevYear,disabled:e.isDisabled(!1),class:ke(i(m)?.navBtnPrev),onActivate:M[0]||(M[0]=B=>O(!1))},{default:pe(()=>[R.$slots["arrow-left"]?le(R.$slots,"arrow-left",{key:0}):q("",!0),R.$slots["arrow-left"]?q("",!0):(_(),_e(i(In),{key:1}))]),_:3},8,["aria-label","disabled","class"])):q("",!0),ve("button",{ref:"mpYearButtonRef",class:"dp__btn dp--year-select",type:"button","aria-label":`${e.year}-${i(u)?.openYearsOverlay}`,"data-test-id":`year-mode-btn-${e.instance}`,onClick:M[1]||(M[1]=()=>C(!1)),onKeydown:M[2]||(M[2]=so(()=>C(!1),["enter"]))},[R.$slots.year?le(R.$slots,"year",{key:0,year:e.year,text:$.value,value:e.year}):q("",!0),R.$slots.year?q("",!0):(_(),H(Me,{key:1},[ht(He($.value),1)],64))],40,fu),i(r)(i(c),e.instance)?(_(),_e(ka,{key:1,ref:"mpNextIconRef","aria-label":i(u)?.nextYear,disabled:e.isDisabled(!0),class:ke(i(m)?.navBtnNext),onActivate:M[3]||(M[3]=B=>O(!0))},{default:pe(()=>[R.$slots["arrow-right"]?le(R.$slots,"arrow-right",{key:0}):q("",!0),R.$slots["arrow-right"]?q("",!0):(_(),_e(i(Rn),{key:1}))]),_:3},8,["aria-label","disabled","class"])):q("",!0)],2),Ie(ya,{name:i(f)(e.showYearPicker),css:i(d)},{default:pe(()=>[e.showYearPicker?(_(),_e(Aa,{key:0,items:e.items,"text-input":R.textInput,"esc-close":R.escClose,config:R.config,"is-last":R.autoApply&&!i(o).keepActionRow,"hide-navigation":R.hideNavigation,"aria-labels":R.ariaLabels,"overlay-label":i(u)?.yearPicker?.(!0),type:"year",onToggle:C,onSelected:M[4]||(M[4]=B=>S(B))},tt({"button-icon":pe(()=>[R.$slots["calendar-icon"]?le(R.$slots,"calendar-icon",{key:0}):q("",!0),R.$slots["calendar-icon"]?q("",!0):(_(),_e(i(ha),{key:1}))]),_:2},[R.$slots["year-overlay-value"]?{name:"item",fn:pe(({item:B})=>[le(R.$slots,"year-overlay-value",{text:B.text,value:B.value})]),key:"0"}:void 0]),1032,["items","text-input","esc-close","config","is-last","hide-navigation","aria-labels","overlay-label"])):q("",!0)]),_:3},8,["name","css"])],64))}}),Hn=(e,t,n)=>{if(t.value&&Array.isArray(t.value))if(t.value.some(a=>Pe(e,a))){const a=t.value.filter(r=>!Pe(r,e));t.value=a.length?a:null}else(n&&+n>t.value.length||!n)&&t.value.push(e);else t.value=[e]},Wn=(e,t,n)=>{let a=e.value?e.value.slice():[];return a.length===2&&a[1]!==null&&(a=[]),a.length?(ze(t,a[0])?a.unshift(t):a[1]=t,n("range-end",t)):(a=[t],n("range-start",t)),a},qa=(e,t,n,a)=>{e&&(e[0]&&e[1]&&n&&t("auto-apply"),e[0]&&!e[1]&&a&&n&&t("auto-apply"))},dl=e=>{Array.isArray(e.value)&&e.value.length<=2&&e.range?e.modelValue.value=e.value.map(t=>ct(j(t),e.timezone)):Array.isArray(e.value)||(e.modelValue.value=ct(j(e.value),e.timezone))},cl=(e,t,n,a)=>Array.isArray(t.value)&&(t.value.length===2||t.value.length===1&&a.value.partialRange)?a.value.fixedStart&&(Ue(e,t.value[0])||Pe(e,t.value[0]))?[t.value[0],e]:a.value.fixedEnd&&(ze(e,t.value[1])||Pe(e,t.value[1]))?[e,t.value[1]]:(n("invalid-fixed-range",e),t.value):[],pl=({multiCalendars:e,range:t,highlight:n,propDates:a,calendars:r,modelValue:l,props:o,filters:c,year:u,month:w,emit:m})=>{const d=z(()=>Vn(o.yearRange,o.locale,o.reverseYears)),f=G([!1]),x=z(()=>(E,ne)=>{const ue=Ye(_t(new Date),{month:w.value(E),year:u.value(E)}),be=ne?Ir(ue):la(ue);return rl(be,a.value.maxDate,a.value.minDate,o.preventMinMaxNavigation,ne)}),$=()=>Array.isArray(l.value)&&e.value.solo&&l.value[1],C=()=>{for(let E=0;E{if(!E)return C();const ne=Ye(j(),r.value[E]);return r.value[0].year=we(Ur(ne,e.value.count-1)),C()},O=(E,ne)=>{const ue=To(ne,E);return t.value.showLastInRange&&ue>1?ne:E},R=E=>o.focusStartDate||e.value.solo?E[0]:E[1]?O(E[0],E[1]):E[0],M=()=>{if(l.value){const E=Array.isArray(l.value)?R(l.value):l.value;r.value[0]={month:Se(E),year:we(E)}}},B=()=>{M(),e.value.count&&C()};dt(l,(E,ne)=>{o.isTextInputDate&&JSON.stringify(E??{})!==JSON.stringify(ne??{})&&B()}),at(()=>{B()});const U=(E,ne)=>{r.value[ne].year=E,m("update-month-year",{instance:ne,year:E,month:r.value[ne].month}),e.value.count&&!e.value.solo&&S(ne)},Y=z(()=>E=>pa(d.value,ne=>{const ue=u.value(E)===ne.value,be=Da(ne.value,ma(a.value.minDate),ma(a.value.maxDate))||c.value.years?.includes(u.value(E)),g=Fn(n.value,ne.value);return{active:ue,disabled:be,highlighted:g}})),y=(E,ne)=>{U(E,ne),F(ne)},L=(E,ne=!1)=>{if(!x.value(E,ne)){const ue=ne?u.value(E)+1:u.value(E)-1;U(ue,E)}},F=(E,ne=!1,ue)=>{ne||m("reset-flow"),ue!==void 0?f.value[E]=ue:f.value[E]=!f.value[E],f.value[E]?m("overlay-toggle",{open:!0,overlay:lt.year}):(m("overlay-closed"),m("overlay-toggle",{open:!1,overlay:lt.year}))};return{isDisabled:x,groupedYears:Y,showYearPicker:f,selectYear:U,toggleYearPicker:F,handleYearSelect:y,handleYear:L}},gu=(e,t)=>{const{defaultedMultiCalendars:n,defaultedAriaLabels:a,defaultedTransitions:r,defaultedConfig:l,defaultedRange:o,defaultedHighlight:c,propDates:u,defaultedTz:w,defaultedFilters:m,defaultedMultiDates:d}=Ee(e),f=()=>{e.isTextInputDate&&B(we(j(e.startDate)),0)},{modelValue:x,year:$,month:C,calendars:S}=Oa(e,t,f),O=z(()=>Xr(e.formatLocale,e.locale,e.monthNameFormat)),R=G(null),{checkMinMaxRange:M}=Wt(e),{selectYear:B,groupedYears:U,showYearPicker:Y,toggleYearPicker:y,handleYearSelect:L,handleYear:F,isDisabled:E}=pl({modelValue:x,multiCalendars:n,range:o,highlight:c,calendars:S,year:$,propDates:u,month:C,filters:m,props:e,emit:t});at(()=>{e.startDate&&(x.value&&e.focusStartDate||!x.value)&&B(we(j(e.startDate)),0)});const ne=N=>N?{month:Se(N),year:we(N)}:{month:null,year:null},ue=()=>x.value?Array.isArray(x.value)?x.value.map(N=>ne(N)):ne(x.value):ne(),be=(N,T)=>{const re=S.value[N],v=ue();return Array.isArray(v)?v.some(p=>p.year===re?.year&&p.month===T):re?.year===v.year&&T===v.month},g=(N,T,re)=>{const v=ue();return Array.isArray(v)?$.value(T)===v[re]?.year&&N===v[re]?.month:!1},D=(N,T)=>{if(o.value.enabled){const re=ue();if(Array.isArray(x.value)&&Array.isArray(re)){const v=g(N,T,0)||g(N,T,1),p=Rt(_t(j()),N,$.value(T));return Ta(x.value,R.value,p)&&!v}return!1}return!1},b=z(()=>N=>pa(O.value,T=>{const re=be(N,T.value),v=Da(T.value,el($.value(N),u.value.minDate),tl($.value(N),u.value.maxDate))||zs(u.value.disabledDates,$.value(N),T.value)||m.value.months?.includes(T.value)||!Fs(u.value.allowedDates,$.value(N),T.value)||il(e.yearRange,$.value(N)),p=D(T.value,N),Q=ol(c.value,T.value,$.value(N));return{active:re,disabled:v,isBetween:p,highlighted:Q}})),W=(N,T)=>Rt(_t(j()),N,$.value(T)),te=(N,T)=>{const re=x.value?x.value:_t(new Date);x.value=Rt(re,N,$.value(T)),t("auto-apply"),t("update-flow-step")},V=(N,T)=>{const re=W(N,T);o.value.fixedEnd||o.value.fixedStart?x.value=cl(re,x,t,o):x.value?M(re,x.value)&&(x.value=Wn(x,W(N,T),t)):x.value=[W(N,T)],vt().then(()=>{qa(x.value,t,e.autoApply,e.modelAuto)})},J=(N,T)=>{Hn(W(N,T),x,d.value.limit),t("auto-apply",!0)},P=(N,T)=>(S.value[T].month=N,h(T,S.value[T].year,N),d.value.enabled?J(N,T):o.value.enabled?V(N,T):te(N,T)),se=(N,T)=>{B(N,T),h(T,N,null)},h=(N,T,re)=>{let v=re;if(!v&&v!==0){const p=ue();v=Array.isArray(p)?p[N].month:p.month}t("update-month-year",{instance:N,year:T,month:v})};return{groupedMonths:b,groupedYears:U,year:$,isDisabled:E,defaultedMultiCalendars:n,defaultedAriaLabels:a,defaultedTransitions:r,defaultedConfig:l,showYearPicker:Y,modelValue:x,presetDate:(N,T)=>{dl({value:N,modelValue:x,range:o.value.enabled,timezone:T?void 0:w.value.timezone}),t("auto-apply")},setHoverDate:(N,T)=>{R.value=W(N,T)},selectMonth:P,selectYear:se,toggleYearPicker:y,handleYearSelect:L,handleYear:F,getModelMonthYear:ue}},bu=Ge({compatConfig:{MODE:3},__name:"MonthPicker",props:{...Dt},emits:["update:internal-model-value","overlay-closed","reset-flow","range-start","range-end","auto-apply","update-month-year","update-flow-step","mount","invalid-fixed-range","overlay-toggle"],setup(e,{expose:t,emit:n}){const a=n,r=Gt(),l=mt(r,"yearMode"),o=e;at(()=>{o.shadow||a("mount",null)});const{groupedMonths:c,groupedYears:u,year:w,isDisabled:m,defaultedMultiCalendars:d,defaultedConfig:f,showYearPicker:x,modelValue:$,presetDate:C,setHoverDate:S,selectMonth:O,selectYear:R,toggleYearPicker:M,handleYearSelect:B,handleYear:U,getModelMonthYear:Y}=gu(o,a);return t({getSidebarProps:()=>({modelValue:$,year:w,getModelMonthYear:Y,selectMonth:O,selectYear:R,handleYear:U}),presetDate:C,toggleYearPicker:y=>M(0,y)}),(y,L)=>(_(),_e(ja,{"multi-calendars":i(d).count,collapse:y.collapse,stretch:"","is-mobile":y.isMobile},{default:pe(({instance:F})=>[y.$slots["top-extra"]?le(y.$slots,"top-extra",{key:0,value:y.internalModelValue}):q("",!0),y.$slots["month-year"]?le(y.$slots,"month-year",et(Ve({key:1},{year:i(w),months:i(c)(F),years:i(u)(F),selectMonth:i(O),selectYear:i(R),instance:F}))):(_(),_e(Aa,{key:2,items:i(c)(F),"arrow-navigation":y.arrowNavigation,"is-last":y.autoApply&&!i(f).keepActionRow,"esc-close":y.escClose,height:i(f).modeHeight,config:y.config,"no-overlay-focus":!!(y.noOverlayFocus||y.textInput),"use-relative":"",type:"month",onSelected:E=>i(O)(E,F),onHoverValue:E=>i(S)(E,F)},tt({header:pe(()=>[Ie(ul,Ve(y.$props,{items:i(u)(F),instance:F,"show-year-picker":i(x)[F],year:i(w)(F),"is-disabled":E=>i(m)(F,E),onHandleYear:E=>i(U)(F,E),onYearSelect:E=>i(B)(E,F),onToggleYearPicker:E=>i(M)(F,E?.flow,E?.show)}),tt({_:2},[Be(i(l),(E,ne)=>({name:E,fn:pe(ue=>[le(y.$slots,E,et(ut(ue)))])}))]),1040,["items","instance","show-year-picker","year","is-disabled","onHandleYear","onYearSelect","onToggleYearPicker"])]),_:2},[y.$slots["month-overlay-value"]?{name:"item",fn:pe(({item:E})=>[le(y.$slots,"month-overlay-value",{text:E.text,value:E.value})]),key:"0"}:void 0]),1032,["items","arrow-navigation","is-last","esc-close","height","config","no-overlay-focus","onSelected","onHoverValue"]))]),_:3},8,["multi-calendars","collapse","is-mobile"]))}}),wu=(e,t)=>{const n=()=>{e.isTextInputDate&&(m.value=we(j(e.startDate)))},{modelValue:a}=Oa(e,t,n),r=G(null),{defaultedHighlight:l,defaultedMultiDates:o,defaultedFilters:c,defaultedRange:u,propDates:w}=Ee(e),m=G();at(()=>{e.startDate&&(a.value&&e.focusStartDate||!a.value)&&(m.value=we(j(e.startDate)))});const d=O=>Array.isArray(a.value)?a.value.some(R=>we(R)===O):a.value?we(a.value)===O:!1,f=O=>u.value.enabled&&Array.isArray(a.value)?Ta(a.value,r.value,S(O)):!1,x=O=>w.value.allowedDates instanceof Map?w.value.allowedDates.size?w.value.allowedDates.has(`${O}`):!1:!0,$=O=>w.value.disabledDates instanceof Map?w.value.disabledDates.size?w.value.disabledDates.has(`${O}`):!1:typeof w.value.disabledDates=="function"?w.value.disabledDates(kt(Ke(la(j())),O)):!0,C=z(()=>pa(Vn(e.yearRange,e.locale,e.reverseYears),O=>{const R=d(O.value),M=Da(O.value,ma(w.value.minDate),ma(w.value.maxDate))||c.value.years.includes(O.value)||!x(O.value)||$(O.value),B=f(O.value)&&!R,U=Fn(l.value,O.value);return{active:R,disabled:M,isBetween:B,highlighted:U}})),S=O=>kt(_t(la(new Date)),O);return{groupedYears:C,modelValue:a,focusYear:m,setHoverValue:O=>{r.value=kt(_t(new Date),O)},selectYear:O=>{if(t("update-month-year",{instance:0,year:O}),o.value.enabled)return a.value?Array.isArray(a.value)&&((a.value?.map(R=>we(R))).includes(O)?a.value=a.value.filter(R=>we(R)!==O):a.value.push(kt(Ke(j()),O))):a.value=[kt(Ke(la(j())),O)],t("auto-apply",!0);u.value.enabled?(a.value=Wn(a,S(O),t),vt().then(()=>{qa(a.value,t,e.autoApply,e.modelAuto)})):(a.value=S(O),t("auto-apply"))}}},ku=Ge({compatConfig:{MODE:3},__name:"YearPicker",props:{...Dt},emits:["update:internal-model-value","reset-flow","range-start","range-end","auto-apply","update-month-year"],setup(e,{expose:t,emit:n}){const a=n,r=e,{groupedYears:l,modelValue:o,focusYear:c,selectYear:u,setHoverValue:w}=wu(r,a),{defaultedConfig:m}=Ee(r);return t({getSidebarProps:()=>({modelValue:o,selectYear:u})}),(d,f)=>(_(),H("div",null,[d.$slots["top-extra"]?le(d.$slots,"top-extra",{key:0,value:d.internalModelValue}):q("",!0),d.$slots["month-year"]?le(d.$slots,"month-year",et(Ve({key:1},{years:i(l),selectYear:i(u)}))):(_(),_e(Aa,{key:2,items:i(l),"is-last":d.autoApply&&!i(m).keepActionRow,height:i(m).modeHeight,config:d.config,"no-overlay-focus":!!(d.noOverlayFocus||d.textInput),"focus-value":i(c),type:"year","use-relative":"",onSelected:i(u),onHoverValue:i(w)},tt({_:2},[d.$slots["year-overlay-value"]?{name:"item",fn:pe(({item:x})=>[le(d.$slots,"year-overlay-value",{text:x.text,value:x.value})]),key:"0"}:void 0]),1032,["items","is-last","height","config","no-overlay-focus","focus-value","onSelected","onHoverValue"]))]))}}),_u={key:0,class:"dp__time_input"},xu=["data-compact","data-collapsed"],Mu=["data-test-id","aria-label","onKeydown","onClick","onMousedown"],Du=["aria-label","disabled","data-test-id","onKeydown","onClick"],Tu=["data-test-id","aria-label","onKeydown","onClick","onMousedown"],Su={key:0},Pu=["aria-label","data-compact"],Au=Ge({compatConfig:{MODE:3},__name:"TimeInput",props:{hours:{type:Number,default:0},minutes:{type:Number,default:0},seconds:{type:Number,default:0},closeTimePickerBtn:{type:Object,default:null},order:{type:Number,default:0},disabledTimesConfig:{type:Function,default:null},validateTime:{type:Function,default:()=>!1},...Dt},emits:["set-hours","set-minutes","update:hours","update:minutes","update:seconds","reset-flow","mounted","overlay-closed","overlay-opened","am-pm-change"],setup(e,{expose:t,emit:n}){const a=n,r=e,{setTimePickerElements:l,setTimePickerBackRef:o}=Ht(),{defaultedAriaLabels:c,defaultedTransitions:u,defaultedFilters:w,defaultedConfig:m,defaultedRange:d,defaultedMultiCalendars:f}=Ee(r),{transitionName:x,showTransition:$}=$a(u),C=Sa({hours:!1,minutes:!1,seconds:!1}),S=G("AM"),O=G(null),R=G([]),M=G(),B=G(!1);at(()=>{a("mounted")});const U=s=>Ye(new Date,{hours:s.hours,minutes:s.minutes,seconds:r.enableSeconds?s.seconds:0,milliseconds:0}),Y=z(()=>s=>V(s,r[s])||L(s,r[s])),y=z(()=>({hours:r.hours,minutes:r.minutes,seconds:r.seconds})),L=(s,oe)=>d.value.enabled&&!d.value.disableTimeRangeValidation?!r.validateTime(s,oe):!1,F=(s,oe)=>{if(d.value.enabled&&!d.value.disableTimeRangeValidation){const I=oe?+r[`${s}Increment`]:-+r[`${s}Increment`],De=r[s]+I;return!r.validateTime(s,De)}return!1},E=z(()=>s=>!N(+r[s]+ +r[`${s}Increment`],s)||F(s,!0)),ne=z(()=>s=>!N(+r[s]-+r[`${s}Increment`],s)||F(s,!1)),ue=(s,oe)=>Tr(Ye(j(),s),oe),be=(s,oe)=>ks(Ye(j(),s),oe),g=z(()=>({dp__time_col:!0,dp__time_col_block:!r.timePickerInline,dp__time_col_reg_block:!r.enableSeconds&&r.is24&&!r.timePickerInline,dp__time_col_reg_inline:!r.enableSeconds&&r.is24&&r.timePickerInline,dp__time_col_reg_with_button:!r.enableSeconds&&!r.is24,dp__time_col_sec:r.enableSeconds&&r.is24,dp__time_col_sec_with_button:r.enableSeconds&&!r.is24})),D=z(()=>r.timePickerInline&&d.value.enabled&&!f.value.count),b=z(()=>{const s=[{type:"hours"}];return r.enableMinutes&&s.push({type:"",separator:!0},{type:"minutes"}),r.enableSeconds&&s.push({type:"",separator:!0},{type:"seconds"}),s}),W=z(()=>b.value.filter(s=>!s.separator)),te=z(()=>s=>{if(s==="hours"){const oe=Ae(+r.hours);return{text:oe<10?`0${oe}`:`${oe}`,value:oe}}return{text:r[s]<10?`0${r[s]}`:`${r[s]}`,value:r[s]}}),V=(s,oe)=>{if(!r.disabledTimesConfig)return!1;const I=r.disabledTimesConfig(r.order,s==="hours"?oe:void 0);return I[s]?!!I[s]?.includes(oe):!0},J=(s,oe)=>oe!=="hours"||S.value==="AM"?s:s+12,P=s=>{const oe=r.is24?24:12,I=s==="hours"?oe:60,De=+r[`${s}GridIncrement`],ye=s==="hours"&&!r.is24?De:0,nt=[];for(let je=ye;je({active:!1,disabled:w.value.times[s].includes(je.value)||!N(je.value,s)||V(s,je.value)||L(s,je.value)}))},se=s=>s>=0?s:59,h=s=>s>=0?s:23,N=(s,oe)=>{const I=r.minTime?U(sn(r.minTime)):null,De=r.maxTime?U(sn(r.maxTime)):null,ye=U(sn(y.value,oe,oe==="minutes"||oe==="seconds"?se(s):h(s)));return I&&De?(da(ye,De)||na(ye,De))&&(Xt(ye,I)||na(ye,I)):I?Xt(ye,I)||na(ye,I):De?da(ye,De)||na(ye,De):!0},T=s=>r[`no${s[0].toUpperCase()+s.slice(1)}Overlay`],re=s=>{T(s)||(C[s]=!C[s],C[s]?(B.value=!0,a("overlay-opened",s)):(B.value=!1,a("overlay-closed",s)))},v=s=>s==="hours"?Yt:s==="minutes"?Ft:ua,p=()=>{M.value&&clearTimeout(M.value)},Q=(s,oe=!0,I)=>{const De=oe?ue:be,ye=oe?+r[`${s}Increment`]:-+r[`${s}Increment`];N(+r[s]+ye,s)&&a(`update:${s}`,v(s)(De({[s]:+r[s]},{[s]:+r[`${s}Increment`]}))),!I?.keyboard&&m.value.timeArrowHoldThreshold&&(M.value=setTimeout(()=>{Q(s,oe)},m.value.timeArrowHoldThreshold))},Ae=s=>r.is24?s:(s>=12?S.value="PM":S.value="AM",Ps(s)),X=()=>{S.value==="PM"?(S.value="AM",a("update:hours",r.hours-12)):(S.value="PM",a("update:hours",r.hours+12)),a("am-pm-change",S.value)},xe=s=>{C[s]=!0},K=(s,oe,I)=>{if(s&&r.arrowNavigation){Array.isArray(R.value[oe])?R.value[oe][I]=s:R.value[oe]=[s];const De=R.value.reduce((ye,nt)=>nt.map((je,ft)=>[...ye[ft]||[],nt[ft]]),[]);o(r.closeTimePickerBtn),O.value&&(De[1]=De[1].concat(O.value)),l(De,r.order)}},ae=(s,oe)=>(re(s),a(`update:${s}`,oe));return t({openChildCmp:xe}),(s,oe)=>s.disabled?q("",!0):(_(),H("div",_u,[(_(!0),H(Me,null,Be(b.value,(I,De)=>(_(),H("div",{key:De,class:ke(g.value),"data-compact":D.value&&!s.enableSeconds,"data-collapsed":D.value&&s.enableSeconds},[I.separator?(_(),H(Me,{key:0},[B.value?q("",!0):(_(),H(Me,{key:0},[ht(":")],64))],64)):(_(),H(Me,{key:1},[ve("button",{ref_for:!0,ref:ye=>K(ye,De,0),type:"button",class:ke({dp__btn:!0,dp__inc_dec_button:!s.timePickerInline,dp__inc_dec_button_inline:s.timePickerInline,dp__tp_inline_btn_top:s.timePickerInline,dp__inc_dec_button_disabled:E.value(I.type),"dp--hidden-el":B.value}),"data-test-id":`${I.type}-time-inc-btn-${r.order}`,"aria-label":i(c)?.incrementValue(I.type),tabindex:"0",onKeydown:ye=>i(it)(ye,()=>Q(I.type,!0,{keyboard:!0}),!0),onClick:ye=>i(m).timeArrowHoldThreshold?void 0:Q(I.type,!0),onMousedown:ye=>i(m).timeArrowHoldThreshold?Q(I.type,!0):void 0,onMouseup:p},[r.timePickerInline?(_(),H(Me,{key:1},[s.$slots["tp-inline-arrow-up"]?le(s.$slots,"tp-inline-arrow-up",{key:0}):(_(),H(Me,{key:1},[oe[2]||(oe[2]=ve("span",{class:"dp__tp_inline_btn_bar dp__tp_btn_in_l"},null,-1)),oe[3]||(oe[3]=ve("span",{class:"dp__tp_inline_btn_bar dp__tp_btn_in_r"},null,-1))],64))],64)):(_(),H(Me,{key:0},[s.$slots["arrow-up"]?le(s.$slots,"arrow-up",{key:0}):q("",!0),s.$slots["arrow-up"]?q("",!0):(_(),_e(i(Cn),{key:1}))],64))],42,Mu),ve("button",{ref_for:!0,ref:ye=>K(ye,De,1),type:"button","aria-label":`${te.value(I.type).text}-${i(c)?.openTpOverlay(I.type)}`,class:ke({dp__time_display:!0,dp__time_display_block:!s.timePickerInline,dp__time_display_inline:s.timePickerInline,"dp--time-invalid":Y.value(I.type),"dp--time-overlay-btn":!Y.value(I.type),"dp--hidden-el":B.value}),disabled:T(I.type),tabindex:"0","data-test-id":`${I.type}-toggle-overlay-btn-${r.order}`,onKeydown:ye=>i(it)(ye,()=>re(I.type),!0),onClick:ye=>re(I.type)},[s.$slots[I.type]?le(s.$slots,I.type,{key:0,text:te.value(I.type).text,value:te.value(I.type).value}):q("",!0),s.$slots[I.type]?q("",!0):(_(),H(Me,{key:1},[ht(He(te.value(I.type).text),1)],64))],42,Du),ve("button",{ref_for:!0,ref:ye=>K(ye,De,2),type:"button",class:ke({dp__btn:!0,dp__inc_dec_button:!s.timePickerInline,dp__inc_dec_button_inline:s.timePickerInline,dp__tp_inline_btn_bottom:s.timePickerInline,dp__inc_dec_button_disabled:ne.value(I.type),"dp--hidden-el":B.value}),"data-test-id":`${I.type}-time-dec-btn-${r.order}`,"aria-label":i(c)?.decrementValue(I.type),tabindex:"0",onKeydown:ye=>i(it)(ye,()=>Q(I.type,!1,{keyboard:!0}),!0),onClick:ye=>i(m).timeArrowHoldThreshold?void 0:Q(I.type,!1),onMousedown:ye=>i(m).timeArrowHoldThreshold?Q(I.type,!1):void 0,onMouseup:p},[r.timePickerInline?(_(),H(Me,{key:1},[s.$slots["tp-inline-arrow-down"]?le(s.$slots,"tp-inline-arrow-down",{key:0}):(_(),H(Me,{key:1},[oe[4]||(oe[4]=ve("span",{class:"dp__tp_inline_btn_bar dp__tp_btn_in_l"},null,-1)),oe[5]||(oe[5]=ve("span",{class:"dp__tp_inline_btn_bar dp__tp_btn_in_r"},null,-1))],64))],64)):(_(),H(Me,{key:0},[s.$slots["arrow-down"]?le(s.$slots,"arrow-down",{key:0}):q("",!0),s.$slots["arrow-down"]?q("",!0):(_(),_e(i(Nn),{key:1}))],64))],42,Tu)],64))],10,xu))),128)),s.is24?q("",!0):(_(),H("div",Su,[s.$slots["am-pm-button"]?le(s.$slots,"am-pm-button",{key:0,toggle:X,value:S.value}):q("",!0),s.$slots["am-pm-button"]?q("",!0):(_(),H("button",{key:1,ref_key:"amPmButton",ref:O,type:"button",class:"dp__pm_am_button",role:"button","aria-label":i(c)?.amPmButton,tabindex:"0","data-compact":D.value,onClick:X,onKeydown:oe[0]||(oe[0]=I=>i(it)(I,()=>X(),!0))},He(S.value),41,Pu))])),(_(!0),H(Me,null,Be(W.value,(I,De)=>(_(),_e(ya,{key:De,name:i(x)(C[I.type]),css:i($)},{default:pe(()=>[C[I.type]?(_(),_e(Aa,{key:0,items:P(I.type),"is-last":s.autoApply&&!i(m).keepActionRow,"esc-close":s.escClose,type:I.type,"text-input":s.textInput,config:s.config,"arrow-navigation":s.arrowNavigation,"aria-labels":s.ariaLabels,"overlay-label":i(c).timeOverlay?.(I.type),onSelected:ye=>ae(I.type,ye),onToggle:ye=>re(I.type),onResetFlow:oe[1]||(oe[1]=ye=>s.$emit("reset-flow"))},tt({"button-icon":pe(()=>[s.$slots["clock-icon"]?le(s.$slots,"clock-icon",{key:0}):q("",!0),s.$slots["clock-icon"]?q("",!0):(_(),_e(Ha(s.timePickerInline?i(ha):i(Yn)),{key:1}))]),_:2},[s.$slots[`${I.type}-overlay-value`]?{name:"item",fn:pe(({item:ye})=>[le(s.$slots,`${I.type}-overlay-value`,{text:ye.text,value:ye.value})]),key:"0"}:void 0,s.$slots[`${I.type}-overlay-header`]?{name:"header",fn:pe(()=>[le(s.$slots,`${I.type}-overlay-header`,{toggle:()=>re(I.type)})]),key:"1"}:void 0]),1032,["items","is-last","esc-close","type","text-input","config","arrow-navigation","aria-labels","overlay-label","onSelected","onToggle"])):q("",!0)]),_:2},1032,["name","css"]))),128))]))}}),$u=["data-dp-mobile"],Ou=["aria-label","tabindex"],Iu=["role","aria-label","tabindex"],Ru=["aria-label"],ml=Ge({compatConfig:{MODE:3},__name:"TimePicker",props:{hours:{type:[Number,Array],default:0},minutes:{type:[Number,Array],default:0},seconds:{type:[Number,Array],default:0},disabledTimesConfig:{type:Function,default:null},validateTime:{type:Function,default:()=>!1},...Dt},emits:["update:hours","update:minutes","update:seconds","mount","reset-flow","overlay-opened","overlay-closed","am-pm-change"],setup(e,{expose:t,emit:n}){const a=n,r=e,{buildMatrix:l,setTimePicker:o}=Ht(),c=Gt(),{defaultedTransitions:u,defaultedAriaLabels:w,defaultedTextInput:m,defaultedConfig:d,defaultedRange:f}=Ee(r),{transitionName:x,showTransition:$}=$a(u),{hideNavigationButtons:C}=Ua(),S=G(null),O=G(null),R=G([]),M=G(null),B=G(!1);at(()=>{a("mount"),!r.timePicker&&r.arrowNavigation?l([Ze(S.value)],"time"):o(!0,r.timePicker)});const U=z(()=>f.value.enabled&&r.modelAuto?Gr(r.internalModelValue):!0),Y=G(!1),y=V=>({hours:Array.isArray(r.hours)?r.hours[V]:r.hours,minutes:Array.isArray(r.minutes)?r.minutes[V]:r.minutes,seconds:Array.isArray(r.seconds)?r.seconds[V]:r.seconds}),L=z(()=>{const V=[];if(f.value.enabled)for(let J=0;J<2;J++)V.push(y(J));else V.push(y(0));return V}),F=(V,J=!1,P="")=>{J||a("reset-flow"),Y.value=V,a(V?"overlay-opened":"overlay-closed",lt.time),r.arrowNavigation&&o(V),vt(()=>{P!==""&&R.value[0]&&R.value[0].openChildCmp(P)})},E=z(()=>({dp__btn:!0,dp__button:!0,dp__button_bottom:r.autoApply&&!d.value.keepActionRow})),ne=mt(c,"timePicker"),ue=(V,J,P)=>f.value.enabled?J===0?[V,L.value[1][P]]:[L.value[0][P],V]:V,be=V=>{a("update:hours",V)},g=V=>{a("update:minutes",V)},D=V=>{a("update:seconds",V)},b=()=>{if(M.value&&!m.value.enabled&&!r.noOverlayFocus){const V=Zr(M.value);V&&V.focus({preventScroll:!0})}},W=V=>{B.value=!1,a("overlay-closed",V)},te=V=>{B.value=!0,a("overlay-opened",V)};return t({toggleTimePicker:F}),(V,J)=>(_(),H("div",{class:"dp--tp-wrap","data-dp-mobile":V.isMobile},[!V.timePicker&&!V.timePickerInline?Ba((_(),H("button",{key:0,ref_key:"openTimePickerBtn",ref:S,type:"button",class:ke({...E.value,"dp--hidden-el":Y.value}),"aria-label":i(w)?.openTimePicker,tabindex:V.noOverlayFocus?void 0:0,"data-test-id":"open-time-picker-btn",onKeydown:J[0]||(J[0]=P=>i(it)(P,()=>F(!0))),onClick:J[1]||(J[1]=P=>F(!0))},[V.$slots["clock-icon"]?le(V.$slots,"clock-icon",{key:0}):q("",!0),V.$slots["clock-icon"]?q("",!0):(_(),_e(i(Yn),{key:1}))],42,Ou)),[[Va,!i(C)(V.hideNavigation,"time")]]):q("",!0),Ie(ya,{name:i(x)(Y.value),css:i($)&&!V.timePickerInline},{default:pe(()=>[Y.value||V.timePicker||V.timePickerInline?(_(),H("div",{key:0,ref_key:"overlayRef",ref:M,role:V.timePickerInline?void 0:"dialog",class:ke({dp__overlay:!V.timePickerInline,"dp--overlay-absolute":!r.timePicker&&!V.timePickerInline,"dp--overlay-relative":r.timePicker}),style:pt(V.timePicker?{height:`${i(d).modeHeight}px`}:void 0),"aria-label":i(w)?.timePicker,tabindex:V.timePickerInline?void 0:0},[ve("div",{class:ke(V.timePickerInline?"dp__time_picker_inline_container":"dp__overlay_container dp__container_flex dp__time_picker_overlay_container"),style:{display:"flex"}},[V.$slots["time-picker-overlay"]?le(V.$slots,"time-picker-overlay",{key:0,hours:e.hours,minutes:e.minutes,seconds:e.seconds,setHours:be,setMinutes:g,setSeconds:D}):q("",!0),V.$slots["time-picker-overlay"]?q("",!0):(_(),H("div",{key:1,class:ke(V.timePickerInline?"dp__flex":"dp__overlay_row dp__flex_row")},[(_(!0),H(Me,null,Be(L.value,(P,se)=>Ba((_(),_e(Au,Ve({key:se},{ref_for:!0},{...V.$props,order:se,hours:P.hours,minutes:P.minutes,seconds:P.seconds,closeTimePickerBtn:O.value,disabledTimesConfig:e.disabledTimesConfig,disabled:se===0?i(f).fixedStart:i(f).fixedEnd},{ref_for:!0,ref_key:"timeInputRefs",ref:R,"validate-time":(h,N)=>e.validateTime(h,ue(N,se,h)),"onUpdate:hours":h=>be(ue(h,se,"hours")),"onUpdate:minutes":h=>g(ue(h,se,"minutes")),"onUpdate:seconds":h=>D(ue(h,se,"seconds")),onMounted:b,onOverlayClosed:W,onOverlayOpened:te,onAmPmChange:J[2]||(J[2]=h=>V.$emit("am-pm-change",h))}),tt({_:2},[Be(i(ne),(h,N)=>({name:h,fn:pe(T=>[le(V.$slots,h,Ve({ref_for:!0},T))])}))]),1040,["validate-time","onUpdate:hours","onUpdate:minutes","onUpdate:seconds"])),[[Va,se===0?!0:U.value]])),128))],2)),!V.timePicker&&!V.timePickerInline?Ba((_(),H("button",{key:2,ref_key:"closeTimePickerBtn",ref:O,type:"button",class:ke({...E.value,"dp--hidden-el":B.value}),"aria-label":i(w)?.closeTimePicker,tabindex:"0",onKeydown:J[3]||(J[3]=P=>i(it)(P,()=>F(!1))),onClick:J[4]||(J[4]=P=>F(!1))},[V.$slots["calendar-icon"]?le(V.$slots,"calendar-icon",{key:0}):q("",!0),V.$slots["calendar-icon"]?q("",!0):(_(),_e(i(ha),{key:1}))],42,Ru)),[[Va,!i(C)(V.hideNavigation,"time")]]):q("",!0)],2)],14,Iu)):q("",!0)]),_:3},8,["name","css"])],8,$u))}}),vl=(e,t,n,a)=>{const{defaultedRange:r}=Ee(e),l=(M,B)=>Array.isArray(t[M])?t[M][B]:t[M],o=M=>e.enableSeconds?Array.isArray(t.seconds)?t.seconds[M]:t.seconds:0,c=(M,B)=>M?B!==void 0?zt(M,l("hours",B),l("minutes",B),o(B)):zt(M,t.hours,t.minutes,o()):qr(j(),o(B)),u=(M,B)=>{t[M]=B},w=z(()=>e.modelAuto&&r.value.enabled?Array.isArray(n.value)?n.value.length>1:!1:r.value.enabled),m=(M,B)=>{const U=Object.fromEntries(Object.keys(t).map(Y=>Y===M?[Y,B]:[Y,t[Y]].slice()));if(w.value&&!r.value.disableTimeRangeValidation){const Y=L=>n.value?zt(n.value[L],U.hours[L],U.minutes[L],U.seconds[L]):null,y=L=>jr(n.value[L],0);return!(Pe(Y(0),Y(1))&&(Xt(Y(0),y(1))||da(Y(1),y(0))))}return!0},d=(M,B)=>{m(M,B)&&(u(M,B),a&&a())},f=M=>{d("hours",M)},x=M=>{d("minutes",M)},$=M=>{d("seconds",M)},C=(M,B,U,Y)=>{B&&f(M),!B&&!U&&x(M),U&&$(M),n.value&&Y(n.value)},S=M=>{if(M){const B=Array.isArray(M),U=B?[+M[0].hours,+M[1].hours]:+M.hours,Y=B?[+M[0].minutes,+M[1].minutes]:+M.minutes,y=B?[+M[0].seconds,+M[1].seconds]:+M.seconds;u("hours",U),u("minutes",Y),e.enableSeconds&&u("seconds",y)}},O=(M,B)=>{const U={hours:Array.isArray(t.hours)?t.hours[M]:t.hours,disabledArr:[]};return(B||B===0)&&(U.hours=B),Array.isArray(e.disabledTimes)&&(U.disabledArr=r.value.enabled&&Array.isArray(e.disabledTimes[M])?e.disabledTimes[M]:e.disabledTimes),U},R=z(()=>(M,B)=>{if(Array.isArray(e.disabledTimes)){const{disabledArr:U,hours:Y}=O(M,B),y=U.filter(L=>+L.hours===Y);return y[0]?.minutes==="*"?{hours:[Y],minutes:void 0,seconds:void 0}:{hours:[],minutes:y?.map(L=>+L.minutes)??[],seconds:y?.map(L=>L.seconds?+L.seconds:void 0)??[]}}return{hours:[],minutes:[],seconds:[]}});return{setTime:u,updateHours:f,updateMinutes:x,updateSeconds:$,getSetDateTime:c,updateTimeValues:C,getSecondsValue:o,assignStartTime:S,validateTime:m,disabledTimesConfig:R}},Yu=(e,t)=>{const n=()=>{e.isTextInputDate&&B()},{modelValue:a,time:r}=Oa(e,t,n),{defaultedStartTime:l,defaultedRange:o,defaultedTz:c}=Ee(e),{updateTimeValues:u,getSetDateTime:w,setTime:m,assignStartTime:d,disabledTimesConfig:f,validateTime:x}=vl(e,r,a,$);function $(){t("update-flow-step")}const C=Y=>{const{hours:y,minutes:L,seconds:F}=Y;return{hours:+y,minutes:+L,seconds:F?+F:0}},S=()=>{if(e.startTime){if(Array.isArray(e.startTime)){const y=C(e.startTime[0]),L=C(e.startTime[1]);return[Ye(j(),y),Ye(j(),L)]}const Y=C(e.startTime);return Ye(j(),Y)}return o.value.enabled?[null,null]:null},O=()=>{if(o.value.enabled){const[Y,y]=S();a.value=[ct(w(Y,0),c.value.timezone),ct(w(y,1),c.value.timezone)]}else a.value=ct(w(S()),c.value.timezone)},R=Y=>Array.isArray(Y)?[Qt(j(Y[0])),Qt(j(Y[1]))]:[Qt(Y??j())],M=(Y,y,L)=>{m("hours",Y),m("minutes",y),m("seconds",e.enableSeconds?L:0)},B=()=>{const[Y,y]=R(a.value);return o.value.enabled?M([Y.hours,y.hours],[Y.minutes,y.minutes],[Y.seconds,y.seconds]):M(Y.hours,Y.minutes,Y.seconds)};at(()=>{if(!e.shadow)return d(l.value),a.value?B():O()});const U=()=>{Array.isArray(a.value)?a.value=a.value.map((Y,y)=>Y&&w(Y,y)):a.value=w(a.value),t("time-update")};return{modelValue:a,time:r,disabledTimesConfig:f,updateTime:(Y,y=!0,L=!1)=>{u(Y,y,L,U)},validateTime:x}},Cu=Ge({compatConfig:{MODE:3},__name:"TimePickerSolo",props:{...Dt},emits:["update:internal-model-value","time-update","am-pm-change","mount","reset-flow","update-flow-step","overlay-toggle"],setup(e,{expose:t,emit:n}){const a=n,r=e,l=Gt(),o=mt(l,"timePicker"),c=G(null),{time:u,modelValue:w,disabledTimesConfig:m,updateTime:d,validateTime:f}=Yu(r,a);return at(()=>{r.shadow||a("mount",null)}),t({getSidebarProps:()=>({modelValue:w,time:u,updateTime:d}),toggleTimePicker:(x,$=!1,C="")=>{c.value?.toggleTimePicker(x,$,C)}}),(x,$)=>(_(),_e(ja,{"multi-calendars":0,stretch:"","is-mobile":x.isMobile},{default:pe(()=>[Ie(ml,Ve({ref_key:"tpRef",ref:c},x.$props,{hours:i(u).hours,minutes:i(u).minutes,seconds:i(u).seconds,"internal-model-value":x.internalModelValue,"disabled-times-config":i(m),"validate-time":i(f),"onUpdate:hours":$[0]||($[0]=C=>i(d)(C)),"onUpdate:minutes":$[1]||($[1]=C=>i(d)(C,!1)),"onUpdate:seconds":$[2]||($[2]=C=>i(d)(C,!1,!0)),onAmPmChange:$[3]||($[3]=C=>x.$emit("am-pm-change",C)),onResetFlow:$[4]||($[4]=C=>x.$emit("reset-flow")),onOverlayClosed:$[5]||($[5]=C=>x.$emit("overlay-toggle",{open:!1,overlay:C})),onOverlayOpened:$[6]||($[6]=C=>x.$emit("overlay-toggle",{open:!0,overlay:C}))}),tt({_:2},[Be(i(o),(C,S)=>({name:C,fn:pe(O=>[le(x.$slots,C,et(ut(O)))])}))]),1040,["hours","minutes","seconds","internal-model-value","disabled-times-config","validate-time"])]),_:3},8,["is-mobile"]))}}),Nu={class:"dp--header-wrap"},Bu={key:0,class:"dp__month_year_wrap"},Vu={key:0},Eu={class:"dp__month_year_wrap"},Lu=["data-dp-element","aria-label","data-test-id","onClick","onKeydown"],zu=Ge({compatConfig:{MODE:3},__name:"DpHeader",props:{month:{type:Number,default:0},year:{type:Number,default:0},instance:{type:Number,default:0},years:{type:Array,default:()=>[]},months:{type:Array,default:()=>[]},...Dt},emits:["update-month-year","mount","reset-flow","overlay-closed","overlay-opened"],setup(e,{expose:t,emit:n}){const a=n,r=e,{defaultedTransitions:l,defaultedAriaLabels:o,defaultedMultiCalendars:c,defaultedFilters:u,defaultedConfig:w,defaultedHighlight:m,propDates:d,defaultedUI:f}=Ee(r),{transitionName:x,showTransition:$}=$a(l),{buildMatrix:C}=Ht(),{handleMonthYearChange:S,isDisabled:O,updateMonthYear:R}=iu(r,a),{showLeftIcon:M,showRightIcon:B}=Ua(),U=G(!1),Y=G(!1),y=G(!1),L=G([null,null,null,null]);at(()=>{a("mount")});const F=h=>({get:()=>r[h],set:N=>{const T=h===bt.month?bt.year:bt.month;a("update-month-year",{[h]:N,[T]:r[T]}),h===bt.month?W(!0):te(!0)}}),E=z(F(bt.month)),ne=z(F(bt.year)),ue=z(()=>h=>({month:r.month,year:r.year,items:h===bt.month?r.months:r.years,instance:r.instance,updateMonthYear:R,toggle:h===bt.month?W:te})),be=z(()=>r.months.find(h=>h.value===r.month)||{text:"",value:0}),g=z(()=>pa(r.months,h=>{const N=r.month===h.value,T=Da(h.value,el(r.year,d.value.minDate),tl(r.year,d.value.maxDate))||u.value.months.includes(h.value),re=ol(m.value,h.value,r.year);return{active:N,disabled:T,highlighted:re}})),D=z(()=>pa(r.years,h=>{const N=r.year===h.value,T=Da(h.value,ma(d.value.minDate),ma(d.value.maxDate))||u.value.years.includes(h.value),re=Fn(m.value,h.value);return{active:N,disabled:T,highlighted:re}})),b=(h,N,T)=>{T!==void 0?h.value=T:h.value=!h.value,h.value?(y.value=!0,a("overlay-opened",N)):(y.value=!1,a("overlay-closed",N))},W=(h=!1,N)=>{V(h),b(U,lt.month,N)},te=(h=!1,N)=>{V(h),b(Y,lt.year,N)},V=h=>{h||a("reset-flow")},J=(h,N)=>{r.arrowNavigation&&(L.value[N]=Ze(h),C(L.value,"monthYear"))},P=z(()=>[{type:bt.month,index:1,toggle:W,modelValue:E.value,updateModelValue:h=>E.value=h,text:be.value.text,showSelectionGrid:U.value,items:g.value,ariaLabel:o.value?.openMonthsOverlay,overlayLabel:o.value.monthPicker?.(!0)??void 0},{type:bt.year,index:2,toggle:te,modelValue:ne.value,updateModelValue:h=>ne.value=h,text:Ln(r.year,r.locale),showSelectionGrid:Y.value,items:D.value,ariaLabel:o.value?.openYearsOverlay,overlayLabel:o.value.yearPicker?.(!0)??void 0}]),se=z(()=>r.disableYearSelect?[P.value[0]]:r.yearFirst?[...P.value].reverse():P.value);return t({toggleMonthPicker:W,toggleYearPicker:te,handleMonthYearChange:S}),(h,N)=>(_(),H("div",Nu,[h.$slots["month-year"]?(_(),H("div",Bu,[le(h.$slots,"month-year",et(ut({month:e.month,year:e.year,months:e.months,years:e.years,updateMonthYear:i(R),handleMonthYearChange:i(S),instance:e.instance,isDisabled:i(O)})))])):(_(),H(Me,{key:1},[h.$slots["top-extra"]?(_(),H("div",Vu,[le(h.$slots,"top-extra",{value:h.internalModelValue})])):q("",!0),ve("div",Eu,[i(M)(i(c),e.instance)&&!h.vertical?(_(),_e(ka,{key:0,"aria-label":i(o)?.prevMonth,disabled:i(O)(!1),class:ke(i(f)?.navBtnPrev),"el-name":"action-prev",onActivate:N[0]||(N[0]=T=>i(S)(!1,!0)),onSetRef:N[1]||(N[1]=T=>J(T,0))},{default:pe(()=>[h.$slots["arrow-left"]?le(h.$slots,"arrow-left",{key:0}):q("",!0),h.$slots["arrow-left"]?q("",!0):(_(),_e(i(In),{key:1}))]),_:3},8,["aria-label","disabled","class"])):q("",!0),ve("div",{class:ke(["dp__month_year_wrap",{dp__year_disable_select:h.disableYearSelect}])},[(_(!0),H(Me,null,Be(se.value,(T,re)=>(_(),H(Me,{key:T.type},[ve("button",{ref_for:!0,ref:v=>J(v,re+1),type:"button","data-dp-element":`overlay-${T.type}`,class:ke(["dp__btn dp__month_year_select",{"dp--hidden-el":y.value}]),"aria-label":`${T.text}-${T.ariaLabel}`,"data-test-id":`${T.type}-toggle-overlay-${e.instance}`,onClick:T.toggle,onKeydown:v=>i(it)(v,()=>T.toggle(),!0)},[h.$slots[T.type]?le(h.$slots,T.type,{key:0,text:T.text,value:r[T.type]}):q("",!0),h.$slots[T.type]?q("",!0):(_(),H(Me,{key:1},[ht(He(T.text),1)],64))],42,Lu),Ie(ya,{name:i(x)(T.showSelectionGrid),css:i($)},{default:pe(()=>[T.showSelectionGrid?(_(),_e(Aa,{key:0,items:T.items,"arrow-navigation":h.arrowNavigation,"hide-navigation":h.hideNavigation,"is-last":h.autoApply&&!i(w).keepActionRow,"skip-button-ref":!1,config:h.config,type:T.type,"header-refs":[],"esc-close":h.escClose,"menu-wrap-ref":h.menuWrapRef,"text-input":h.textInput,"aria-labels":h.ariaLabels,"overlay-label":T.overlayLabel,onSelected:T.updateModelValue,onToggle:T.toggle},tt({"button-icon":pe(()=>[h.$slots["calendar-icon"]?le(h.$slots,"calendar-icon",{key:0}):q("",!0),h.$slots["calendar-icon"]?q("",!0):(_(),_e(i(ha),{key:1}))]),_:2},[h.$slots[`${T.type}-overlay-value`]?{name:"item",fn:pe(({item:v})=>[le(h.$slots,`${T.type}-overlay-value`,{text:v.text,value:v.value})]),key:"0"}:void 0,h.$slots[`${T.type}-overlay`]?{name:"overlay",fn:pe(()=>[le(h.$slots,`${T.type}-overlay`,Ve({ref_for:!0},ue.value(T.type)))]),key:"1"}:void 0,h.$slots[`${T.type}-overlay-header`]?{name:"header",fn:pe(()=>[le(h.$slots,`${T.type}-overlay-header`,{toggle:T.toggle})]),key:"2"}:void 0]),1032,["items","arrow-navigation","hide-navigation","is-last","config","type","esc-close","menu-wrap-ref","text-input","aria-labels","overlay-label","onSelected","onToggle"])):q("",!0)]),_:2},1032,["name","css"])],64))),128))],2),i(M)(i(c),e.instance)&&h.vertical?(_(),_e(ka,{key:1,"aria-label":i(o)?.prevMonth,"el-name":"action-prev",disabled:i(O)(!1),class:ke(i(f)?.navBtnPrev),onActivate:N[2]||(N[2]=T=>i(S)(!1,!0))},{default:pe(()=>[h.$slots["arrow-up"]?le(h.$slots,"arrow-up",{key:0}):q("",!0),h.$slots["arrow-up"]?q("",!0):(_(),_e(i(Cn),{key:1}))]),_:3},8,["aria-label","disabled","class"])):q("",!0),i(B)(i(c),e.instance)?(_(),_e(ka,{key:2,ref:"rightIcon","el-name":"action-next",disabled:i(O)(!0),"aria-label":i(o)?.nextMonth,class:ke(i(f)?.navBtnNext),onActivate:N[3]||(N[3]=T=>i(S)(!0,!0)),onSetRef:N[4]||(N[4]=T=>J(T,h.disableYearSelect?2:3))},{default:pe(()=>[h.$slots[h.vertical?"arrow-down":"arrow-right"]?le(h.$slots,h.vertical?"arrow-down":"arrow-right",{key:0}):q("",!0),h.$slots[h.vertical?"arrow-down":"arrow-right"]?q("",!0):(_(),_e(Ha(h.vertical?i(Nn):i(Rn)),{key:1}))]),_:3},8,["disabled","aria-label","class"])):q("",!0)])],64))]))}}),Fu={class:"dp__calendar_header",role:"row"},Hu={key:0,class:"dp__calendar_header_item",role:"gridcell"},Wu=["aria-label"],ju={key:0,class:"dp__calendar_item dp__week_num",role:"gridcell"},qu={class:"dp__cell_inner"},Uu=["id","aria-selected","aria-disabled","aria-label","tabindex","data-test-id","onClick","onTouchend","onKeydown","onMouseenter","onMouseleave","onMousedown"],Qu=Ge({compatConfig:{MODE:3},__name:"DpCalendar",props:{mappedDates:{type:Array,default:()=>[]},instance:{type:Number,default:0},month:{type:Number,default:0},year:{type:Number,default:0},...Dt},emits:["select-date","set-hover-date","handle-scroll","mount","handle-swipe","handle-space","tooltip-open","tooltip-close"],setup(e,{expose:t,emit:n}){const a=n,r=e,{buildMultiLevelMatrix:l}=Ht(),{defaultedTransitions:o,defaultedConfig:c,defaultedAriaLabels:u,defaultedMultiCalendars:w,defaultedWeekNumbers:m,defaultedMultiDates:d,defaultedUI:f}=Ee(r),x=G(null),$=G({bottom:"",left:"",transform:""}),C=G([]),S=G(null),O=G(!0),R=G(""),M=G({startX:0,endX:0,startY:0,endY:0}),B=G([]),U=G({left:"50%"}),Y=G(!1),y=z(()=>r.calendar?r.calendar(r.mappedDates):r.mappedDates),L=z(()=>r.dayNames?Array.isArray(r.dayNames)?r.dayNames:r.dayNames(r.locale,+r.weekStart):Ss(r.formatLocale,r.locale,+r.weekStart));at(()=>{a("mount",{cmp:"calendar",refs:C}),c.value.noSwipe||S.value&&(S.value.addEventListener("touchstart",J,{passive:!1}),S.value.addEventListener("touchend",P,{passive:!1}),S.value.addEventListener("touchmove",se,{passive:!1})),r.monthChangeOnScroll&&S.value&&S.value.addEventListener("wheel",T,{passive:!1})}),va(()=>{c.value.noSwipe||S.value&&(S.value.removeEventListener("touchstart",J),S.value.removeEventListener("touchend",P),S.value.removeEventListener("touchmove",se)),r.monthChangeOnScroll&&S.value&&S.value.removeEventListener("wheel",T)});const F=X=>X?r.vertical?"vNext":"next":r.vertical?"vPrevious":"previous",E=(X,xe)=>{if(r.transitions){const K=Ke(Rt(j(),r.month,r.year));R.value=Ue(Ke(Rt(j(),X,xe)),K)?o.value[F(!0)]:o.value[F(!1)],O.value=!1,vt(()=>{O.value=!0})}},ne=z(()=>({...f.value.calendar??{}})),ue=z(()=>X=>{const xe=As(X);return{dp__marker_dot:xe.type==="dot",dp__marker_line:xe.type==="line"}}),be=z(()=>X=>Pe(X,x.value)),g=z(()=>({dp__calendar:!0,dp__calendar_next:w.value.count>0&&r.instance!==0})),D=z(()=>X=>r.hideOffsetDates?X.current:!0),b=async(X,xe)=>{const{width:K,height:ae}=X.getBoundingClientRect();x.value=xe.value;let s={left:`${K/2}px`},oe=-50;if(await vt(),B.value[0]){const{left:I,width:De}=B.value[0].getBoundingClientRect();I<0&&(s={left:"0"},oe=0,U.value.left=`${K/2}px`),window.innerWidth{const ae=Ze(C.value[xe][K]);ae&&(X.marker?.customPosition&&X.marker?.tooltip?.length?$.value=X.marker.customPosition(ae):await b(ae,X),a("tooltip-open",X.marker))},te=async(X,xe,K)=>{if(Y.value&&d.value.enabled&&d.value.dragSelect)return a("select-date",X);if(a("set-hover-date",X),X.marker?.tooltip?.length){if(r.hideOffsetDates&&!X.current)return;await W(X,xe,K)}},V=X=>{x.value&&(x.value=null,$.value=JSON.parse(JSON.stringify({bottom:"",left:"",transform:""})),a("tooltip-close",X.marker))},J=X=>{M.value.startX=X.changedTouches[0].screenX,M.value.startY=X.changedTouches[0].screenY},P=X=>{M.value.endX=X.changedTouches[0].screenX,M.value.endY=X.changedTouches[0].screenY,h()},se=X=>{r.vertical&&!r.inline&&X.preventDefault()},h=()=>{const X=r.vertical?"Y":"X";Math.abs(M.value[`start${X}`]-M.value[`end${X}`])>10&&a("handle-swipe",M.value[`start${X}`]>M.value[`end${X}`]?"right":"left")},N=(X,xe,K)=>{X&&(Array.isArray(C.value[xe])?C.value[xe][K]=X:C.value[xe]=[X]),r.arrowNavigation&&l(C.value,"calendar")},T=X=>{r.monthChangeOnScroll&&(X.preventDefault(),a("handle-scroll",X))},re=X=>m.value.type==="local"?An(X.value,{weekStartsOn:+r.weekStart}):m.value.type==="iso"?Sn(X.value):typeof m.value.type=="function"?m.value.type(X.value):"",v=X=>{const xe=X[0];return m.value.hideOnOffsetDates?X.some(K=>K.current)?re(xe):"":re(xe)},p=(X,xe,K=!0)=>{!K&&Ys()||(!d.value.enabled||c.value.allowPreventDefault)&&(Lt(X,c.value),a("select-date",xe))},Q=X=>{Lt(X,c.value)},Ae=X=>{d.value.enabled&&d.value.dragSelect?(Y.value=!0,a("select-date",X)):d.value.enabled&&a("select-date",X)};return t({triggerTransition:E}),(X,xe)=>(_(),H("div",{class:ke(g.value)},[ve("div",{ref_key:"calendarWrapRef",ref:S,class:ke(ne.value),role:"grid"},[ve("div",Fu,[X.weekNumbers?(_(),H("div",Hu,He(X.weekNumName),1)):q("",!0),(_(!0),H(Me,null,Be(L.value,(K,ae)=>(_(),H("div",{key:ae,class:"dp__calendar_header_item",role:"gridcell","data-test-id":"calendar-header","aria-label":i(u)?.weekDay?.(ae)},[X.$slots["calendar-header"]?le(X.$slots,"calendar-header",{key:0,day:K,index:ae}):q("",!0),X.$slots["calendar-header"]?q("",!0):(_(),H(Me,{key:1},[ht(He(K),1)],64))],8,Wu))),128))]),xe[2]||(xe[2]=ve("div",{class:"dp__calendar_header_separator"},null,-1)),Ie(ya,{name:R.value,css:!!X.transitions},{default:pe(()=>[O.value?(_(),H("div",{key:0,class:"dp__calendar",role:"rowgroup",onMouseleave:xe[1]||(xe[1]=K=>Y.value=!1)},[(_(!0),H(Me,null,Be(y.value,(K,ae)=>(_(),H("div",{key:ae,class:"dp__calendar_row",role:"row"},[X.weekNumbers?(_(),H("div",ju,[ve("div",qu,He(v(K.days)),1)])):q("",!0),(_(!0),H(Me,null,Be(K.days,(s,oe)=>(_(),H("div",{id:i(Dn)(s.value),ref_for:!0,ref:I=>N(I,ae,oe),key:oe+ae,role:"gridcell",class:"dp__calendar_item","aria-selected":(s.classData.dp__active_date||s.classData.dp__range_start||s.classData.dp__range_end)??void 0,"aria-disabled":s.classData.dp__cell_disabled||void 0,"aria-label":i(u)?.day?.(s),tabindex:!s.current&&X.hideOffsetDates?void 0:0,"data-test-id":i(Dn)(s.value),onClick:xa(I=>p(I,s),["prevent"]),onTouchend:I=>p(I,s,!1),onKeydown:I=>i(it)(I,()=>X.$emit("select-date",s)),onMouseenter:I=>te(s,ae,oe),onMouseleave:I=>V(s),onMousedown:I=>Ae(s),onMouseup:xe[0]||(xe[0]=I=>Y.value=!1)},[ve("div",{class:ke(["dp__cell_inner",s.classData])},[X.$slots.day&&D.value(s)?le(X.$slots,"day",{key:0,day:+s.text,date:s.value}):q("",!0),X.$slots.day?q("",!0):(_(),H(Me,{key:1},[ht(He(s.text),1)],64)),s.marker&&D.value(s)?(_(),H(Me,{key:2},[X.$slots.marker?le(X.$slots,"marker",{key:0,marker:s.marker,day:+s.text,date:s.value}):(_(),H("div",{key:1,class:ke(ue.value(s.marker)),style:pt(s.marker.color?{backgroundColor:s.marker.color}:{})},null,6))],64)):q("",!0),be.value(s.value)?(_(),H("div",{key:3,ref_for:!0,ref_key:"activeTooltip",ref:B,class:"dp__marker_tooltip",style:pt($.value)},[s.marker?.tooltip?(_(),H("div",{key:0,class:"dp__tooltip_content",onClick:Q},[(_(!0),H(Me,null,Be(s.marker.tooltip,(I,De)=>(_(),H("div",{key:De,class:"dp__tooltip_text"},[X.$slots["marker-tooltip"]?le(X.$slots,"marker-tooltip",{key:0,tooltip:I,day:s.value}):q("",!0),X.$slots["marker-tooltip"]?q("",!0):(_(),H(Me,{key:1},[ve("div",{class:"dp__tooltip_mark",style:pt(I.color?{backgroundColor:I.color}:{})},null,4),ve("div",null,He(I.text),1)],64))]))),128)),ve("div",{class:"dp__arrow_bottom_tp",style:pt(U.value)},null,4)])):q("",!0)],4)):q("",!0)],2)],40,Uu))),128))]))),128))],32)):q("",!0)]),_:3},8,["name","css"])],2)],2))}}),mr=e=>Array.isArray(e),Xu=(e,t,n,a)=>{const r=G([]),l=G(new Date),o=G(),c=()=>P(e.isTextInputDate),{modelValue:u,calendars:w,time:m,today:d}=Oa(e,t,c),{defaultedMultiCalendars:f,defaultedStartTime:x,defaultedRange:$,defaultedConfig:C,defaultedTz:S,propDates:O,defaultedMultiDates:R}=Ee(e),{validateMonthYearInRange:M,isDisabled:B,isDateRangeAllowed:U,checkMinMaxRange:Y}=Wt(e),{updateTimeValues:y,getSetDateTime:L,setTime:F,assignStartTime:E,validateTime:ne,disabledTimesConfig:ue}=vl(e,m,u,a),be=z(()=>k=>w.value[k]?w.value[k].month:0),g=z(()=>k=>w.value[k]?w.value[k].year:0),D=k=>!C.value.keepViewOnOffsetClick||k?!0:!o.value,b=(k,ee,me,Te=!1)=>{D(Te)&&(w.value[k]||(w.value[k]={month:0,year:0}),w.value[k].month=ir(ee)?w.value[k]?.month:ee,w.value[k].year=ir(me)?w.value[k]?.year:me)},W=()=>{e.autoApply&&t("select-date")},te=()=>{x.value&&E(x.value)};at(()=>{e.shadow||(u.value||(xe(),te()),P(!0),e.focusStartDate&&e.startDate&&xe())});const V=z(()=>e.flow?.length&&!e.partialFlow?e.flowStep===e.flow.length:!0),J=()=>{e.autoApply&&V.value&&t("auto-apply",e.partialFlow?e.flowStep!==e.flow.length:!1)},P=(k=!1)=>{if(u.value)return Array.isArray(u.value)?(r.value=u.value,p(k)):N(u.value,k);if(f.value.count&&k&&!e.startDate)return h(j(),k)},se=()=>Array.isArray(u.value)&&$.value.enabled?Se(u.value[0])===Se(u.value[1]??u.value[0]):!1,h=(k=new Date,ee=!1)=>{if((!f.value.count||!f.value.static||ee)&&b(0,Se(k),we(k)),f.value.count&&(!u.value||se()||!f.value.solo)&&(!f.value.solo||ee))for(let me=1;me{h(k),F("hours",Yt(k)),F("minutes",Ft(k)),F("seconds",ua(k)),f.value.count&&ee&&X()},T=k=>{if(f.value.count){if(f.value.solo)return 0;const ee=Se(k[0]),me=Se(k[1]);return Math.abs(me-ee){k[1]&&$.value.showLastInRange?h(k[T(k)],ee):h(k[0],ee);const me=(Te,Z)=>[Te(k[0]),k[1]?Te(k[1]):m[Z][1]];F("hours",me(Yt,"hours")),F("minutes",me(Ft,"minutes")),F("seconds",me(ua,"seconds"))},v=(k,ee)=>{if(($.value.enabled||e.weekPicker)&&!R.value.enabled)return re(k,ee);if(R.value.enabled&&ee){const me=k[k.length-1];return N(me,ee)}},p=k=>{const ee=u.value;v(ee,k),f.value.count&&f.value.solo&&X()},Q=(k,ee)=>{const me=Ye(j(),{month:be.value(ee),year:g.value(ee)}),Te=k<0?xt(me,1):ca(me,1);M(Se(Te),we(Te),k<0,e.preventMinMaxNavigation)&&(b(ee,Se(Te),we(Te)),t("update-month-year",{instance:ee,month:Se(Te),year:we(Te)}),f.value.count&&!f.value.solo&&Ae(ee),n())},Ae=k=>{for(let ee=k-1;ee>=0;ee--){const me=ca(Ye(j(),{month:be.value(ee+1),year:g.value(ee+1)}),1);b(ee,Se(me),we(me))}for(let ee=k+1;ee<=f.value.count-1;ee++){const me=xt(Ye(j(),{month:be.value(ee-1),year:g.value(ee-1)}),1);b(ee,Se(me),we(me))}},X=()=>{if(Array.isArray(u.value)&&u.value.length===2){const k=j(j(u.value[1]?u.value[1]:xt(u.value[0],1))),[ee,me]=[Se(u.value[0]),we(u.value[0])],[Te,Z]=[Se(u.value[1]),we(u.value[1])];(ee!==Te||ee===Te&&me!==Z)&&f.value.solo&&b(1,Se(k),we(k))}else u.value&&!Array.isArray(u.value)&&(b(0,Se(u.value),we(u.value)),h(j()))},xe=()=>{e.startDate&&(b(0,Se(j(e.startDate)),we(j(e.startDate))),f.value.count&&Ae(0))},K=(k,ee)=>{if(e.monthChangeOnScroll){const me=new Date().getTime()-l.value.getTime(),Te=Math.abs(k.deltaY);let Z=500;Te>1&&(Z=100),Te>100&&(Z=0),me>Z&&(l.value=new Date,Q(e.monthChangeOnScroll!=="inverse"?-k.deltaY:k.deltaY,ee))}},ae=(k,ee,me=!1)=>{e.monthChangeOnArrows&&e.vertical===me&&s(k,ee)},s=(k,ee)=>{Q(k==="right"?-1:1,ee)},oe=k=>{if(O.value.markers)return La(k.value,O.value.markers)},I=(k,ee)=>{switch(e.sixWeeks===!0?"append":e.sixWeeks){case"prepend":return[!0,!1];case"center":return[k==0,!0];case"fair":return[k==0||ee>k,!0];case"append":return[!1,!1];default:return[!1,!1]}},De=(k,ee,me,Te)=>{if(e.sixWeeks&&k.length<6){const Z=6-k.length,ce=(ee.getDay()+7-Te)%7,he=6-(me.getDay()+7-Te)%7,[Ot,Tt]=I(ce,he);for(let jt=1;jt<=Z;jt++)if(Tt?!!(jt%2)==Ot:Ot){const Nt=k[0].days[0],tn=ye(yt(Nt.value,-7),Se(ee));k.unshift({days:tn})}else{const Nt=k[k.length-1],tn=Nt.days[Nt.days.length-1],hl=ye(yt(tn.value,1),Se(ee));k.push({days:hl})}}return k},ye=(k,ee)=>{const me=j(k),Te=[];for(let Z=0;Z<7;Z++){const ce=yt(me,Z),he=Se(ce)!==ee;Te.push({text:e.hideOffsetDates&&he?"":ce.getDate(),value:ce,current:!he,classData:{}})}return Te},nt=(k,ee)=>{const me=[],Te=new Date(ee,k),Z=new Date(ee,k+1,0),ce=e.weekStart,he=Mt(Te,{weekStartsOn:ce}),Ot=Tt=>{const jt=ye(Tt,k);if(me.push({days:jt}),!me[me.length-1].days.some(Nt=>Pe(Ke(Nt.value),Ke(Z)))){const Nt=yt(Tt,7);Ot(Nt)}};return Ot(he),De(me,Te,Z,ce)},je=k=>{const ee=zt(j(k.value),m.hours,m.minutes,Kt());t("date-update",ee),R.value.enabled?Hn(ee,u,R.value.limit):u.value=ee,a(),vt().then(()=>{J()})},ft=k=>$.value.noDisabledRange?al(r.value[0],k).some(ee=>B(ee)):!1,A=()=>{r.value=u.value?u.value.slice():[],r.value.length===2&&!($.value.fixedStart||$.value.fixedEnd)&&(r.value=[])},ie=(k,ee)=>{const me=[j(k.value),yt(j(k.value),+$.value.autoRange)];U(me)?(ee&&de(k.value),r.value=me):t("invalid-date",k.value)},de=k=>{const ee=Se(j(k)),me=we(j(k));if(b(0,ee,me),f.value.count>0)for(let Te=1;Te{if(ft(k.value)||!Y(k.value,u.value,$.value.fixedStart?0:1))return t("invalid-date",k.value);r.value=cl(j(k.value),u,t,$)},gt=(k,ee)=>{if(A(),$.value.autoRange)return ie(k,ee);if($.value.fixedStart||$.value.fixedEnd)return Ct(k);r.value[0]?Y(j(k.value),u.value)&&!ft(k.value)?ze(j(k.value),j(r.value[0]))?(r.value.unshift(j(k.value)),t("range-end",r.value[0])):(r.value[1]=j(k.value),t("range-end",r.value[1])):(e.autoApply&&t("auto-apply-invalid",k.value),t("invalid-date",k.value)):(r.value[0]=j(k.value),t("range-start",r.value[0]))},Kt=(k=!0)=>e.enableSeconds?Array.isArray(m.seconds)?k?m.seconds[0]:m.seconds[1]:m.seconds:0,st=k=>{r.value[k]=zt(r.value[k],m.hours[k],m.minutes[k],Kt(k!==1))},Qa=()=>{r.value[0]&&r.value[1]&&+r.value?.[0]>+r.value?.[1]&&(r.value.reverse(),t("range-start",r.value[0]),t("range-end",r.value[1]))},Xa=()=>{r.value.length&&(r.value[0]&&!r.value[1]?st(0):(st(0),st(1),a()),Qa(),u.value=r.value.slice(),qa(r.value,t,e.autoApply,e.modelAuto))},Ia=(k,ee=!1)=>{if(B(k.value)||!k.current&&e.hideOffsetDates)return t("invalid-date",k.value);if(o.value=JSON.parse(JSON.stringify(k)),!$.value.enabled)return je(k);mr(m.hours)&&mr(m.minutes)&&!R.value.enabled&&(gt(k,ee),Xa())},Ga=(k,ee)=>{b(k,ee.month,ee.year,!0),f.value.count&&!f.value.solo&&Ae(k),t("update-month-year",{instance:k,month:ee.month,year:ee.year}),n(f.value.solo?k:void 0);const me=e.flow?.length?e.flow[e.flowStep]:void 0;!ee.fromNav&&(me===lt.month||me===lt.year)&&a()},Za=(k,ee)=>{dl({value:k,modelValue:u,range:$.value.enabled,timezone:ee?void 0:S.value.timezone}),W(),e.multiCalendars&&vt().then(()=>P(!0))},Ka=()=>{const k=Bn(j(),S.value);!$.value.enabled&&!R.value.enabled?u.value=k:u.value&&Array.isArray(u.value)&&u.value[0]?R.value.enabled?u.value=[...u.value,k]:u.value=ze(k,u.value[0])?[k,u.value[0]]:[u.value[0],k]:u.value=[k],W()},Ja=()=>{if(Array.isArray(u.value))if(R.value.enabled){const k=en();u.value[u.value.length-1]=L(k)}else u.value=u.value.map((k,ee)=>k&&L(k,ee));else u.value=L(u.value);t("time-update")},en=()=>Array.isArray(u.value)&&u.value.length?u.value[u.value.length-1]:null;return{calendars:w,modelValue:u,month:be,year:g,time:m,disabledTimesConfig:ue,today:d,validateTime:ne,getCalendarDays:nt,getMarker:oe,handleScroll:K,handleSwipe:s,handleArrow:ae,selectDate:Ia,updateMonthYear:Ga,presetDate:Za,selectCurrentDate:Ka,updateTime:(k,ee=!0,me=!1)=>{y(k,ee,me,Ja)},assignMonthAndYear:h,setStartTime:te}},Gu={key:0},Zu=Ge({__name:"DatePicker",props:{...Dt},emits:["tooltip-open","tooltip-close","mount","update:internal-model-value","update-flow-step","reset-flow","auto-apply","focus-menu","select-date","range-start","range-end","invalid-fixed-range","time-update","am-pm-change","time-picker-open","time-picker-close","recalculate-position","update-month-year","auto-apply-invalid","date-update","invalid-date","overlay-toggle"],setup(e,{expose:t,emit:n}){const a=n,r=e,{calendars:l,month:o,year:c,modelValue:u,time:w,disabledTimesConfig:m,today:d,validateTime:f,getCalendarDays:x,getMarker:$,handleArrow:C,handleScroll:S,handleSwipe:O,selectDate:R,updateMonthYear:M,presetDate:B,selectCurrentDate:U,updateTime:Y,assignMonthAndYear:y,setStartTime:L}=Xu(r,a,se,h),F=Gt(),{setHoverDate:E,getDayClassData:ne,clearHoverDate:ue}=vd(u,r),{defaultedMultiCalendars:be}=Ee(r),g=G([]),D=G([]),b=G(null),W=mt(F,"calendar"),te=mt(F,"monthYear"),V=mt(F,"timePicker"),J=K=>{r.shadow||a("mount",K)};dt(l,()=>{r.shadow||setTimeout(()=>{a("recalculate-position")},0)},{deep:!0}),dt(be,(K,ae)=>{K.count-ae.count>0&&y()},{deep:!0});const P=z(()=>K=>x(o.value(K),c.value(K)).map(ae=>({...ae,days:ae.days.map(s=>(s.marker=$(s),s.classData=ne(s),s))})));function se(K){K||K===0?D.value[K]?.triggerTransition(o.value(K),c.value(K)):D.value.forEach((ae,s)=>ae.triggerTransition(o.value(s),c.value(s)))}function h(){a("update-flow-step")}const N=(K,ae=!1)=>{R(K,ae),r.spaceConfirm&&a("select-date")},T=(K,ae,s=0)=>{g.value[s]?.toggleMonthPicker(K,ae)},re=(K,ae,s=0)=>{g.value[s]?.toggleYearPicker(K,ae)},v=(K,ae,s)=>{b.value?.toggleTimePicker(K,ae,s)},p=(K,ae)=>{if(!r.range){const s=u.value?u.value:d,oe=ae?new Date(ae):s,I=K?Mt(oe,{weekStartsOn:1}):Rr(oe,{weekStartsOn:1});R({value:I,current:Se(oe)===o.value(0),text:"",classData:{}}),document.getElementById(Dn(I))?.focus()}},Q=K=>{g.value[0]?.handleMonthYearChange(K,!0)},Ae=K=>{M(0,{month:o.value(0),year:c.value(0)+(K?1:-1),fromNav:!0})},X=(K,ae)=>{K===lt.time&&a(`time-picker-${ae?"open":"close"}`),a("overlay-toggle",{open:ae,overlay:K})},xe=K=>{a("overlay-toggle",{open:!1,overlay:K}),a("focus-menu")};return t({clearHoverDate:ue,presetDate:B,selectCurrentDate:U,toggleMonthPicker:T,toggleYearPicker:re,toggleTimePicker:v,handleArrow:C,updateMonthYear:M,getSidebarProps:()=>({modelValue:u,month:o,year:c,time:w,updateTime:Y,updateMonthYear:M,selectDate:R,presetDate:B}),changeMonth:Q,changeYear:Ae,selectWeekDate:p,setStartTime:L}),(K,ae)=>(_(),H(Me,null,[Ie(ja,{"multi-calendars":i(be).count,collapse:K.collapse,"is-mobile":K.isMobile},{default:pe(({instance:s,index:oe})=>[K.disableMonthYearSelect?q("",!0):(_(),_e(zu,Ve({key:0,ref:I=>{I&&(g.value[oe]=I)},months:i(Xr)(K.formatLocale,K.locale,K.monthNameFormat),years:i(Vn)(K.yearRange,K.locale,K.reverseYears),month:i(o)(s),year:i(c)(s),instance:s},K.$props,{onMount:ae[0]||(ae[0]=I=>J(i(Ut).header)),onResetFlow:ae[1]||(ae[1]=I=>K.$emit("reset-flow")),onUpdateMonthYear:I=>i(M)(s,I),onOverlayClosed:xe,onOverlayOpened:ae[2]||(ae[2]=I=>K.$emit("overlay-toggle",{open:!0,overlay:I}))}),tt({_:2},[Be(i(te),(I,De)=>({name:I,fn:pe(ye=>[le(K.$slots,I,et(ut(ye)))])}))]),1040,["months","years","month","year","instance","onUpdateMonthYear"])),Ie(Qu,Ve({ref:I=>{I&&(D.value[oe]=I)},"mapped-dates":P.value(s),month:i(o)(s),year:i(c)(s),instance:s},K.$props,{onSelectDate:I=>i(R)(I,s!==1),onHandleSpace:I=>N(I,s!==1),onSetHoverDate:ae[3]||(ae[3]=I=>i(E)(I)),onHandleScroll:I=>i(S)(I,s),onHandleSwipe:I=>i(O)(I,s),onMount:ae[4]||(ae[4]=I=>J(i(Ut).calendar)),onResetFlow:ae[5]||(ae[5]=I=>K.$emit("reset-flow")),onTooltipOpen:ae[6]||(ae[6]=I=>K.$emit("tooltip-open",I)),onTooltipClose:ae[7]||(ae[7]=I=>K.$emit("tooltip-close",I))}),tt({_:2},[Be(i(W),(I,De)=>({name:I,fn:pe(ye=>[le(K.$slots,I,et(ut({...ye})))])}))]),1040,["mapped-dates","month","year","instance","onSelectDate","onHandleSpace","onHandleScroll","onHandleSwipe"])]),_:3},8,["multi-calendars","collapse","is-mobile"]),K.enableTimePicker?(_(),H("div",Gu,[K.$slots["time-picker"]?le(K.$slots,"time-picker",et(Ve({key:0},{time:i(w),updateTime:i(Y)}))):(_(),_e(ml,Ve({key:1,ref_key:"timePickerRef",ref:b},K.$props,{hours:i(w).hours,minutes:i(w).minutes,seconds:i(w).seconds,"internal-model-value":K.internalModelValue,"disabled-times-config":i(m),"validate-time":i(f),onMount:ae[8]||(ae[8]=s=>J(i(Ut).timePicker)),"onUpdate:hours":ae[9]||(ae[9]=s=>i(Y)(s)),"onUpdate:minutes":ae[10]||(ae[10]=s=>i(Y)(s,!1)),"onUpdate:seconds":ae[11]||(ae[11]=s=>i(Y)(s,!1,!0)),onResetFlow:ae[12]||(ae[12]=s=>K.$emit("reset-flow")),onOverlayClosed:ae[13]||(ae[13]=s=>X(s,!1)),onOverlayOpened:ae[14]||(ae[14]=s=>X(s,!0)),onAmPmChange:ae[15]||(ae[15]=s=>K.$emit("am-pm-change",s))}),tt({_:2},[Be(i(V),(s,oe)=>({name:s,fn:pe(I=>[le(K.$slots,s,et(ut(I)))])}))]),1040,["hours","minutes","seconds","internal-model-value","disabled-times-config","validate-time"]))])):q("",!0)],64))}}),Ku=(e,t)=>{const n=G(),{defaultedMultiCalendars:a,defaultedConfig:r,defaultedHighlight:l,defaultedRange:o,propDates:c,defaultedFilters:u,defaultedMultiDates:w}=Ee(e),{modelValue:m,year:d,month:f,calendars:x}=Oa(e,t),{isDisabled:$}=Wt(e),{selectYear:C,groupedYears:S,showYearPicker:O,isDisabled:R,toggleYearPicker:M,handleYearSelect:B,handleYear:U}=pl({modelValue:m,multiCalendars:a,range:o,highlight:l,calendars:x,propDates:c,month:f,year:d,filters:u,props:e,emit:t}),Y=(D,b)=>[D,b].map(W=>$t(W,"MMMM",{locale:e.formatLocale})).join("-"),y=z(()=>D=>m.value?Array.isArray(m.value)?m.value.some(b=>rr(D,b)):rr(m.value,D):!1),L=D=>{if(o.value.enabled){if(Array.isArray(m.value)){const b=Pe(D,m.value[0])||Pe(D,m.value[1]);return Ta(m.value,n.value,D)&&!b}return!1}return!1},F=(D,b)=>D.quarter===Kn(b)&&D.year===we(b),E=D=>typeof l.value=="function"?l.value({quarter:Kn(D),year:we(D)}):!!l.value.quarters.find(b=>F(b,D)),ne=z(()=>D=>{const b=Ye(new Date,{year:d.value(D)});return So({start:la(b),end:Ir(b)}).map(W=>{const te=ra(W),V=Jn(W),J=$(W),P=L(te),se=E(te);return{text:Y(te,V),value:te,active:y.value(te),highlighted:se,disabled:J,isBetween:P}})}),ue=D=>{Hn(D,m,w.value.limit),t("auto-apply",!0)},be=D=>{m.value=Wn(m,D,t),qa(m.value,t,e.autoApply,e.modelAuto)},g=D=>{m.value=D,t("auto-apply")};return{defaultedConfig:r,defaultedMultiCalendars:a,groupedYears:S,year:d,isDisabled:R,quarters:ne,showYearPicker:O,modelValue:m,setHoverDate:D=>{n.value=D},selectYear:C,selectQuarter:(D,b,W)=>{if(!W)return x.value[b].month=Se(Jn(D)),w.value.enabled?ue(D):o.value.enabled?be(D):g(D)},toggleYearPicker:M,handleYearSelect:B,handleYear:U}},Ju={class:"dp--quarter-items"},ed=["data-test-id","disabled","onClick","onMouseover"],td=Ge({compatConfig:{MODE:3},__name:"QuarterPicker",props:{...Dt},emits:["update:internal-model-value","reset-flow","overlay-closed","auto-apply","range-start","range-end","overlay-toggle","update-month-year"],setup(e,{expose:t,emit:n}){const a=n,r=e,l=Gt(),o=mt(l,"yearMode"),{defaultedMultiCalendars:c,defaultedConfig:u,groupedYears:w,year:m,isDisabled:d,quarters:f,modelValue:x,showYearPicker:$,setHoverDate:C,selectQuarter:S,toggleYearPicker:O,handleYearSelect:R,handleYear:M}=Ku(r,a);return t({getSidebarProps:()=>({modelValue:x,year:m,selectQuarter:S,handleYearSelect:R,handleYear:M})}),(B,U)=>(_(),_e(ja,{"multi-calendars":i(c).count,collapse:B.collapse,stretch:"","is-mobile":B.isMobile},{default:pe(({instance:Y})=>[ve("div",{class:"dp-quarter-picker-wrap",style:pt({minHeight:`${i(u).modeHeight}px`})},[B.$slots["top-extra"]?le(B.$slots,"top-extra",{key:0,value:B.internalModelValue}):q("",!0),ve("div",null,[Ie(ul,Ve(B.$props,{items:i(w)(Y),instance:Y,"show-year-picker":i($)[Y],year:i(m)(Y),"is-disabled":y=>i(d)(Y,y),onHandleYear:y=>i(M)(Y,y),onYearSelect:y=>i(R)(y,Y),onToggleYearPicker:y=>i(O)(Y,y?.flow,y?.show)}),tt({_:2},[Be(i(o),(y,L)=>({name:y,fn:pe(F=>[le(B.$slots,y,et(ut(F)))])}))]),1040,["items","instance","show-year-picker","year","is-disabled","onHandleYear","onYearSelect","onToggleYearPicker"])]),ve("div",Ju,[(_(!0),H(Me,null,Be(i(f)(Y),(y,L)=>(_(),H("div",{key:L},[ve("button",{type:"button",class:ke(["dp--qr-btn",{"dp--qr-btn-active":y.active,"dp--qr-btn-between":y.isBetween,"dp--qr-btn-disabled":y.disabled,"dp--highlighted":y.highlighted}]),"data-test-id":y.value,disabled:y.disabled,onClick:F=>i(S)(y.value,Y,y.disabled),onMouseover:F=>i(C)(y.value)},[B.$slots.quarter?le(B.$slots,"quarter",{key:0,value:y.value,text:y.text}):(_(),H(Me,{key:1},[ht(He(y.text),1)],64))],42,ed)]))),128))])],4)]),_:3},8,["multi-calendars","collapse","is-mobile"]))}}),yl=(e,t)=>{const n=G(0);at(()=>{a(),window.addEventListener("resize",a,{passive:!0})}),va(()=>{window.removeEventListener("resize",a)});const a=()=>{n.value=window.document.documentElement.clientWidth};return{isMobile:z(()=>n.value<=e.value.mobileBreakpoint&&!t?!0:void 0)}},ad=["id","tabindex","role","aria-label"],nd={key:0,class:"dp--menu-load-container"},rd={key:1,class:"dp--menu-header"},ld=["data-dp-mobile"],od={key:0,class:"dp__sidebar_left"},id=["data-dp-mobile"],sd=["data-test-id","data-dp-mobile","onClick","onKeydown"],ud={key:2,class:"dp__sidebar_right"},dd={key:3,class:"dp__action_extra"},vr=Ge({compatConfig:{MODE:3},__name:"DatepickerMenu",props:{...Wa,shadow:{type:Boolean,default:!1},openOnTop:{type:Boolean,default:!1},internalModelValue:{type:[Date,Array],default:null},noOverlayFocus:{type:Boolean,default:!1},collapse:{type:Boolean,default:!1},getInputRect:{type:Function,default:()=>({})},isTextInputDate:{type:Boolean,default:!1}},emits:["close-picker","select-date","auto-apply","time-update","flow-step","update-month-year","invalid-select","update:internal-model-value","recalculate-position","invalid-fixed-range","tooltip-open","tooltip-close","time-picker-open","time-picker-close","am-pm-change","range-start","range-end","auto-apply-invalid","date-update","invalid-date","overlay-toggle","menu-blur"],setup(e,{expose:t,emit:n}){const a=n,r=e,l=G(null),o=z(()=>{const{openOnTop:A,...ie}=r;return{...ie,isMobile:S.value,flowStep:be.value,menuWrapRef:l.value}}),{setMenuFocused:c,setShiftKey:u,control:w}=sl(),m=Gt(),{defaultedTextInput:d,defaultedInline:f,defaultedConfig:x,defaultedUI:$,handleEventPropagation:C}=Ee(r),{isMobile:S}=yl(x,r.shadow),O=G(null),R=G(0),M=G(null),B=G(!1),U=G(null),Y=G(!1),y=A=>{Y.value=!0,x.value.allowPreventDefault&&A.preventDefault(),Lt(A,x.value,!0)};at(()=>{if(!r.shadow){B.value=!0,L(),window.addEventListener("resize",L);const A=Ze(l);A&&!d.value.enabled&&!f.value.enabled&&(c(!0),J()),A&&(A.addEventListener("pointerdown",y),A.addEventListener("mousedown",y))}document.addEventListener("mousedown",ft)}),va(()=>{window.removeEventListener("resize",L),document.removeEventListener("mousedown",ft);const A=Ze(l);A&&(A.removeEventListener("pointerdown",y),A.removeEventListener("mousedown",y))});const L=()=>{const A=Ze(M);A&&(R.value=A.getBoundingClientRect().width)},{arrowRight:F,arrowLeft:E,arrowDown:ne,arrowUp:ue}=Ht(),{flowStep:be,updateFlowStep:g,childMount:D,resetFlow:b,handleFlow:W}=yd(r,a,U),te=z(()=>r.monthPicker?bu:r.yearPicker?ku:r.timePicker?Cu:r.quarterPicker?td:Zu),V=z(()=>{if(x.value.arrowLeft)return x.value.arrowLeft;const A=l.value?.getBoundingClientRect(),ie=r.getInputRect();return ie?.width=(A?.right??0)&&ie?.width{const A=Ze(l);A&&A.focus({preventScroll:!0})},P=z(()=>U.value?.getSidebarProps()||{}),se=()=>{r.openOnTop&&a("recalculate-position")},h=mt(m,"action"),N=z(()=>r.monthPicker||r.yearPicker?mt(m,"monthYear"):r.timePicker?mt(m,"timePicker"):mt(m,"shared")),T=z(()=>r.openOnTop?"dp__arrow_bottom":"dp__arrow_top"),re=z(()=>({dp__menu_disabled:r.disabled,dp__menu_readonly:r.readonly,"dp-menu-loading":r.loading})),v=z(()=>({dp__menu:!0,dp__menu_index:!f.value.enabled,dp__relative:f.value.enabled,...$.value.menu??{}})),p=A=>{Lt(A,x.value,!0)},Q=A=>{r.escClose&&(a("close-picker"),C(A))},Ae=A=>{if(r.arrowNavigation){if(A===ot.up)return ue();if(A===ot.down)return ne();if(A===ot.left)return E();if(A===ot.right)return F()}else A===ot.left||A===ot.up?s("handleArrow",ot.left,0,A===ot.up):s("handleArrow",ot.right,0,A===ot.down)},X=A=>{u(A.shiftKey),!r.disableMonthYearSelect&&A.code===Ne.tab&&A.target.classList.contains("dp__menu")&&w.value.shiftKeyInMenu&&(A.preventDefault(),Lt(A,x.value,!0),a("close-picker"))},xe=()=>{J(),a("time-picker-close")},K=A=>{U.value?.toggleTimePicker(!1,!1),U.value?.toggleMonthPicker(!1,!1,A),U.value?.toggleYearPicker(!1,!1,A)},ae=(A,ie=0)=>A==="month"?U.value?.toggleMonthPicker(!1,!0,ie):A==="year"?U.value?.toggleYearPicker(!1,!0,ie):A==="time"?U.value?.toggleTimePicker(!0,!1):K(ie),s=(A,...ie)=>{U.value?.[A]&&U.value?.[A](...ie)},oe=()=>{s("selectCurrentDate")},I=(A,ie)=>{s("presetDate",ro(A),ie)},De=()=>{s("clearHoverDate")},ye=(A,ie)=>{s("updateMonthYear",A,ie)},nt=(A,ie)=>{A.preventDefault(),Ae(ie)},je=A=>{if(X(A),A.key===Ne.home||A.key===Ne.end)return s("selectWeekDate",A.key===Ne.home,A.target.getAttribute("id"));switch((A.key===Ne.pageUp||A.key===Ne.pageDown)&&(A.shiftKey?(s("changeYear",A.key===Ne.pageUp),xn(l.value,"overlay-year")?.focus()):(s("changeMonth",A.key===Ne.pageUp),xn(l.value,A.key===Ne.pageUp?"action-prev":"action-next")?.focus()),A.target.getAttribute("id")&&l.value?.focus({preventScroll:!0})),A.key){case Ne.esc:return Q(A);case Ne.arrowLeft:return nt(A,ot.left);case Ne.arrowRight:return nt(A,ot.right);case Ne.arrowUp:return nt(A,ot.up);case Ne.arrowDown:return nt(A,ot.down);default:return}},ft=A=>{f.value.enabled&&!f.value.input&&!l.value?.contains(A.target)&&Y.value&&(Y.value=!1,a("menu-blur"))};return t({updateMonthYear:ye,switchView:ae,handleFlow:W,onValueCleared:()=>{U.value?.setStartTime?.()}}),(A,ie)=>(_(),H("div",{id:A.uid?`dp-menu-${A.uid}`:void 0,ref_key:"dpMenuRef",ref:l,tabindex:i(f).enabled?void 0:"0",role:i(f).enabled?void 0:"dialog","aria-label":A.ariaLabels?.menu,class:ke(v.value),style:pt({"--dp-arrow-left":V.value}),onMouseleave:De,onClick:p,onKeydown:je},[(A.disabled||A.readonly)&&i(f).enabled||A.loading?(_(),H("div",{key:0,class:ke(re.value)},[A.loading?(_(),H("div",nd,[...ie[19]||(ie[19]=[ve("span",{class:"dp--menu-loader"},null,-1)])])):q("",!0)],2)):q("",!0),A.$slots["menu-header"]?(_(),H("div",rd,[le(A.$slots,"menu-header")])):q("",!0),!i(f).enabled&&!A.teleportCenter?(_(),H("div",{key:2,class:ke(T.value)},null,2)):q("",!0),ve("div",{ref_key:"innerMenuRef",ref:M,class:ke({dp__menu_content_wrapper:A.presetDates?.length||!!A.$slots["left-sidebar"]||!!A.$slots["right-sidebar"],"dp--menu-content-wrapper-collapsed":e.collapse&&(A.presetDates?.length||!!A.$slots["left-sidebar"]||!!A.$slots["right-sidebar"])}),"data-dp-mobile":i(S),style:pt({"--dp-menu-width":`${R.value}px`})},[A.$slots["left-sidebar"]?(_(),H("div",od,[le(A.$slots,"left-sidebar",et(ut(P.value)))])):q("",!0),A.presetDates.length?(_(),H("div",{key:1,class:ke({"dp--preset-dates-collapsed":e.collapse,"dp--preset-dates":!0}),"data-dp-mobile":i(S)},[(_(!0),H(Me,null,Be(A.presetDates,(de,Ct)=>(_(),H(Me,{key:Ct},[de.slot?le(A.$slots,de.slot,{key:0,presetDate:I,label:de.label,value:de.value}):(_(),H("button",{key:1,type:"button",style:pt(de.style||{}),class:ke(["dp__btn dp--preset-range",{"dp--preset-range-collapsed":e.collapse}]),"data-test-id":de.testId??void 0,"data-dp-mobile":i(S),onClick:xa(gt=>I(de.value,de.noTz),["prevent"]),onKeydown:gt=>i(it)(gt,()=>I(de.value,de.noTz),!0)},He(de.label),47,sd))],64))),128))],10,id)):q("",!0),ve("div",{ref_key:"calendarWrapperRef",ref:O,class:"dp__instance_calendar",role:"document"},[(_(),_e(Ha(te.value),Ve({ref_key:"dynCmpRef",ref:U},o.value,{"flow-step":i(be),onMount:i(D),onUpdateFlowStep:i(g),onResetFlow:i(b),onFocusMenu:J,onSelectDate:ie[0]||(ie[0]=de=>A.$emit("select-date")),onDateUpdate:ie[1]||(ie[1]=de=>A.$emit("date-update",de)),onTooltipOpen:ie[2]||(ie[2]=de=>A.$emit("tooltip-open",de)),onTooltipClose:ie[3]||(ie[3]=de=>A.$emit("tooltip-close",de)),onAutoApply:ie[4]||(ie[4]=de=>A.$emit("auto-apply",de)),onRangeStart:ie[5]||(ie[5]=de=>A.$emit("range-start",de)),onRangeEnd:ie[6]||(ie[6]=de=>A.$emit("range-end",de)),onInvalidFixedRange:ie[7]||(ie[7]=de=>A.$emit("invalid-fixed-range",de)),onTimeUpdate:ie[8]||(ie[8]=de=>A.$emit("time-update")),onAmPmChange:ie[9]||(ie[9]=de=>A.$emit("am-pm-change",de)),onTimePickerOpen:ie[10]||(ie[10]=de=>A.$emit("time-picker-open",de)),onTimePickerClose:xe,onRecalculatePosition:se,onUpdateMonthYear:ie[11]||(ie[11]=de=>A.$emit("update-month-year",de)),onAutoApplyInvalid:ie[12]||(ie[12]=de=>A.$emit("auto-apply-invalid",de)),onInvalidDate:ie[13]||(ie[13]=de=>A.$emit("invalid-date",de)),onOverlayToggle:ie[14]||(ie[14]=de=>A.$emit("overlay-toggle",de)),"onUpdate:internalModelValue":ie[15]||(ie[15]=de=>A.$emit("update:internal-model-value",de))}),tt({_:2},[Be(N.value,(de,Ct)=>({name:de,fn:pe(gt=>[le(A.$slots,de,et(ut({...gt})))])}))]),1040,["flow-step","onMount","onUpdateFlowStep","onResetFlow"]))],512),A.$slots["right-sidebar"]?(_(),H("div",ud,[le(A.$slots,"right-sidebar",et(ut(P.value)))])):q("",!0),A.$slots["action-extra"]?(_(),H("div",dd,[A.$slots["action-extra"]?le(A.$slots,"action-extra",{key:0,selectCurrentDate:oe}):q("",!0)])):q("",!0)],14,ld),!A.autoApply||i(x).keepActionRow?(_(),_e(du,Ve({key:3,"menu-mount":B.value},o.value,{"calendar-width":R.value,onClosePicker:ie[16]||(ie[16]=de=>A.$emit("close-picker")),onSelectDate:ie[17]||(ie[17]=de=>A.$emit("select-date")),onInvalidSelect:ie[18]||(ie[18]=de=>A.$emit("invalid-select")),onSelectNow:oe}),tt({_:2},[Be(i(h),(de,Ct)=>({name:de,fn:pe(gt=>[le(A.$slots,de,et(ut({...gt})))])}))]),1040,["menu-mount","calendar-width"])):q("",!0)],46,ad))}});var aa=(e=>(e.center="center",e.left="left",e.right="right",e))(aa||{});const cd=({menuRef:e,menuRefInner:t,inputRef:n,pickerWrapperRef:a,inline:r,emit:l,props:o,slots:c})=>{const{defaultedConfig:u}=Ee(o),w=G({}),m=G(!1),d=G({top:"0",left:"0"}),f=G(!1),x=_a(o,"teleportCenter");dt(x,()=>{d.value=JSON.parse(JSON.stringify({})),U()});const $=b=>{if(o.teleport){const W=b.getBoundingClientRect();return{left:W.left+window.scrollX,top:W.top+window.scrollY}}return{top:0,left:0}},C=(b,W)=>{d.value.left=`${b+W-w.value.width}px`},S=b=>{d.value.left=`${b}px`},O=(b,W)=>{o.position===aa.left&&S(b),o.position===aa.right&&C(b,W),o.position===aa.center&&(d.value.left=`${b+W/2-w.value.width/2}px`)},R=b=>{const{width:W,height:te}=b.getBoundingClientRect(),{top:V,left:J}=$(b);return{top:+V,left:+J,width:W,height:te}},M=()=>{d.value.left="50%",d.value.top="50%",d.value.transform="translate(-50%, -50%)",d.value.position="fixed",delete d.value.opacity},B=()=>{const b=Ze(n);d.value=o.altPosition(b)},U=(b=!0)=>{if(!r.value.enabled){if(x.value)return M();if(o.altPosition!==null)return B();if(b){const W=o.teleport?t.value?.$el:e.value;W&&(w.value=W.getBoundingClientRect()),l("recalculate-position")}return ue()}},Y=({inputEl:b,left:W,width:te})=>{window.screen.width>768&&!m.value&&O(W,te),F(b)},y=b=>{const{top:W,left:te,height:V,width:J}=R(b);d.value.top=`${V+W+ +o.offset}px`,f.value=!1,m.value||(d.value.left=`${te+J/2-w.value.width/2}px`),Y({inputEl:b,left:te,width:J})},L=b=>{const{top:W,left:te,width:V}=R(b);d.value.top=`${W-+o.offset-w.value.height}px`,f.value=!0,Y({inputEl:b,left:te,width:V})},F=b=>{if(o.autoPosition){const{left:W,width:te}=R(b),{left:V,right:J}=w.value;if(!m.value){if(Math.abs(V)!==Math.abs(J)){if(V<=0)return m.value=!0,S(W);if(J>=document.documentElement.clientWidth)return m.value=!0,C(W,te)}return O(W,te)}}},E=()=>{const b=Ze(n);if(b){if(o.autoPosition===wt.top)return wt.top;if(o.autoPosition===wt.bottom)return wt.bottom;const{height:W}=w.value,{top:te,height:V}=b.getBoundingClientRect(),J=window.innerHeight-te-V,P=te;return W<=J?wt.bottom:W>J&&W<=P?wt.top:J>=P?wt.bottom:wt.top}return wt.bottom},ne=b=>E()===wt.bottom?y(b):L(b),ue=()=>{const b=Ze(n);if(b)return o.autoPosition?ne(b):y(b)},be=function(b){if(b){const W=b.scrollHeight>b.clientHeight,te=window.getComputedStyle(b).overflowY.indexOf("hidden")!==-1;return W&&!te}return!0},g=function(b){return!b||b===document.body||b.nodeType===Node.DOCUMENT_FRAGMENT_NODE?window:be(b)?b:g(b.assignedSlot&&u.value.shadowDom?b.assignedSlot.parentNode:b.parentNode)},D=b=>{if(b)switch(o.position){case aa.left:return{left:0,transform:"translateX(0)"};case aa.right:return{left:`${b.width}px`,transform:"translateX(-100%)"};default:return{left:`${b.width/2}px`,transform:"translateX(-50%)"}}return{}};return{openOnTop:f,menuStyle:d,xCorrect:m,setMenuPosition:U,getScrollableParent:g,shadowRender:(b,W,te)=>{const V=document.createElement("div"),J=Ze(n)?.getBoundingClientRect();V.setAttribute("id","dp--temp-container");const P=a.value?.clientWidth?a.value:document.body;P.append(V);const se=D(J),h=u.value.shadowDom?Object.keys(c).filter(T=>["right-sidebar","left-sidebar","top-extra","action-extra"].includes(T)):Object.keys(c),N=no(W,{...te,shadow:!0,style:{opacity:0,position:"absolute",...se}},Object.fromEntries(h.map(T=>[T,c[T]])));b!=null&&(N.appContext=b.appContext),Un(N,V),w.value=N.el?.getBoundingClientRect(),Un(null,V),P.removeChild(V)}}},Vt=[{name:"clock-icon",use:["time","calendar","shared"]},{name:"arrow-left",use:["month-year","calendar","shared","year-mode"]},{name:"arrow-right",use:["month-year","calendar","shared","year-mode"]},{name:"arrow-up",use:["time","calendar","month-year","shared"]},{name:"arrow-down",use:["time","calendar","month-year","shared"]},{name:"calendar-icon",use:["month-year","time","calendar","shared","year-mode"]},{name:"day",use:["calendar","shared"]},{name:"month-overlay-value",use:["calendar","month-year","shared"]},{name:"year-overlay-value",use:["calendar","month-year","shared","year-mode"]},{name:"year-overlay",use:["month-year","shared"]},{name:"month-overlay",use:["month-year","shared"]},{name:"month-overlay-header",use:["month-year","shared"]},{name:"year-overlay-header",use:["month-year","shared"]},{name:"hours-overlay-value",use:["calendar","time","shared"]},{name:"hours-overlay-header",use:["calendar","time","shared"]},{name:"minutes-overlay-value",use:["calendar","time","shared"]},{name:"minutes-overlay-header",use:["calendar","time","shared"]},{name:"seconds-overlay-value",use:["calendar","time","shared"]},{name:"seconds-overlay-header",use:["calendar","time","shared"]},{name:"hours",use:["calendar","time","shared"]},{name:"minutes",use:["calendar","time","shared"]},{name:"month",use:["calendar","month-year","shared"]},{name:"year",use:["calendar","month-year","shared","year-mode"]},{name:"action-buttons",use:["action"]},{name:"action-preview",use:["action"]},{name:"calendar-header",use:["calendar","shared"]},{name:"marker-tooltip",use:["calendar","shared"]},{name:"action-extra",use:["menu"]},{name:"time-picker-overlay",use:["calendar","time","shared"]},{name:"am-pm-button",use:["calendar","time","shared"]},{name:"left-sidebar",use:["menu"]},{name:"right-sidebar",use:["menu"]},{name:"month-year",use:["month-year","shared"]},{name:"time-picker",use:["menu","shared"]},{name:"action-row",use:["action"]},{name:"marker",use:["calendar","shared"]},{name:"quarter",use:["shared"]},{name:"top-extra",use:["shared","month-year"]},{name:"tp-inline-arrow-up",use:["shared","time"]},{name:"tp-inline-arrow-down",use:["shared","time"]},{name:"menu-header",use:["menu"]}],pd=[{name:"trigger"},{name:"input-icon"},{name:"clear-icon"},{name:"dp-input"}],md={all:()=>Vt,monthYear:()=>Vt.filter(e=>e.use.includes("month-year")),input:()=>pd,timePicker:()=>Vt.filter(e=>e.use.includes("time")),action:()=>Vt.filter(e=>e.use.includes("action")),calendar:()=>Vt.filter(e=>e.use.includes("calendar")),menu:()=>Vt.filter(e=>e.use.includes("menu")),shared:()=>Vt.filter(e=>e.use.includes("shared")),yearMode:()=>Vt.filter(e=>e.use.includes("year-mode"))},mt=(e,t,n)=>{const a=[];return md[t]().forEach(r=>{e[r.name]&&a.push(r.name)}),n?.length&&n.forEach(r=>{r.slot&&a.push(r.slot)}),a},$a=e=>{const t=z(()=>a=>e.value?a?e.value.open:e.value.close:""),n=z(()=>a=>e.value?a?e.value.menuAppearTop:e.value.menuAppearBottom:"");return{transitionName:t,showTransition:!!e.value,menuTransition:n}},Oa=(e,t,n)=>{const{defaultedRange:a,defaultedTz:r}=Ee(e),l=j(ct(j(),r.value.timezone)),o=G([{month:Se(l),year:we(l)}]),c=f=>{const x={hours:Yt(l),minutes:Ft(l),seconds:0};return a.value.enabled?[x[f],x[f]]:x[f]},u=Sa({hours:c("hours"),minutes:c("minutes"),seconds:c("seconds")});dt(a,(f,x)=>{f.enabled!==x.enabled&&(u.hours=c("hours"),u.minutes=c("minutes"),u.seconds=c("seconds"))},{deep:!0});const w=z({get:()=>e.internalModelValue,set:f=>{!e.readonly&&!e.disabled&&t("update:internal-model-value",f)}}),m=z(()=>f=>o.value[f]?o.value[f].month:0),d=z(()=>f=>o.value[f]?o.value[f].year:0);return dt(w,(f,x)=>{n&&JSON.stringify(f??{})!==JSON.stringify(x??{})&&n()},{deep:!0}),{calendars:o,time:u,modelValue:w,month:m,year:d,today:l}},vd=(e,t)=>{const{defaultedMultiCalendars:n,defaultedMultiDates:a,defaultedUI:r,defaultedHighlight:l,defaultedTz:o,propDates:c,defaultedRange:u}=Ee(t),{isDisabled:w}=Wt(t),m=G(null),d=G(ct(new Date,o.value.timezone)),f=v=>{!v.current&&t.hideOffsetDates||(m.value=v.value)},x=()=>{m.value=null},$=v=>Array.isArray(e.value)&&u.value.enabled&&e.value[0]&&m.value?v?Ue(m.value,e.value[0]):ze(m.value,e.value[0]):!0,C=(v,p)=>{const Q=()=>e.value?p?e.value[0]||null:e.value[1]:null,Ae=e.value&&Array.isArray(e.value)?Q():null;return Pe(j(v.value),Ae)},S=v=>{const p=Array.isArray(e.value)?e.value[0]:null;return v?!ze(m.value??null,p):!0},O=(v,p=!0)=>(u.value.enabled||t.weekPicker)&&Array.isArray(e.value)&&e.value.length===2?t.hideOffsetDates&&!v.current?!1:Pe(j(v.value),e.value[p?0:1]):u.value.enabled?C(v,p)&&S(p)||Pe(v.value,Array.isArray(e.value)?e.value[0]:null)&&$(p):!1,R=(v,p)=>{if(Array.isArray(e.value)&&e.value[0]&&e.value.length===1){const Q=Pe(v.value,m.value);return p?Ue(e.value[0],v.value)&&Q:ze(e.value[0],v.value)&&Q}return!1},M=v=>!e.value||t.hideOffsetDates&&!v.current?!1:u.value.enabled?t.modelAuto&&Array.isArray(e.value)?Pe(v.value,e.value[0]?e.value[0]:d.value):!1:a.value.enabled&&Array.isArray(e.value)?e.value.some(p=>Pe(p,v.value)):Pe(v.value,e.value?e.value:d.value),B=v=>{if(u.value.autoRange||t.weekPicker){if(m.value){if(t.hideOffsetDates&&!v.current)return!1;const p=yt(m.value,+u.value.autoRange),Q=It(j(m.value),t.weekStart);return t.weekPicker?Pe(Q[1],j(v.value)):Pe(p,j(v.value))}return!1}return!1},U=v=>{if(u.value.autoRange||t.weekPicker){if(m.value){const p=yt(m.value,+u.value.autoRange);if(t.hideOffsetDates&&!v.current)return!1;const Q=It(j(m.value),t.weekStart);return t.weekPicker?Ue(v.value,Q[0])&&ze(v.value,Q[1]):Ue(v.value,m.value)&&ze(v.value,p)}return!1}return!1},Y=v=>{if(u.value.autoRange||t.weekPicker){if(m.value){if(t.hideOffsetDates&&!v.current)return!1;const p=It(j(m.value),t.weekStart);return t.weekPicker?Pe(p[0],v.value):Pe(m.value,v.value)}return!1}return!1},y=v=>Ta(e.value,m.value,v.value),L=()=>t.modelAuto&&Array.isArray(t.internalModelValue)?!!t.internalModelValue[0]:!1,F=()=>t.modelAuto?Gr(t.internalModelValue):!0,E=v=>{if(t.weekPicker)return!1;const p=u.value.enabled?!O(v)&&!O(v,!1):!0;return!w(v.value)&&!M(v)&&!(!v.current&&t.hideOffsetDates)&&p},ne=v=>u.value.enabled?t.modelAuto?L()&&M(v):!1:M(v),ue=v=>l.value?Rs(v.value,c.value.highlight):!1,be=v=>{const p=w(v.value);return p&&(typeof l.value=="function"?!l.value(v.value,p):!l.value.options.highlightDisabled)},g=v=>typeof l.value=="function"?l.value(v.value):l.value.weekdays?.includes(v.value.getDay()),D=v=>(u.value.enabled||t.weekPicker)&&(!(n.value.count>0)||v.current)&&F()&&!(!v.current&&t.hideOffsetDates)&&!M(v)?y(v):!1,b=v=>{if(Array.isArray(e.value)&&e.value.length===1){const{before:p,after:Q}=dr(+u.value.maxRange,e.value[0]);return da(v.value,p)||Xt(v.value,Q)}return!1},W=v=>{if(Array.isArray(e.value)&&e.value.length===1){const{before:p,after:Q}=dr(+u.value.minRange,e.value[0]);return Ta([p,Q],e.value[0],v.value)}return!1},te=v=>u.value.enabled&&(u.value.maxRange||u.value.minRange)?u.value.maxRange&&u.value.minRange?b(v)||W(v):u.value.maxRange?b(v):W(v):!1,V=v=>{const{isRangeStart:p,isRangeEnd:Q}=h(v),Ae=u.value.enabled?p||Q:!1;return{dp__cell_offset:!v.current,dp__pointer:!t.disabled&&!(!v.current&&t.hideOffsetDates)&&!w(v.value)&&!te(v),dp__cell_disabled:w(v.value)||te(v),dp__cell_highlight:!be(v)&&(ue(v)||g(v))&&!ne(v)&&!Ae&&!Y(v)&&!(D(v)&&t.weekPicker)&&!Q,dp__cell_highlight_active:!be(v)&&(ue(v)||g(v))&&ne(v),dp__today:!t.noToday&&Pe(v.value,d.value)&&v.current,"dp--past":ze(v.value,d.value),"dp--future":Ue(v.value,d.value)}},J=v=>({dp__active_date:ne(v),dp__date_hover:E(v)}),P=v=>{if(e.value&&!Array.isArray(e.value)){const p=It(e.value,t.weekStart);return{...T(v),dp__range_start:Pe(p[0],v.value),dp__range_end:Pe(p[1],v.value),dp__range_between_week:Ue(v.value,p[0])&&ze(v.value,p[1])}}return{...T(v)}},se=v=>{if(e.value&&Array.isArray(e.value)){const p=It(e.value[0],t.weekStart),Q=e.value[1]?It(e.value[1],t.weekStart):[];return{...T(v),dp__range_start:Pe(p[0],v.value)||Pe(Q[0],v.value),dp__range_end:Pe(p[1],v.value)||Pe(Q[1],v.value),dp__range_between_week:Ue(v.value,p[0])&&ze(v.value,p[1])||Ue(v.value,Q[0])&&ze(v.value,Q[1]),dp__range_between:Ue(v.value,p[1])&&ze(v.value,Q[0])}}return{...T(v)}},h=v=>{const p=n.value.count>0?v.current&&O(v)&&F():O(v)&&F(),Q=n.value.count>0?v.current&&O(v,!1)&&F():O(v,!1)&&F();return{isRangeStart:p,isRangeEnd:Q}},N=v=>{const{isRangeStart:p,isRangeEnd:Q}=h(v);return{dp__range_start:p,dp__range_end:Q,dp__range_between:D(v),dp__date_hover:Pe(v.value,m.value)&&!p&&!Q&&!t.weekPicker,dp__date_hover_start:R(v,!0),dp__date_hover_end:R(v,!1)}},T=v=>({...N(v),dp__cell_auto_range:U(v),dp__cell_auto_range_start:Y(v),dp__cell_auto_range_end:B(v)}),re=v=>u.value.enabled?u.value.autoRange?T(v):t.modelAuto?{...J(v),...N(v)}:t.weekPicker?se(v):N(v):t.weekPicker?P(v):J(v);return{setHoverDate:f,clearHoverDate:x,getDayClassData:v=>t.hideOffsetDates&&!v.current?{}:{...V(v),...re(v),[t.dayClass?t.dayClass(v.value,t.internalModelValue):""]:!0,...r.value.calendarCell??{}}}},Wt=e=>{const{defaultedFilters:t,defaultedRange:n,propDates:a,defaultedMultiDates:r}=Ee(e),l=g=>a.value.disabledDates?typeof a.value.disabledDates=="function"?a.value.disabledDates(j(g)):!!La(g,a.value.disabledDates):!1,o=g=>a.value.maxDate?e.yearPicker?we(g)>we(a.value.maxDate):Ue(g,a.value.maxDate):!1,c=g=>a.value.minDate?e.yearPicker?we(g){const D=o(g),b=c(g),W=l(g),te=t.value.months.map(h=>+h).includes(Se(g)),V=e.disabledWeekDays.length?e.disabledWeekDays.some(h=>+h===wi(g)):!1,J=x(g),P=we(g),se=il(e.yearRange,P);return!(D||b||W||te||se||V||J)},w=(g,D)=>ze(...Et(a.value.minDate,g,D))||Pe(...Et(a.value.minDate,g,D)),m=(g,D)=>Ue(...Et(a.value.maxDate,g,D))||Pe(...Et(a.value.maxDate,g,D)),d=(g,D,b)=>{let W=!1;return a.value.maxDate&&b&&m(g,D)&&(W=!0),a.value.minDate&&!b&&w(g,D)&&(W=!0),W},f=(g,D,b,W)=>{let te=!1;return W&&(a.value.minDate||a.value.maxDate)?a.value.minDate&&a.value.maxDate?te=d(g,D,b):(a.value.minDate&&w(g,D)||a.value.maxDate&&m(g,D))&&(te=!0):te=!0,te},x=g=>Array.isArray(a.value.allowedDates)&&!a.value.allowedDates.length?!0:a.value.allowedDates?!La(g,a.value.allowedDates,Kr(e.monthPicker,e.yearPicker)):!1,$=g=>!u(g),C=g=>n.value.noDisabledRange?!Or({start:g[0],end:g[1]}).some(D=>$(D)):!0,S=g=>{if(g){const D=we(g);return D>=+e.yearRange[0]&&D<=e.yearRange[1]}return!0},O=(g,D)=>!!(Array.isArray(g)&&g[D]&&(n.value.maxRange||n.value.minRange)&&S(g[D])),R=(g,D,b=0)=>{if(O(D,b)&&S(g)){const W=Pr(g,D[b]),te=al(D[b],g),V=te.length===1?0:te.filter(P=>$(P)).length,J=Math.abs(W)-(n.value.minMaxRawRange?0:V);if(n.value.minRange&&n.value.maxRange)return J>=+n.value.minRange&&J<=+n.value.maxRange;if(n.value.minRange)return J>=+n.value.minRange;if(n.value.maxRange)return J<=+n.value.maxRange}return!0},M=()=>!e.enableTimePicker||e.monthPicker||e.yearPicker||e.ignoreTimeValidation,B=g=>Array.isArray(g)?[g[0]?cn(g[0]):null,g[1]?cn(g[1]):null]:cn(g),U=(g,D,b)=>g.find(W=>+W.hours===Yt(D)&&W.minutes==="*"?!0:+W.minutes===Ft(D)&&+W.hours===Yt(D))&&b,Y=(g,D,b)=>{const[W,te]=g,[V,J]=D;return!U(W,V,b)&&!U(te,J,b)&&b},y=(g,D)=>{const b=Array.isArray(D)?D:[D];return Array.isArray(e.disabledTimes)?Array.isArray(e.disabledTimes[0])?Y(e.disabledTimes,b,g):!b.some(W=>U(e.disabledTimes,W,g)):g},L=(g,D)=>{const b=Array.isArray(D)?[Qt(D[0]),D[1]?Qt(D[1]):void 0]:Qt(D),W=!e.disabledTimes(b);return g&&W},F=(g,D)=>e.disabledTimes?Array.isArray(e.disabledTimes)?y(D,g):L(D,g):D,E=g=>{let D=!0;if(!g||M())return!0;const b=!a.value.minDate&&!a.value.maxDate?B(g):g;return(e.maxTime||a.value.maxDate)&&(D=ur(e.maxTime,a.value.maxDate,"max",Je(b),D)),(e.minTime||a.value.minDate)&&(D=ur(e.minTime,a.value.minDate,"min",Je(b),D)),F(g,D)},ne=g=>{if(!e.monthPicker)return!0;let D=!0;const b=j(_t(g));if(a.value.minDate&&a.value.maxDate){const W=j(_t(a.value.minDate)),te=j(_t(a.value.maxDate));return Ue(b,W)&&ze(b,te)||Pe(b,W)||Pe(b,te)}if(a.value.minDate){const W=j(_t(a.value.minDate));D=Ue(b,W)||Pe(b,W)}if(a.value.maxDate){const W=j(_t(a.value.maxDate));D=ze(b,W)||Pe(b,W)}return D},ue=z(()=>g=>!e.enableTimePicker||e.ignoreTimeValidation?!0:E(g)),be=z(()=>g=>e.monthPicker?Array.isArray(g)&&(n.value.enabled||r.value.enabled)?!g.filter(D=>!ne(D)).length:ne(g):!0);return{isDisabled:$,validateDate:u,validateMonthYearInRange:f,isDateRangeAllowed:C,checkMinMaxRange:R,isValidTime:E,isTimeValid:ue,isMonthValid:be}},Ua=()=>{const e=z(()=>(a,r)=>a?.includes(r)),t=z(()=>(a,r)=>a.count?a.solo?!0:r===0:!0),n=z(()=>(a,r)=>a.count?a.solo?!0:r===a.count-1:!0);return{hideNavigationButtons:e,showLeftIcon:t,showRightIcon:n}},yd=(e,t,n)=>{const a=G(0),r=Sa({[Ut.timePicker]:!e.enableTimePicker||e.timePicker||e.monthPicker,[Ut.calendar]:!1,[Ut.header]:!1}),l=z(()=>e.monthPicker||e.timePicker),o=d=>{if(e.flow?.length){if(!d&&l.value)return m();r[d]=!0,Object.keys(r).filter(f=>!r[f]).length||m()}},c=()=>{e.flow?.length&&a.value!==-1&&(a.value+=1,t("flow-step",a.value),m()),e.flow?.length===a.value&&vt().then(()=>u())},u=()=>{a.value=-1},w=(d,f,...x)=>{e.flow[a.value]===d&&n.value&&n.value[f]?.(...x)},m=(d=0)=>{d&&(a.value+=d),w(lt.month,"toggleMonthPicker",!0),w(lt.year,"toggleYearPicker",!0),w(lt.calendar,"toggleTimePicker",!1,!0),w(lt.time,"toggleTimePicker",!0,!0);const f=e.flow[a.value];(f===lt.hours||f===lt.minutes||f===lt.seconds)&&w(f,"toggleTimePicker",!0,!0,f)};return{childMount:o,updateFlowStep:c,resetFlow:u,handleFlow:m,flowStep:a}},hd={key:1,class:"dp__input_wrap"},fd=["id","name","inputmode","placeholder","disabled","readonly","required","value","autocomplete","aria-label","aria-disabled","aria-invalid"],gd={key:2,class:"dp--clear-btn"},bd=["aria-label"],wd=Ge({compatConfig:{MODE:3},__name:"DatepickerInput",props:{isMenuOpen:{type:Boolean,default:!1},inputValue:{type:String,default:""},...Wa},emits:["clear","open","update:input-value","set-input-date","close","select-date","set-empty-date","toggle","focus-prev","focus","blur","real-blur","text-input"],setup(e,{expose:t,emit:n}){const a=n,r=e,{defaultedTextInput:l,defaultedAriaLabels:o,defaultedInline:c,defaultedConfig:u,defaultedRange:w,defaultedMultiDates:m,defaultedUI:d,getDefaultPattern:f,getDefaultStartTime:x}=Ee(r),{checkMinMaxRange:$}=Wt(r),C=G(),S=G(null),O=G(!1),R=G(!1),M=z(()=>({dp__pointer:!r.disabled&&!r.readonly&&!l.value.enabled,dp__disabled:r.disabled,dp__input_readonly:!l.value.enabled,dp__input:!0,dp__input_not_clearable:!r.clearable,dp__input_icon_pad:!r.hideInputIcon,dp__input_valid:typeof r.state=="boolean"?r.state:!1,dp__input_invalid:typeof r.state=="boolean"?!r.state:!1,dp__input_focus:O.value||r.isMenuOpen,dp__input_reg:!l.value.enabled,...d.value.input??{}})),B=()=>{a("set-input-date",null),r.clearable&&r.autoApply&&(a("set-empty-date"),C.value=null)},U=P=>{const se=x();return Cs(P,l.value.format??f(),se??nl({},r.enableSeconds),r.inputValue,R.value,r.formatLocale)},Y=P=>{const{rangeSeparator:se}=l.value,[h,N]=P.split(`${se}`);if(h){const T=U(h.trim()),re=N?U(N.trim()):void 0;if(Xt(T,re))return;const v=T&&re?[T,re]:[T];$(re,v,0)&&(C.value=T?v:null)}},y=()=>{R.value=!0},L=P=>{if(w.value.enabled)Y(P);else if(m.value.enabled){const se=P.split(";");C.value=se.map(h=>U(h.trim())).filter(h=>h)}else C.value=U(P)},F=P=>{const se=typeof P=="string"?P:P.target?.value;se!==""?(l.value.openMenu&&!r.isMenuOpen&&a("open"),L(se),a("set-input-date",C.value)):B(),R.value=!1,a("update:input-value",se),a("text-input",P,C.value)},E=P=>{l.value.enabled?(L(P.target.value),l.value.enterSubmit&&Mn(C.value)&&r.inputValue!==""?(a("set-input-date",C.value,!0),C.value=null):l.value.enterSubmit&&r.inputValue===""&&(C.value=null,a("clear"))):be(P)},ne=(P,se)=>{l.value.enabled&&l.value.tabSubmit&&!se&&L(P.target.value),l.value.tabSubmit&&Mn(C.value)&&r.inputValue!==""?(a("set-input-date",C.value,!0,!0),C.value=null):l.value.tabSubmit&&r.inputValue===""&&(C.value=null,a("clear",!0))},ue=()=>{O.value=!0,a("focus"),vt().then(()=>{l.value.enabled&&l.value.selectOnFocus&&S.value?.select()})},be=P=>{if(Lt(P,u.value,!0),l.value.enabled&&l.value.openMenu&&!c.value.input){if(l.value.openMenu==="open"&&!r.isMenuOpen)return a("open");if(l.value.openMenu==="toggle")return a("toggle")}else l.value.enabled||a("toggle")},g=()=>{a("real-blur"),O.value=!1,(!r.isMenuOpen||c.value.enabled&&c.value.input)&&a("blur"),r.autoApply&&l.value.enabled&&C.value&&!r.isMenuOpen&&(a("set-input-date",C.value),a("select-date"),C.value=null)},D=P=>{Lt(P,u.value,!0),a("clear")},b=()=>{a("close")},W=P=>{if(P.key==="Tab"&&ne(P),P.key==="Enter"&&E(P),P.key==="Escape"&&l.value.escClose&&b(),!l.value.enabled){if(P.code==="Tab")return;P.preventDefault()}},te=()=>{S.value?.focus({preventScroll:!0})},V=P=>{C.value=P},J=P=>{P.key===Ne.tab&&ne(P,!0)};return t({focusInput:te,setParsedDate:V}),(P,se)=>(_(),H("div",{onClick:be},[P.$slots.trigger&&!P.$slots["dp-input"]&&!i(c).enabled?le(P.$slots,"trigger",{key:0}):q("",!0),!P.$slots.trigger&&(!i(c).enabled||i(c).input)?(_(),H("div",hd,[P.$slots["dp-input"]&&!P.$slots.trigger&&(!i(c).enabled||i(c).enabled&&i(c).input)?le(P.$slots,"dp-input",{key:0,value:e.inputValue,isMenuOpen:e.isMenuOpen,onInput:F,onEnter:E,onTab:ne,onClear:D,onBlur:g,onKeypress:W,onPaste:y,onFocus:ue,openMenu:()=>P.$emit("open"),closeMenu:()=>P.$emit("close"),toggleMenu:()=>P.$emit("toggle")}):q("",!0),P.$slots["dp-input"]?q("",!0):(_(),H("input",{key:1,id:P.uid?`dp-input-${P.uid}`:void 0,ref_key:"inputRef",ref:S,"data-test-id":"dp-input",name:P.name,class:ke(M.value),inputmode:i(l).enabled?"text":"none",placeholder:P.placeholder,disabled:P.disabled,readonly:P.readonly,required:P.required,value:e.inputValue,autocomplete:P.autocomplete,"aria-label":i(o)?.input,"aria-disabled":P.disabled||void 0,"aria-invalid":P.state===!1?!0:void 0,onInput:F,onBlur:g,onFocus:ue,onKeypress:W,onKeydown:se[0]||(se[0]=h=>W(h)),onPaste:y},null,42,fd)),ve("div",{onClick:se[3]||(se[3]=h=>a("toggle"))},[P.$slots["input-icon"]&&!P.hideInputIcon?(_(),H("span",{key:0,class:"dp__input_icon",onClick:se[1]||(se[1]=h=>a("toggle"))},[le(P.$slots,"input-icon")])):q("",!0),!P.$slots["input-icon"]&&!P.hideInputIcon&&!P.$slots["dp-input"]?(_(),_e(i(ha),{key:1,"aria-label":i(o)?.calendarIcon,class:"dp__input_icon dp__input_icons",onClick:se[2]||(se[2]=h=>a("toggle"))},null,8,["aria-label"])):q("",!0)]),P.$slots["clear-icon"]&&(P.alwaysClearable||e.inputValue&&P.clearable&&!P.disabled&&!P.readonly)?(_(),H("span",gd,[le(P.$slots,"clear-icon",{clear:D})])):q("",!0),!P.$slots["clear-icon"]&&(P.alwaysClearable||P.clearable&&e.inputValue&&!P.disabled&&!P.readonly)?(_(),H("button",{key:3,"aria-label":i(o)?.clearInput,class:"dp--clear-btn",type:"button",onKeydown:se[4]||(se[4]=h=>i(it)(h,()=>D(h),!0,J)),onClick:se[5]||(se[5]=xa(h=>D(h),["prevent"]))},[Ie(i(Qr),{class:"dp__input_icons","data-test-id":"clear-icon"})],40,bd)):q("",!0)])):q("",!0)]))}}),kd=typeof window<"u"?window:void 0,fn=()=>{},_d=e=>lo()?(oo(e),!0):!1,xd=(e,t,n,a)=>{if(!e)return fn;let r=fn;const l=dt(()=>i(e),c=>{r(),c&&(c.removeEventListener(t,n),c.addEventListener(t,n,a),r=()=>{c.removeEventListener(t,n,a),r=fn})},{immediate:!0,flush:"post"}),o=()=>{l(),r()};return _d(o),o},Md=(e,t,n,a={})=>{const{window:r=kd,event:l="pointerdown"}=a;return r?xd(r,l,o=>{const c=Ze(e),u=Ze(t);!c||!u||c===o.target||o.composedPath().includes(c)||o.composedPath().includes(u)||n(o)},{passive:!0}):void 0},Dd=["data-dp-mobile"],Td=Ge({compatConfig:{MODE:3},__name:"VueDatePicker",props:{...Wa},emits:["update:model-value","update:model-timezone-value","text-submit","closed","cleared","open","focus","blur","internal-model-change","recalculate-position","flow-step","update-month-year","invalid-select","invalid-fixed-range","tooltip-open","tooltip-close","time-picker-open","time-picker-close","am-pm-change","range-start","range-end","date-update","invalid-date","overlay-toggle","text-input"],setup(e,{expose:t,emit:n}){const a=n,r=e,l=Gt(),o=G(!1),c=_a(r,"modelValue"),u=_a(r,"timezone"),w=G(null),m=G(null),d=G(null),f=G(!1),x=G(null),$=G(!1),C=G(!1),S=G(!1),O=G(!1),{setMenuFocused:R,setShiftKey:M}=sl(),{clearArrowNav:B}=Ht(),{validateDate:U,isValidTime:Y}=Wt(r),{defaultedTransitions:y,defaultedTextInput:L,defaultedInline:F,defaultedConfig:E,defaultedRange:ne,defaultedMultiDates:ue}=Ee(r),{menuTransition:be,showTransition:g}=$a(y),{isMobile:D}=yl(E),b=ao();at(()=>{v(r.modelValue),vt().then(()=>{F.value.enabled||(h(x.value)?.addEventListener("scroll",I),window?.addEventListener("resize",De))}),F.value.enabled&&(o.value=!0),window?.addEventListener("keyup",ye),window?.addEventListener("keydown",nt)}),va(()=>{F.value.enabled||(h(x.value)?.removeEventListener("scroll",I),window?.removeEventListener("resize",De)),window?.removeEventListener("keyup",ye),window?.removeEventListener("keydown",nt)});const W=mt(l,"all",r.presetDates),te=mt(l,"input");dt([c,u],()=>{v(c.value)},{deep:!0});const{openOnTop:V,menuStyle:J,xCorrect:P,setMenuPosition:se,getScrollableParent:h,shadowRender:N}=cd({menuRef:w,menuRefInner:m,inputRef:d,pickerWrapperRef:x,inline:F,emit:a,props:r,slots:l}),{inputValue:T,internalModelValue:re,parseExternalModelValue:v,emitModelValue:p,formatInputValue:Q,checkBeforeEmit:Ae}=ou(a,r,{isInputFocused:f,isTextInputDate:O}),X=z(()=>({dp__main:!0,dp__theme_dark:r.dark,dp__theme_light:!r.dark,dp__flex_display:F.value.enabled,"dp--flex-display-collapsed":S.value,dp__flex_display_with_input:F.value.input})),xe=z(()=>r.dark?"dp__theme_dark":"dp__theme_light"),K=z(()=>r.teleport?{to:typeof r.teleport=="boolean"?"body":r.teleport,disabled:!r.teleport||F.value.enabled}:{}),ae=z(()=>({class:"dp__outer_menu_wrap"})),s=z(()=>F.value.enabled&&(r.timePicker||r.monthPicker||r.yearPicker||r.quarterPicker)),oe=()=>d.value?.$el?.getBoundingClientRect()??{width:0,left:0,right:0},I=()=>{o.value&&(E.value.closeOnScroll?st():se())},De=()=>{o.value&&se();const Z=m.value?.$el.getBoundingClientRect().width??0;S.value=document.body.offsetWidth<=Z},ye=Z=>{Z.key==="Tab"&&!F.value.enabled&&!r.teleport&&E.value.tabOutClosesMenu&&(x.value.contains(document.activeElement)||st()),C.value=Z.shiftKey},nt=Z=>{C.value=Z.shiftKey},je=()=>{!r.disabled&&!r.readonly&&(N(b,vr,r),se(!1),o.value=!0,o.value&&a("open"),o.value||Kt(),v(r.modelValue))},ft=()=>{T.value="",Kt(),m.value?.onValueCleared(),d.value?.setParsedDate(null),a("update:model-value",null),a("update:model-timezone-value",null),a("cleared"),E.value.closeOnClearValue&&st()},A=()=>{const Z=re.value;return!Z||!Array.isArray(Z)&&U(Z)?!0:Array.isArray(Z)?ue.value.enabled||Z.length===2&&U(Z[0])&&U(Z[1])?!0:ne.value.partialRange&&!r.timePicker?U(Z[0]):!1:!1},ie=()=>{Ae()&&A()?(p(),st()):a("invalid-select",re.value)},de=Z=>{Ct(),p(),E.value.closeOnAutoApply&&!Z&&st()},Ct=()=>{d.value&&L.value.enabled&&d.value.setParsedDate(re.value)},gt=(Z=!1)=>{r.autoApply&&Y(re.value)&&A()&&(ne.value.enabled&&Array.isArray(re.value)?(ne.value.partialRange||re.value.length===2)&&de(Z):de(Z))},Kt=()=>{L.value.enabled||(re.value=null)},st=(Z=!1)=>{Z&&re.value&&E.value.setDateOnMenuClose&&ie(),F.value.enabled||(o.value&&(o.value=!1,P.value=!1,R(!1),M(!1),B(),a("closed"),T.value&&v(c.value)),Kt(),a("blur"),m.value?.$el?.remove())},Qa=(Z,ce,he=!1)=>{if(!Z){re.value=null;return}const Ot=Array.isArray(Z)?!Z.some(jt=>!U(jt)):U(Z),Tt=Y(Z);Ot&&Tt?(O.value=!0,re.value=Z,ce?($.value=he,ie(),a("text-submit")):r.autoApply&>(!0),vt().then(()=>{O.value=!1})):a("invalid-date",Z)},Xa=()=>{r.autoApply&&Y(re.value)&&p(),Ct()},Ia=()=>o.value?st():je(),Ga=Z=>{re.value=Z},Za=()=>{L.value.enabled&&(f.value=!0,Q()),a("focus")},Ka=()=>{L.value.enabled&&(f.value=!1,v(r.modelValue),$.value&&Is(x.value,C.value)?.focus()),a("blur")},Ja=Z=>{m.value&&m.value.updateMonthYear(0,{month:or(Z.month),year:or(Z.year)})},en=Z=>{v(Z??r.modelValue)},k=(Z,ce)=>{m.value?.switchView(Z,ce)},ee=(Z,ce)=>E.value.onClickOutside?E.value.onClickOutside(Z,ce):st(!0),me=(Z=0)=>{m.value?.handleFlow(Z)},Te=()=>w;return Md(w,d,Z=>ee(A,Z)),t({closeMenu:st,selectDate:ie,clearValue:ft,openMenu:je,onScroll:I,formatInputValue:Q,updateInternalModelValue:Ga,setMonthYear:Ja,parseModel:en,switchView:k,toggleMenu:Ia,handleFlow:me,getDpWrapMenuRef:Te}),(Z,ce)=>(_(),H("div",{ref_key:"pickerWrapperRef",ref:x,class:ke(X.value),"data-datepicker-instance":"","data-dp-mobile":i(D)},[Ie(wd,Ve({ref_key:"inputRef",ref:d,"input-value":i(T),"onUpdate:inputValue":ce[0]||(ce[0]=he=>qn(T)?T.value=he:null),"is-menu-open":o.value},Z.$props,{onClear:ft,onOpen:je,onSetInputDate:Qa,onSetEmptyDate:i(p),onSelectDate:ie,onToggle:Ia,onClose:st,onFocus:Za,onBlur:Ka,onRealBlur:ce[1]||(ce[1]=he=>f.value=!1),onTextInput:ce[2]||(ce[2]=he=>Z.$emit("text-input",he))}),tt({_:2},[Be(i(te),(he,Ot)=>({name:he,fn:pe(Tt=>[le(Z.$slots,he,et(ut(Tt)))])}))]),1040,["input-value","is-menu-open","onSetEmptyDate"]),(_(),_e(Ha(Z.teleport?wr:"div"),et(ut(K.value)),{default:pe(()=>[Ie(ya,{name:i(be)(i(V)),css:i(g)&&!i(F).enabled},{default:pe(()=>[o.value?(_(),H("div",Ve({key:0,ref_key:"dpWrapMenuRef",ref:w},ae.value,{class:{"dp--menu-wrapper":!i(F).enabled},style:i(F).enabled?void 0:i(J)}),[Ie(vr,Ve({ref_key:"dpMenuRef",ref:m},Z.$props,{"internal-model-value":i(re),"onUpdate:internalModelValue":ce[3]||(ce[3]=he=>qn(re)?re.value=he:null),class:{[xe.value]:!0,"dp--menu-wrapper":Z.teleport},"open-on-top":i(V),"no-overlay-focus":s.value,collapse:S.value,"get-input-rect":oe,"is-text-input-date":O.value,onClosePicker:st,onSelectDate:ie,onAutoApply:gt,onTimeUpdate:Xa,onFlowStep:ce[4]||(ce[4]=he=>Z.$emit("flow-step",he)),onUpdateMonthYear:ce[5]||(ce[5]=he=>Z.$emit("update-month-year",he)),onInvalidSelect:ce[6]||(ce[6]=he=>Z.$emit("invalid-select",i(re))),onAutoApplyInvalid:ce[7]||(ce[7]=he=>Z.$emit("invalid-select",he)),onInvalidFixedRange:ce[8]||(ce[8]=he=>Z.$emit("invalid-fixed-range",he)),onRecalculatePosition:i(se),onTooltipOpen:ce[9]||(ce[9]=he=>Z.$emit("tooltip-open",he)),onTooltipClose:ce[10]||(ce[10]=he=>Z.$emit("tooltip-close",he)),onTimePickerOpen:ce[11]||(ce[11]=he=>Z.$emit("time-picker-open",he)),onTimePickerClose:ce[12]||(ce[12]=he=>Z.$emit("time-picker-close",he)),onAmPmChange:ce[13]||(ce[13]=he=>Z.$emit("am-pm-change",he)),onRangeStart:ce[14]||(ce[14]=he=>Z.$emit("range-start",he)),onRangeEnd:ce[15]||(ce[15]=he=>Z.$emit("range-end",he)),onDateUpdate:ce[16]||(ce[16]=he=>Z.$emit("date-update",he)),onInvalidDate:ce[17]||(ce[17]=he=>Z.$emit("invalid-date",he)),onOverlayToggle:ce[18]||(ce[18]=he=>Z.$emit("overlay-toggle",he)),onMenuBlur:ce[19]||(ce[19]=he=>Z.$emit("blur"))}),tt({_:2},[Be(i(W),(he,Ot)=>({name:he,fn:pe(Tt=>[le(Z.$slots,he,et(ut({...Tt})))])}))]),1040,["internal-model-value","class","open-on-top","no-overlay-focus","collapse","is-text-input-date","onRecalculatePosition"])],16)):q("",!0)]),_:3},8,["name","css"])]),_:3},16))],10,Dd))}}),jn=(()=>{const e=Td;return e.install=t=>{t.component("Vue3DatePicker",e)},e})(),Sd=Object.freeze(Object.defineProperty({__proto__:null,default:jn},Symbol.toStringTag,{value:"Module"}));Object.entries(Sd).forEach(([e,t])=>{e!=="default"&&(jn[e]=t)}),Fe($l);function Pd(e){return e.slice(e.indexOf("/")+1).replaceAll("/"," - ").replaceAll("_"," ")}function Ad(){return Intl.supportedValuesOf("timeZone").filter(e=>!e.startsWith("Etc/")).map(e=>({timezoneId:e,label:Pd(e)})).sort((e,t)=>e.timezoneId.localeCompare(t.timezoneId))}const $d=Ge({__name:"NcTimezonePicker",props:ia({additionalTimezones:{default:()=>[]},uid:{default:gr()}},{modelValue:{default:"floating"},modelModifiers:{}}),emits:["update:modelValue"],setup(e){const t=Fa(e,"modelValue"),n=e,a=z(()=>n.additionalTimezones.map(({timezoneId:o,label:c})=>({timezoneId:o,label:c}))),r=z(()=>{const o=Ad();return o.unshift(...a.value),o});function l(o,c,u){const w=u.trim().split(/\s+/),m=Object.values(o);return w.every(d=>m.some(f=>f.toLowerCase().includes(d.toLowerCase())))}return(o,c)=>(_(),_e(br,{modelValue:t.value,"onUpdate:modelValue":c[0]||(c[0]=u=>t.value=u),"aria-label-combobox":i(fe)("Search for time zone"),clearable:!1,filterBy:l,multiple:!1,options:r.value,placeholder:i(fe)("Type to search time zone"),uid:o.uid,reduce:u=>u.timezoneId,label:"label"},null,8,["modelValue","aria-label-combobox","options","placeholder","uid","reduce"]))}});Fe(Ol);const Od={class:"vue-date-time-picker__wrapper"},Id={ref:"target",class:"vue-date-time-picker__wrapper vue-date-time-picker__wrapper--teleport"},Rd=Ge({__name:"NcDateTimePicker",props:ia({appendToBody:{type:Boolean},ariaLabel:{default:fe("Datepicker input")},ariaLabelMenu:{default:fe("Datepicker menu")},clearable:{type:Boolean},confirm:{type:Boolean},format:{type:[String,Function],default:void 0},locale:{default:Jt()},max:{default:void 0},min:{default:void 0},minuteStep:{default:10},modelValue:{default:null},placeholder:{default:void 0},showTimezoneSelect:{type:Boolean},showWeekNumber:{type:Boolean},type:{default:"date"},inline:{type:Boolean,default:!1}},{timezoneId:{default:"UTC"},timezoneIdModifiers:{}}),emits:ia(["update:modelValue","update:timezoneId","blur"],["update:timezoneId"]),setup(e,{emit:t}){const n=Fa(e,"timezoneId"),a=e,r=t,l=gn("target"),o=gn("picker"),c=z(()=>{if(a.modelValue===null&&a.clearable)return null;if(a.type==="week"){const y=a.modelValue instanceof Date?a.modelValue:new Date,L=new Date(y);return L.setUTCDate(y.getUTCDate()+6),[y,L]}else{if(a.type==="year")return(a.modelValue instanceof Date?a.modelValue:new Date).getUTCFullYear();if(a.type==="month"){const y=a.modelValue instanceof Date?a.modelValue:new Date;return{year:y.getUTCFullYear(),month:y.getUTCMonth()}}else if(a.type==="time"){const y=a.modelValue instanceof Date?a.modelValue:new Date;return{hours:y.getHours(),minutes:y.getMinutes(),seconds:y.getSeconds()}}else if(a.type==="time-range"){const y=[a.modelValue].flat();if(y.length!==2){const L=new Date,F=new Date(L);F.setHours(F.getHours()+1),y.splice(0,2,L,F)}return y.map(L=>({hours:L.getHours(),minutes:L.getMinutes(),seconds:L.getSeconds()}))}else if(a.type.endsWith("-range")){if(a.modelValue===void 0){const y=new Date,L=new Date(y);return L.setUTCDate(y.getUTCDate()+7),[y,L]}return a.modelValue}}return a.modelValue??new Date}),u=z(()=>a.type==="date"?fe("Select date"):a.type==="time"?fe("Select time"):a.type==="datetime"?fe("Select date and time"):a.type==="week"?fe("Select week"):a.type==="month"?fe("Select month"):a.type==="year"?fe("Select year"):a.type.endsWith("-range")?fe("Select time range"):fe("Select date and time")),w=z(()=>{if(a.format)return a.format;if(a.type==="week")return"RR-II";let y;if(a.type==="date"||a.type==="date-range"?y=new Intl.DateTimeFormat(Jt(),{dateStyle:"medium"}):a.type==="time"||a.type==="time-range"?y=new Intl.DateTimeFormat(Jt(),{timeStyle:"short"}):a.type==="datetime"||a.type==="datetime-range"?y=new Intl.DateTimeFormat(Jt(),{dateStyle:"medium",timeStyle:"short"}):a.type==="month"?y=new Intl.DateTimeFormat(Jt(),{year:"numeric",month:"2-digit"}):a.type==="year"&&(y=new Intl.DateTimeFormat(Jt(),{year:"numeric"})),y)return L=>Array.isArray(L)?y.formatRange(L[0],L[1]):y.format(L)}),m=z(()=>({timePicker:a.type==="time"||a.type==="time-range",yearPicker:a.type==="year",monthPicker:a.type==="month",weekPicker:a.type==="week",range:a.type.endsWith("-range")&&{partialRange:!1},enableTimePicker:!(a.type==="date"||a.type==="date-range"),flow:a.type==="datetime"?["calendar","time"]:void 0})),d=z(()=>a.min&&{hours:a.min.getHours(),minutes:a.min.getMinutes(),seconds:a.min.getSeconds()}),f=z(()=>a.max&&{hours:a.max.getHours(),minutes:a.max.getMinutes(),seconds:a.max.getSeconds()});function x(y){if(y===null)return r("update:modelValue",null);if(a.type==="time")r("update:modelValue",$(y));else if(a.type==="time-range"){const L=$(y[0]),F=$(y[1]);F.getTime()({toggleOverlay:fe("Toggle overlay"),menu:a.ariaLabelMenu,input:a.ariaLabel,openTimePicker:fe("Open time picker"),closeTimePicker:fe("Close time Picker"),incrementValue:y=>y==="hours"?fe("Increment hours"):y==="minutes"?fe("Increment minutes"):fe("Increment seconds"),decrementValue:y=>y==="hours"?fe("Decrement hours"):y==="minutes"?fe("Decrement minutes"):fe("Decrement seconds"),openTpOverlay:y=>y==="hours"?fe("Open hours overlay"):y==="minutes"?fe("Open minutes overlay"):fe("Open seconds overlay"),amPmButton:fe("Switch AM/PM mode"),openYearsOverlay:fe("Open years overlay"),openMonthsOverlay:fe("Open months overlay"),nextMonth:fe("Next month"),prevMonth:fe("Previous month"),nextYear:fe("Next year"),prevYear:fe("Previous year"),weekDay:y=>eo()[y],clearInput:fe("Clear value"),calendarIcon:fe("Calendar icon"),timePicker:fe("Time picker"),monthPicker:y=>y?fe("Month picker overlay"):fe("Month picker"),yearPicker:y=>y?fe("Year picker overlay"):fe("Year picker")}));function M(){o.value.selectDate()}function B(){o.value.closeMenu()}const U=z(()=>a.type==="datetime"?{minDate:a.min,maxDate:a.max,minTime:a.min&&c.value&&Y(a.min,c.value)?d.value:void 0,maxTime:a.max&&c.value&&Y(a.max,c.value)?f.value:void 0}:a.type==="datetime-range"?{minDate:a.min,maxDate:a.max,minTime:a.min&&c.value&&Y(a.min,c.value[0])?d.value:void 0,maxTime:a.max&&c.value&&Y(a.max,c.value[1])?f.value:void 0}:a.type==="time"||a.type==="time-range"?{minTime:a.min?d.value:void 0,maxTime:a.max?f.value:void 0}:{minDate:a.min,maxDate:a.max});function Y(y,L){return y.getFullYear()===L.getFullYear()&&y.getMonth()===L.getMonth()&&y.getDate()===L.getDate()}return(y,L)=>(_(),H("div",Od,[Ie(i(jn),Ve({ref:"picker","aria-labels":R.value,autoApply:!y.confirm,class:["vue-date-time-picker",{"vue-date-time-picker--clearable":y.clearable}],cancelText:i(fe)("Cancel"),clearable:y.clearable,dayNames:S,placeholder:y.placeholder??u.value,format:w.value,locale:y.locale,minDate:U.value.minDate,maxDate:U.value.maxDate,minTime:U.value.minTime,maxTime:U.value.maxTime,minutesIncrement:y.minuteStep,modelValue:c.value,nowButtonLabel:i(fe)("Now"),selectText:i(fe)("Pick"),sixWeeks:"fair",inline:y.inline,teleport:y.appendToBody?l.value||void 0:!1,textInput:"",weekNumName:i(O),weekNumbers:y.showWeekNumber?{type:"iso"}:void 0,weekStart:i(C)},m.value,{"onUpdate:modelValue":x,onBlur:L[1]||(L[1]=F=>r("blur"))}),tt({"action-buttons":pe(()=>[Ie(i(an),{size:"small",variant:"tertiary",onClick:B},{default:pe(()=>[ht(He(i(fe)("Cancel")),1)]),_:1}),Ie(i(an),{size:"small",variant:"primary",onClick:M},{default:pe(()=>[ht(He(i(fe)("Pick")),1)]),_:1})]),"clear-icon":pe(({clear:F})=>[Ie(i(an),{"aria-label":i(fe)("Clear value"),variant:"tertiary-no-background",onClick:F},{icon:pe(()=>[Ie(St,{inline:"",path:i(Ul),size:20},null,8,["path"])]),_:2},1032,["aria-label","onClick"])]),"input-icon":pe(()=>[Ie(St,{path:i(ql),size:20},null,8,["path"])]),"clock-icon":pe(()=>[Ie(St,{inline:"",path:i(jl),size:20},null,8,["path"])]),"arrow-left":pe(()=>[Ie(St,{inline:"",path:i(Wl),size:20},null,8,["path"])]),"arrow-right":pe(()=>[Ie(St,{inline:"",path:i(Hl),size:20},null,8,["path"])]),"arrow-down":pe(()=>[Ie(St,{inline:"",path:i(Fl),size:20},null,8,["path"])]),"arrow-up":pe(()=>[Ie(St,{inline:"",path:i(zl),size:20},null,8,["path"])]),_:2},[y.showTimezoneSelect?{name:"action-extra",fn:pe(()=>[Ie($d,{modelValue:n.value,"onUpdate:modelValue":L[0]||(L[0]=F=>n.value=F),class:"vue-date-time-picker__timezone",appendToBody:!1,inputLabel:i(fe)("Time zone")},null,8,["modelValue","inputLabel"])]),key:"0"}:void 0]),1040,["aria-labels","autoApply","class","cancelText","clearable","placeholder","format","locale","minDate","maxDate","minTime","maxTime","minutesIncrement","modelValue","nowButtonLabel","selectText","inline","teleport","weekNumName","weekNumbers","weekStart"]),(_(),_e(wr,{to:"body",disabled:!y.appendToBody},[ve("div",Id,null,512)],8,["disabled"]))]))}}),Yd=za(Rd,[["__scopeId","data-v-e6654786"]]),Cd=Il().detectLanguage(),Na=Cd.build();Na.ngettext.bind(Na),Na.gettext.bind(Na),Fe(Rl),Fe(fr);const Nd=8,yr=32,Bd={name:"NcListItemIcon",components:{NcAvatar:po,NcHighlight:to,NcIconSvgWrapper:St},mixins:[co],props:{name:{type:String,required:!0},subname:{type:String,default:""},icon:{type:String,default:""},iconSvg:{type:String,default:""},iconName:{type:String,default:""},search:{type:String,default:""},avatarSize:{type:Number,default:yr},noMargin:{type:Boolean,default:!1},displayName:{type:String,default:null},isNoUser:{type:Boolean,default:!1},id:{type:String,default:null}},setup(){return{margin:Nd,defaultSize:yr}},computed:{hasIcon(){return this.icon!==""},hasIconSvg(){return this.iconSvg!==""},isValidSubname(){return this.subname?.trim?.()!==""},isSizeBigEnough(){return this.avatarSize>=26},cssVars(){const e=this.noMargin?0:this.margin;return{"--height":this.avatarSize+2*e+"px","--margin":this.margin+"px"}},searchParts(){const e=/^([^<]*)<([^>]+)>?$/,t=this.search.match(e);return this.isNoUser||!t?[this.search,this.search]:[t[1].trim(),t[2]]}},beforeMount(){!this.isNoUser&&!this.subname&&this.fetchUserStatus(this.user)}},Vd=["id"],Ed={class:"option__details"},Ld={key:1},zd=["aria-label"];function Fd(e,t,n,a,r,l){const o=rn("NcAvatar"),c=rn("NcHighlight"),u=rn("NcIconSvgWrapper");return _(),H("span",{id:n.id,class:ke(["option",{"option--compact":n.avatarSize[l.hasIconSvg?(_(),_e(u,{key:0,class:"option__icon",svg:n.iconSvg,name:n.iconName},null,8,["svg","name"])):l.hasIcon?(_(),H("span",{key:1,class:ke(["icon option__icon",n.icon]),"aria-label":n.iconName},null,10,zd)):q("",!0)],!0)],14,Vd)}const hr=za(Bd,[["render",Fd],["__scopeId","data-v-0ee94269"]]);if(Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-grid-baseline")),Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-clickable-area")),Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--clickable-area-small")),Fe(Yl),Fe(Cl),mo()?.circles?.teamResourceProviders,Fe(Nl),fe("Related resources"),fe("Anything shared with the same group of people will show up here"),Array.prototype.find||(Array.prototype.find=function(e){if(this===null)throw new TypeError("Array.prototype.find called on null or undefined");if(typeof e!="function")throw new TypeError("predicate must be a function");for(var t=Object(this),n=t.length>>>0,a=arguments[1],r,l=0;la("search",r.value));const l=Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-clickable-area")),o=Number.parseInt(window.getComputedStyle(document.body).getPropertyValue("--default-grid-baseline")),c=l-2*o;function u(w,m,d){const f=/[^<]*<([^>]+)/,x=d.match(f),$=w.subname?.toLocaleLowerCase()??"";return x&&$.indexOf(x[1].toLocaleLowerCase())>-1||`${m} ${w.subname}`.toLocaleLowerCase().indexOf(d.toLocaleLowerCase())>-1}return(w,m)=>(_(),_e(i(br),Ve({modelValue:n.value,"onUpdate:modelValue":m[0]||(m[0]=d=>n.value=d),class:"nc-select-users"},w.$props,{filterBy:u,label:"displayName",onSearch:m[1]||(m[1]=d=>r.value=d)}),{option:pe(d=>[Ie(i(hr),Ve(d,{avatarSize:32,name:d.displayName,search:r.value}),null,16,["name","search"])]),"selected-option":pe(d=>[Ie(i(hr),Ve(d,{avatarSize:c,name:d.displayName,noMargin:"",search:r.value}),null,16,["name","search"])]),_:1},16,["modelValue"]))}}),gc=za(Hd,[["__scopeId","data-v-e8e18fd3"]]);Fe(El),Ll(function(e){this.loadGroup(e)},200);const Wd={class:"textarea__main-wrapper"},jd=["id","aria-describedby","disabled","placeholder","value"],qd=["for"],Ud=["id"],Qd=Ge({inheritAttrs:!1,__name:"NcTextArea",props:ia({disabled:{type:Boolean},error:{type:Boolean},helperText:{default:void 0},id:{default:()=>gr()},inputClass:{default:""},label:{default:void 0},labelOutside:{type:Boolean},placeholder:{default:void 0},resize:{default:"both"},success:{type:Boolean}},{modelValue:{required:!0},modelModifiers:{}}),emits:["update:modelValue"],setup(e,{expose:t}){const n=Fa(e,"modelValue"),a=e;t({focus:w,select:m});const r=kr(),l=gn("input"),o=z(()=>a.placeholder||(nn?a.label:void 0));dt(()=>a.labelOutside,()=>{!a.labelOutside&&!a.label&&Ql.warn("[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.")});const c=z(()=>{const d=[];return a.helperText&&d.push(`${a.id}-helper-text`),typeof r["aria-describedby"]=="string"&&d.push(r["aria-describedby"]),d.join(" ")||void 0});function u(d){const{value:f}=d.target;n.value=f}function w(d){l.value.focus(d)}function m(){l.value.select()}return(d,f)=>(_(),H("div",{class:ke(["textarea",[d.$attrs.class,{"textarea--disabled":d.disabled,"textarea--legacy":i(nn)}]])},[ve("div",Wd,[ve("textarea",Ve({...d.$attrs,class:void 0},{id:d.id,ref:"input","aria-describedby":c.value,"aria-live":"polite",class:["textarea__input",[d.inputClass,{"textarea__input--label-outside":d.labelOutside,"textarea__input--legacy":i(nn),"textarea__input--success":d.success,"textarea__input--error":d.error}]],disabled:d.disabled,placeholder:o.value,style:{resize:d.resize},value:n.value,onInput:u}),null,16,jd),d.labelOutside?q("",!0):(_(),H("label",{key:0,class:"textarea__label",for:d.id},He(d.label),9,qd))]),d.helperText?(_(),H("p",{key:0,id:`${d.id}-helper-text`,class:ke(["textarea__helper-text-message",{"textarea__helper-text-message--error":d.error,"textarea__helper-text-message--success":d.success}])},[d.success?(_(),_e(St,{key:0,class:"textarea__helper-text-message__icon",path:i(Xl),inline:""},null,8,["path"])):d.error?(_(),_e(St,{key:1,class:"textarea__helper-text-message__icon",path:i(Gl),inline:""},null,8,["path"])):q("",!0),ht(" "+He(d.helperText),1)],10,Ud)):q("",!0)],2))}}),bc=za(Qd,[["__scopeId","data-v-657c47f8"]]),wc=Object.freeze(Object.defineProperty({__proto__:null,default:vo},Symbol.toStringTag,{value:"Module"})),kc=Object.freeze(Object.defineProperty({__proto__:null,default:Yd},Symbol.toStringTag,{value:"Module"}));export{gc as N,bc as a,kc as b,wc as i}; +//# sourceMappingURL=index-Bk4hMpWo.chunk.mjs.map diff --git a/dist/index-BpgPbDC6.chunk.mjs.license b/dist/index-Bk4hMpWo.chunk.mjs.license similarity index 100% rename from dist/index-BpgPbDC6.chunk.mjs.license rename to dist/index-Bk4hMpWo.chunk.mjs.license diff --git a/dist/index-BpgPbDC6.chunk.mjs.map b/dist/index-Bk4hMpWo.chunk.mjs.map similarity index 99% rename from dist/index-BpgPbDC6.chunk.mjs.map rename to dist/index-Bk4hMpWo.chunk.mjs.map index c17d482538873..ddac62f4216f8 100644 --- a/dist/index-BpgPbDC6.chunk.mjs.map +++ b/dist/index-Bk4hMpWo.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"index-BpgPbDC6.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionButtonGroup-CrbcMWK-.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigation-DQzgUarc.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationCaption-DsM6rzrK.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputConfirmCancel-Ch0byKa3.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationItem-XSXn3qhJ.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSearch-DpcjjmY5.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSettings-CxjLIB1E.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsDialog-Brgi3W2x.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsShortcutsSection-HmIjAN0a.mjs","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebar-KwLsRcZO.mjs","../node_modules/@nextcloud/vue/dist/functions/preloadImage/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcCollectionList-pWG42SU1.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDashboardWidget-CvpYMKur.mjs","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/addDays.js","../node_modules/date-fns/addMonths.js","../node_modules/date-fns/add.js","../node_modules/date-fns/addMilliseconds.js","../node_modules/date-fns/addHours.js","../node_modules/date-fns/_lib/defaultOptions.js","../node_modules/date-fns/startOfWeek.js","../node_modules/date-fns/startOfISOWeek.js","../node_modules/date-fns/getISOWeekYear.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/startOfISOWeekYear.js","../node_modules/date-fns/addQuarters.js","../node_modules/date-fns/addYears.js","../node_modules/date-fns/compareAsc.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/getQuarter.js","../node_modules/date-fns/differenceInCalendarYears.js","../node_modules/date-fns/differenceInYears.js","../node_modules/date-fns/_lib/normalizeInterval.js","../node_modules/date-fns/eachDayOfInterval.js","../node_modules/date-fns/startOfQuarter.js","../node_modules/date-fns/eachQuarterOfInterval.js","../node_modules/date-fns/startOfMonth.js","../node_modules/date-fns/endOfYear.js","../node_modules/date-fns/startOfYear.js","../node_modules/date-fns/endOfWeek.js","../node_modules/date-fns/endOfQuarter.js","../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/date-fns/locale/en-US/_lib/localize.js","../node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/date-fns/locale/en-US/_lib/match.js","../node_modules/date-fns/locale/en-US.js","../node_modules/date-fns/getDayOfYear.js","../node_modules/date-fns/getISOWeek.js","../node_modules/date-fns/getWeekYear.js","../node_modules/date-fns/startOfWeekYear.js","../node_modules/date-fns/getWeek.js","../node_modules/date-fns/_lib/addLeadingZeros.js","../node_modules/date-fns/_lib/format/lightFormatters.js","../node_modules/date-fns/_lib/format/formatters.js","../node_modules/date-fns/_lib/format/longFormatters.js","../node_modules/date-fns/_lib/protectedTokens.js","../node_modules/date-fns/format.js","../node_modules/date-fns/getDay.js","../node_modules/date-fns/getDaysInMonth.js","../node_modules/date-fns/getDefaultOptions.js","../node_modules/date-fns/getHours.js","../node_modules/date-fns/getISODay.js","../node_modules/date-fns/getMinutes.js","../node_modules/date-fns/getMonth.js","../node_modules/date-fns/getSeconds.js","../node_modules/date-fns/getYear.js","../node_modules/date-fns/isAfter.js","../node_modules/date-fns/isBefore.js","../node_modules/date-fns/isEqual.js","../node_modules/date-fns/transpose.js","../node_modules/date-fns/parse/_lib/Setter.js","../node_modules/date-fns/parse/_lib/Parser.js","../node_modules/date-fns/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/parse/_lib/constants.js","../node_modules/date-fns/parse/_lib/utils.js","../node_modules/date-fns/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/setWeek.js","../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/setISOWeek.js","../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/setDay.js","../node_modules/date-fns/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/setISODay.js","../node_modules/date-fns/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/parse/_lib/parsers.js","../node_modules/date-fns/parse.js","../node_modules/date-fns/isSameQuarter.js","../node_modules/date-fns/subDays.js","../node_modules/date-fns/setMonth.js","../node_modules/date-fns/set.js","../node_modules/date-fns/setHours.js","../node_modules/date-fns/setMilliseconds.js","../node_modules/date-fns/setMinutes.js","../node_modules/date-fns/setSeconds.js","../node_modules/date-fns/setYear.js","../node_modules/date-fns/subMonths.js","../node_modules/date-fns/sub.js","../node_modules/date-fns/subYears.js","../node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js","../node_modules/@nextcloud/vue/dist/chunks/NcTimezonePicker.vue_vue_type_script_setup_true_lang-8CBGI3yi.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDateTimePicker-DksKisgE.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcFilePicker-DtOsHB4q.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcKbd-DE1emmb_.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHotkeyList-CHLWkWfY.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItemIcon-DJJR4RtI.mjs","../node_modules/tributejs/dist/tribute.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcProgressBar-JyXXoHLT.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRelatedResourcesPanel-Cn27rj0H.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRichContenteditable-BREsny-v.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelectUsers-B9ZFtd6B.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSelectGroup-CupkYUPJ.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextArea-CseOD9aM.mjs"],"sourcesContent":["import '../assets/NcActionButtonGroup-Bt8kRk79.css';\nimport { defineComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createElementVNode, renderSlot } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister();\nconst _sfc_main = defineComponent({\n name: \"NcActionButtonGroup\",\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * Optional text shown below the button group\n */\n name: {\n required: false,\n default: void 0,\n type: String\n }\n },\n setup() {\n return {\n labelId: createElementId()\n };\n },\n methods: {\n t\n }\n});\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"aria-labelledby\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n class: \"nc-button-group-base\",\n role: _ctx.isInSemanticMenu && \"presentation\"\n }, [\n _ctx.name ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: _ctx.labelId\n }, toDisplayString(_ctx.name), 9, _hoisted_2)) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", {\n class: \"nc-button-group-content\",\n role: \"group\",\n \"aria-labelledby\": _ctx.name ? _ctx.labelId : void 0\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 8, _hoisted_3)\n ], 8, _hoisted_1);\n}\nconst NcActionButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-6a2b8de0\"]]);\nexport {\n NcActionButtonGroup as N\n};\n//# sourceMappingURL=NcActionButtonGroup-CrbcMWK-.mjs.map\n","import '../assets/NcAppNavigation-f2zUqaiQ.css';\nimport { defineComponent, useModel, computed, openBlock, createElementBlock, createVNode, unref, withCtx, inject, warn, useTemplateRef, ref, watchEffect, watch, onMounted, onUnmounted, normalizeClass, createElementVNode, withKeys, renderSlot, createBlock, createCommentVNode } from \"vue\";\nimport { subscribe, emit, unsubscribe } from \"@nextcloud/event-bus\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { N as NcAppNavigationList } from \"./NcAppNavigationList-CGSWabRB.mjs\";\nimport { G as mdiMenuOpen, H as mdiMenu } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { r as register, P as t20, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { H as HAS_APP_NAVIGATION_KEY } from \"./constants-Ciwvl5xb.mjs\";\nregister(t20);\nconst _hoisted_1$1 = { class: \"app-navigation-toggle-wrapper\" };\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationToggle\",\n props: {\n \"open\": { type: Boolean, ...{ required: true } },\n \"openModifiers\": {}\n },\n emits: [\"update:open\"],\n setup(__props) {\n const open = useModel(__props, \"open\");\n const title = computed(() => open.value ? t(\"Close navigation\") : t(\"Open navigation\"));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createVNode(unref(NcButton), {\n class: \"app-navigation-toggle\",\n \"aria-controls\": \"app-navigation-vue\",\n \"aria-expanded\": open.value ? \"true\" : \"false\",\n \"aria-label\": title.value,\n title: title.value,\n variant: \"tertiary\",\n onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: open.value ? unref(mdiMenuOpen) : unref(mdiMenu)\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-expanded\", \"aria-label\", \"title\"])\n ]);\n };\n }\n});\nconst NcAppNavigationToggle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-5a15295d\"]]);\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\", \"aria-labelledby\", \"inert\"];\nconst _hoisted_2 = { class: \"app-navigation__search\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigation\",\n props: {\n ariaLabel: {},\n ariaLabelledby: {}\n },\n setup(__props) {\n const props = __props;\n let focusTrap;\n const setHasAppNavigation = inject(\n HAS_APP_NAVIGATION_KEY,\n () => warn(\"NcAppNavigation is not mounted inside NcContent, this is probably an error.\"),\n false\n );\n const appNavigationContainerElement = useTemplateRef(\"appNavigationContainer\");\n const isMobile = useIsMobile();\n const open = ref(!isMobile.value);\n watchEffect(() => {\n if (!props.ariaLabel && !props.ariaLabelledby) {\n warn(\"NcAppNavigation requires either `ariaLabel` or `ariaLabelledby` to be set for accessibility.\");\n }\n });\n watch(isMobile, () => {\n open.value = !isMobile.value;\n });\n watch(open, () => {\n toggleFocusTrap();\n });\n onMounted(() => {\n setHasAppNavigation(true);\n subscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n emit(\"navigation-toggled\", {\n open: open.value\n });\n focusTrap = createFocusTrap(appNavigationContainerElement.value, {\n allowOutsideClick: true,\n fallbackFocus: appNavigationContainerElement.value,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n toggleFocusTrap();\n });\n onUnmounted(() => {\n setHasAppNavigation(false);\n unsubscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n focusTrap.deactivate();\n });\n function toggleNavigation(state) {\n if (open.value === state) {\n emit(\"navigation-toggled\", {\n open: open.value\n });\n return;\n }\n open.value = state === void 0 ? !open.value : state;\n const bodyStyles = getComputedStyle(document.body);\n const animationLength = parseInt(bodyStyles.getPropertyValue(\"--animation-quick\")) || 100;\n setTimeout(() => {\n emit(\"navigation-toggled\", {\n open: open.value\n });\n }, 1.5 * animationLength);\n }\n function toggleNavigationByEventBus({ open: open2 }) {\n return toggleNavigation(open2);\n }\n function toggleFocusTrap() {\n if (isMobile.value && open.value) {\n focusTrap.activate();\n } else {\n focusTrap.deactivate();\n }\n }\n function handleEsc() {\n if (isMobile.value) {\n toggleNavigation(false);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"appNavigationContainer\",\n class: normalizeClass([\"app-navigation\", { \"app-navigation--closed\": !open.value }])\n }, [\n createElementVNode(\"nav\", {\n id: \"app-navigation-vue\",\n \"aria-hidden\": open.value ? \"false\" : \"true\",\n \"aria-label\": _ctx.ariaLabel || void 0,\n \"aria-labelledby\": _ctx.ariaLabelledby || void 0,\n class: \"app-navigation__content\",\n inert: !open.value || void 0,\n onKeydown: withKeys(handleEsc, [\"esc\"])\n }, [\n createElementVNode(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"search\", {}, void 0, true)\n ]),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation__body\", { \"app-navigation__body--no-list\": !_ctx.$slots.list }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2),\n _ctx.$slots.list ? (openBlock(), createBlock(NcAppNavigationList, {\n key: 0,\n class: \"app-navigation__list\"\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"list\", {}, void 0, true)\n ]),\n _: 3\n })) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"footer\", {}, void 0, true)\n ], 40, _hoisted_1),\n createVNode(NcAppNavigationToggle, {\n open: open.value,\n \"onUpdate:open\": toggleNavigation\n }, null, 8, [\"open\"])\n ], 2);\n };\n }\n});\nconst NcAppNavigation = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d5ce90cd\"]]);\nexport {\n NcAppNavigation as N\n};\n//# sourceMappingURL=NcAppNavigation-DQzgUarc.mjs.map\n","import '../assets/NcAppNavigationCaption-HUg9fMCm.css';\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createTextVNode, toDisplayString, createElementBlock, createVNode, normalizeProps, guardReactiveProps, renderSlot, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationCaption\",\n components: {\n NcActions\n },\n props: {\n /**\n * The text of the caption\n */\n name: {\n type: String,\n required: true\n },\n /**\n * `id` to set on the inner caption\n * Can be used for connecting the `NcActionCaption` with `NcActionList` using `aria-labelledby`.\n */\n headingId: {\n type: String,\n default: null\n },\n /**\n * Enable when used as a heading\n * e.g. Before NcAppNavigationList\n */\n isHeading: {\n type: Boolean,\n default: false\n },\n /**\n * If `isHeading` is set, this defines the heading level that should be used\n */\n headingLevel: {\n type: Number,\n default: 2\n },\n /**\n * Any [NcActions](#/Components/NcActions?id=ncactions-1) prop\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n ...NcActions.props\n },\n computed: {\n actionsProps() {\n const actionProps = Object.keys(NcActions.props);\n const props = Object.entries(this.$props).filter(([key, _value]) => actionProps.includes(key));\n return Object.fromEntries(props);\n },\n wrapperTag() {\n return this.isHeading ? \"div\" : \"li\";\n },\n captionTag() {\n const headingLevel = Math.max(2, this.headingLevel);\n return this.isHeading ? `h${headingLevel}` : \"span\";\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"app-navigation-caption__actions\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcActions = resolveComponent(\"NcActions\");\n return openBlock(), createBlock(resolveDynamicComponent($options.wrapperTag), {\n class: normalizeClass([\"app-navigation-caption\", { \"app-navigation-caption--heading\": $props.isHeading }])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent($options.captionTag), {\n id: $props.headingId,\n class: \"app-navigation-caption__name\"\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n _: 1\n }, 8, [\"id\"])),\n !!_ctx.$slots.actions ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createVNode(_component_NcActions, normalizeProps(guardReactiveProps($options.actionsProps)), {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"actionsTriggerIcon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 3\n }, 16)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"class\"]);\n}\nconst NcAppNavigationCaption = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-21e6b451\"]]);\nexport {\n NcAppNavigationCaption as N\n};\n//# sourceMappingURL=NcAppNavigationCaption-DsM6rzrK.mjs.map\n","import '../assets/NcInputConfirmCancel-BrdZEfr2.css';\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { r as register, k as t14, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createElementVNode, withModifiers, withKeys, withDirectives, vModelText, createVNode, withCtx } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t14);\nconst _sfc_main = {\n name: \"NcInputConfirmCancel\",\n components: {\n IconArrowRight,\n IconClose,\n NcButton\n },\n props: {\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n default: false,\n type: Boolean\n },\n /**\n * Placeholder of the edit field\n */\n placeholder: {\n default: \"\",\n type: String\n },\n /**\n * The current name (model value)\n */\n modelValue: {\n default: \"\",\n type: String\n }\n },\n emits: [\n \"cancel\",\n \"confirm\",\n \"update:modelValue\"\n ],\n data() {\n return {\n labelConfirm: t(\"Confirm changes\"),\n labelCancel: t(\"Cancel changes\")\n };\n },\n computed: {\n valueModel: {\n get() {\n return this.modelValue;\n },\n set(newValue) {\n this.$emit(\"update:modelValue\", newValue);\n }\n }\n },\n methods: {\n confirm() {\n this.$emit(\"confirm\");\n },\n cancel() {\n this.$emit(\"cancel\");\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\nconst _hoisted_1 = { class: \"app-navigation-input-confirm\" };\nconst _hoisted_2 = [\"placeholder\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_IconClose = resolveComponent(\"IconClose\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"form\", {\n onSubmit: _cache[1] || (_cache[1] = withModifiers((...args) => $options.confirm && $options.confirm(...args), [\"prevent\"])),\n onKeydown: _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.cancel && $options.cancel(...args), [\"exact\", \"stop\", \"prevent\"]), [\"esc\"])),\n onClick: _cache[3] || (_cache[3] = withModifiers(() => {\n }, [\"stop\", \"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"input\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $options.valueModel = $event),\n type: \"text\",\n class: \"app-navigation-input-confirm__input\",\n placeholder: $props.placeholder\n }, null, 8, _hoisted_2), [\n [vModelText, $options.valueModel]\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.labelConfirm,\n type: \"submit\",\n variant: \"primary\",\n onClick: withModifiers($options.confirm, [\"stop\", \"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconArrowRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.labelCancel,\n type: \"reset\",\n variant: $props.primary ? \"primary\" : \"tertiary\",\n onClick: withModifiers($options.cancel, [\"stop\", \"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"variant\", \"onClick\"])\n ], 32)\n ]);\n}\nconst NcInputConfirmCancel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-dd457d48\"]]);\nexport {\n NcInputConfirmCancel as N\n};\n//# sourceMappingURL=NcInputConfirmCancel-Ch0byKa3.mjs.map\n","import '../assets/NcAppNavigationItem-qicc4X_c.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, normalizeClass, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps, withKeys, withModifiers, renderSlot, createVNode, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { r as register, N as t21, a as t, b as t51, O as t23 } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { N as NcInputConfirmCancel } from \"./NcInputConfirmCancel-Ch0byKa3.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BuRnYpJX.mjs\";\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport { _ as _sfc_main$4 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nconst _sfc_main$3 = {\n name: \"PencilIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon pencil-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst Pencil = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n name: \"UndoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon undo-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst Undo = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t21);\nconst _sfc_main$1 = {\n name: \"NcAppNavigationIconCollapsible\",\n components: {\n NcButton,\n ChevronDown,\n ChevronUp\n },\n props: {\n /**\n * Is the list currently open (or collapsed)\n */\n open: {\n type: Boolean,\n required: true\n },\n /**\n * Is the navigation item currently active.\n */\n active: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"click\"],\n computed: {\n labelButton() {\n return this.open ? t(\"Collapse menu\") : t(\"Open menu\");\n }\n },\n methods: {\n onClick(e) {\n this.$emit(\"click\", e);\n }\n }\n};\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n return openBlock(), createBlock(_component_NcButton, {\n class: normalizeClass([\"icon-collapse\", {\n \"icon-collapse--active\": $props.active,\n \"icon-collapse--open\": $props.open\n }]),\n \"aria-label\": $options.labelButton,\n variant: $props.active ? \"tertiary-on-primary\" : \"tertiary\",\n onClick: $options.onClick\n }, {\n icon: withCtx(() => [\n $props.open ? (openBlock(), createBlock(_component_ChevronUp, {\n key: 0,\n size: 20\n })) : (openBlock(), createBlock(_component_ChevronDown, {\n key: 1,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"class\", \"aria-label\", \"variant\", \"onClick\"]);\n}\nconst NcAppNavigationIconCollapsible = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-e6236e50\"]]);\nregister(t23, t51);\nconst _sfc_main = {\n name: \"NcAppNavigationItem\",\n components: {\n NcActions,\n NcActionButton,\n NcAppNavigationIconCollapsible,\n NcInputConfirmCancel,\n NcLoadingIcon,\n NcVNodes: _sfc_main$4,\n Pencil,\n Undo\n },\n props: {\n /**\n * If you are not using vue-router you can use the property to set this item as the active navigation entry.\n * When using vue-router and the `to` property this is set automatically.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * id attribute of the list item element\n */\n id: {\n type: String,\n default: () => createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Refers to the icon on the left, this prop accepts a class\n * like 'icon-category-enabled'.\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Displays a loading animated icon on the left of the element\n * instead of the icon.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Passing in a route will make the root element of this\n * component a `` that points to that route.\n * By leaving this blank, the root element will be a `
  • `.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * A direct link. This will be used as the `href` attribute.\n * This will ignore any `to` prop being defined.\n */\n href: {\n type: String,\n default: null\n },\n /**\n * Gives the possibility to collapse the children elements into the\n * parent element (true) or expands the children elements (false).\n */\n allowCollapse: {\n type: Boolean,\n default: false\n },\n /**\n * Makes the name of the item editable by providing an `ActionButton`\n * component that toggles a form\n */\n editable: {\n type: Boolean,\n default: false\n },\n /**\n * Only for 'editable' items, sets label for the edit action button.\n */\n editLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Only for items in 'editable' mode, sets the placeholder text for the editing form.\n */\n editPlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Pins the item to the bottom left area, above the settings. Do not\n * place 'non-pinned' `AppnavigationItem` components below `pinned`\n * ones.\n */\n pinned: {\n type: Boolean,\n default: false\n },\n /**\n * Puts the item in the 'undo' state.\n */\n undo: {\n type: Boolean,\n default: false\n },\n /**\n * The navigation collapsible state (synced)\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * The actions menu open state (synced)\n */\n menuOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The action's menu default icon\n */\n menuIcon: {\n type: String,\n default: void 0\n },\n /**\n * The action's menu direction\n */\n menuPlacement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * Entry aria details\n */\n ariaDescription: {\n type: String,\n default: null\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Number of action items outside the menu\n */\n inlineActions: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"update:menuOpen\",\n \"update:open\",\n \"update:name\",\n \"click\",\n \"undo\"\n ],\n setup() {\n return {\n isMobile: useIsMobile()\n };\n },\n data() {\n return {\n actionsBoundariesElement: void 0,\n editingValue: \"\",\n opened: this.open,\n // Collapsible state\n editingActive: false,\n /**\n * Tracks the open state of the actions menu\n */\n menuOpenLocalValue: false,\n focused: false\n };\n },\n computed: {\n isRouterLink() {\n return this.to && !this.href;\n },\n // Checks if the component is already a children of another\n // instance of AppNavigationItem\n canHaveChildren() {\n if (this.$parent.$options._componentTag === \"AppNavigationItem\") {\n return false;\n } else {\n return true;\n }\n },\n editButtonAriaLabel() {\n return this.editLabel ? this.editLabel : t(\"Edit item\");\n },\n undoButtonAriaLabel() {\n return t(\"Undo changes\");\n }\n },\n watch: {\n open(newVal) {\n this.opened = newVal;\n }\n },\n mounted() {\n this.actionsBoundariesElement = document.querySelector(\"#content-vue\") || void 0;\n },\n methods: {\n // sync opened menu state with prop\n onMenuToggle(state) {\n this.$emit(\"update:menuOpen\", state);\n this.menuOpenLocalValue = state;\n },\n // toggle the collapsible state\n toggleCollapse() {\n this.opened = !this.opened;\n this.$emit(\"update:open\", this.opened);\n },\n /**\n * Handle link click\n *\n * @param {PointerEvent} event - Native click event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n // Edition methods\n handleEdit() {\n this.editingValue = this.name;\n this.editingActive = true;\n this.onMenuToggle(false);\n this.$nextTick(() => {\n this.$refs.editingInput.focusInput();\n });\n },\n cancelEditing() {\n this.editingActive = false;\n },\n handleEditingDone() {\n this.$emit(\"update:name\", this.editingValue);\n this.editingValue = \"\";\n this.editingActive = false;\n },\n // Undo methods\n handleUndo() {\n this.$emit(\"undo\");\n },\n /**\n * Show actions upon focus\n */\n handleFocus() {\n this.focused = true;\n },\n handleBlur() {\n this.focused = false;\n },\n /**\n * This method checks if the root element of the component is focused and\n * if that's the case it focuses the actions button if available\n *\n * @param {Event} e the keydown event\n */\n handleTab(e) {\n if (!this.$refs.actions) {\n return;\n }\n if (this.focused) {\n e.preventDefault();\n this.$refs.actions.$refs.triggerButton.$el.focus();\n this.focused = false;\n } else {\n this.$refs.actions.$refs.triggerButton.$el.blur();\n }\n },\n /**\n * Is this an external link\n *\n * @param {string} href The link to check\n * @return {boolean} Whether it is external or not\n */\n isExternal(href) {\n return href && href.match(/[a-z]+:\\/\\//i);\n }\n }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = [\"aria-current\", \"aria-description\", \"aria-expanded\", \"href\", \"target\", \"title\", \"onClick\"];\nconst _hoisted_3 = {\n key: 0,\n class: \"editingContainer\"\n};\nconst _hoisted_4 = {\n key: 1,\n class: \"app-navigation-entry__deleted\"\n};\nconst _hoisted_5 = { class: \"app-navigation-entry__deleted-description\" };\nconst _hoisted_6 = {\n key: 0,\n class: \"app-navigation-entry__counter-wrapper\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"app-navigation-entry__children\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_NcInputConfirmCancel = resolveComponent(\"NcInputConfirmCancel\");\n const _component_Pencil = resolveComponent(\"Pencil\");\n const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n const _component_Undo = resolveComponent(\"Undo\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_NcAppNavigationIconCollapsible = resolveComponent(\"NcAppNavigationIconCollapsible\");\n return openBlock(), createElementBlock(\"li\", {\n id: $props.id,\n class: normalizeClass([{\n \"app-navigation-entry--opened\": $data.opened,\n \"app-navigation-entry--pinned\": $props.pinned,\n \"app-navigation-entry--collapsible\": $props.allowCollapse && !!_ctx.$slots.default\n }, \"app-navigation-entry-wrapper\"])\n }, [\n (openBlock(), createBlock(resolveDynamicComponent($options.isRouterLink ? \"router-link\" : \"NcVNodes\"), normalizeProps(guardReactiveProps({ ...$options.isRouterLink && { custom: true, to: $props.to } })), {\n default: withCtx(({ href: routerLinkHref, navigate, isActive }) => [\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation-entry\", {\n \"app-navigation-entry--editing\": $data.editingActive,\n \"app-navigation-entry--deleted\": $props.undo,\n active: $props.to && isActive || $props.active\n }])\n }, [\n !$props.undo ? (openBlock(), createElementBlock(\"a\", {\n key: 0,\n class: \"app-navigation-entry-link\",\n \"aria-current\": $props.active || $props.to && isActive ? \"page\" : void 0,\n \"aria-description\": $props.ariaDescription,\n \"aria-expanded\": !!_ctx.$slots.default ? $data.opened.toString() : void 0,\n href: $props.href || routerLinkHref || \"#\",\n target: $options.isExternal($props.href) ? \"_blank\" : void 0,\n title: $props.title || $props.name,\n onBlur: _cache[1] || (_cache[1] = (...args) => $options.handleBlur && $options.handleBlur(...args)),\n onClick: ($event) => $options.onClick($event, navigate, routerLinkHref),\n onFocus: _cache[2] || (_cache[2] = (...args) => $options.handleFocus && $options.handleFocus(...args)),\n onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.handleTab && $options.handleTab(...args), [\"exact\"]), [\"tab\"]))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation-entry-icon\", { [$props.icon]: $props.icon }])\n }, [\n $props.loading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : renderSlot(_ctx.$slots, \"icon\", {\n key: 1,\n active: $props.active || $props.to && isActive\n }, void 0, true)\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass([\"app-navigation-entry__name\", { \"hidden-visually\": $data.editingActive }])\n }, toDisplayString($props.name), 3),\n $data.editingActive ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n createVNode(_component_NcInputConfirmCancel, {\n ref: \"editingInput\",\n modelValue: $data.editingValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.editingValue = $event),\n placeholder: $props.editPlaceholder !== \"\" ? $props.editPlaceholder : $props.name,\n primary: $props.to && isActive || $props.active,\n onCancel: $options.cancelEditing,\n onConfirm: $options.handleEditingDone\n }, null, 8, [\"modelValue\", \"placeholder\", \"primary\", \"onCancel\", \"onConfirm\"])\n ])) : createCommentVNode(\"\", true)\n ], 40, _hoisted_2)) : createCommentVNode(\"\", true),\n $props.undo ? (openBlock(), createElementBlock(\"div\", _hoisted_4, [\n createElementVNode(\"div\", _hoisted_5, toDisplayString($props.name), 1)\n ])) : createCommentVNode(\"\", true),\n (!!_ctx.$slots.actions || !!_ctx.$slots.counter || $props.editable || $props.undo) && !$data.editingActive ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass([\"app-navigation-entry__utils\", { \"app-navigation-entry__utils--display-actions\": $props.forceDisplayActions || $data.menuOpenLocalValue || $props.menuOpen }])\n }, [\n !!_ctx.$slots.counter ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n renderSlot(_ctx.$slots, \"counter\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n !!_ctx.$slots.actions || $props.editable && !$data.editingActive || $props.undo ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n class: \"app-navigation-entry__actions\",\n container: \"#app-navigation-vue\",\n boundariesElement: $data.actionsBoundariesElement,\n inline: $props.inlineActions,\n placement: $props.menuPlacement,\n open: $props.menuOpen,\n forceMenu: $props.forceMenu,\n defaultIcon: $props.menuIcon,\n variant: $props.to && isActive || $props.active ? \"tertiary-on-primary\" : \"tertiary\",\n \"onUpdate:open\": $options.onMenuToggle\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n $props.editable && !$data.editingActive ? (openBlock(), createBlock(_component_NcActionButton, {\n key: 0,\n \"aria-label\": $options.editButtonAriaLabel,\n onClick: $options.handleEdit\n }, {\n icon: withCtx(() => [\n createVNode(_component_Pencil, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString($props.editLabel), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n $props.undo ? (openBlock(), createBlock(_component_NcActionButton, {\n key: 1,\n \"aria-label\": $options.undoButtonAriaLabel,\n onClick: $options.handleUndo\n }, {\n icon: withCtx(() => [\n createVNode(_component_Undo, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 2\n }, 1032, [\"boundariesElement\", \"inline\", \"placement\", \"open\", \"forceMenu\", \"defaultIcon\", \"variant\", \"onUpdate:open\"])) : createCommentVNode(\"\", true)\n ], 2)) : createCommentVNode(\"\", true),\n $props.allowCollapse && !!_ctx.$slots.default ? (openBlock(), createBlock(_component_NcAppNavigationIconCollapsible, {\n key: 3,\n active: $props.to && isActive || $props.active,\n open: $data.opened,\n onClick: withModifiers($options.toggleCollapse, [\"prevent\", \"stop\"])\n }, null, 8, [\"active\", \"open\", \"onClick\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"extra\", {}, void 0, true)\n ], 2)\n ]),\n _: 3\n }, 16)),\n $options.canHaveChildren && !!_ctx.$slots.default ? (openBlock(), createElementBlock(\"ul\", _hoisted_7, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1);\n}\nconst NcAppNavigationItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f925f8d0\"]]);\nexport {\n NcAppNavigationItem as N\n};\n//# sourceMappingURL=NcAppNavigationItem-XSXn3qhJ.mjs.map\n","import '../assets/NcAppNavigationSearch-Bpd_RlYz.css';\nimport { defineComponent, useModel, useSlots, ref, useTemplateRef, watch, openBlock, createElementBlock, normalizeClass, createVNode, unref, withCtx, renderSlot, createCommentVNode, mergeModels, nextTick } from \"vue\";\nimport { useFocusWithin } from \"@vueuse/core\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { N as NcInputField } from \"./NcInputField-CPL-a_MM.mjs\";\nimport { r as register, C as t44, u as t16, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t16, t44);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSearch\",\n props: /* @__PURE__ */ mergeModels({\n /**\n * Text used to label the search input\n */\n label: {\n type: String,\n default: t(\"Search …\")\n },\n /**\n * Placeholder of the search input\n * By default the value of `label` is used.\n */\n placeholder: {\n type: String,\n default: null\n }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const model = useModel(__props, \"modelValue\");\n const slots = useSlots();\n const inputElement = ref();\n const { focused: inputHasFocus } = useFocusWithin(inputElement);\n const transitionTimeout = Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue(\"--animation-quick\")) || 100;\n const actionsContainerElement = useTemplateRef(\"actionsContainer\");\n const hasActions = () => !!slots.actions?.({});\n const showActions = ref(true);\n const timeoutId = ref();\n const hideActions = ref(false);\n watch(inputHasFocus, () => {\n showActions.value = !inputHasFocus.value;\n window.clearTimeout(timeoutId.value);\n if (showActions.value) {\n hideActions.value = false;\n } else {\n window.setTimeout(() => {\n hideActions.value = !showActions.value;\n }, transitionTimeout);\n }\n });\n function onCloseSearch() {\n model.value = \"\";\n if (hasActions()) {\n showActions.value = true;\n nextTick(() => actionsContainerElement.value?.querySelector(\"button\")?.focus());\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"app-navigation-search\", {\n \"app-navigation-search--has-actions\": hasActions()\n }])\n }, [\n createVNode(NcInputField, {\n ref_key: \"inputElement\",\n ref: inputElement,\n modelValue: model.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => model.value = $event),\n \"aria-label\": __props.label,\n class: \"app-navigation-search__input\",\n labelOutside: \"\",\n placeholder: __props.placeholder ?? __props.label,\n showTrailingButton: \"\",\n trailingButtonLabel: unref(t)(\"Clear search\"),\n type: \"search\",\n onTrailingButtonClick: onCloseSearch\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label\", \"placeholder\", \"trailingButtonLabel\"]),\n hasActions() ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"actionsContainer\",\n class: normalizeClass([\"app-navigation-search__actions\", {\n \"app-navigation-search__actions--hidden\": !showActions.value,\n \"hidden-visually\": hideActions.value\n }])\n }, [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ], 2)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcAppNavigationSearch = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9f5c0794\"]]);\nexport {\n NcAppNavigationSearch as N\n};\n//# sourceMappingURL=NcAppNavigationSearch-DpcjjmY5.mjs.map\n","import '../assets/NcAppNavigationSettings-BmfpoWXN.css';\nimport { defineComponent, ref, useTemplateRef, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, unref, withCtx, createTextVNode, toDisplayString, Transition, withDirectives, renderSlot, vShow } from \"vue\";\nimport { C as mdiCog, D as mdiCogOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { onClickOutside } from \"@vueuse/core\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { r as register, B as t47, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { i as isLegacy } from \"./legacy-DcjXBL_t.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t47);\nconst _hoisted_1 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSettings\",\n props: {\n excludeClickOutsideSelectors: { default: () => [] },\n name: { default: () => t(\"Settings\") }\n },\n setup(__props) {\n const contentId = createElementId();\n const open = ref(false);\n const container2 = useTemplateRef(\"wrapperElement\");\n const ignore = computed(() => Array.isArray(__props.excludeClickOutsideSelectors) ? __props.excludeClickOutsideSelectors : __props.excludeClickOutsideSelectors.split(\" \"));\n onClickOutside(container2, () => {\n open.value = false;\n }, { ignore });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"wrapperElement\",\n class: normalizeClass(_ctx.$style.container)\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.$style.header)\n }, [\n createVNode(NcButton, {\n \"aria-controls\": unref(contentId),\n \"aria-expanded\": open.value ? \"true\" : \"false\",\n class: normalizeClass(_ctx.$style.button),\n alignment: \"start\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: unref(isLegacy) ? unref(mdiCog) : unref(mdiCogOutline)\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(_ctx.name), 1)\n ]),\n _: 1\n }, 8, [\"aria-controls\", \"aria-expanded\", \"class\"])\n ], 2),\n createVNode(Transition, {\n enterActiveClass: _ctx.$style.animationActive,\n leaveActiveClass: _ctx.$style.animationActive,\n enterFromClass: _ctx.$style.animationStop,\n leaveToClass: _ctx.$style.animationStop\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n id: unref(contentId),\n class: normalizeClass(_ctx.$style.content)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1), [\n [vShow, open.value]\n ])\n ]),\n _: 3\n }, 8, [\"enterActiveClass\", \"leaveActiveClass\", \"enterFromClass\", \"leaveToClass\"])\n ], 2);\n };\n }\n});\nconst container = \"_container_RFk6U\";\nconst header = \"_header_2CtDS\";\nconst button = \"_button_tAyis\";\nconst content = \"_content_--KYD\";\nconst animationActive = \"_animationActive_DAG1p\";\nconst animationStop = \"_animationStop_fWYQj\";\nconst style0 = {\n container,\n header,\n button,\n content,\n animationActive,\n animationStop\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppNavigationSettings = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcAppNavigationSettings as N\n};\n//# sourceMappingURL=NcAppNavigationSettings-CxjLIB1E.mjs.map\n","import '../assets/NcAppSettingsDialog-Ckc0OWTs.css';\nimport { defineComponent, inject, openBlock, createElementBlock, normalizeClass, unref, toDisplayString, useModel, provide, toRef, useTemplateRef, ref, computed, onBeforeUnmount, warn, createBlock, createSlots, withCtx, createElementVNode, renderSlot, createCommentVNode, Fragment, renderList, withKeys, withModifiers, mergeModels } from \"vue\";\nimport debounce from \"debounce\";\nimport { N as NcDialog } from \"./NcDialog-nDc1gW50.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { u as useLocalizedAppName, A as APP_VERSION } from \"./appName-DyNMVZpX.mjs\";\nimport { A as APP_SETTINGS_LEGACY_DESIGN_KEY, a as APP_SETTINGS_REGISTRATION_KEY } from \"./useAppSettingsDialog-C73Wx6iQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, I as t48, a as t } from \"./_l10n-BklkVPDO.mjs\";\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialogVersion\",\n setup(__props) {\n const legacy = inject(APP_SETTINGS_LEGACY_DESIGN_KEY);\n const localizedAppName = useLocalizedAppName();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([_ctx.$style.appSettingsDialogVersion, { [_ctx.$style.appSettingsDialogVersion__legacy]: unref(legacy) }])\n }, toDisplayString(unref(localizedAppName)) + \" \" + toDisplayString(unref(APP_VERSION)), 3);\n };\n }\n});\nconst appSettingsDialogVersion = \"_appSettingsDialogVersion_8Xr7R\";\nconst appSettingsDialogVersion__legacy = \"_appSettingsDialogVersion__legacy_7MO71\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_qDIHA\",\n appSettingsDialogVersion,\n appSettingsDialogVersion__legacy\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSettingsDialogVersion = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__cssModules\", cssModules]]);\nregister(t48);\nconst _hoisted_1 = {\n key: 0,\n class: \"navigation-list\"\n};\nconst _hoisted_2 = [\"aria-current\", \"href\", \"onClick\", \"onKeydown\"];\nconst _hoisted_3 = {\n key: 0,\n class: \"navigation-list__link-icon\"\n};\nconst _hoisted_4 = { class: \"navigation-list__link-text\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialog\",\n props: /* @__PURE__ */ mergeModels({\n showNavigation: { type: Boolean },\n container: { default: \"body\" },\n name: { default: \"\" },\n additionalTrapElements: { default: () => [] },\n legacy: { type: Boolean, default: false },\n noVersion: { type: Boolean, default: false }\n }, {\n \"open\": { type: Boolean, ...{ required: true } },\n \"openModifiers\": {}\n }),\n emits: [\"update:open\"],\n setup(__props) {\n const open = useModel(__props, \"open\");\n const props = __props;\n provide(APP_SETTINGS_REGISTRATION_KEY, {\n registerSection,\n unregisterSection\n });\n provide(APP_SETTINGS_LEGACY_DESIGN_KEY, toRef(() => props.legacy));\n const settingsScrollerElement = useTemplateRef(\"settingsScroller\");\n const isMobile = useIsMobile();\n const selectedSection = ref(\"\");\n const linkClicked = ref(false);\n const registeredSections = ref([]);\n const hasNavigation = computed(() => !isMobile.value && props.showNavigation);\n const hasNavigationIcons = computed(() => registeredSections.value.some(({ icon }) => !!icon));\n const unfocusNavigationItem = debounce(() => {\n selectedSection.value = \"\";\n if (document.activeElement?.className.includes(\"navigation-list__link\")) {\n document.activeElement.blur();\n }\n }, 300);\n const sectionsOrderMap = /* @__PURE__ */ new Map();\n onBeforeUnmount(() => {\n sectionsOrderMap.clear();\n });\n function handleSettingsNavigationClick(item) {\n linkClicked.value = true;\n document.getElementById(\"settings-section_\" + item).scrollIntoView({\n behavior: \"smooth\",\n inline: \"nearest\"\n });\n selectedSection.value = item;\n setTimeout(() => {\n linkClicked.value = false;\n }, 1e3);\n }\n function handleCloseModal(isOpen) {\n if (isOpen) {\n return;\n }\n open.value = false;\n settingsScrollerElement.value.scrollTop = 0;\n }\n function handleScroll() {\n if (open.value && !linkClicked.value) {\n unfocusNavigationItem();\n }\n }\n function registerSection(id, name, order, icon) {\n if (registeredSections.value.some(({ id: otherId }) => id === otherId)) {\n throw new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`);\n }\n if (registeredSections.value.some(({ name: otherName }) => name === otherName)) {\n warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`);\n }\n if (order !== void 0) {\n sectionsOrderMap.set(id, order);\n } else if (sectionsOrderMap.has(id)) {\n order = sectionsOrderMap.get(id);\n } else {\n order = Math.max(0, ...sectionsOrderMap.values()) + 1;\n sectionsOrderMap.set(id, order);\n }\n registeredSections.value = [...registeredSections.value, { id, name, order, icon }].sort(({ order: orderA }, { order: orderB }) => {\n return orderA - orderB;\n });\n if (registeredSections.value.length === 1) {\n selectedSection.value = id;\n }\n }\n function unregisterSection(id) {\n registeredSections.value = registeredSections.value.filter(({ id: otherId }) => id !== otherId);\n if (selectedSection.value === id) {\n selectedSection.value = registeredSections.value[0]?.id ?? \"\";\n }\n }\n return (_ctx, _cache) => {\n return open.value ? (openBlock(), createBlock(NcDialog, {\n key: 0,\n class: \"app-settings\",\n contentClasses: \"app-settings__content\",\n navigationClasses: \"app-settings__navigation\",\n additionalTrapElements: _ctx.additionalTrapElements,\n container: _ctx.container,\n closeOnClickOutside: \"\",\n \"navigation-aria-label\": unref(t)(\"Settings navigation\"),\n size: \"large\",\n name: _ctx.name,\n \"onUpdate:open\": handleCloseModal\n }, createSlots({\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"settingsScroller\",\n onScroll: handleScroll\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true),\n !_ctx.noVersion ? (openBlock(), createBlock(NcAppSettingsDialogVersion, { key: 0 })) : createCommentVNode(\"\", true)\n ], 544)\n ]),\n _: 2\n }, [\n hasNavigation.value ? {\n name: \"navigation\",\n fn: withCtx(({ isCollapsed }) => [\n !isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(registeredSections.value, (section) => {\n return openBlock(), createElementBlock(\"li\", {\n key: section.id\n }, [\n createElementVNode(\"a\", {\n \"aria-current\": `${section.id === selectedSection.value}`,\n class: normalizeClass([\"navigation-list__link\", {\n \"navigation-list__link--active\": section.id === selectedSection.value,\n \"navigation-list__link--icon\": hasNavigationIcons.value\n }]),\n href: `#settings-section_${section.id}`,\n tabindex: \"0\",\n onClick: withModifiers(($event) => handleSettingsNavigationClick(section.id), [\"prevent\"]),\n onKeydown: withKeys(($event) => handleSettingsNavigationClick(section.id), [\"enter\"])\n }, [\n hasNavigationIcons.value ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n section.icon ? (openBlock(), createBlock(_sfc_main$2, {\n key: 0,\n vnodes: section.icon\n }, null, 8, [\"vnodes\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_4, toDisplayString(section.name), 1)\n ], 42, _hoisted_2)\n ]);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"additionalTrapElements\", \"container\", \"navigation-aria-label\", \"name\"])) : createCommentVNode(\"\", true);\n };\n }\n});\nconst NcAppSettingsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9445186a\"]]);\nexport {\n NcAppSettingsDialog as N\n};\n//# sourceMappingURL=NcAppSettingsDialog-Brgi3W2x.mjs.map\n","import '../assets/NcAppSettingsShortcutsSection-BonG0SgH.css';\nimport { defineComponent, openBlock, createBlock, unref, withCtx, createElementVNode, normalizeClass, renderSlot } from \"vue\";\nimport { N as NcAppSettingsSection } from \"./NcAppSettingsSection-B-ak1kbx.mjs\";\nimport { r as register, p as t31, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsShortcutsSection\",\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createBlock(NcAppSettingsSection, {\n id: \"keyboard-shortcuts\",\n name: unref(t)(\"Keyboard shortcuts\")\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.$style.appSettingsSectionShortcuts)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ]),\n _: 3\n }, 8, [\"name\"]);\n };\n }\n});\nconst appSettingsSectionShortcuts = \"_appSettingsSectionShortcuts_RqpkA\";\nconst style0 = {\n appSettingsSectionShortcuts\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSettingsShortcutsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcAppSettingsShortcutsSection as N\n};\n//# sourceMappingURL=NcAppSettingsShortcutsSection-HmIjAN0a.mjs.map\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State][]} jr */\n this.jr = [];\n /** @type {?State} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of groups\n * @returns {State} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State} state\n * @param {RegExp} regexp\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State} state\n * @param {string} input\n * @param {T | State} [next]\n * @param {Collections} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State][]} jr\n * @returns {State}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj,\n * \tformat?: Opt,\n * \tformatHref?: Opt,\n * \tnl2br?: boolean,\n * \ttagName?: Opt,\n * \ttarget?: Opt,\n * \trel?: Opt,\n * \tvalidate?: Opt,\n * \ttruncate?: Opt,\n * \tclassName?: Opt,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Final possible email states\n const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */\n ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // Closing bracket component. This character WILL be included in the URL\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State,\n * \ttokens: { groups: Collections } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","import '../assets/NcAppSidebar-Ci7hXMpX.css';\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useModel, normalizeClass, createVNode, withCtx, mergeModels, resolveComponent, withKeys, withModifiers, Fragment, renderList, createBlock, renderSlot, resolveDirective, Transition, withDirectives, Teleport, normalizeStyle, vShow, createTextVNode, warn, ref, provide } from \"vue\";\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { _ as _sfc_main$6 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { useIsSmallMobile } from \"../composables/useIsMobile/index.mjs\";\nimport directive from \"../directives/Focus/index.mjs\";\nimport { r as register, V as t15, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isSlotPopulated, N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _sfc_main$7 } from \"./NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-Bk4yFBHY.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { C as CONTENT_SELECTOR_KEY } from \"./constants-Ciwvl5xb.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent-CDgWCt_m.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nconst _sfc_main$5 = {\n name: \"DockRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon dock-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$5);\n}\nconst IconDockRight = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$4 = {\n name: \"StarIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon star-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$4);\n}\nconst IconStar = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$3 = {\n name: \"StarOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon star-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$3);\n}\nconst IconStarOutline = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _hoisted_1$2 = [\"aria-selected\", \"tabindex\"];\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSidebarTabsButton\",\n props: /* @__PURE__ */ mergeModels({\n tab: {}\n }, {\n \"selected\": { type: Boolean, ...{ required: true } },\n \"selectedModifiers\": {}\n }),\n emits: [\"update:selected\"],\n setup(__props) {\n const selected = useModel(__props, \"selected\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n class: normalizeClass([\"button-vue\", [_ctx.$style.sidebarTabsButton, {\n [_ctx.$style.sidebarTabsButton_selected]: selected.value\n }]]),\n role: \"tab\",\n \"aria-selected\": selected.value,\n tabindex: selected.value ? 0 : -1,\n onClick: _cache[0] || (_cache[0] = ($event) => selected.value = true)\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.$style.sidebarTabsButton__icon)\n }, [\n createVNode(_sfc_main$6, {\n vnodes: _ctx.tab.renderIcon()\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass([_ctx.$style.sidebarTabsButton__legacyIcon, _ctx.tab.icon])\n }, null, 2)\n ]),\n _: 1\n }, 8, [\"vnodes\"])\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.$style.sidebarTabsButton__name)\n }, toDisplayString(_ctx.tab.name), 3)\n ], 10, _hoisted_1$2);\n };\n }\n});\nconst sidebarTabsButton = \"_sidebarTabsButton_6hxfz\";\nconst sidebarTabsButton_selected = \"_sidebarTabsButton_selected_eBHM-\";\nconst sidebarTabsButton__name = \"_sidebarTabsButton__name_YlW5S\";\nconst sidebarTabsButton__icon = \"_sidebarTabsButton__icon_MPS-D\";\nconst sidebarTabsButton__legacyIcon = \"_sidebarTabsButton__legacyIcon_rzPOu\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_m4vbX\",\n sidebarTabsButton,\n sidebarTabsButton_selected,\n sidebarTabsButton__name,\n sidebarTabsButton__icon,\n sidebarTabsButton__legacyIcon\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSidebarTabsButton = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"__cssModules\", cssModules]]);\nconst _sfc_main$1 = {\n name: \"NcAppSidebarTabs\",\n components: {\n NcAppSidebarTabsButton\n },\n provide() {\n return {\n registerTab: this.registerTab,\n unregisterTab: this.unregisterTab,\n // Getter as an alternative to Vue 2.7 computed(() => this.activeTab)\n getActiveTab: () => this.activeTab,\n // Used to check whether the tab header is shown so the tabs can reference the tab header for `aria-labelledby` or not\n isTablistShown: () => this.hasMultipleTabs\n };\n },\n props: {\n /**\n * Id of the tab to activate\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update:active\"],\n data(props) {\n return {\n /**\n * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.\n */\n tabs: [],\n /**\n * Local active (open) tab's ID. It allows to use component without v-model:active\n */\n activeTab: props.active\n };\n },\n computed: {\n /**\n * Has multiple tabs. If only one tab - its content is shown without navigation\n *\n * @return {boolean}\n */\n hasMultipleTabs() {\n return this.tabs.length > 1;\n },\n showForSingleTab() {\n return this.forceTabs && this.tabs.length === 1;\n },\n currentTabIndex() {\n return this.tabs.findIndex((tab) => tab.id === this.activeTab);\n }\n },\n watch: {\n tabs() {\n if (this.active) {\n this.updateActive();\n }\n },\n active(active) {\n if (active !== this.activeTab) {\n this.updateActive();\n }\n }\n },\n methods: {\n /**\n * Set the current active tab\n *\n * @param {string} id the id of the tab\n */\n setActive(id) {\n this.activeTab = id;\n this.$emit(\"update:active\", this.activeTab);\n },\n /**\n * Focus the previous tab\n * and emit to the parent component\n */\n focusPreviousTab() {\n if (this.currentTabIndex > 0) {\n this.setActive(this.tabs[this.currentTabIndex - 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the next tab\n * and emit to the parent component\n */\n focusNextTab() {\n if (this.currentTabIndex < this.tabs.length - 1) {\n this.setActive(this.tabs[this.currentTabIndex + 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the first tab\n * and emit to the parent component\n */\n focusFirstTab() {\n this.setActive(this.tabs[0].id);\n this.focusActiveTab();\n },\n /**\n * Focus the last tab\n * and emit to the parent component\n */\n focusLastTab() {\n this.setActive(this.tabs[this.tabs.length - 1].id);\n this.focusActiveTab();\n },\n /**\n * Focus the current active tab\n */\n focusActiveTab() {\n this.$el.querySelector(`#tab-button-${this.activeTab}`).focus();\n },\n /**\n * Focus the content on tab\n * see aria accessibility guidelines\n */\n focusActiveTabContent() {\n this.$el.querySelector(\"#tab-\" + this.activeTab).focus();\n },\n /**\n * Update the current active tab\n */\n updateActive() {\n this.activeTab = this.active && this.tabs.some(({ id }) => id === this.active) ? this.active : this.tabs[0]?.id ?? \"\";\n },\n /**\n * Register child tab in the tabs\n *\n * @param {object} tab child tab passed to slot\n */\n registerTab(tab) {\n this.tabs.push(tab);\n this.tabs.sort((a, b) => {\n if (a.order === b.order) {\n return a.name.localeCompare(b.name, [getCanonicalLocale()]);\n }\n return a.order - b.order;\n });\n this.updateActive();\n },\n /**\n * Unregister child tab from the tabs\n *\n * @param {string} id tab's id\n */\n unregisterTab(id) {\n const tabIndex = this.tabs.findIndex((tab) => tab.id === id);\n if (tabIndex !== -1) {\n this.tabs.splice(tabIndex, 1);\n }\n if (this.activeTab === id) {\n this.updateActive();\n }\n }\n }\n};\nconst _hoisted_1$1 = { class: \"app-sidebar-tabs\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAppSidebarTabsButton = resolveComponent(\"NcAppSidebarTabsButton\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n $options.hasMultipleTabs || $options.showForSingleTab ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n role: \"tablist\",\n class: \"app-sidebar-tabs__nav\",\n onKeydown: [\n _cache[0] || (_cache[0] = withKeys(withModifiers((...args) => $options.focusPreviousTab && $options.focusPreviousTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"left\"])),\n _cache[1] || (_cache[1] = withKeys(withModifiers((...args) => $options.focusNextTab && $options.focusNextTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"right\"])),\n _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.focusActiveTabContent && $options.focusActiveTabContent(...args), [\"exact\", \"prevent\", \"stop\"]), [\"tab\"])),\n _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"home\"])),\n _cache[4] || (_cache[4] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"end\"])),\n _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-up\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-down\"]))\n ]\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.tabs, (tab) => {\n return openBlock(), createBlock(_component_NcAppSidebarTabsButton, {\n id: `tab-button-${tab.id}`,\n key: tab.id,\n class: \"app-sidebar-tabs__tab\",\n \"aria-controls\": `tab-${tab.id}`,\n selected: $data.activeTab === tab.id,\n tab,\n \"onUpdate:selected\": ($event) => $options.setActive(tab.id)\n }, null, 8, [\"id\", \"aria-controls\", \"selected\", \"tab\", \"onUpdate:selected\"]);\n }), 128))\n ], 32)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-sidebar-tabs__content\", { \"app-sidebar-tabs__content--multiple\": $options.hasMultipleTabs }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2)\n ]);\n}\nconst NcAppSidebarTabs = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-1e2d5bfb\"]]);\nregister(t15);\nconst _sfc_main = {\n name: \"NcAppSidebar\",\n components: {\n NcActions,\n NcAppSidebarHeader: _sfc_main$7,\n NcAppSidebarTabs,\n NcButton,\n NcLoadingIcon,\n NcEmptyContent,\n IconArrowRight,\n IconClose,\n IconDockRight,\n IconStar,\n IconStarOutline\n },\n directives: {\n Focus: directive,\n /** @type {import('vue').ObjectDirective} */\n ClickOutside: vOnClickOutside\n },\n inject: {\n ncContentSelector: {\n from: CONTENT_SELECTOR_KEY,\n default: void 0\n }\n },\n props: {\n /**\n * The active tab\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Main text of the sidebar\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Allow to edit the sidebar name.\n */\n nameEditable: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder in the edit field if the name is editable.\n */\n namePlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Secondary name of the sidebar (subline)\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Title to display for the subname.\n */\n subtitle: {\n type: String,\n default: \"\"\n },\n /**\n * Url to the top header background image\n * Applied with css\n */\n background: {\n type: String,\n default: \"\"\n },\n /**\n * Enable the favourite icon if not null\n * See fired events\n */\n starred: {\n type: Boolean,\n default: null\n },\n /**\n * Show loading spinner instead of the star icon\n */\n starLoading: {\n type: Boolean,\n default: false\n },\n /**\n * Show loading spinner instead of tabs\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Display the sidebar in compact mode\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Only display close button and default slot content.\n * Don't display other header content and primary and secondary actions.\n * Useful when showing the EmptyContent component as content.\n */\n empty: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n },\n /**\n * Linkify the name\n */\n linkifyName: {\n type: Boolean,\n default: false\n },\n /**\n * Title to display for the name.\n * Can be set to the same text in case it's too long.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to conditionally show the sidebar\n * You can also use `v-if` on the sidebar, but using the open prop allow to keep\n * the sidebar inside the DOM for performance if it is opened and closed multiple times.\n *\n * When using the `open` property to close the sidebar a built-in toggle button will be shown to reopen it,\n * similar to the app navigation. You can remove this button with the `no-toggle` prop.\n */\n open: {\n type: Boolean,\n default: true\n },\n /**\n * Custom classes to assign to the sidebar toggle button.\n * If needed this can be used to assign styles to the button using `:deep()` selector.\n */\n toggleClasses: {\n type: [String, Array, Object],\n default: \"\"\n },\n /**\n * Custom attrs to assign to the sidebar toggle button.\n */\n toggleAttrs: {\n type: Object,\n default: void 0\n },\n /**\n * Do not add the built-in toggle button with `open` prop.\n */\n noToggle: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"close\",\n \"closed\",\n \"opened\",\n // 'figureClick', not emitted on purpose to make \"hasFigureClickListener\" work\n \"update:active\",\n \"update:name\",\n \"update:nameEditable\",\n \"update:open\",\n \"update:starred\",\n \"submitName\",\n \"dismissEditing\"\n ],\n setup() {\n const headerRef = ref(null);\n provide(\"NcAppSidebar:header:ref\", headerRef);\n return {\n uid: createElementId(),\n isMobile: useIsSmallMobile(),\n headerRef\n };\n },\n data() {\n return {\n changeNameTranslated: t(\"Change name\"),\n closeTranslated: t(\"Close sidebar\"),\n favoriteTranslated: t(\"Favorite\"),\n isStarred: this.starred,\n focusTrap: null,\n elementToReturnFocus: null\n };\n },\n computed: {\n canStar() {\n return this.isStarred !== null;\n },\n hasFigureClickListener() {\n return !!this.$attrs.onFigureClick;\n }\n },\n watch: {\n starred() {\n this.isStarred = this.starred;\n },\n isMobile() {\n this.toggleFocusTrap();\n },\n open() {\n this.checkToggleButtonContainerAvailability();\n }\n },\n created() {\n this.preserveElementToReturnFocus();\n this.checkToggleButtonContainerAvailability();\n },\n beforeUnmount() {\n this.$emit(\"closed\");\n this.focusTrap?.deactivate();\n },\n methods: {\n isSlotPopulated,\n t,\n preserveElementToReturnFocus() {\n if (document.activeElement && document.activeElement !== document.body) {\n this.elementToReturnFocus = document.activeElement;\n if (this.elementToReturnFocus.getAttribute(\"role\") === \"menuitem\") {\n const menu = this.elementToReturnFocus.closest('[role=\"menu\"]');\n if (menu) {\n const menuTrigger = document.querySelector(`[aria-controls=\"${menu.id}\"]`);\n this.elementToReturnFocus = menuTrigger;\n }\n }\n }\n },\n initFocusTrap() {\n if (this.focusTrap) {\n return;\n }\n this.focusTrap = createFocusTrap([\n // The sidebar itself\n this.$refs.sidebar,\n // Nextcloud Server header navigation\n document.querySelector(\"#header\")\n ], {\n allowOutsideClick: true,\n fallbackFocus: this.$refs.closeButton.$el,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n },\n /**\n * Activate focus trap if it is currently needed, otherwise deactivate\n */\n toggleFocusTrap() {\n if (this.open && this.isMobile) {\n this.initFocusTrap();\n this.focusTrap.activate();\n } else {\n this.focusTrap?.deactivate();\n }\n },\n /**\n * Close the sidebar on pressing the escape key on mobile\n *\n * @param {KeyboardEvent} event key down event\n */\n onKeydownEsc(event) {\n if (this.isMobile) {\n event.stopPropagation();\n this.closeSidebar();\n }\n },\n onAfterEnter(element) {\n if (this.elementToReturnFocus) {\n this.focus();\n }\n this.toggleFocusTrap();\n this.$emit(\"opened\", element);\n },\n onAfterLeave(element) {\n this.$emit(\"closed\", element);\n this.toggleFocusTrap();\n this.elementToReturnFocus?.focus({ focusVisible: true });\n this.elementToReturnFocus = null;\n },\n /**\n * Used to tell parent component the user asked to close the sidebar\n *\n * @param {Event} e close icon click event\n */\n closeSidebar(e) {\n this.$emit(\"close\", e);\n this.$emit(\"update:open\", false);\n },\n /**\n * Emit figure click event to parent component\n *\n * @param {Event} e click event\n */\n onFigureClick(e) {\n this.$emit(\"figureClick\", e);\n },\n /**\n * Toggle the favourite state\n * and emit to the parent component\n */\n toggleStarred() {\n this.isStarred = !this.isStarred;\n this.$emit(\"update:starred\", this.isStarred);\n },\n async editName() {\n this.$emit(\"update:nameEditable\", true);\n if (this.nameEditable) {\n await this.$nextTick();\n this.$refs.nameInput.focus();\n }\n },\n /**\n * Focus the sidebar\n *\n * @public\n */\n focus() {\n if (!this.open && !this.noToggle) {\n this.$refs.toggle.$el.focus();\n return;\n }\n try {\n this.headerRef.focus();\n } catch {\n warn(\"NcAppSidebar should have focusable header for accessibility reasons. Use NcAppSidebarHeader component.\");\n }\n },\n /**\n * Focus the active tab\n *\n * @public\n */\n focusActiveTabContent() {\n this.preserveElementToReturnFocus();\n this.$refs.tabs.focusActiveTabContent();\n },\n /**\n * Check if the toggle button container is available\n */\n checkToggleButtonContainerAvailability() {\n if (this.open === false && !this.noToggle && !this.ncContentSelector) {\n logger.warn(\"[NcAppSidebar] It looks like you want to use NcAppSidebar with the built-in toggle button. This feature is only available when NcAppSidebar is used in NcContent.\");\n }\n },\n /**\n * Emit name change event to parent component\n *\n * @param {Event} event input event\n */\n onNameInput(event) {\n this.$emit(\"update:name\", event.target.value);\n },\n /**\n * Emit when the name form edit confirm button is pressed in order\n * to change the name.\n *\n * @param {Event} event submit event\n */\n onSubmitName(event) {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"submitName\", event);\n },\n onDismissEditing() {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"dismissEditing\");\n },\n onUpdateActive(activeTab) {\n this.$emit(\"update:active\", activeTab);\n }\n }\n};\nconst _hoisted_1 = [\"aria-labelledby\"];\nconst _hoisted_2 = { class: \"app-sidebar-header__info\" };\nconst _hoisted_3 = {\n key: 0,\n class: \"app-sidebar-header__tertiary-actions\"\n};\nconst _hoisted_4 = { class: \"app-sidebar-header__name-container\" };\nconst _hoisted_5 = { class: \"app-sidebar-header__mainname-container\" };\nconst _hoisted_6 = [\"placeholder\", \"value\"];\nconst _hoisted_7 = [\"title\"];\nconst _hoisted_8 = {\n key: 2,\n class: \"app-sidebar-header__description\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_IconDockRight = resolveComponent(\"IconDockRight\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_IconStar = resolveComponent(\"IconStar\");\n const _component_IconStarOutline = resolveComponent(\"IconStarOutline\");\n const _component_NcAppSidebarHeader = resolveComponent(\"NcAppSidebarHeader\");\n const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_IconClose = resolveComponent(\"IconClose\");\n const _component_NcAppSidebarTabs = resolveComponent(\"NcAppSidebarTabs\");\n const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n const _directive_focus = resolveDirective(\"focus\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return openBlock(), createBlock(Transition, {\n appear: \"\",\n name: \"slide-right\",\n onAfterEnter: $options.onAfterEnter,\n onAfterLeave: $options.onAfterLeave\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"aside\", {\n id: \"app-sidebar-vue\",\n ref: \"sidebar\",\n class: \"app-sidebar\",\n \"aria-labelledby\": `app-sidebar-vue-${$setup.uid}__header`,\n onKeydown: _cache[6] || (_cache[6] = withKeys((...args) => $options.onKeydownEsc && $options.onKeydownEsc(...args), [\"esc\"]))\n }, [\n $options.ncContentSelector && !$props.open && !$props.noToggle ? (openBlock(), createBlock(Teleport, {\n key: 0,\n to: $options.ncContentSelector\n }, [\n createVNode(_component_NcButton, mergeProps({\n ref: \"toggle\",\n \"aria-label\": $options.t(\"Open sidebar\"),\n class: [\"app-sidebar__toggle\", $props.toggleClasses],\n variant: \"tertiary\"\n }, $props.toggleAttrs, {\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"update:open\", true))\n }), {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"toggle-icon\", {}, () => [\n createVNode(_component_IconDockRight, { size: 20 })\n ], true)\n ]),\n _: 3\n }, 16, [\"aria-label\", \"class\"])\n ], 8, [\"to\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"header\", {\n class: normalizeClass([\"app-sidebar-header\", {\n \"app-sidebar-header--with-figure\": $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background,\n \"app-sidebar-header--compact\": $props.compact\n }])\n }, [\n !$props.empty ? renderSlot(_ctx.$slots, \"info\", { key: 0 }, () => [\n createElementVNode(\"div\", _hoisted_2, [\n $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"app-sidebar-header__figure\", {\n \"app-sidebar-header__figure--with-action\": $options.hasFigureClickListener\n }]),\n style: normalizeStyle({\n backgroundImage: `url(${$props.background})`\n }),\n tabindex: \"0\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.onFigureClick && $options.onFigureClick(...args)),\n onKeydown: _cache[2] || (_cache[2] = withKeys((...args) => $options.onFigureClick && $options.onFigureClick(...args), [\"enter\"]))\n }, [\n renderSlot(_ctx.$slots, \"header\", { class: \"app-sidebar-header__background\" }, void 0, true)\n ], 38)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-sidebar-header__desc\", {\n \"app-sidebar-header__desc--with-tertiary-action\": $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()),\n \"app-sidebar-header__desc--editable\": $props.nameEditable && !$props.subname,\n \"app-sidebar-header__desc--with-subname--editable\": $props.nameEditable && $props.subname,\n \"app-sidebar-header__desc--without-actions\": !$options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.())\n }])\n }, [\n $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()) ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n renderSlot(_ctx.$slots, \"tertiary-actions\", {}, () => [\n $options.canStar ? (openBlock(), createBlock(_component_NcButton, {\n key: 0,\n \"aria-label\": $data.favoriteTranslated,\n pressed: $data.isStarred,\n class: \"app-sidebar-header__star\",\n variant: \"secondary\",\n onClick: withModifiers($options.toggleStarred, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n $props.starLoading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : $data.isStarred ? (openBlock(), createBlock(_component_IconStar, {\n key: 1,\n size: 20\n })) : (openBlock(), createBlock(_component_IconStarOutline, {\n key: 2,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"pressed\", \"onClick\"])) : createCommentVNode(\"\", true)\n ], true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_4, [\n createElementVNode(\"div\", _hoisted_5, [\n withDirectives(createVNode(_component_NcAppSidebarHeader, {\n class: \"app-sidebar-header__mainname\",\n name: $props.name,\n linkify: $props.linkifyName,\n title: $props.title,\n tabindex: $props.nameEditable ? 0 : -1,\n onClick: withModifiers($options.editName, [\"self\"])\n }, null, 8, [\"name\", \"linkify\", \"title\", \"tabindex\", \"onClick\"]), [\n [vShow, !$props.nameEditable]\n ]),\n $props.nameEditable ? withDirectives((openBlock(), createElementBlock(\"form\", {\n key: 0,\n class: \"app-sidebar-header__mainname-form\",\n onSubmit: _cache[5] || (_cache[5] = withModifiers((...args) => $options.onSubmitName && $options.onSubmitName(...args), [\"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"nameInput\",\n class: \"app-sidebar-header__mainname-input\",\n type: \"text\",\n placeholder: $props.namePlaceholder,\n value: $props.name,\n onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.onDismissEditing && $options.onDismissEditing(...args), [\"stop\"]), [\"esc\"])),\n onInput: _cache[4] || (_cache[4] = (...args) => $options.onNameInput && $options.onNameInput(...args))\n }, null, 40, _hoisted_6), [\n [_directive_focus]\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.changeNameTranslated,\n type: \"submit\",\n variant: \"tertiary-no-background\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconArrowRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ], 32)), [\n [_directive_click_outside, () => $options.onSubmitName()]\n ]) : createCommentVNode(\"\", true),\n $options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.()) ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n class: \"app-sidebar-header__menu\",\n forceMenu: $props.forceMenu\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"secondary-actions\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"forceMenu\"])) : createCommentVNode(\"\", true)\n ]),\n $props.subname.trim() !== \"\" || _ctx.$slots[\"subname\"] ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n title: $props.subtitle || void 0,\n class: \"app-sidebar-header__subname\"\n }, [\n renderSlot(_ctx.$slots, \"subname\", {}, () => [\n createTextVNode(toDisplayString($props.subname), 1)\n ], true)\n ], 8, _hoisted_7)) : createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ], true) : (openBlock(), createBlock(_component_NcAppSidebarHeader, {\n key: 1,\n class: \"app-sidebar-header__mainname--hidden\",\n name: $props.name,\n tabindex: \"-1\"\n }, null, 8, [\"name\"])),\n createVNode(_component_NcButton, {\n ref: \"closeButton\",\n \"aria-label\": $data.closeTranslated,\n title: $data.closeTranslated,\n class: \"app-sidebar__close\",\n variant: \"tertiary\",\n onClick: withModifiers($options.closeSidebar, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"onClick\"]),\n $options.isSlotPopulated(_ctx.$slots.description?.()) && !$props.empty ? (openBlock(), createElementBlock(\"div\", _hoisted_8, [\n renderSlot(_ctx.$slots, \"description\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 2),\n withDirectives(createVNode(_component_NcAppSidebarTabs, {\n ref: \"tabs\",\n active: $props.active,\n forceTabs: $props.forceTabs,\n \"onUpdate:active\": $options.onUpdateActive\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"active\", \"forceTabs\", \"onUpdate:active\"]), [\n [vShow, !$props.loading]\n ]),\n $props.loading ? (openBlock(), createBlock(_component_NcEmptyContent, { key: 1 }, {\n icon: withCtx(() => [\n createVNode(_component_NcLoadingIcon, { size: 64 })\n ]),\n _: 1\n })) : createCommentVNode(\"\", true)\n ], 40, _hoisted_1), [\n [vShow, $props.open]\n ])\n ]),\n _: 3\n }, 8, [\"onAfterEnter\", \"onAfterLeave\"]);\n}\nconst NcAppSidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-d66d2f51\"]]);\nexport {\n NcAppSidebar as N\n};\n//# sourceMappingURL=NcAppSidebar-KwLsRcZO.mjs.map\n","import PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nexport {\n preloadImage\n};\n//# sourceMappingURL=index.mjs.map\n","import '../assets/NcCollectionList-e5JFvzqX.css';\nimport debounce from \"debounce\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, toDisplayString, withModifiers, normalizeClass, withDirectives, createElementVNode, vModelText, Fragment, renderList, createBlock, resolveDynamicComponent, withCtx, createCommentVNode, createTextVNode, Transition, ref } from \"vue\";\nimport { r as register, L as t28, a as t, M as t6 } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BuRnYpJX.mjs\";\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-ruClKRzS.mjs\";\nimport { g as getRoute } from \"./autolink-U5pBzLgI.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcSelect } from \"./NcSelect-B1uITk_3.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nregister(t28);\nconst _sfc_main$1 = {\n name: \"NcCollectionListItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n /**\n * The collection\n */\n collection: {\n type: Object,\n default: null\n },\n /**\n * Current error if any\n */\n error: {\n type: String,\n default: void 0\n }\n },\n emits: [\n \"removeResource\",\n \"renameCollection\"\n ],\n data() {\n return {\n detailsOpen: false,\n newName: null\n };\n },\n computed: {\n getIcon() {\n return (resource) => [resource.iconClass];\n },\n typeClass() {\n return (resource) => \"resource-type-\" + resource.type;\n },\n resources() {\n return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];\n },\n getComponent() {\n return (resource) => {\n const route = getRoute(this.$router, resource.link);\n return route ? { component: \"router-link\", to: route, href: void 0 } : { component: \"a\", to: void 0, href: resource.link };\n };\n },\n iconUrl() {\n return (resource) => {\n if (resource.mimetype) {\n return OC.MimeType.getIconUrl(resource.mimetype);\n }\n if (resource.iconUrl) {\n return resource.iconUrl;\n }\n return \"\";\n };\n }\n },\n methods: {\n t,\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = true;\n },\n removeResource(collection, resource) {\n this.$emit(\"removeResource\", {\n collectionId: collection.id,\n resourceType: resource.type,\n resourceId: resource.id\n });\n },\n openRename() {\n this.newName = this.collection.name;\n },\n renameCollection() {\n if (this.newName) {\n this.$emit(\"renameCollection\", {\n collectionId: this.collection.id,\n name: this.newName\n });\n }\n this.newName = null;\n }\n }\n};\nconst _hoisted_1$1 = { class: \"collection-list-item\" };\nconst _hoisted_2$1 = {\n key: 2,\n class: \"linked-icons\"\n};\nconst _hoisted_3$1 = [\"src\", \"alt\"];\nconst _hoisted_4$1 = {\n key: 3,\n class: \"sharingOptionsGroup\"\n};\nconst _hoisted_5$1 = {\n key: 0,\n class: \"error\"\n};\nconst _hoisted_6$1 = {\n key: 0,\n class: \"resource-list-details\"\n};\nconst _hoisted_7$1 = [\"src\", \"alt\"];\nconst _hoisted_8$1 = { class: \"resource-name\" };\nconst _hoisted_9 = [\"onClick\"];\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n return openBlock(), createElementBlock(\"li\", _hoisted_1$1, [\n createVNode(_component_NcAvatar, {\n displayName: $props.collection.name,\n allowPlaceholder: \"\",\n class: \"collection-avatar\"\n }, null, 8, [\"displayName\"]),\n $data.newName === null ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: \"collection-item-name\",\n title: \"\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.showDetails && $options.showDetails(...args))\n }, toDisplayString($props.collection.name), 1)) : (openBlock(), createElementBlock(\"form\", {\n key: 1,\n class: normalizeClass({ \"should-shake\": $props.error }),\n onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.renameCollection && $options.renameCollection(...args), [\"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => $data.newName = $event),\n type: \"text\",\n autocomplete: \"off\",\n autocapitalize: \"off\"\n }, null, 512), [\n [vModelText, $data.newName]\n ]),\n _cache[3] || (_cache[3] = createElementVNode(\"input\", {\n type: \"submit\",\n value: \"\",\n class: \"icon-confirm\"\n }, null, -1))\n ], 34)),\n !$data.detailsOpen && $data.newName === null ? (openBlock(), createElementBlock(\"div\", _hoisted_2$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources.slice(0, 2), (resource) => {\n return openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n key: resource.type + \"|\" + resource.id,\n title: resource.name,\n to: $options.getComponent(resource).to,\n href: $options.getComponent(resource).href,\n class: normalizeClass($options.typeClass(resource))\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: $options.iconUrl(resource),\n alt: resource.name\n }, null, 8, _hoisted_3$1)\n ]),\n _: 2\n }, 1032, [\"title\", \"to\", \"href\", \"class\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true),\n $data.newName === null ? (openBlock(), createElementBlock(\"span\", _hoisted_4$1, [\n createVNode(_component_NcActions, null, {\n default: withCtx(() => [\n createVNode(_component_NcActionButton, {\n icon: \"icon-info\",\n onClick: withModifiers($options.toggleDetails, [\"prevent\"])\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($data.detailsOpen ? $options.t(\"Hide details\") : $options.t(\"Show details\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n createVNode(_component_NcActionButton, {\n icon: \"icon-rename\",\n onClick: withModifiers($options.openRename, [\"prevent\"])\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($options.t(\"Rename project\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _: 1\n })\n ])) : createCommentVNode(\"\", true),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $props.error ? (openBlock(), createElementBlock(\"div\", _hoisted_5$1, toDisplayString($props.error), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $data.detailsOpen ? (openBlock(), createElementBlock(\"ul\", _hoisted_6$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources, (resource) => {\n return openBlock(), createElementBlock(\"li\", {\n key: resource.type + \"|\" + resource.id,\n class: normalizeClass($options.typeClass(resource))\n }, [\n (openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n to: $options.getComponent(resource).to,\n href: $options.getComponent(resource).href\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: $options.iconUrl(resource),\n alt: resource.name\n }, null, 8, _hoisted_7$1),\n createElementVNode(\"span\", _hoisted_8$1, toDisplayString(resource.name || \"\"), 1)\n ]),\n _: 2\n }, 1032, [\"to\", \"href\"])),\n createElementVNode(\"span\", {\n class: \"icon-close\",\n onClick: ($event) => $options.removeResource($props.collection, resource)\n }, null, 8, _hoisted_9)\n ], 2);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]);\n}\nconst NcCollectionListItem = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-8ebb9fc1\"]]);\nregister(t6);\nfunction extractOcsData(response) {\n return response.data.ocs.data;\n}\nfunction renameCollectionService(collectionId, collectionName) {\n return axios.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { collectionName }).then(extractOcsData);\n}\nfunction getCollectionsByResourceService(resourceType, resourceId) {\n return axios.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then(extractOcsData);\n}\nfunction createCollectionService(resourceType, resourceId, name) {\n return axios.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), { name }).then(extractOcsData);\n}\nfunction addResourceService(collectionId, resourceType, resourceId) {\n return axios.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { resourceType, resourceId }).then(extractOcsData);\n}\nfunction removeResourceService(collectionId, resourceType, resourceId) {\n return axios.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData);\n}\nfunction searchService(query) {\n return axios.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then(extractOcsData);\n}\nfunction useCollections() {\n const storedCollections = ref([]);\n const addCollections = (collections) => {\n storedCollections.value = collections;\n };\n const addCollection = (collection) => {\n storedCollections.value.push(collection);\n };\n const removeCollection = (collectionId) => {\n storedCollections.value = storedCollections.value.filter((item) => item.id !== collectionId);\n };\n const updateCollection = (collection) => {\n const index = storedCollections.value.findIndex((item) => item.id === collection.id);\n if (index !== -1) {\n storedCollections.value[index] = collection;\n } else {\n addCollection(collection);\n }\n };\n const fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n const collections = await getCollectionsByResourceService(resourceType, resourceId);\n addCollections(collections);\n };\n const createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n const collection = await createCollectionService(baseResourceType, baseResourceId, name);\n addCollection(collection);\n await addResourceToCollection({\n collectionId: collection.id,\n resourceType,\n resourceId\n });\n };\n const renameCollection = async ({ collectionId, name }) => {\n const collection = await renameCollectionService(collectionId, name);\n updateCollection(collection);\n };\n async function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n const collection = await addResourceService(collectionId, resourceType, String(resourceId));\n updateCollection(collection);\n }\n const removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n const collection = await removeResourceService(collectionId, resourceType, String(resourceId));\n if (collection.resources.length > 0) {\n updateCollection(collection);\n } else {\n removeCollection(collectionId);\n }\n };\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n renameCollection,\n addResourceToCollection,\n removeResourceFromCollection\n };\n}\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _sfc_main = {\n name: \"NcCollectionList\",\n components: {\n NcCollectionListItem,\n NcAvatar,\n NcSelect\n },\n props: {\n /**\n * Resource type identifier\n */\n type: {\n type: String,\n default: null\n },\n /**\n * Unique id of the resource\n */\n id: {\n type: String,\n default: null\n },\n /**\n * Name of the resource\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Whether the component is active (to start fetch resources)\n */\n isActive: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection\n } = useCollections();\n const searchCollections = ref([]);\n const search = debounce(function(query, loading) {\n if (query !== \"\") {\n loading(true);\n searchService(query).then((collections) => {\n searchCollections.value = collections;\n }).catch((error) => {\n logger.error(\"Failed to search for collections\", { error });\n }).finally(() => {\n loading(false);\n });\n }\n }, 500);\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection,\n searchCollections,\n search\n };\n },\n data() {\n return {\n selectIsOpen: false,\n generatingCodes: false,\n codes: void 0,\n value: null,\n model: {},\n collectionsError: {},\n error: null,\n isSelectOpen: false\n };\n },\n computed: {\n collections() {\n return this.storedCollections.filter((collection) => collection.resources.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type));\n },\n placeholder() {\n return this.isSelectOpen ? t(\"Type to search for existing projects\") : t(\"Add to a project\");\n },\n options() {\n const options = [];\n window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n options.push({\n method: METHOD_CREATE_COLLECTION,\n type,\n title: window.OCP.Collaboration.getLabel(type),\n class: window.OCP.Collaboration.getIcon(type),\n action: () => window.OCP.Collaboration.trigger(type)\n });\n });\n for (const index in this.searchCollections) {\n if (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n options.push({\n method: METHOD_ADD_TO_COLLECTION,\n title: this.searchCollections[index].name,\n collectionId: this.searchCollections[index].id\n });\n }\n }\n return options;\n },\n resourceIdentifier() {\n return {\n resourceType: this.type,\n resourceId: this.id,\n isActive: this.isActive\n };\n }\n },\n watch: {\n resourceIdentifier: {\n deep: true,\n immediate: true,\n handler(resourceIdentifier) {\n if (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n return;\n }\n this.fetchCollectionsByResource(resourceIdentifier);\n }\n }\n },\n methods: {\n t,\n select(selectedOption) {\n if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n selectedOption.action().then((resourceId) => {\n this.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: selectedOption.type,\n resourceId,\n name: this.name\n }).catch((e) => {\n this.setError(t(\"Failed to create a project\"), e);\n });\n }).catch((e) => {\n logger.error(\"[NcCollectionList] No resource selected\", e);\n });\n }\n if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n this.addResourceToCollection({\n collectionId: selectedOption.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((e) => {\n this.setError(t(\"Failed to add the item to the project\"), e);\n });\n }\n this.value = null;\n },\n showSelect() {\n this.selectIsOpen = true;\n this.$refs.select.$el.focus();\n },\n setError(error, e) {\n logger.error(error, { error: e });\n this.error = error;\n setTimeout(() => {\n this.error = null;\n }, 5e3);\n },\n renameCollectionFromItem({ collectionId, name }) {\n this.renameCollection({ collectionId, name }).catch((e) => {\n logger.error(t(\"Failed to rename the project\"), { error: e });\n this.collectionsError[collectionId] = t(\"Failed to rename the project\");\n setTimeout(() => {\n this.collectionsError[collectionId] = null;\n }, 5e3);\n });\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n id: \"collection-list\",\n class: \"collection-list\"\n};\nconst _hoisted_2 = { id: \"collection-select-container\" };\nconst _hoisted_3 = { class: \"option__desc\" };\nconst _hoisted_4 = { class: \"option__title\" };\nconst _hoisted_5 = { class: \"option__wrapper\" };\nconst _hoisted_6 = { class: \"option__title\" };\nconst _hoisted_7 = { class: \"hint\" };\nconst _hoisted_8 = {\n key: 0,\n class: \"error\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n const _component_NcCollectionListItem = resolveComponent(\"NcCollectionListItem\");\n return $options.collections && $props.type && $props.id ? (openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n createElementVNode(\"li\", {\n onClick: _cache[3] || (_cache[3] = (...args) => $options.showSelect && $options.showSelect(...args))\n }, [\n _cache[4] || (_cache[4] = createElementVNode(\"div\", { class: \"avatar\" }, [\n createElementVNode(\"span\", { class: \"icon-projects\" })\n ], -1)),\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcSelect, {\n ref: \"select\",\n modelValue: $data.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.value = $event),\n \"aria-label-combobox\": $options.t(\"Add to a project\"),\n options: $options.options,\n placeholder: $options.placeholder,\n label: \"title\",\n limit: 5,\n onClose: _cache[1] || (_cache[1] = ($event) => $data.isSelectOpen = false),\n onOpen: _cache[2] || (_cache[2] = ($event) => $data.isSelectOpen = true),\n \"onOption:selected\": $options.select,\n onSearch: $setup.search\n }, {\n \"selected-option\": withCtx((option) => [\n createElementVNode(\"span\", _hoisted_3, [\n createElementVNode(\"span\", _hoisted_4, toDisplayString(option.title), 1)\n ])\n ]),\n option: withCtx((option) => [\n createElementVNode(\"span\", _hoisted_5, [\n option.class ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass([option.class, \"avatar\"])\n }, null, 2)) : option.method !== 2 ? (openBlock(), createBlock(_component_NcAvatar, {\n key: 1,\n allowPlaceholder: \"\",\n displayName: option.title\n }, null, 8, [\"displayName\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_6, toDisplayString(option.title), 1)\n ])\n ]),\n default: withCtx(() => [\n createElementVNode(\"p\", _hoisted_7, toDisplayString($options.t(\"Connect items to a project to make them easier to find\")), 1)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label-combobox\", \"options\", \"placeholder\", \"onOption:selected\", \"onSearch\"])\n ])\n ]),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $data.error ? (openBlock(), createElementBlock(\"li\", _hoisted_8, toDisplayString($data.error), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.collections, (collection) => {\n return openBlock(), createBlock(_component_NcCollectionListItem, {\n key: collection.id,\n collection,\n error: $data.collectionsError[collection.id],\n onRenameCollection: $options.renameCollectionFromItem,\n onRemoveResource: $setup.removeResourceFromCollection\n }, null, 8, [\"collection\", \"error\", \"onRenameCollection\", \"onRemoveResource\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true);\n}\nconst NcCollectionList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0e169eff\"]]);\nexport {\n NcCollectionList as N\n};\n//# sourceMappingURL=NcCollectionList-pWG42SU1.mjs.map\n","import '../assets/NcDashboardWidget-nZuIL1UN.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, withCtx, renderSlot, createVNode, Fragment, renderList, toHandlers } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { r as register, z as t35, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-ruClKRzS.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./NcDashboardWidgetItem-ZKImQn7Y.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent-CDgWCt_m.mjs\";\nconst _sfc_main$1 = {\n name: \"CheckIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon check-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst Check = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nregister(t35);\nconst _sfc_main = {\n name: \"NcDashboardWidget\",\n components: {\n NcAvatar,\n NcDashboardWidgetItem,\n NcEmptyContent,\n Check\n },\n props: {\n /**\n * An array containing the items to show (specific structure must be respected,\n * except if you override item rendering in the default slot).\n */\n items: {\n type: Array,\n default: () => {\n return [];\n }\n },\n /**\n * If this is set, a \"show more\" text is displayed on the widget's bottom.\n * It's a link pointing to this URL.\n */\n showMoreUrl: {\n type: String,\n default: \"\"\n },\n /**\n * The text of show more button.\n *\n * Expected to be in the form \"More {itemName} …\"\n */\n showMoreLabel: {\n type: String,\n default: t(\"More items …\")\n },\n /**\n * A boolean to put the widget in a loading state.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * An object containing context menu entries that will be displayed for each item.\n */\n itemMenu: {\n type: Object,\n default: () => {\n return {};\n }\n },\n /**\n * Whether both the items and the empty content message are shown.\n * Usefull for e.g. showing \"No mentions\" and a list of elements.\n */\n showItemsAndEmptyContent: {\n type: Boolean,\n default: false\n },\n /**\n * The text to show in the empty content area.\n */\n emptyContentMessage: {\n type: String,\n default: \"\"\n },\n /**\n * The text to show in the half empty content area.\n */\n halfEmptyContentMessage: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n // forward menu events to my parent\n handlers() {\n const h = {};\n for (const evName in this.itemMenu) {\n h[evName] = (it) => {\n this.$emit(evName, it);\n };\n }\n return h;\n },\n displayedItems() {\n const nbItems = this.showMoreUrl && this.items.length >= this.maxItemNumber ? this.maxItemNumber - 1 : this.maxItemNumber;\n return this.items.slice(0, nbItems);\n },\n showHalfEmptyContentArea() {\n return this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0;\n },\n halfEmptyContentString() {\n return this.halfEmptyContentMessage || this.emptyContentMessage;\n },\n maxItemNumber() {\n return this.showItemsAndEmptyContent ? 5 : 7;\n },\n showMore() {\n return this.showMoreUrl && this.items.length >= this.maxItemNumber;\n }\n }\n};\nconst _hoisted_1 = { class: \"dashboard-widget\" };\nconst _hoisted_2 = { key: 1 };\nconst _hoisted_3 = [\"href\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_Check = resolveComponent(\"Check\");\n const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n const _component_NcDashboardWidgetItem = resolveComponent(\"NcDashboardWidgetItem\");\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n $options.showHalfEmptyContentArea ? (openBlock(), createBlock(_component_NcEmptyContent, {\n key: 0,\n description: $options.halfEmptyContentString,\n class: \"half-screen\"\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"halfEmptyContentIcon\", {}, () => [\n createVNode(_component_Check)\n ], true)\n ]),\n _: 3\n }, 8, [\"description\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.displayedItems, (item) => {\n return openBlock(), createElementBlock(\"li\", {\n key: item.id\n }, [\n renderSlot(_ctx.$slots, \"default\", { item }, () => [\n createVNode(_component_NcDashboardWidgetItem, mergeProps({ ref_for: true }, item, { itemMenu: $props.itemMenu }, toHandlers($options.handlers)), null, 16, [\"itemMenu\"])\n ], true)\n ]);\n }), 128))\n ]),\n $props.loading ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n (openBlock(), createElementBlock(Fragment, null, renderList(7, (i) => {\n return createElementVNode(\"div\", {\n key: i,\n class: \"item-list__entry\"\n }, [\n createVNode(_component_NcAvatar, {\n class: \"item-avatar\",\n size: 44\n }),\n _cache[0] || (_cache[0] = createElementVNode(\"div\", { class: \"item__details\" }, [\n createElementVNode(\"h3\", null, \" \"),\n createElementVNode(\"p\", { class: \"message\" }, \"   \")\n ], -1))\n ]);\n }), 64))\n ])) : $props.items.length === 0 ? renderSlot(_ctx.$slots, \"empty-content\", { key: 2 }, () => [\n $props.emptyContentMessage ? (openBlock(), createBlock(_component_NcEmptyContent, {\n key: 0,\n description: $props.emptyContentMessage\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"emptyContentIcon\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"description\"])) : createCommentVNode(\"\", true)\n ], true) : $options.showMore ? (openBlock(), createElementBlock(\"a\", {\n key: 3,\n href: $props.showMoreUrl,\n target: \"_blank\",\n class: \"more\",\n tabindex: \"0\"\n }, toDisplayString($props.showMoreLabel), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ]);\n}\nconst NcDashboardWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-8dabc003\"]]);\nexport {\n NcDashboardWidget as N\n};\n//# sourceMappingURL=NcDashboardWidget-CvpYMKur.mjs.map\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { addDays } from \"./addDays.js\";\nimport { addMonths } from \"./addMonths.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link add} function options.\n */\n\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date.\n *\n * @typeParam DateType - The `Date` type the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes, and seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport function add(date, duration, options) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n // Add years and months\n const _date = toDate(date, options?.in);\n const dateWithMonths =\n months || years ? addMonths(_date, months + years * 12) : _date;\n\n // Add weeks and days\n const dateWithDays =\n days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes, and seconds\n const minutesToAdd = minutes + hours * 60;\n const secondsToAdd = seconds + minutesToAdd * 60;\n const msToAdd = secondsToAdd * 1000;\n\n return constructFrom(options?.in || date, +dateWithDays + msToAdd);\n}\n\n// Fallback for modularized imports:\nexport default add;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMilliseconds} function options.\n */\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n * @param options - The options object\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount, options) {\n return constructFrom(options?.in || date, +toDate(date) + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link addHours} function options.\n */\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added\n * @param options - An object with options\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport function addHours(date, amount, options) {\n return addMilliseconds(date, amount * millisecondsInHour, options);\n}\n\n// Fallback for modularized imports:\nexport default addHours;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addQuarters} function options.\n */\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n * @param options - An object with options\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=; Mon Dec 01 2014 00:00:00\n */\nexport function addQuarters(date, amount, options) {\n return addMonths(date, amount * 3, options);\n}\n\n// Fallback for modularized imports:\nexport default addQuarters;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getQuarter} function options.\n */\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2));\n * //=> 3\n */\nexport function getQuarter(date, options) {\n const _date = toDate(date, options?.in);\n const quarter = Math.trunc(_date.getMonth() / 3) + 1;\n return quarter;\n}\n\n// Fallback for modularized imports:\nexport default getQuarter;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.js\";\n\n/**\n * The {@link differenceInYears} function options.\n */\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport function differenceInYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n // -1 if the left date is earlier than the right date\n // 2023-12-31 - 2024-01-01 = -1\n const sign = compareAsc(laterDate_, earlierDate_);\n\n // First calculate the difference in calendar years\n // 2024-01-01 - 2023-12-31 = 1 year\n const diff = Math.abs(differenceInCalendarYears(laterDate_, earlierDate_));\n\n // Now we need to calculate if the difference is full. To do that we set\n // both dates to the same year and check if the both date's month and day\n // form a full year.\n laterDate_.setFullYear(1584);\n earlierDate_.setFullYear(1584);\n\n // For it to be true, when the later date is indeed later than the earlier date\n // (2026-02-01 - 2023-12-10 = 3 years), the difference is full if\n // the normalized later date is also later than the normalized earlier date.\n // In our example, 1584-02-01 is earlier than 1584-12-10, so the difference\n // is partial, hence we need to subtract 1 from the difference 3 - 1 = 2.\n const partial = compareAsc(laterDate_, earlierDate_) === -sign;\n\n const result = sign * (diff - +partial);\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInYears;\n","import { normalizeDates } from \"./normalizeDates.js\";\n\nexport function normalizeInterval(context, interval) {\n const [start, end] = normalizeDates(context, interval.start, interval.end);\n return { start, end };\n}\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { constructFrom } from \"./constructFrom.js\";\n\n/**\n * The {@link eachDayOfInterval} function options.\n */\n\n/**\n * The {@link eachDayOfInterval} function result type. It resolves the proper data type.\n * It uses the first argument date object type, starting from the date argument,\n * then the start interval date, and finally the end interval date. If\n * a context function is passed, it uses the context function return type.\n */\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval.\n * @param options - An object with options.\n *\n * @returns The array with starts of days from the day of the interval start to the day of the interval end\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport function eachDayOfInterval(interval, options) {\n const { start, end } = normalizeInterval(options?.in, interval);\n\n let reversed = +start > +end;\n const endTime = reversed ? +start : +end;\n const date = reversed ? end : start;\n date.setHours(0, 0, 0, 0);\n\n let step = options?.step ?? 1;\n if (!step) return [];\n if (step < 0) {\n step = -step;\n reversed = !reversed;\n }\n\n const dates = [];\n\n while (+date <= endTime) {\n dates.push(constructFrom(start, date));\n date.setDate(date.getDate() + step);\n date.setHours(0, 0, 0, 0);\n }\n\n return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachDayOfInterval;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfQuarter} function options.\n */\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport function startOfQuarter(date, options) {\n const _date = toDate(date, options?.in);\n const currentMonth = _date.getMonth();\n const month = currentMonth - (currentMonth % 3);\n _date.setMonth(month, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfQuarter;\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { addQuarters } from \"./addQuarters.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfQuarter } from \"./startOfQuarter.js\";\n\n/**\n * The {@link eachQuarterOfInterval} function options.\n */\n\n/**\n * The {@link eachQuarterOfInterval} function result type. It resolves the proper data type.\n * It uses the first argument date object type, starting from the date argument,\n * then the start interval date, and finally the end interval date. If\n * a context function is passed, it uses the context function return type.\n */\n\n/**\n * @name eachQuarterOfInterval\n * @category Interval Helpers\n * @summary Return the array of quarters within the specified time interval.\n *\n * @description\n * Return the array of quarters within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval\n * @param options - An object with options\n *\n * @returns The array with starts of quarters from the quarter of the interval start to the quarter of the interval end\n *\n * @example\n * // Each quarter within interval 6 February 2014 - 10 August 2014:\n * const result = eachQuarterOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10),\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // ]\n */\nexport function eachQuarterOfInterval(interval, options) {\n const { start, end } = normalizeInterval(options?.in, interval);\n\n let reversed = +start > +end;\n const endTime = reversed ? +startOfQuarter(start) : +startOfQuarter(end);\n let date = reversed ? startOfQuarter(end) : startOfQuarter(start);\n\n let step = options?.step ?? 1;\n if (!step) return [];\n if (step < 0) {\n step = -step;\n reversed = !reversed;\n }\n\n const dates = [];\n\n while (+date <= endTime) {\n dates.push(constructFrom(start, date));\n date = addQuarters(date, step);\n }\n\n return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachQuarterOfInterval;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfYear} function options.\n */\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport function endOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n _date.setFullYear(year + 1, 0, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfQuarter} function options.\n */\n\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a quarter\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfQuarter(date, options) {\n const _date = toDate(date, options?.in);\n const currentMonth = _date.getMonth();\n const month = currentMonth - (currentMonth % 3) + 3;\n _date.setMonth(month, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfQuarter;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDay} function options.\n */\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of week, 0 represents Sunday\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport function getDay(date, options) {\n return toDate(date, options?.in).getDay();\n}\n\n// Fallback for modularized imports:\nexport default getDay;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDaysInMonth} function options.\n */\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date, considering the context if provided.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(_date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.js\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getHours} function options.\n */\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The hours\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport function getHours(date, options) {\n return toDate(date, options?.in).getHours();\n}\n\n// Fallback for modularized imports:\nexport default getHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISODay} function options.\n */\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date, options) {\n const day = toDate(date, options?.in).getDay();\n return day === 0 ? 7 : day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getMinutes} function options.\n */\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The minutes\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport function getMinutes(date, options) {\n return toDate(date, options?.in).getMinutes();\n}\n\n// Fallback for modularized imports:\nexport default getMinutes;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getMonth} function options.\n */\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The month index (0-11)\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport function getMonth(date, options) {\n return toDate(date, options?.in).getMonth();\n}\n\n// Fallback for modularized imports:\nexport default getMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param date - The given date\n *\n * @returns The seconds\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport function getSeconds(date) {\n return toDate(date).getSeconds();\n}\n\n// Fallback for modularized imports:\nexport default getSeconds;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getYear} function options.\n */\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The year\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport function getYear(date, options) {\n return toDate(date, options?.in).getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default getYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n return +toDate(date) > +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport function isEqual(leftDate, rightDate) {\n return +toDate(leftDate) === +toDate(rightDate);\n}\n\n// Fallback for modularized imports:\nexport default isEqual;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam InputDate - The input `Date` type derived from the passed argument.\n * @typeParam ResultDate - The result `Date` type derived from the passed constructor.\n *\n * @param date - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(date, constructor) {\n const date_ = isConstructor(constructor)\n ? new constructor(0)\n : constructFrom(constructor, 0);\n date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n date_.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n );\n return date_;\n}\n\nfunction isConstructor(constructor) {\n return (\n typeof constructor === \"function\" &&\n constructor.prototype?.constructor === constructor\n );\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n","import { constructFrom } from \"../../constructFrom.js\";\nimport { transpose } from \"../../transpose.js\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n subPriority = 0;\n\n validate(_utcDate, _options) {\n return true;\n }\n}\n\nexport class ValueSetter extends Setter {\n constructor(\n value,\n\n validateValue,\n\n setValue,\n\n priority,\n subPriority,\n ) {\n super();\n this.value = value;\n this.validateValue = validateValue;\n this.setValue = setValue;\n this.priority = priority;\n if (subPriority) {\n this.subPriority = subPriority;\n }\n }\n\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\n\nexport class DateTimezoneSetter extends Setter {\n priority = TIMEZONE_UNIT_PRIORITY;\n subPriority = -1;\n\n constructor(context, reference) {\n super();\n this.context = context || ((date) => constructFrom(reference, date));\n }\n\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, this.context));\n }\n}\n","import { ValueSetter } from \"./Setter.js\";\n\nexport class Parser {\n run(dateString, token, match, options) {\n const result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority,\n ),\n rest: result.rest,\n };\n }\n\n validate(_utcDate, _value, _options) {\n return true;\n }\n}\n","import { Parser } from \"../Parser.js\";\n\nexport class EraParser extends Parser {\n priority = 140;\n\n parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return (\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n\n // A, B\n case \"GGGGG\":\n return match.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return (\n match.era(dateString, { width: \"wide\" }) ||\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n }\n }\n\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n","export const numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n millisecondsInSecond,\n} from \"../../constants.js\";\n\nimport { numericPatterns } from \"./constants.js\";\n\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest,\n };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1),\n };\n }\n\n const sign = matchResult[1] === \"+\" ? 1 : -1;\n const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value:\n sign *\n (hours * millisecondsInHour +\n minutes * millisecondsInMinute +\n seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case \"morning\":\n return 4;\n case \"evening\":\n return 17;\n case \"pm\":\n case \"noon\":\n case \"afternoon\":\n return 12;\n case \"am\":\n case \"midnight\":\n case \"night\":\n default:\n return 0;\n }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n priority = 130;\n incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"yy\",\n });\n\n switch (token) {\n case \"y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { getWeekYear } from \"../../../getWeekYear.js\";\n\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"YY\",\n });\n\n switch (token) {\n case \"Y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value, options) {\n const currentYear = getWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate,\n );\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n\n incompatibleTokens = [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\nexport class ExtendedYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class QuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class StandAloneQuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MonthParser extends Parser {\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // J, F, ..., D\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class StandAloneMonthParser extends Parser {\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // J, F, ..., D\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { getWeek } from \"./getWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n const date_ = toDate(date, options?.in);\n const diff = getWeek(date_, options) - week;\n date_.setDate(date_.getDate() - diff * 7);\n return toDate(date_, options?.in);\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n","import { setWeek } from \"../../../setWeek.js\";\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"wo\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { getISOWeek } from \"./getISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISOWeek} function options.\n */\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The `Date` type of the context function.\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week, options) {\n const _date = toDate(date, options?.in);\n const diff = getISOWeek(_date, options) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n","import { setISOWeek } from \"../../../setISOWeek.js\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"Io\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.js\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n priority = 90;\n subPriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n case \"do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n const month = date.getMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.js\";\n\nexport class DayOfYearParser extends Parser {\n priority = 90;\n\n subpriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case \"Do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { addDays } from \"./addDays.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const date_ = toDate(date, options?.in);\n const currentDay = date_.getDay();\n\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n\n const delta = 7 - weekStartsOn;\n const diff =\n day < 0 || day > 6\n ? day - ((currentDay + delta) % 7)\n : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\n// Day of week\nexport class DayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"EEEE\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"e\":\n case \"ee\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"eee\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"eeee\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"c\":\n case \"cc\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"ccc\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // T\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return (\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // Tuesday\n case \"cccc\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\",\n ];\n}\n","import { addDays } from \"./addDays.js\";\nimport { getISODay } from \"./getISODay.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISODay} function options.\n */\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday, etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day, options) {\n const date_ = toDate(date, options?.in);\n const currentDay = getISODay(date_, options);\n const diff = day - currentDay;\n return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n","import { setISODay } from \"../../../setISODay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n\n switch (token) {\n // 2\n case \"i\":\n case \"ii\": // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case \"io\":\n return match.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return mapValue(\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // T\n case \"iiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tu\n case \"iiiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tuesday\n case \"iiii\":\n default:\n return mapValue(\n match.day(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n\n set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMMidnightParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1to12Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case \"ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0to23Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case \"Ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0To11Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case \"Ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1To24Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case \"ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n\n set(date, _flags, value) {\n const hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MinuteParser extends Parser {\n priority = 60;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n case \"mo\":\n return match.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class SecondParser extends Parser {\n priority = 50;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n case \"so\":\n return match.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\nexport class FractionOfSecondParser extends Parser {\n priority = 30;\n\n parse(dateString, token) {\n const valueCallback = (value) =>\n Math.trunc(value * Math.pow(10, -token.length + 3));\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"X\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"XXXXX\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"x\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"xxxxx\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampSecondsParser extends Parser {\n priority = 40;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampMillisecondsParser extends Parser {\n priority = 20;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { EraParser } from \"./parsers/EraParser.js\";\nimport { YearParser } from \"./parsers/YearParser.js\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.js\";\nimport { QuarterParser } from \"./parsers/QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./parsers/MonthParser.js\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.js\";\nimport { DateParser } from \"./parsers/DateParser.js\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.js\";\nimport { DayParser } from \"./parsers/DayParser.js\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./parsers/ISODayParser.js\";\nimport { AMPMParser } from \"./parsers/AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.js\";\nimport { MinuteParser } from \"./parsers/MinuteParser.js\";\nimport { SecondParser } from \"./parsers/SecondParser.js\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport const parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser(),\n};\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getDefaultOptions } from \"./getDefaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\nimport { DateTimezoneSetter } from \"./parse/_lib/Setter.js\";\nimport { parsers } from \"./parse/_lib/parsers.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangeably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n const invalidDate = () => constructFrom(options?.in || referenceDate, NaN);\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n if (!formatStr)\n return dateStr ? invalidDate() : toDate(referenceDate, options?.in);\n\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n // If timezone isn't specified, it will try to use the context or\n // the reference date and fallback to the system time zone.\n const setters = [new DateTimezoneSetter(options?.in, referenceDate)];\n\n const tokens = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp);\n\n const usedTokens = [];\n\n for (let token of tokens) {\n if (\n !options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n if (\n !options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n\n const firstCharacter = token[0];\n const parser = parsers[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) =>\n incompatibleTokens.includes(usedToken.token) ||\n usedToken.token === firstCharacter,\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n );\n }\n\n usedTokens.push({ token: firstCharacter, fullToken: token });\n\n const parseResult = parser.run(\n dateStr,\n token,\n locale.match,\n subFnOptions,\n );\n\n if (!parseResult) {\n return invalidDate();\n }\n\n setters.push(parseResult.setter);\n\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return invalidDate();\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return invalidDate();\n }\n\n const uniquePrioritySetters = setters\n .map((setter) => setter.priority)\n .sort((a, b) => b - a)\n .filter((priority, index, array) => array.indexOf(priority) === index)\n .map((priority) =>\n setters\n .filter((setter) => setter.priority === priority)\n .sort((a, b) => b.subPriority - a.subPriority),\n )\n .map((setterArray) => setterArray[0]);\n\n let date = toDate(referenceDate, options?.in);\n\n if (isNaN(+date)) return invalidDate();\n\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return invalidDate();\n }\n\n const result = setter.set(date, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n // Result is date\n } else {\n date = result;\n }\n }\n\n return date;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfQuarter } from \"./startOfQuarter.js\";\n\n/**\n * The {@link isSameQuarter} function options.\n */\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same quarter (and year)\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport function isSameQuarter(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfQuarter(dateLeft_) === +startOfQuarter(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameQuarter;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getDaysInMonth } from \"./getDaysInMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMonth} function options.\n */\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param month - The month index to set (0-11)\n * @param options - The options\n *\n * @returns The new date with the month set\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport function setMonth(date, month, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n const day = _date.getDate();\n\n const midMonth = constructFrom(options?.in || date, 0);\n midMonth.setFullYear(year, month, 15);\n midMonth.setHours(0, 0, 0, 0);\n const daysInMonth = getDaysInMonth(midMonth);\n\n // Set the earlier date, allows to wrap Jan 31 to Feb 28\n _date.setMonth(month, Math.min(day, daysInMonth));\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setMonth;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { setMonth } from \"./setMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link set} function options.\n */\n\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param values - The date values to be set\n * @param options - The options\n *\n * @returns The new date with options set\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport function set(date, values, options) {\n let _date = toDate(date, options?.in);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(+_date)) return constructFrom(options?.in || date, NaN);\n\n if (values.year != null) _date.setFullYear(values.year);\n if (values.month != null) _date = setMonth(_date, values.month);\n if (values.date != null) _date.setDate(values.date);\n if (values.hours != null) _date.setHours(values.hours);\n if (values.minutes != null) _date.setMinutes(values.minutes);\n if (values.seconds != null) _date.setSeconds(values.seconds);\n if (values.milliseconds != null) _date.setMilliseconds(values.milliseconds);\n\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default set;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setHours} function options.\n */\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param hours - The hours of the new date\n * @param options - An object with options\n *\n * @returns The new date with the hours set\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport function setHours(date, hours, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(hours);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMilliseconds} function options.\n */\n\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param milliseconds - The milliseconds of the new date\n * @param options - The options\n *\n * @returns The new date with the milliseconds set\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * const result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport function setMilliseconds(date, milliseconds, options) {\n const _date = toDate(date, options?.in);\n _date.setMilliseconds(milliseconds);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setMilliseconds;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMinutes} function options.\n */\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, returned from the context function, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param minutes - The minutes of the new date\n * @param options - An object with options\n *\n * @returns The new date with the minutes set\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport function setMinutes(date, minutes, options) {\n const date_ = toDate(date, options?.in);\n date_.setMinutes(minutes);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default setMinutes;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setSeconds} function options.\n */\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date, with context support.\n *\n * @description\n * Set the seconds to the given date, with an optional context for time zone specification.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param seconds - The seconds of the new date\n * @param options - An object with options\n *\n * @returns The new date with the seconds set\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport function setSeconds(date, seconds, options) {\n const _date = toDate(date, options?.in);\n _date.setSeconds(seconds);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setSeconds;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setYear} function options.\n */\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param year - The year of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the year set\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport function setYear(date, year, options) {\n const date_ = toDate(date, options?.in);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(+date_)) return constructFrom(options?.in || date, NaN);\n\n date_.setFullYear(year);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default setYear;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { subDays } from \"./subDays.js\";\nimport { subMonths } from \"./subMonths.js\";\n\n/**\n * The {@link sub} function options.\n */\n\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n * @param options - An object with options\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns The new date with the seconds subtracted\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport function sub(date, duration, options) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n const withoutMonths = subMonths(date, months + years * 12, options);\n const withoutDays = subDays(withoutMonths, days + weeks * 7, options);\n\n const minutesToSub = minutes + hours * 60;\n const secondsToSub = seconds + minutesToSub * 60;\n const msToSub = secondsToSub * 1000;\n\n return constructFrom(options?.in || date, +withoutDays - msToSub);\n}\n\n// Fallback for modularized imports:\nexport default sub;\n","import { addYears } from \"./addYears.js\";\n\n/**\n * The {@link subYears} function options.\n */\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport function subYears(date, amount, options) {\n return addYears(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subYears;\n","import { useAttrs as Jn, createElementBlock as W, openBlock as w, createElementVNode as he, unref as s, reactive as ea, computed as j, ref as Z, toRef as qt, watch as rt, defineComponent as We, onMounted as Ue, onUnmounted as Ut, renderSlot as ie, normalizeProps as ze, mergeProps as He, Fragment as ke, createCommentVNode as Q, normalizeStyle as lt, createTextVNode as gt, toDisplayString as Ke, onBeforeUpdate as Zn, nextTick as at, withModifiers as Xt, normalizeClass as De, withDirectives as ua, renderList as Ce, vShow as ia, createVNode as tt, createBlock as Te, withCtx as we, withKeys as xn, Transition as Vt, createSlots as Ge, useSlots as Yt, guardReactiveProps as Je, resolveDynamicComponent as fa, toValue as el, h as tl, render as nn, getCurrentScope as al, onScopeDispose as nl, getCurrentInstance as ll, isRef as ln, Teleport as rl } from \"vue\";\nimport { format as ft, isEqual as Nt, isValid as da, addMonths as Ct, subMonths as Jt, getMonth as Me, getYear as ye, set as Se, startOfMonth as ol, setMonth as sl, setYear as ut, isAfter as _t, isBefore as Ft, eachDayOfInterval as bn, getSeconds as zt, getMinutes as $t, getHours as yt, startOfWeek as Wa, endOfWeek as kn, setHours as ul, setMinutes as il, setSeconds as wn, setMilliseconds as Dn, parse as Na, isDate as dl, subDays as cl, addDays as kt, addHours as fl, addYears as Mn, subYears as $n, endOfYear as An, startOfYear as Gt, differenceInYears as vl, add as Tn, sub as ml, getWeek as pl, getISOWeek as gl, isSameQuarter as rn, eachQuarterOfInterval as yl, startOfQuarter as hl, endOfQuarter as on, getQuarter as sn, differenceInCalendarDays as bl, getDay as kl } from \"date-fns\";\nfunction jt() {\n const e = Jn();\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\",\n ...e\n },\n [\n he(\"path\", {\n d: \"M29.333 8c0-2.208-1.792-4-4-4h-18.667c-2.208 0-4 1.792-4 4v18.667c0 2.208 1.792 4 4 4h18.667c2.208 0 4-1.792 4-4v-18.667zM26.667 8v18.667c0 0.736-0.597 1.333-1.333 1.333 0 0-18.667 0-18.667 0-0.736 0-1.333-0.597-1.333-1.333 0 0 0-18.667 0-18.667 0-0.736 0.597-1.333 1.333-1.333 0 0 18.667 0 18.667 0 0.736 0 1.333 0.597 1.333 1.333z\"\n }),\n he(\"path\", {\n d: \"M20 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n }),\n he(\"path\", {\n d: \"M9.333 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n }),\n he(\"path\", {\n d: \"M4 14.667h24c0.736 0 1.333-0.597 1.333-1.333s-0.597-1.333-1.333-1.333h-24c-0.736 0-1.333 0.597-1.333 1.333s0.597 1.333 1.333 1.333z\"\n })\n ]\n );\n}\njt.compatConfig = {\n MODE: 3\n};\nfunction Sn() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n }),\n he(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n })\n ]\n );\n}\nSn.compatConfig = {\n MODE: 3\n};\nfunction Ua() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M20.943 23.057l-7.057-7.057c0 0 7.057-7.057 7.057-7.057 0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-8 8c-0.521 0.521-0.521 1.365 0 1.885l8 8c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z\"\n })\n ]\n );\n}\nUa.compatConfig = {\n MODE: 3\n};\nfunction Va() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M12.943 24.943l8-8c0.521-0.521 0.521-1.365 0-1.885l-8-8c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885l7.057 7.057c0 0-7.057 7.057-7.057 7.057-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0z\"\n })\n ]\n );\n}\nVa.compatConfig = {\n MODE: 3\n};\nfunction ja() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M16 1.333c-8.095 0-14.667 6.572-14.667 14.667s6.572 14.667 14.667 14.667c8.095 0 14.667-6.572 14.667-14.667s-6.572-14.667-14.667-14.667zM16 4c6.623 0 12 5.377 12 12s-5.377 12-12 12c-6.623 0-12-5.377-12-12s5.377-12 12-12z\"\n }),\n he(\"path\", {\n d: \"M14.667 8v8c0 0.505 0.285 0.967 0.737 1.193l5.333 2.667c0.658 0.329 1.46 0.062 1.789-0.596s0.062-1.46-0.596-1.789l-4.596-2.298c0 0 0-7.176 0-7.176 0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n })\n ]\n );\n}\nja.compatConfig = {\n MODE: 3\n};\nfunction Ka() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M24.943 19.057l-8-8c-0.521-0.521-1.365-0.521-1.885 0l-8 8c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l7.057-7.057c0 0 7.057 7.057 7.057 7.057 0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z\"\n })\n ]\n );\n}\nKa.compatConfig = {\n MODE: 3\n};\nfunction Ga() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M7.057 12.943l8 8c0.521 0.521 1.365 0.521 1.885 0l8-8c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-7.057 7.057c0 0-7.057-7.057-7.057-7.057-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n })\n ]\n );\n}\nGa.compatConfig = {\n MODE: 3\n};\nconst Ze = (e, t) => t ? new Date(e.toLocaleString(\"en-US\", { timeZone: t })) : new Date(e), Qa = (e, t, l) => {\n const n = La(e, t, l);\n return n || H();\n}, wl = (e, t, l) => {\n const n = t.dateInTz ? Ze(new Date(e), t.dateInTz) : H(e);\n return l ? Fe(n, !0) : n;\n}, La = (e, t, l) => {\n if (!e) return null;\n const n = l ? Fe(H(e), !0) : H(e);\n return t ? t.exactMatch ? wl(e, t, l) : Ze(n, t.timezone) : n;\n}, Dl = (e) => {\n const l = new Date(e.getFullYear(), 0, 1).getTimezoneOffset();\n return e.getTimezoneOffset() < l;\n}, Ml = (e, t) => {\n if (!e) return 0;\n const l = /* @__PURE__ */ new Date(), n = new Date(l.toLocaleString(\"en-US\", { timeZone: \"UTC\" })), a = new Date(l.toLocaleString(\"en-US\", { timeZone: e })), i = (Dl(t ?? a) ? a : t ?? a).getTimezoneOffset() / 60;\n return (+n - +a) / (1e3 * 60 * 60) - i;\n};\nvar ot = /* @__PURE__ */ ((e) => (e.month = \"month\", e.year = \"year\", e))(ot || {}), st = /* @__PURE__ */ ((e) => (e.top = \"top\", e.bottom = \"bottom\", e))(st || {}), Ot = /* @__PURE__ */ ((e) => (e.header = \"header\", e.calendar = \"calendar\", e.timePicker = \"timePicker\", e))(Ot || {}), je = /* @__PURE__ */ ((e) => (e.month = \"month\", e.year = \"year\", e.calendar = \"calendar\", e.time = \"time\", e.minutes = \"minutes\", e.hours = \"hours\", e.seconds = \"seconds\", e))(je || {});\nconst $l = [\"timestamp\", \"date\", \"iso\"];\nvar Qe = /* @__PURE__ */ ((e) => (e.up = \"up\", e.down = \"down\", e.left = \"left\", e.right = \"right\", e))(Qe || {}), Re = /* @__PURE__ */ ((e) => (e.arrowUp = \"ArrowUp\", e.arrowDown = \"ArrowDown\", e.arrowLeft = \"ArrowLeft\", e.arrowRight = \"ArrowRight\", e.enter = \"Enter\", e.space = \" \", e.esc = \"Escape\", e.tab = \"Tab\", e.home = \"Home\", e.end = \"End\", e.pageUp = \"PageUp\", e.pageDown = \"PageDown\", e))(Re || {}), Lt = /* @__PURE__ */ ((e) => (e.MONTH_AND_YEAR = \"MM-yyyy\", e.YEAR = \"yyyy\", e.DATE = \"dd-MM-yyyy\", e))(Lt || {});\nfunction un(e) {\n return (t) => {\n const l = new Intl.DateTimeFormat(e, {\n weekday: \"short\",\n timeZone: \"UTC\"\n }).format(/* @__PURE__ */ new Date(`2017-01-0${t}T00:00:00+00:00`));\n return e === \"ar\" ? l.slice(2, 5) : l.slice(0, 2);\n };\n}\nfunction Al(e) {\n return (t) => ft(Ze(/* @__PURE__ */ new Date(`2017-01-0${t}T00:00:00+00:00`), \"UTC\"), \"EEEEEE\", { locale: e });\n}\nconst Tl = (e, t, l) => {\n const n = [1, 2, 3, 4, 5, 6, 7];\n let a;\n if (e !== null)\n try {\n a = n.map(Al(e));\n } catch {\n a = n.map(un(t));\n }\n else\n a = n.map(un(t));\n const f = a.slice(0, l), i = a.slice(l + 1, a.length);\n return [a[l]].concat(...i).concat(...f);\n}, qa = (e, t, l) => {\n const n = [];\n for (let a = +e[0]; a <= +e[1]; a++)\n n.push({ value: +a, text: Ja(a, t) });\n return l ? n.reverse() : n;\n}, Pn = (e, t, l) => {\n const n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].map((f) => {\n const i = f < 10 ? `0${f}` : f;\n return /* @__PURE__ */ new Date(`2017-${i}-01T00:00:00+00:00`);\n });\n if (e !== null)\n try {\n const f = l === \"long\" ? \"LLLL\" : \"LLL\";\n return n.map((i, g) => {\n const d = ft(Ze(i, \"UTC\"), f, { locale: e });\n return {\n text: d.charAt(0).toUpperCase() + d.substring(1),\n value: g\n };\n });\n } catch {\n }\n const a = new Intl.DateTimeFormat(t, { month: l, timeZone: \"UTC\" });\n return n.map((f, i) => {\n const g = a.format(f);\n return {\n text: g.charAt(0).toUpperCase() + g.substring(1),\n value: i\n };\n });\n}, Sl = (e) => [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11][e], Le = (e) => {\n const t = s(e);\n return t?.$el ? t?.$el : t;\n}, Pl = (e) => ({ type: \"dot\", ...e ?? {} }), Rn = (e) => Array.isArray(e) ? !!e[0] && !!e[1] : !1, Xa = {\n prop: (e) => `\"${e}\" prop must be enabled!`,\n dateArr: (e) => `You need to use array as \"model-value\" binding in order to support \"${e}\"`\n}, Ne = (e) => e, dn = (e) => e === 0 ? e : !e || isNaN(+e) ? null : +e, cn = (e) => e === null, Cn = (e) => {\n if (e)\n return [...e.querySelectorAll(\"input, button, select, textarea, a[href]\")][0];\n}, Rl = (e) => {\n const t = [], l = (n) => n.filter((a) => a);\n for (let n = 0; n < e.length; n += 3) {\n const a = [e[n], e[n + 1], e[n + 2]];\n t.push(l(a));\n }\n return t;\n}, Zt = (e, t, l) => {\n const n = l != null, a = t != null;\n if (!n && !a) return !1;\n const f = +l, i = +t;\n return n && a ? +e > f || +e < i : n ? +e > f : a ? +e < i : !1;\n}, Ht = (e, t) => Rl(e).map((l) => l.map((n) => {\n const { active: a, disabled: f, isBetween: i, highlighted: g } = t(n);\n return {\n ...n,\n active: a,\n disabled: f,\n className: {\n dp__overlay_cell_active: a,\n dp__overlay_cell: !a,\n dp__overlay_cell_disabled: f,\n dp__overlay_cell_pad: !0,\n dp__overlay_cell_active_disabled: f && a,\n dp__cell_in_between: i,\n \"dp--highlighted\": g\n }\n };\n})), Dt = (e, t, l = !1) => {\n e && t.allowStopPropagation && (l && e.stopImmediatePropagation(), e.stopPropagation());\n}, Cl = () => [\n \"a[href]\",\n \"area[href]\",\n \"input:not([disabled]):not([type='hidden'])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"button:not([disabled])\",\n \"[tabindex]:not([tabindex='-1'])\",\n \"[data-datepicker-instance]\"\n].join(\", \");\nfunction Ol(e, t) {\n let l = [...document.querySelectorAll(Cl())];\n l = l.filter((a) => !e.contains(a) || a.hasAttribute(\"data-datepicker-instance\"));\n const n = l.indexOf(e);\n if (n >= 0 && (t ? n - 1 >= 0 : n + 1 <= l.length))\n return l[n + (t ? -1 : 1)];\n}\nconst Fa = (e, t) => e?.querySelector(`[data-dp-element=\"${t}\"]`), Ja = (e, t) => new Intl.NumberFormat(t, { useGrouping: !1, style: \"decimal\" }).format(e), Za = (e, t) => ft(e, t ?? Lt.DATE), Ta = (e) => Array.isArray(e), ca = (e, t, l) => t.get(Za(e, l)), Bl = (e, t) => e ? t ? t instanceof Map ? !!ca(e, t) : t(H(e)) : !1 : !0, qe = (e, t, l = !1, n) => {\n if (e.key === Re.enter || e.key === Re.space)\n return l && e.preventDefault(), t();\n if (n) return n(e);\n}, _l = () => \"ontouchstart\" in window || navigator.maxTouchPoints > 0, On = (e, t) => e ? Lt.MONTH_AND_YEAR : t ? Lt.YEAR : Lt.DATE, Bn = (e) => e < 10 ? `0${e}` : e, fn = (e, t, l, n, a, f) => {\n const i = Na(e, t.slice(0, e.length), /* @__PURE__ */ new Date(), { locale: f });\n return da(i) && dl(i) ? n || a ? i : Se(i, {\n hours: +l.hours,\n minutes: +l?.minutes,\n seconds: +l?.seconds,\n milliseconds: 0\n }) : null;\n}, Yl = (e, t, l, n, a, f) => {\n const i = Array.isArray(l) ? l[0] : l;\n if (typeof t == \"string\")\n return fn(e, t, i, n, a, f);\n if (Array.isArray(t)) {\n let g = null;\n for (const d of t)\n if (g = fn(e, d, i, n, a, f), g)\n break;\n return g;\n }\n return typeof t == \"function\" ? t(e) : null;\n}, H = (e) => e ? new Date(e) : /* @__PURE__ */ new Date(), Il = (e, t, l) => {\n if (t) {\n const a = (e.getMonth() + 1).toString().padStart(2, \"0\"), f = e.getDate().toString().padStart(2, \"0\"), i = e.getHours().toString().padStart(2, \"0\"), g = e.getMinutes().toString().padStart(2, \"0\"), d = l ? e.getSeconds().toString().padStart(2, \"0\") : \"00\";\n return `${e.getFullYear()}-${a}-${f}T${i}:${g}:${d}.000Z`;\n }\n const n = Date.UTC(\n e.getUTCFullYear(),\n e.getUTCMonth(),\n e.getUTCDate(),\n e.getUTCHours(),\n e.getUTCMinutes(),\n e.getUTCSeconds()\n );\n return new Date(n).toISOString();\n}, Fe = (e, t) => {\n const l = H(JSON.parse(JSON.stringify(e))), n = Se(l, { hours: 0, minutes: 0, seconds: 0, milliseconds: 0 });\n return t ? ol(n) : n;\n}, Mt = (e, t, l, n) => {\n let a = e ? H(e) : H();\n return (t || t === 0) && (a = ul(a, +t)), (l || l === 0) && (a = il(a, +l)), (n || n === 0) && (a = wn(a, +n)), Dn(a, 0);\n}, Be = (e, t) => !e || !t ? !1 : Ft(Fe(e), Fe(t)), $e = (e, t) => !e || !t ? !1 : Nt(Fe(e), Fe(t)), Ee = (e, t) => !e || !t ? !1 : _t(Fe(e), Fe(t)), xt = (e, t, l) => e?.[0] && e?.[1] ? Ee(l, e[0]) && Be(l, e[1]) : e?.[0] && t ? Ee(l, e[0]) && Be(l, t) || Be(l, e[0]) && Ee(l, t) : !1, it = (e) => {\n const t = Se(new Date(e), { date: 1 });\n return Fe(t);\n}, Sa = (e, t, l) => t && (l || l === 0) ? Object.fromEntries(\n [\"hours\", \"minutes\", \"seconds\"].map((n) => n === t ? [n, l] : [n, isNaN(+e[n]) ? void 0 : +e[n]])\n) : {\n hours: isNaN(+e.hours) ? void 0 : +e.hours,\n minutes: isNaN(+e.minutes) ? void 0 : +e.minutes,\n seconds: isNaN(+e.seconds) ? void 0 : +e.seconds\n}, Bt = (e) => ({\n hours: yt(e),\n minutes: $t(e),\n seconds: zt(e)\n}), _n = (e, t) => {\n if (t) {\n const l = ye(H(t));\n if (l > e) return 12;\n if (l === e) return Me(H(t));\n }\n}, Yn = (e, t) => {\n if (t) {\n const l = ye(H(t));\n return l < e ? -1 : l === e ? Me(H(t)) : void 0;\n }\n}, Wt = (e) => {\n if (e) return ye(H(e));\n}, In = (e, t) => {\n const l = Ee(e, t) ? t : e, n = Ee(t, e) ? t : e;\n return bn({ start: l, end: n });\n}, El = (e) => {\n const t = Ct(e, 1);\n return { month: Me(t), year: ye(t) };\n}, mt = (e, t) => {\n const l = Wa(e, { weekStartsOn: +t }), n = kn(e, { weekStartsOn: +t });\n return [l, n];\n}, En = (e, t) => {\n const l = {\n hours: yt(H()),\n minutes: $t(H()),\n seconds: t ? zt(H()) : 0\n };\n return Object.assign(l, e);\n}, wt = (e, t, l) => [Se(H(e), { date: 1 }), Se(H(), { month: t, year: l, date: 1 })], pt = (e, t, l) => {\n let n = e ? H(e) : H();\n return (t || t === 0) && (n = sl(n, t)), l && (n = ut(n, l)), n;\n}, Nn = (e, t, l, n, a) => {\n if (!n || a && !t || !a && !l) return !1;\n const f = a ? Ct(e, 1) : Jt(e, 1), i = [Me(f), ye(f)];\n return a ? !Ll(...i, t) : !Nl(...i, l);\n}, Nl = (e, t, l) => Be(...wt(l, e, t)) || $e(...wt(l, e, t)), Ll = (e, t, l) => Ee(...wt(l, e, t)) || $e(...wt(l, e, t)), Ln = (e, t, l, n, a, f, i) => {\n if (typeof t == \"function\" && !i) return t(e);\n const g = l ? { locale: l } : void 0;\n return Array.isArray(e) ? `${ft(e[0], f, g)}${a && !e[1] ? \"\" : n}${e[1] ? ft(e[1], f, g) : \"\"}` : ft(e, f, g);\n}, It = (e) => {\n if (e) return null;\n throw new Error(Xa.prop(\"partial-range\"));\n}, oa = (e, t) => {\n if (t) return e();\n throw new Error(Xa.prop(\"range\"));\n}, za = (e) => Array.isArray(e) ? da(e[0]) && (e[1] ? da(e[1]) : !0) : e ? da(e) : !1, Fl = (e, t) => Se(t ?? H(), {\n hours: +e.hours || 0,\n minutes: +e.minutes || 0,\n seconds: +e.seconds || 0\n}), Pa = (e, t, l, n) => {\n if (!e) return !0;\n if (n) {\n const a = l === \"max\" ? Ft(e, t) : _t(e, t), f = { seconds: 0, milliseconds: 0 };\n return a || Nt(Se(e, f), Se(t, f));\n }\n return l === \"max\" ? e.getTime() <= t.getTime() : e.getTime() >= t.getTime();\n}, Ra = (e, t, l) => e ? Fl(e, t) : H(l ?? t), vn = (e, t, l, n, a) => {\n if (Array.isArray(n)) {\n const i = Ra(e, n[0], t), g = Ra(e, n[1], t);\n return Pa(n[0], i, l, !!t) && Pa(n[1], g, l, !!t) && a;\n }\n const f = Ra(e, n, t);\n return Pa(n, f, l, !!t) && a;\n}, Ca = (e) => Se(H(), Bt(e)), zl = (e, t, l) => {\n if (e instanceof Map) {\n const n = `${Bn(l + 1)}-${t}`;\n return e.size ? e.has(n) : !1;\n }\n return typeof e == \"function\" ? e(Fe(Se(H(), { month: l, year: t }), !0)) : !1;\n}, Hl = (e, t, l) => {\n if (e instanceof Map) {\n const n = `${Bn(l + 1)}-${t}`;\n return e.size ? e.has(n) : !0;\n }\n return !0;\n}, Fn = (e, t, l) => typeof e == \"function\" ? e({ month: t, year: l }) : !!e.months.find((n) => n.month === t && n.year === l), xa = (e, t) => typeof e == \"function\" ? e(t) : e.years.includes(t), Ha = (e) => `dp-${ft(e, \"yyyy-MM-dd\")}`, mn = (e, t) => {\n const l = cl(Fe(t), e), n = kt(Fe(t), e);\n return { before: l, after: n };\n}, zn = (e, t) => t < +e[0] || t > +e[1], Kt = ea({\n menuFocused: !1,\n shiftKeyInMenu: !1\n}), Hn = () => {\n const e = (n) => {\n Kt.menuFocused = n;\n }, t = (n) => {\n Kt.shiftKeyInMenu !== n && (Kt.shiftKeyInMenu = n);\n };\n return {\n control: j(() => ({ shiftKeyInMenu: Kt.shiftKeyInMenu, menuFocused: Kt.menuFocused })),\n setMenuFocused: e,\n setShiftKey: t\n };\n}, Pe = ea({\n monthYear: [],\n calendar: [],\n time: [],\n actionRow: [],\n selectionGrid: [],\n timePicker: {\n 0: [],\n 1: []\n },\n monthPicker: []\n}), Oa = Z(null), sa = Z(!1), Ba = Z(!1), _a = Z(!1), Ya = Z(!1), Ve = Z(0), Ie = Z(0), At = () => {\n const e = j(() => sa.value ? [...Pe.selectionGrid, Pe.actionRow].filter((M) => M.length) : Ba.value ? [\n ...Pe.timePicker[0],\n ...Pe.timePicker[1],\n Ya.value ? [] : [Oa.value],\n Pe.actionRow\n ].filter((M) => M.length) : _a.value ? [...Pe.monthPicker, Pe.actionRow] : [Pe.monthYear, ...Pe.calendar, Pe.time, Pe.actionRow].filter((M) => M.length)), t = (M) => {\n Ve.value = M ? Ve.value + 1 : Ve.value - 1;\n let A = null;\n e.value[Ie.value] && (A = e.value[Ie.value][Ve.value]), !A && e.value[Ie.value + (M ? 1 : -1)] ? (Ie.value = Ie.value + (M ? 1 : -1), Ve.value = M ? 0 : e.value[Ie.value].length - 1) : A || (Ve.value = M ? Ve.value - 1 : Ve.value + 1);\n }, l = (M) => {\n if (Ie.value === 0 && !M || Ie.value === e.value.length && M) return;\n Ie.value = M ? Ie.value + 1 : Ie.value - 1, e.value[Ie.value] ? e.value[Ie.value] && !e.value[Ie.value][Ve.value] && Ve.value !== 0 && (Ve.value = e.value[Ie.value].length - 1) : Ie.value = M ? Ie.value - 1 : Ie.value + 1;\n }, n = (M) => {\n let A = null;\n e.value[Ie.value] && (A = e.value[Ie.value][Ve.value]), A ? A.focus({ preventScroll: !sa.value }) : Ve.value = M ? Ve.value - 1 : Ve.value + 1;\n }, a = () => {\n t(!0), n(!0);\n }, f = () => {\n t(!1), n(!1);\n }, i = () => {\n l(!1), n(!0);\n }, g = () => {\n l(!0), n(!0);\n }, d = (M, A) => {\n Pe[A] = M;\n }, P = (M, A) => {\n Pe[A] = M;\n }, v = () => {\n Ve.value = 0, Ie.value = 0;\n };\n return {\n buildMatrix: d,\n buildMultiLevelMatrix: P,\n setTimePickerBackRef: (M) => {\n Oa.value = M;\n },\n setSelectionGrid: (M) => {\n sa.value = M, v(), M || (Pe.selectionGrid = []);\n },\n setTimePicker: (M, A = !1) => {\n Ba.value = M, Ya.value = A, v(), M || (Pe.timePicker[0] = [], Pe.timePicker[1] = []);\n },\n setTimePickerElements: (M, A = 0) => {\n Pe.timePicker[A] = M;\n },\n arrowRight: a,\n arrowLeft: f,\n arrowUp: i,\n arrowDown: g,\n clearArrowNav: () => {\n Pe.monthYear = [], Pe.calendar = [], Pe.time = [], Pe.actionRow = [], Pe.selectionGrid = [], Pe.timePicker[0] = [], Pe.timePicker[1] = [], sa.value = !1, Ba.value = !1, Ya.value = !1, _a.value = !1, v(), Oa.value = null;\n },\n setMonthPicker: (M) => {\n _a.value = M, v();\n },\n refSets: Pe\n // exposed for testing\n };\n}, pn = (e) => ({\n menuAppearTop: \"dp-menu-appear-top\",\n menuAppearBottom: \"dp-menu-appear-bottom\",\n open: \"dp-slide-down\",\n close: \"dp-slide-up\",\n next: \"calendar-next\",\n previous: \"calendar-prev\",\n vNext: \"dp-slide-up\",\n vPrevious: \"dp-slide-down\",\n ...e ?? {}\n}), Wl = (e) => ({\n toggleOverlay: \"Toggle overlay\",\n menu: \"Datepicker menu\",\n input: \"Datepicker input\",\n openTimePicker: \"Open time picker\",\n closeTimePicker: \"Close time Picker\",\n incrementValue: (t) => `Increment ${t}`,\n decrementValue: (t) => `Decrement ${t}`,\n openTpOverlay: (t) => `Open ${t} overlay`,\n amPmButton: \"Switch AM/PM mode\",\n openYearsOverlay: \"Open years overlay\",\n openMonthsOverlay: \"Open months overlay\",\n nextMonth: \"Next month\",\n prevMonth: \"Previous month\",\n nextYear: \"Next year\",\n prevYear: \"Previous year\",\n day: void 0,\n weekDay: void 0,\n clearInput: \"Clear value\",\n calendarIcon: \"Calendar icon\",\n timePicker: \"Time picker\",\n monthPicker: (t) => `Month picker${t ? \" overlay\" : \"\"}`,\n yearPicker: (t) => `Year picker${t ? \" overlay\" : \"\"}`,\n timeOverlay: (t) => `${t} overlay`,\n ...e ?? {}\n}), gn = (e) => e ? typeof e == \"boolean\" ? e ? 2 : 0 : +e >= 2 ? +e : 2 : 0, Ul = (e) => {\n const t = typeof e == \"object\" && e, l = {\n static: !0,\n solo: !1\n };\n if (!e) return { ...l, count: gn(!1) };\n const n = t ? e : {}, a = t ? n.count ?? !0 : e, f = gn(a);\n return Object.assign(l, n, { count: f });\n}, Vl = (e, t, l) => e || (typeof l == \"string\" ? l : t), jl = (e) => typeof e == \"boolean\" ? e ? pn({}) : !1 : pn(e), Kl = (e) => {\n const t = {\n enterSubmit: !0,\n tabSubmit: !0,\n openMenu: \"open\",\n selectOnFocus: !1,\n rangeSeparator: \" - \",\n escClose: !0\n };\n return typeof e == \"object\" ? { ...t, ...e ?? {}, enabled: !0 } : { ...t, enabled: e };\n}, Gl = (e) => ({\n months: [],\n years: [],\n times: { hours: [], minutes: [], seconds: [] },\n ...e ?? {}\n}), Ql = (e) => ({\n showSelect: !0,\n showCancel: !0,\n showNow: !1,\n showPreview: !0,\n ...e ?? {}\n}), ql = (e) => {\n const t = { input: !1 };\n return typeof e == \"object\" ? { ...t, ...e ?? {}, enabled: !0 } : {\n enabled: e,\n ...t\n };\n}, Xl = (e) => ({ ...{\n allowStopPropagation: !0,\n closeOnScroll: !1,\n modeHeight: 255,\n allowPreventDefault: !1,\n closeOnClearValue: !0,\n closeOnAutoApply: !0,\n noSwipe: !1,\n keepActionRow: !1,\n onClickOutside: void 0,\n tabOutClosesMenu: !0,\n arrowLeft: void 0,\n keepViewOnOffsetClick: !1,\n timeArrowHoldThreshold: 0,\n shadowDom: !1,\n mobileBreakpoint: 600,\n setDateOnMenuClose: !1\n}, ...e ?? {} }), Jl = (e) => {\n const t = {\n dates: Array.isArray(e) ? e.map((l) => H(l)) : [],\n years: [],\n months: [],\n quarters: [],\n weeks: [],\n weekdays: [],\n options: { highlightDisabled: !1 }\n };\n return typeof e == \"function\" ? e : { ...t, ...e ?? {} };\n}, Zl = (e) => typeof e == \"object\" ? {\n type: e?.type ?? \"local\",\n hideOnOffsetDates: e?.hideOnOffsetDates ?? !1\n} : {\n type: e,\n hideOnOffsetDates: !1\n}, xl = (e) => {\n const t = {\n noDisabledRange: !1,\n showLastInRange: !0,\n minMaxRawRange: !1,\n partialRange: !0,\n disableTimeRangeValidation: !1,\n maxRange: void 0,\n minRange: void 0,\n autoRange: void 0,\n fixedStart: !1,\n fixedEnd: !1\n };\n return typeof e == \"object\" ? { enabled: !0, ...t, ...e } : {\n enabled: e,\n ...t\n };\n}, er = (e) => e ? typeof e == \"string\" ? {\n timezone: e,\n exactMatch: !1,\n dateInTz: void 0,\n emitTimezone: void 0,\n convertModel: !0\n} : {\n timezone: e.timezone,\n exactMatch: e.exactMatch ?? !1,\n dateInTz: e.dateInTz ?? void 0,\n emitTimezone: e.emitTimezone ?? void 0,\n convertModel: e.convertModel ?? !0\n} : { timezone: void 0, exactMatch: !1, emitTimezone: void 0 }, Ia = (e, t, l, n) => new Map(\n e.map((a) => {\n const f = Qa(a, t, n);\n return [Za(f, l), f];\n })\n), tr = (e, t) => e.length ? new Map(\n e.map((l) => {\n const n = Qa(l.date, t);\n return [Za(n, Lt.DATE), l];\n })\n) : null, ar = (e) => {\n const t = On(e.isMonthPicker, e.isYearPicker);\n return {\n minDate: La(e.minDate, e.timezone, e.isSpecific),\n maxDate: La(e.maxDate, e.timezone, e.isSpecific),\n disabledDates: Ta(e.disabledDates) ? Ia(e.disabledDates, e.timezone, t, e.isSpecific) : e.disabledDates,\n allowedDates: Ta(e.allowedDates) ? Ia(e.allowedDates, e.timezone, t, e.isSpecific) : null,\n highlight: typeof e.highlight == \"object\" && Ta(e.highlight?.dates) ? Ia(e.highlight.dates, e.timezone, t) : e.highlight,\n markers: tr(e.markers, e.timezone)\n };\n}, nr = (e) => typeof e == \"boolean\" ? { enabled: e, dragSelect: !0, limit: null } : {\n enabled: !!e,\n limit: e.limit ? +e.limit : null,\n dragSelect: e.dragSelect ?? !0\n}, lr = (e) => ({\n ...Object.fromEntries(\n Object.keys(e).map((l) => {\n const n = l, a = e[n], f = typeof e[n] == \"string\" ? { [a]: !0 } : Object.fromEntries(a.map((i) => [i, !0]));\n return [l, f];\n })\n )\n}), Oe = (e) => {\n const t = () => {\n const U = e.enableSeconds ? \":ss\" : \"\", $ = e.enableMinutes ? \":mm\" : \"\";\n return e.is24 ? `HH${$}${U}` : `hh${$}${U} aa`;\n }, l = () => e.format ? e.format : e.monthPicker ? \"MM/yyyy\" : e.timePicker ? t() : e.weekPicker ? `${C.value?.type === \"iso\" ? \"II\" : \"ww\"}-RR` : e.yearPicker ? \"yyyy\" : e.quarterPicker ? \"QQQ/yyyy\" : e.enableTimePicker ? `MM/dd/yyyy, ${t()}` : \"MM/dd/yyyy\", n = (U) => En(U, e.enableSeconds), a = () => z.value.enabled ? e.startTime && Array.isArray(e.startTime) ? [n(e.startTime[0]), n(e.startTime[1])] : null : e.startTime && !Array.isArray(e.startTime) ? n(e.startTime) : null, f = j(() => Ul(e.multiCalendars)), i = j(() => a()), g = j(() => Wl(e.ariaLabels)), d = j(() => Gl(e.filters)), P = j(() => jl(e.transitions)), v = j(() => Ql(e.actionRow)), R = j(\n () => Vl(e.previewFormat, e.format, l())\n ), h = j(() => Kl(e.textInput)), T = j(() => ql(e.inline)), F = j(() => Xl(e.config)), _ = j(() => Jl(e.highlight)), C = j(() => Zl(e.weekNumbers)), M = j(() => er(e.timezone)), A = j(() => nr(e.multiDates)), m = j(\n () => ar({\n minDate: e.minDate,\n maxDate: e.maxDate,\n disabledDates: e.disabledDates,\n allowedDates: e.allowedDates,\n highlight: _.value,\n markers: e.markers,\n timezone: M.value,\n isSpecific: e.monthPicker || e.yearPicker || e.quarterPicker,\n isMonthPicker: e.monthPicker,\n isYearPicker: e.yearPicker\n })\n ), z = j(() => xl(e.range)), L = j(() => lr(e.ui));\n return {\n defaultedTransitions: P,\n defaultedMultiCalendars: f,\n defaultedStartTime: i,\n defaultedAriaLabels: g,\n defaultedFilters: d,\n defaultedActionRow: v,\n defaultedPreviewFormat: R,\n defaultedTextInput: h,\n defaultedInline: T,\n defaultedConfig: F,\n defaultedHighlight: _,\n defaultedWeekNumbers: C,\n defaultedRange: z,\n propDates: m,\n defaultedTz: M,\n defaultedMultiDates: A,\n defaultedUI: L,\n getDefaultPattern: l,\n getDefaultStartTime: a,\n handleEventPropagation: (U) => {\n F.value.allowStopPropagation && U.stopPropagation(), F.value.allowPreventDefault && U.preventDefault();\n }\n };\n}, rr = (e, t, { isInputFocused: l, isTextInputDate: n }) => {\n const a = Z(), { defaultedTextInput: f, defaultedRange: i, defaultedTz: g, defaultedMultiDates: d, getDefaultPattern: P } = Oe(t), v = Z(\"\"), R = qt(t, \"format\"), h = qt(t, \"formatLocale\");\n rt(\n a,\n () => {\n typeof t.onInternalModelChange == \"function\" && e(\"internal-model-change\", a.value, x(!0));\n },\n { deep: !0 }\n ), rt(i, (o, X) => {\n o.enabled !== X.enabled && (a.value = null);\n }), rt(R, () => {\n S();\n });\n const T = (o) => g.value.timezone && g.value.convertModel ? Ze(o, g.value.timezone) : o, F = (o) => {\n if (g.value.timezone && g.value.convertModel) {\n const X = Ml(g.value.timezone, o);\n return fl(o, X);\n }\n return o;\n }, _ = (o, X, B = !1) => Ln(\n o,\n t.format,\n t.formatLocale,\n f.value.rangeSeparator,\n t.modelAuto,\n X ?? P(),\n B\n ), C = (o) => o ? t.modelType ? k(o) : {\n hours: yt(o),\n minutes: $t(o),\n seconds: t.enableSeconds ? zt(o) : 0\n } : null, M = (o) => t.modelType ? k(o) : { month: Me(o), year: ye(o) }, A = (o) => Array.isArray(o) ? d.value.enabled ? o.map((X) => m(X, ut(H(), X))) : oa(\n () => [\n ut(H(), o[0]),\n o[1] ? ut(H(), o[1]) : It(i.value.partialRange)\n ],\n i.value.enabled\n ) : ut(H(), +o), m = (o, X) => (typeof o == \"string\" || typeof o == \"number\") && t.modelType ? q(o) : X, z = (o) => Array.isArray(o) ? [\n m(\n o[0],\n Mt(null, +o[0].hours, +o[0].minutes, o[0].seconds)\n ),\n m(\n o[1],\n Mt(null, +o[1].hours, +o[1].minutes, o[1].seconds)\n )\n ] : m(o, Mt(null, o.hours, o.minutes, o.seconds)), L = (o) => {\n const X = Se(H(), { date: 1 });\n return Array.isArray(o) ? d.value.enabled ? o.map((B) => m(B, pt(X, +B.month, +B.year))) : oa(\n () => [\n m(o[0], pt(X, +o[0].month, +o[0].year)),\n m(\n o[1],\n o[1] ? pt(X, +o[1].month, +o[1].year) : It(i.value.partialRange)\n )\n ],\n i.value.enabled\n ) : m(o, pt(X, +o.month, +o.year));\n }, le = (o) => {\n if (Array.isArray(o))\n return o.map((X) => q(X));\n throw new Error(Xa.dateArr(\"multi-dates\"));\n }, U = (o) => {\n if (Array.isArray(o) && i.value.enabled) {\n const X = o[0], B = o[1];\n return [\n H(Array.isArray(X) ? X[0] : null),\n Array.isArray(B) && B.length ? H(B[0]) : null\n ];\n }\n return H(o[0]);\n }, $ = (o) => t.modelAuto ? Array.isArray(o) ? [q(o[0]), q(o[1])] : t.autoApply ? [q(o)] : [q(o), null] : Array.isArray(o) ? oa(\n () => o[1] ? [\n q(o[0]),\n o[1] ? q(o[1]) : It(i.value.partialRange)\n ] : [q(o[0])],\n i.value.enabled\n ) : q(o), ee = () => {\n Array.isArray(a.value) && i.value.enabled && a.value.length === 1 && a.value.push(It(i.value.partialRange));\n }, O = () => {\n const o = a.value;\n return [\n k(o[0]),\n o[1] ? k(o[1]) : It(i.value.partialRange)\n ];\n }, J = () => Array.isArray(a.value) ? a.value[1] ? O() : k(Ne(a.value[0])) : [], ce = () => (a.value || []).map((o) => k(o)), pe = (o = !1) => (o || ee(), t.modelAuto ? J() : d.value.enabled ? ce() : Array.isArray(a.value) ? oa(() => O(), i.value.enabled) : k(Ne(a.value))), p = (o) => !o || Array.isArray(o) && !o.length ? null : t.timePicker ? z(Ne(o)) : t.monthPicker ? L(Ne(o)) : t.yearPicker ? A(Ne(o)) : d.value.enabled ? le(Ne(o)) : t.weekPicker ? U(Ne(o)) : $(Ne(o)), Y = (o) => {\n if (n.value) return;\n const X = p(o);\n za(Ne(X)) ? (a.value = Ne(X), S()) : (a.value = null, v.value = \"\");\n }, te = () => {\n const o = (X) => ft(X, f.value.format);\n return `${o(a.value[0])} ${f.value.rangeSeparator} ${a.value[1] ? o(a.value[1]) : \"\"}`;\n }, y = () => l.value && a.value ? Array.isArray(a.value) ? te() : ft(a.value, f.value.format) : _(a.value), V = () => a.value ? d.value.enabled ? a.value.map((o) => _(o)).join(\"; \") : f.value.enabled && typeof f.value.format == \"string\" ? y() : _(a.value) : \"\", S = () => {\n !t.format || typeof t.format == \"string\" || f.value.enabled && typeof f.value.format == \"string\" ? v.value = V() : v.value = t.format(a.value);\n }, q = (o) => {\n if (t.utc) {\n const X = new Date(o);\n return t.utc === \"preserve\" ? new Date(X.getTime() + X.getTimezoneOffset() * 6e4) : X;\n }\n return t.modelType ? $l.includes(t.modelType) ? T(new Date(o)) : t.modelType === \"format\" && (typeof t.format == \"string\" || !t.format) ? T(\n Na(o, P(), /* @__PURE__ */ new Date(), { locale: h.value })\n ) : T(\n Na(o, t.modelType, /* @__PURE__ */ new Date(), { locale: h.value })\n ) : T(new Date(o));\n }, k = (o) => o ? t.utc ? Il(o, t.utc === \"preserve\", t.enableSeconds) : t.modelType ? t.modelType === \"timestamp\" ? +F(o) : t.modelType === \"iso\" ? F(o).toISOString() : t.modelType === \"format\" && (typeof t.format == \"string\" || !t.format) ? _(F(o)) : _(F(o), t.modelType, !0) : F(o) : \"\", se = (o, X = !1, B = !1) => {\n if (B) return o;\n if (e(\"update:model-value\", o), g.value.emitTimezone && X) {\n const be = Array.isArray(o) ? o.map((Ae) => Ze(Ne(Ae), g.value.emitTimezone)) : Ze(Ne(o), g.value.emitTimezone);\n e(\"update:model-timezone-value\", be);\n }\n }, u = (o) => Array.isArray(a.value) ? d.value.enabled ? a.value.map((X) => o(X)) : [\n o(a.value[0]),\n a.value[1] ? o(a.value[1]) : It(i.value.partialRange)\n ] : o(Ne(a.value)), re = () => {\n if (Array.isArray(a.value)) {\n const o = mt(a.value[0], t.weekStart), X = a.value[1] ? mt(a.value[1], t.weekStart) : [];\n return [o.map((B) => H(B)), X.map((B) => H(B))];\n }\n return mt(a.value, t.weekStart).map((o) => H(o));\n }, G = (o, X) => se(Ne(u(o)), !1, X), I = (o) => {\n const X = re();\n return o ? X : e(\"update:model-value\", re());\n }, x = (o = !1) => (o || S(), t.monthPicker ? G(M, o) : t.timePicker ? G(C, o) : t.yearPicker ? G(ye, o) : t.weekPicker ? I(o) : se(pe(o), !0, o));\n return {\n inputValue: v,\n internalModelValue: a,\n checkBeforeEmit: () => a.value ? i.value.enabled ? i.value.partialRange ? a.value.length >= 1 : a.value.length === 2 : !!a.value : !1,\n parseExternalModelValue: Y,\n formatInputValue: S,\n emitModelValue: x\n };\n}, or = (e, t) => {\n const { defaultedFilters: l, propDates: n } = Oe(e), { validateMonthYearInRange: a } = Tt(e), f = (v, R) => {\n let h = v;\n return l.value.months.includes(Me(h)) ? (h = R ? Ct(v, 1) : Jt(v, 1), f(h, R)) : h;\n }, i = (v, R) => {\n let h = v;\n return l.value.years.includes(ye(h)) ? (h = R ? Mn(v, 1) : $n(v, 1), i(h, R)) : h;\n }, g = (v, R = !1) => {\n const h = Se(H(), { month: e.month, year: e.year });\n let T = v ? Ct(h, 1) : Jt(h, 1);\n e.disableYearSelect && (T = ut(T, e.year));\n let F = Me(T), _ = ye(T);\n l.value.months.includes(F) && (T = f(T, v), F = Me(T), _ = ye(T)), l.value.years.includes(_) && (T = i(T, v), _ = ye(T)), a(F, _, v, e.preventMinMaxNavigation) && d(F, _, R);\n }, d = (v, R, h) => {\n t(\"update-month-year\", { month: v, year: R, fromNav: h });\n }, P = j(() => (v) => Nn(\n Se(H(), { month: e.month, year: e.year }),\n n.value.maxDate,\n n.value.minDate,\n e.preventMinMaxNavigation,\n v\n ));\n return { handleMonthYearChange: g, isDisabled: P, updateMonthYear: d };\n}, va = {\n multiCalendars: { type: [Boolean, Number, String, Object], default: void 0 },\n modelValue: { type: [String, Date, Array, Object, Number], default: null },\n modelType: { type: String, default: null },\n position: { type: String, default: \"center\" },\n dark: { type: Boolean, default: !1 },\n format: {\n type: [String, Function],\n default: () => null\n },\n autoPosition: { type: [Boolean, String], default: !0 },\n altPosition: { type: Function, default: null },\n transitions: { type: [Boolean, Object], default: !0 },\n formatLocale: { type: Object, default: null },\n utc: { type: [Boolean, String], default: !1 },\n ariaLabels: { type: Object, default: () => ({}) },\n offset: { type: [Number, String], default: 10 },\n hideNavigation: { type: Array, default: () => [] },\n timezone: { type: [String, Object], default: null },\n vertical: { type: Boolean, default: !1 },\n disableMonthYearSelect: { type: Boolean, default: !1 },\n disableYearSelect: { type: Boolean, default: !1 },\n dayClass: {\n type: Function,\n default: null\n },\n yearRange: { type: Array, default: () => [1900, 2100] },\n enableTimePicker: { type: Boolean, default: !0 },\n autoApply: { type: Boolean, default: !1 },\n disabledDates: { type: [Array, Function], default: () => [] },\n monthNameFormat: { type: String, default: \"short\" },\n startDate: { type: [Date, String], default: null },\n startTime: { type: [Object, Array], default: null },\n hideOffsetDates: { type: Boolean, default: !1 },\n noToday: { type: Boolean, default: !1 },\n disabledWeekDays: { type: Array, default: () => [] },\n allowedDates: { type: Array, default: null },\n nowButtonLabel: { type: String, default: \"Now\" },\n markers: { type: Array, default: () => [] },\n escClose: { type: Boolean, default: !0 },\n spaceConfirm: { type: Boolean, default: !0 },\n monthChangeOnArrows: { type: Boolean, default: !0 },\n presetDates: { type: Array, default: () => [] },\n flow: { type: Array, default: () => [] },\n partialFlow: { type: Boolean, default: !1 },\n preventMinMaxNavigation: { type: Boolean, default: !1 },\n reverseYears: { type: Boolean, default: !1 },\n weekPicker: { type: Boolean, default: !1 },\n filters: { type: Object, default: () => ({}) },\n arrowNavigation: { type: Boolean, default: !1 },\n highlight: {\n type: [Function, Object],\n default: null\n },\n teleport: { type: [Boolean, String, Object], default: null },\n teleportCenter: { type: Boolean, default: !1 },\n locale: { type: String, default: \"en-Us\" },\n weekNumName: { type: String, default: \"W\" },\n weekStart: { type: [Number, String], default: 1 },\n weekNumbers: {\n type: [String, Function, Object],\n default: null\n },\n monthChangeOnScroll: { type: [Boolean, String], default: !0 },\n dayNames: {\n type: [Function, Array],\n default: null\n },\n monthPicker: { type: Boolean, default: !1 },\n customProps: { type: Object, default: null },\n yearPicker: { type: Boolean, default: !1 },\n modelAuto: { type: Boolean, default: !1 },\n selectText: { type: String, default: \"Select\" },\n cancelText: { type: String, default: \"Cancel\" },\n previewFormat: {\n type: [String, Function],\n default: () => \"\"\n },\n multiDates: { type: [Object, Boolean], default: !1 },\n ignoreTimeValidation: { type: Boolean, default: !1 },\n minDate: { type: [Date, String], default: null },\n maxDate: { type: [Date, String], default: null },\n minTime: { type: Object, default: null },\n maxTime: { type: Object, default: null },\n name: { type: String, default: null },\n placeholder: { type: String, default: \"\" },\n hideInputIcon: { type: Boolean, default: !1 },\n clearable: { type: Boolean, default: !0 },\n alwaysClearable: { type: Boolean, default: !1 },\n state: { type: Boolean, default: null },\n required: { type: Boolean, default: !1 },\n autocomplete: { type: String, default: \"off\" },\n timePicker: { type: Boolean, default: !1 },\n enableSeconds: { type: Boolean, default: !1 },\n is24: { type: Boolean, default: !0 },\n noHoursOverlay: { type: Boolean, default: !1 },\n noMinutesOverlay: { type: Boolean, default: !1 },\n noSecondsOverlay: { type: Boolean, default: !1 },\n hoursGridIncrement: { type: [String, Number], default: 1 },\n minutesGridIncrement: { type: [String, Number], default: 5 },\n secondsGridIncrement: { type: [String, Number], default: 5 },\n hoursIncrement: { type: [Number, String], default: 1 },\n minutesIncrement: { type: [Number, String], default: 1 },\n secondsIncrement: { type: [Number, String], default: 1 },\n range: { type: [Boolean, Object], default: !1 },\n uid: { type: String, default: null },\n disabled: { type: Boolean, default: !1 },\n readonly: { type: Boolean, default: !1 },\n inline: { type: [Boolean, Object], default: !1 },\n textInput: { type: [Boolean, Object], default: !1 },\n sixWeeks: { type: [Boolean, String], default: !1 },\n actionRow: { type: Object, default: () => ({}) },\n focusStartDate: { type: Boolean, default: !1 },\n disabledTimes: { type: [Function, Array], default: void 0 },\n timePickerInline: { type: Boolean, default: !1 },\n calendar: { type: Function, default: null },\n config: { type: Object, default: void 0 },\n quarterPicker: { type: Boolean, default: !1 },\n yearFirst: { type: Boolean, default: !1 },\n loading: { type: Boolean, default: !1 },\n onInternalModelChange: { type: [Function, Object], default: null },\n enableMinutes: { type: Boolean, default: !0 },\n ui: { type: Object, default: () => ({}) }\n}, dt = {\n ...va,\n shadow: { type: Boolean, default: !1 },\n flowStep: { type: Number, default: 0 },\n internalModelValue: { type: [Date, Array], default: null },\n noOverlayFocus: { type: Boolean, default: !1 },\n collapse: { type: Boolean, default: !1 },\n menuWrapRef: { type: Object, default: null },\n getInputRect: { type: Function, default: () => ({}) },\n isTextInputDate: { type: Boolean, default: !1 },\n isMobile: { type: Boolean, default: void 0 }\n}, sr = [\"title\"], ur = [\"disabled\"], ir = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"ActionRow\",\n props: {\n menuMount: { type: Boolean, default: !1 },\n calendarWidth: { type: Number, default: 0 },\n ...dt\n },\n emits: [\"close-picker\", \"select-date\", \"select-now\", \"invalid-select\"],\n setup(e, { emit: t }) {\n const l = t, n = e, {\n defaultedActionRow: a,\n defaultedPreviewFormat: f,\n defaultedMultiCalendars: i,\n defaultedTextInput: g,\n defaultedInline: d,\n defaultedRange: P,\n defaultedMultiDates: v\n } = Oe(n), { isTimeValid: R, isMonthValid: h } = Tt(n), { buildMatrix: T } = At(), F = Z(null), _ = Z(null), C = Z(!1), M = Z({}), A = Z(null), m = Z(null);\n Ue(() => {\n n.arrowNavigation && T([Le(F), Le(_)], \"actionRow\"), z(), window.addEventListener(\"resize\", z);\n }), Ut(() => {\n window.removeEventListener(\"resize\", z);\n });\n const z = () => {\n C.value = !1, setTimeout(() => {\n const p = A.value?.getBoundingClientRect(), Y = m.value?.getBoundingClientRect();\n p && Y && (M.value.maxWidth = `${Y.width - p.width - 20}px`), C.value = !0;\n }, 0);\n }, L = j(() => P.value.enabled && !P.value.partialRange && n.internalModelValue ? n.internalModelValue.length === 2 : !0), le = j(\n () => !R.value(n.internalModelValue) || !h.value(n.internalModelValue) || !L.value\n ), U = () => {\n const p = f.value;\n return n.timePicker || n.monthPicker, p(Ne(n.internalModelValue));\n }, $ = () => {\n const p = n.internalModelValue;\n return i.value.count > 0 ? `${ee(p[0])} - ${ee(p[1])}` : [ee(p[0]), ee(p[1])];\n }, ee = (p) => Ln(\n p,\n f.value,\n n.formatLocale,\n g.value.rangeSeparator,\n n.modelAuto,\n f.value\n ), O = j(() => !n.internalModelValue || !n.menuMount ? \"\" : typeof f.value == \"string\" ? Array.isArray(n.internalModelValue) ? n.internalModelValue.length === 2 && n.internalModelValue[1] ? $() : v.value.enabled ? n.internalModelValue.map((p) => `${ee(p)}`) : n.modelAuto ? `${ee(n.internalModelValue[0])}` : `${ee(n.internalModelValue[0])} -` : ee(n.internalModelValue) : U()), J = () => v.value.enabled ? \"; \" : \" - \", ce = j(\n () => Array.isArray(O.value) ? O.value.join(J()) : O.value\n ), pe = () => {\n R.value(n.internalModelValue) && h.value(n.internalModelValue) && L.value ? l(\"select-date\") : l(\"invalid-select\");\n };\n return (p, Y) => (w(), W(\"div\", {\n ref_key: \"actionRowRef\",\n ref: m,\n class: \"dp__action_row\"\n }, [\n p.$slots[\"action-row\"] ? ie(p.$slots, \"action-row\", ze(He({ key: 0 }, {\n internalModelValue: p.internalModelValue,\n disabled: le.value,\n selectDate: () => p.$emit(\"select-date\"),\n closePicker: () => p.$emit(\"close-picker\")\n }))) : (w(), W(ke, { key: 1 }, [\n s(a).showPreview ? (w(), W(\"div\", {\n key: 0,\n class: \"dp__selection_preview\",\n title: ce.value,\n style: lt(M.value)\n }, [\n p.$slots[\"action-preview\"] && C.value ? ie(p.$slots, \"action-preview\", {\n key: 0,\n value: p.internalModelValue\n }) : Q(\"\", !0),\n !p.$slots[\"action-preview\"] && C.value ? (w(), W(ke, { key: 1 }, [\n gt(Ke(ce.value), 1)\n ], 64)) : Q(\"\", !0)\n ], 12, sr)) : Q(\"\", !0),\n he(\"div\", {\n ref_key: \"actionBtnContainer\",\n ref: A,\n class: \"dp__action_buttons\",\n \"data-dp-element\": \"action-row\"\n }, [\n p.$slots[\"action-buttons\"] ? ie(p.$slots, \"action-buttons\", {\n key: 0,\n value: p.internalModelValue\n }) : Q(\"\", !0),\n p.$slots[\"action-buttons\"] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n !s(d).enabled && s(a).showCancel ? (w(), W(\"button\", {\n key: 0,\n ref_key: \"cancelButtonRef\",\n ref: F,\n type: \"button\",\n class: \"dp__action_button dp__action_cancel\",\n onClick: Y[0] || (Y[0] = (te) => p.$emit(\"close-picker\")),\n onKeydown: Y[1] || (Y[1] = (te) => s(qe)(te, () => p.$emit(\"close-picker\")))\n }, Ke(p.cancelText), 545)) : Q(\"\", !0),\n s(a).showNow ? (w(), W(\"button\", {\n key: 1,\n type: \"button\",\n class: \"dp__action_button dp__action_cancel\",\n onClick: Y[2] || (Y[2] = (te) => p.$emit(\"select-now\")),\n onKeydown: Y[3] || (Y[3] = (te) => s(qe)(te, () => p.$emit(\"select-now\")))\n }, Ke(p.nowButtonLabel), 33)) : Q(\"\", !0),\n s(a).showSelect ? (w(), W(\"button\", {\n key: 2,\n ref_key: \"selectButtonRef\",\n ref: _,\n type: \"button\",\n class: \"dp__action_button dp__action_select\",\n disabled: le.value,\n \"data-test-id\": \"select-button\",\n onKeydown: Y[4] || (Y[4] = (te) => s(qe)(te, () => pe())),\n onClick: pe\n }, Ke(p.selectText), 41, ur)) : Q(\"\", !0)\n ], 64))\n ], 512)\n ], 64))\n ], 512));\n }\n}), dr = [\"role\", \"aria-label\", \"tabindex\"], cr = { class: \"dp__selection_grid_header\" }, fr = [\"aria-selected\", \"aria-disabled\", \"data-test-id\", \"onClick\", \"onKeydown\", \"onMouseover\"], vr = [\"aria-label\"], ta = /* @__PURE__ */ We({\n __name: \"SelectionOverlay\",\n props: {\n items: {},\n type: {},\n isLast: { type: Boolean },\n arrowNavigation: { type: Boolean },\n skipButtonRef: { type: Boolean },\n headerRefs: {},\n hideNavigation: {},\n escClose: { type: Boolean },\n useRelative: { type: Boolean },\n height: {},\n textInput: { type: [Boolean, Object] },\n config: {},\n noOverlayFocus: { type: Boolean },\n focusValue: {},\n menuWrapRef: {},\n ariaLabels: {},\n overlayLabel: {}\n },\n emits: [\"selected\", \"toggle\", \"reset-flow\", \"hover-value\"],\n setup(e, { expose: t, emit: l }) {\n const { setSelectionGrid: n, buildMultiLevelMatrix: a, setMonthPicker: f } = At(), i = l, g = e, { defaultedAriaLabels: d, defaultedTextInput: P, defaultedConfig: v, handleEventPropagation: R } = Oe(\n g\n ), { hideNavigationButtons: h } = ga(), T = Z(!1), F = Z(null), _ = Z(null), C = Z([]), M = Z(), A = Z(null), m = Z(0), z = Z(null);\n Zn(() => {\n F.value = null;\n }), Ue(() => {\n at().then(() => ce()), g.noOverlayFocus || le(), L(!0);\n }), Ut(() => L(!1));\n const L = (u) => {\n g.arrowNavigation && (g.headerRefs?.length ? f(u) : n(u));\n }, le = () => {\n const u = Le(_);\n u && (P.value.enabled || (F.value ? F.value?.focus({ preventScroll: !0 }) : u.focus({ preventScroll: !0 })), T.value = u.clientHeight < u.scrollHeight);\n }, U = j(\n () => ({\n dp__overlay: !0,\n \"dp--overlay-absolute\": !g.useRelative,\n \"dp--overlay-relative\": g.useRelative\n })\n ), $ = j(\n () => g.useRelative ? { height: `${g.height}px`, width: \"var(--dp-menu-min-width)\" } : void 0\n ), ee = j(() => ({\n dp__overlay_col: !0\n })), O = j(\n () => ({\n dp__btn: !0,\n dp__button: !0,\n dp__overlay_action: !0,\n dp__over_action_scroll: T.value,\n dp__button_bottom: g.isLast\n })\n ), J = j(() => ({\n dp__overlay_container: !0,\n dp__container_flex: g.items?.length <= 6,\n dp__container_block: g.items?.length > 6\n }));\n rt(\n () => g.items,\n () => ce(!1),\n { deep: !0 }\n );\n const ce = (u = !0) => {\n at().then(() => {\n const re = Le(F), G = Le(_), I = Le(A), x = Le(z), c = I ? I.getBoundingClientRect().height : 0;\n G && (G.getBoundingClientRect().height ? m.value = G.getBoundingClientRect().height - c : m.value = v.value.modeHeight - c), re && x && u && (x.scrollTop = re.offsetTop - x.offsetTop - (m.value / 2 - re.getBoundingClientRect().height) - c);\n });\n }, pe = (u) => {\n u.disabled || i(\"selected\", u.value);\n }, p = () => {\n i(\"toggle\"), i(\"reset-flow\");\n }, Y = (u) => {\n g.escClose && (p(), R(u));\n }, te = (u, re, G, I) => {\n u && ((re.active || re.value === g.focusValue) && (F.value = u), g.arrowNavigation && (Array.isArray(C.value[G]) ? C.value[G][I] = u : C.value[G] = [u], y()));\n }, y = () => {\n const u = g.headerRefs?.length ? [g.headerRefs].concat(C.value) : C.value.concat([g.skipButtonRef ? [] : [A.value]]);\n a(Ne(u), g.headerRefs?.length ? \"monthPicker\" : \"selectionGrid\");\n }, V = (u) => {\n g.arrowNavigation || Dt(u, v.value, !0);\n }, S = (u) => {\n M.value = u, i(\"hover-value\", u);\n }, q = () => {\n if (p(), !g.isLast) {\n const u = Fa(g.menuWrapRef ?? null, \"action-row\");\n u && Cn(u)?.focus();\n }\n }, k = (u) => {\n switch (u.key) {\n case Re.esc:\n return Y(u);\n case Re.arrowLeft:\n return V(u);\n case Re.arrowRight:\n return V(u);\n case Re.arrowUp:\n return V(u);\n case Re.arrowDown:\n return V(u);\n default:\n return;\n }\n }, se = (u) => {\n if (u.key === Re.enter) return p();\n if (u.key === Re.tab) return q();\n };\n return t({ focusGrid: le }), (u, re) => (w(), W(\"div\", {\n ref_key: \"gridWrapRef\",\n ref: _,\n class: De(U.value),\n style: lt($.value),\n role: e.useRelative ? void 0 : \"dialog\",\n \"aria-label\": e.overlayLabel,\n tabindex: e.useRelative ? void 0 : \"0\",\n onKeydown: k,\n onClick: re[0] || (re[0] = Xt(() => {\n }, [\"prevent\"]))\n }, [\n he(\"div\", {\n ref_key: \"containerRef\",\n ref: z,\n class: De(J.value),\n style: lt({ \"--dp-overlay-height\": `${m.value}px` }),\n role: \"grid\"\n }, [\n he(\"div\", cr, [\n ie(u.$slots, \"header\")\n ]),\n u.$slots.overlay ? ie(u.$slots, \"overlay\", { key: 0 }) : (w(!0), W(ke, { key: 1 }, Ce(e.items, (G, I) => (w(), W(\"div\", {\n key: I,\n class: De([\"dp__overlay_row\", { dp__flex_row: e.items.length >= 3 }]),\n role: \"row\"\n }, [\n (w(!0), W(ke, null, Ce(G, (x, c) => (w(), W(\"div\", {\n key: x.value,\n ref_for: !0,\n ref: (o) => te(o, x, I, c),\n role: \"gridcell\",\n class: De(ee.value),\n \"aria-selected\": x.active || void 0,\n \"aria-disabled\": x.disabled || void 0,\n tabindex: \"0\",\n \"data-test-id\": x.text,\n onClick: Xt((o) => pe(x), [\"prevent\"]),\n onKeydown: (o) => s(qe)(o, () => pe(x), !0),\n onMouseover: (o) => S(x.value)\n }, [\n he(\"div\", {\n class: De(x.className)\n }, [\n u.$slots.item ? ie(u.$slots, \"item\", {\n key: 0,\n item: x\n }) : Q(\"\", !0),\n u.$slots.item ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(x.text), 1)\n ], 64))\n ], 2)\n ], 42, fr))), 128))\n ], 2))), 128))\n ], 6),\n u.$slots[\"button-icon\"] ? ua((w(), W(\"button\", {\n key: 0,\n ref_key: \"toggleButton\",\n ref: A,\n type: \"button\",\n \"aria-label\": s(d)?.toggleOverlay,\n class: De(O.value),\n tabindex: \"0\",\n onClick: p,\n onKeydown: se\n }, [\n ie(u.$slots, \"button-icon\")\n ], 42, vr)), [\n [ia, !s(h)(e.hideNavigation, e.type)]\n ]) : Q(\"\", !0)\n ], 46, dr));\n }\n}), mr = [\"data-dp-mobile\"], ma = /* @__PURE__ */ We({\n __name: \"InstanceWrap\",\n props: {\n multiCalendars: {},\n stretch: { type: Boolean },\n collapse: { type: Boolean },\n isMobile: { type: Boolean }\n },\n setup(e) {\n const t = e, l = j(\n () => t.multiCalendars > 0 ? [...Array(t.multiCalendars).keys()] : [0]\n ), n = j(() => ({\n dp__instance_calendar: t.multiCalendars > 0\n }));\n return (a, f) => (w(), W(\"div\", {\n class: De({\n dp__menu_inner: !e.stretch,\n \"dp--menu--inner-stretched\": e.stretch,\n dp__flex_display: e.multiCalendars > 0,\n \"dp--flex-display-collapsed\": e.collapse\n }),\n \"data-dp-mobile\": e.isMobile\n }, [\n (w(!0), W(ke, null, Ce(l.value, (i, g) => (w(), W(\"div\", {\n key: i,\n class: De(n.value)\n }, [\n ie(a.$slots, \"default\", {\n instance: i,\n index: g\n })\n ], 2))), 128))\n ], 10, mr));\n }\n}), pr = [\"data-dp-element\", \"aria-label\", \"aria-disabled\"], Qt = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"ArrowBtn\",\n props: {\n ariaLabel: {},\n elName: {},\n disabled: { type: Boolean }\n },\n emits: [\"activate\", \"set-ref\"],\n setup(e, { emit: t }) {\n const l = t, n = Z(null);\n return Ue(() => l(\"set-ref\", n)), (a, f) => (w(), W(\"button\", {\n ref_key: \"elRef\",\n ref: n,\n type: \"button\",\n \"data-dp-element\": e.elName,\n class: \"dp__btn dp--arrow-btn-nav\",\n tabindex: \"0\",\n \"aria-label\": e.ariaLabel,\n \"aria-disabled\": e.disabled || void 0,\n onClick: f[0] || (f[0] = (i) => l(\"activate\")),\n onKeydown: f[1] || (f[1] = (i) => s(qe)(i, () => l(\"activate\"), !0))\n }, [\n he(\"span\", {\n class: De([\"dp__inner_nav\", { dp__inner_nav_disabled: e.disabled }])\n }, [\n ie(a.$slots, \"default\")\n ], 2)\n ], 40, pr));\n }\n}), gr = [\"aria-label\", \"data-test-id\"], Wn = /* @__PURE__ */ We({\n __name: \"YearModePicker\",\n props: {\n ...dt,\n showYearPicker: { type: Boolean, default: !1 },\n items: { type: Array, default: () => [] },\n instance: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n isDisabled: { type: Function, default: () => !1 }\n },\n emits: [\"toggle-year-picker\", \"year-select\", \"handle-year\"],\n setup(e, { emit: t }) {\n const l = t, n = e, { showRightIcon: a, showLeftIcon: f } = ga(), { defaultedConfig: i, defaultedMultiCalendars: g, defaultedAriaLabels: d, defaultedTransitions: P, defaultedUI: v } = Oe(n), { showTransition: R, transitionName: h } = aa(P), T = Z(!1), F = j(() => Ja(n.year, n.locale)), _ = (A = !1, m) => {\n T.value = !T.value, l(\"toggle-year-picker\", { flow: A, show: m });\n }, C = (A) => {\n T.value = !1, l(\"year-select\", A);\n }, M = (A = !1) => {\n l(\"handle-year\", A);\n };\n return (A, m) => (w(), W(ke, null, [\n he(\"div\", {\n class: De([\"dp--year-mode-picker\", { \"dp--hidden-el\": T.value }])\n }, [\n s(f)(s(g), e.instance) ? (w(), Te(Qt, {\n key: 0,\n ref: \"mpPrevIconRef\",\n \"aria-label\": s(d)?.prevYear,\n disabled: e.isDisabled(!1),\n class: De(s(v)?.navBtnPrev),\n onActivate: m[0] || (m[0] = (z) => M(!1))\n }, {\n default: we(() => [\n A.$slots[\"arrow-left\"] ? ie(A.$slots, \"arrow-left\", { key: 0 }) : Q(\"\", !0),\n A.$slots[\"arrow-left\"] ? Q(\"\", !0) : (w(), Te(s(Ua), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Q(\"\", !0),\n he(\"button\", {\n ref: \"mpYearButtonRef\",\n class: \"dp__btn dp--year-select\",\n type: \"button\",\n \"aria-label\": `${e.year}-${s(d)?.openYearsOverlay}`,\n \"data-test-id\": `year-mode-btn-${e.instance}`,\n onClick: m[1] || (m[1] = () => _(!1)),\n onKeydown: m[2] || (m[2] = xn(() => _(!1), [\"enter\"]))\n }, [\n A.$slots.year ? ie(A.$slots, \"year\", {\n key: 0,\n year: e.year,\n text: F.value,\n value: e.year\n }) : Q(\"\", !0),\n A.$slots.year ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(F.value), 1)\n ], 64))\n ], 40, gr),\n s(a)(s(g), e.instance) ? (w(), Te(Qt, {\n key: 1,\n ref: \"mpNextIconRef\",\n \"aria-label\": s(d)?.nextYear,\n disabled: e.isDisabled(!0),\n class: De(s(v)?.navBtnNext),\n onActivate: m[3] || (m[3] = (z) => M(!0))\n }, {\n default: we(() => [\n A.$slots[\"arrow-right\"] ? ie(A.$slots, \"arrow-right\", { key: 0 }) : Q(\"\", !0),\n A.$slots[\"arrow-right\"] ? Q(\"\", !0) : (w(), Te(s(Va), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Q(\"\", !0)\n ], 2),\n tt(Vt, {\n name: s(h)(e.showYearPicker),\n css: s(R)\n }, {\n default: we(() => [\n e.showYearPicker ? (w(), Te(ta, {\n key: 0,\n items: e.items,\n \"text-input\": A.textInput,\n \"esc-close\": A.escClose,\n config: A.config,\n \"is-last\": A.autoApply && !s(i).keepActionRow,\n \"hide-navigation\": A.hideNavigation,\n \"aria-labels\": A.ariaLabels,\n \"overlay-label\": s(d)?.yearPicker?.(!0),\n type: \"year\",\n onToggle: _,\n onSelected: m[4] || (m[4] = (z) => C(z))\n }, Ge({\n \"button-icon\": we(() => [\n A.$slots[\"calendar-icon\"] ? ie(A.$slots, \"calendar-icon\", { key: 0 }) : Q(\"\", !0),\n A.$slots[\"calendar-icon\"] ? Q(\"\", !0) : (w(), Te(s(jt), { key: 1 }))\n ]),\n _: 2\n }, [\n A.$slots[\"year-overlay-value\"] ? {\n name: \"item\",\n fn: we(({ item: z }) => [\n ie(A.$slots, \"year-overlay-value\", {\n text: z.text,\n value: z.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"text-input\", \"esc-close\", \"config\", \"is-last\", \"hide-navigation\", \"aria-labels\", \"overlay-label\"])) : Q(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 64));\n }\n}), en = (e, t, l) => {\n if (t.value && Array.isArray(t.value))\n if (t.value.some((n) => $e(e, n))) {\n const n = t.value.filter((a) => !$e(a, e));\n t.value = n.length ? n : null;\n } else (l && +l > t.value.length || !l) && t.value.push(e);\n else\n t.value = [e];\n}, tn = (e, t, l) => {\n let n = e.value ? e.value.slice() : [];\n return n.length === 2 && n[1] !== null && (n = []), n.length ? (Be(t, n[0]) ? n.unshift(t) : n[1] = t, l(\"range-end\", t)) : (n = [t], l(\"range-start\", t)), n;\n}, pa = (e, t, l, n) => {\n e && (e[0] && e[1] && l && t(\"auto-apply\"), e[0] && !e[1] && n && l && t(\"auto-apply\"));\n}, Un = (e) => {\n Array.isArray(e.value) && e.value.length <= 2 && e.range ? e.modelValue.value = e.value.map((t) => Ze(H(t), e.timezone)) : Array.isArray(e.value) || (e.modelValue.value = Ze(H(e.value), e.timezone));\n}, Vn = (e, t, l, n) => Array.isArray(t.value) && (t.value.length === 2 || t.value.length === 1 && n.value.partialRange) ? n.value.fixedStart && (Ee(e, t.value[0]) || $e(e, t.value[0])) ? [t.value[0], e] : n.value.fixedEnd && (Be(e, t.value[1]) || $e(e, t.value[1])) ? [e, t.value[1]] : (l(\"invalid-fixed-range\", e), t.value) : [], jn = ({\n multiCalendars: e,\n range: t,\n highlight: l,\n propDates: n,\n calendars: a,\n modelValue: f,\n props: i,\n filters: g,\n year: d,\n month: P,\n emit: v\n}) => {\n const R = j(() => qa(i.yearRange, i.locale, i.reverseYears)), h = Z([!1]), T = j(() => (O, J) => {\n const ce = Se(it(/* @__PURE__ */ new Date()), {\n month: P.value(O),\n year: d.value(O)\n }), pe = J ? An(ce) : Gt(ce);\n return Nn(\n pe,\n n.value.maxDate,\n n.value.minDate,\n i.preventMinMaxNavigation,\n J\n );\n }), F = () => Array.isArray(f.value) && e.value.solo && f.value[1], _ = () => {\n for (let O = 0; O < e.value.count; O++)\n if (O === 0)\n a.value[O] = a.value[0];\n else if (O === e.value.count - 1 && F())\n a.value[O] = {\n month: Me(f.value[1]),\n year: ye(f.value[1])\n };\n else {\n const J = Se(H(), a.value[O - 1]);\n a.value[O] = { month: Me(J), year: ye(Mn(J, 1)) };\n }\n }, C = (O) => {\n if (!O) return _();\n const J = Se(H(), a.value[O]);\n return a.value[0].year = ye($n(J, e.value.count - 1)), _();\n }, M = (O, J) => {\n const ce = vl(J, O);\n return t.value.showLastInRange && ce > 1 ? J : O;\n }, A = (O) => i.focusStartDate || e.value.solo ? O[0] : O[1] ? M(O[0], O[1]) : O[0], m = () => {\n if (f.value) {\n const O = Array.isArray(f.value) ? A(f.value) : f.value;\n a.value[0] = { month: Me(O), year: ye(O) };\n }\n }, z = () => {\n m(), e.value.count && _();\n };\n rt(f, (O, J) => {\n i.isTextInputDate && JSON.stringify(O ?? {}) !== JSON.stringify(J ?? {}) && z();\n }), Ue(() => {\n z();\n });\n const L = (O, J) => {\n a.value[J].year = O, v(\"update-month-year\", { instance: J, year: O, month: a.value[J].month }), e.value.count && !e.value.solo && C(J);\n }, le = j(() => (O) => Ht(R.value, (J) => {\n const ce = d.value(O) === J.value, pe = Zt(\n J.value,\n Wt(n.value.minDate),\n Wt(n.value.maxDate)\n ) || g.value.years?.includes(d.value(O)), p = xa(l.value, J.value);\n return { active: ce, disabled: pe, highlighted: p };\n })), U = (O, J) => {\n L(O, J), ee(J);\n }, $ = (O, J = !1) => {\n if (!T.value(O, J)) {\n const ce = J ? d.value(O) + 1 : d.value(O) - 1;\n L(ce, O);\n }\n }, ee = (O, J = !1, ce) => {\n J || v(\"reset-flow\"), ce !== void 0 ? h.value[O] = ce : h.value[O] = !h.value[O], h.value[O] ? v(\"overlay-toggle\", { open: !0, overlay: je.year }) : (v(\"overlay-closed\"), v(\"overlay-toggle\", { open: !1, overlay: je.year }));\n };\n return {\n isDisabled: T,\n groupedYears: le,\n showYearPicker: h,\n selectYear: L,\n toggleYearPicker: ee,\n handleYearSelect: U,\n handleYear: $\n };\n}, yr = (e, t) => {\n const {\n defaultedMultiCalendars: l,\n defaultedAriaLabels: n,\n defaultedTransitions: a,\n defaultedConfig: f,\n defaultedRange: i,\n defaultedHighlight: g,\n propDates: d,\n defaultedTz: P,\n defaultedFilters: v,\n defaultedMultiDates: R\n } = Oe(e), h = () => {\n e.isTextInputDate && z(ye(H(e.startDate)), 0);\n }, { modelValue: T, year: F, month: _, calendars: C } = na(e, t, h), M = j(() => Pn(e.formatLocale, e.locale, e.monthNameFormat)), A = Z(null), { checkMinMaxRange: m } = Tt(e), {\n selectYear: z,\n groupedYears: L,\n showYearPicker: le,\n toggleYearPicker: U,\n handleYearSelect: $,\n handleYear: ee,\n isDisabled: O\n } = jn({\n modelValue: T,\n multiCalendars: l,\n range: i,\n highlight: g,\n calendars: C,\n year: F,\n propDates: d,\n month: _,\n filters: v,\n props: e,\n emit: t\n });\n Ue(() => {\n e.startDate && (T.value && e.focusStartDate || !T.value) && z(ye(H(e.startDate)), 0);\n });\n const J = (I) => I ? { month: Me(I), year: ye(I) } : { month: null, year: null }, ce = () => T.value ? Array.isArray(T.value) ? T.value.map((I) => J(I)) : J(T.value) : J(), pe = (I, x) => {\n const c = C.value[I], o = ce();\n return Array.isArray(o) ? o.some((X) => X.year === c?.year && X.month === x) : c?.year === o.year && x === o.month;\n }, p = (I, x, c) => {\n const o = ce();\n return Array.isArray(o) ? F.value(x) === o[c]?.year && I === o[c]?.month : !1;\n }, Y = (I, x) => {\n if (i.value.enabled) {\n const c = ce();\n if (Array.isArray(T.value) && Array.isArray(c)) {\n const o = p(I, x, 0) || p(I, x, 1), X = pt(it(H()), I, F.value(x));\n return xt(T.value, A.value, X) && !o;\n }\n return !1;\n }\n return !1;\n }, te = j(() => (I) => Ht(M.value, (x) => {\n const c = pe(I, x.value), o = Zt(\n x.value,\n _n(F.value(I), d.value.minDate),\n Yn(F.value(I), d.value.maxDate)\n ) || zl(d.value.disabledDates, F.value(I), x.value) || v.value.months?.includes(x.value) || !Hl(d.value.allowedDates, F.value(I), x.value) || zn(e.yearRange, F.value(I)), X = Y(x.value, I), B = Fn(g.value, x.value, F.value(I));\n return { active: c, disabled: o, isBetween: X, highlighted: B };\n })), y = (I, x) => pt(it(H()), I, F.value(x)), V = (I, x) => {\n const c = T.value ? T.value : it(/* @__PURE__ */ new Date());\n T.value = pt(c, I, F.value(x)), t(\"auto-apply\"), t(\"update-flow-step\");\n }, S = (I, x) => {\n const c = y(I, x);\n i.value.fixedEnd || i.value.fixedStart ? T.value = Vn(c, T, t, i) : T.value ? m(c, T.value) && (T.value = tn(T, y(I, x), t)) : T.value = [y(I, x)], at().then(() => {\n pa(T.value, t, e.autoApply, e.modelAuto);\n });\n }, q = (I, x) => {\n en(y(I, x), T, R.value.limit), t(\"auto-apply\", !0);\n }, k = (I, x) => (C.value[x].month = I, u(x, C.value[x].year, I), R.value.enabled ? q(I, x) : i.value.enabled ? S(I, x) : V(I, x)), se = (I, x) => {\n z(I, x), u(x, I, null);\n }, u = (I, x, c) => {\n let o = c;\n if (!o && o !== 0) {\n const X = ce();\n o = Array.isArray(X) ? X[I].month : X.month;\n }\n t(\"update-month-year\", { instance: I, year: x, month: o });\n };\n return {\n groupedMonths: te,\n groupedYears: L,\n year: F,\n isDisabled: O,\n defaultedMultiCalendars: l,\n defaultedAriaLabels: n,\n defaultedTransitions: a,\n defaultedConfig: f,\n showYearPicker: le,\n modelValue: T,\n presetDate: (I, x) => {\n Un({\n value: I,\n modelValue: T,\n range: i.value.enabled,\n timezone: x ? void 0 : P.value.timezone\n }), t(\"auto-apply\");\n },\n setHoverDate: (I, x) => {\n A.value = y(I, x);\n },\n selectMonth: k,\n selectYear: se,\n toggleYearPicker: U,\n handleYearSelect: $,\n handleYear: ee,\n getModelMonthYear: ce\n };\n}, hr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"MonthPicker\",\n props: {\n ...dt\n },\n emits: [\n \"update:internal-model-value\",\n \"overlay-closed\",\n \"reset-flow\",\n \"range-start\",\n \"range-end\",\n \"auto-apply\",\n \"update-month-year\",\n \"update-flow-step\",\n \"mount\",\n \"invalid-fixed-range\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = Yt(), f = et(a, \"yearMode\"), i = e;\n Ue(() => {\n i.shadow || n(\"mount\", null);\n });\n const {\n groupedMonths: g,\n groupedYears: d,\n year: P,\n isDisabled: v,\n defaultedMultiCalendars: R,\n defaultedConfig: h,\n showYearPicker: T,\n modelValue: F,\n presetDate: _,\n setHoverDate: C,\n selectMonth: M,\n selectYear: A,\n toggleYearPicker: m,\n handleYearSelect: z,\n handleYear: L,\n getModelMonthYear: le\n } = yr(i, n);\n return t({ getSidebarProps: () => ({\n modelValue: F,\n year: P,\n getModelMonthYear: le,\n selectMonth: M,\n selectYear: A,\n handleYear: L\n }), presetDate: _, toggleYearPicker: ($) => m(0, $) }), ($, ee) => (w(), Te(ma, {\n \"multi-calendars\": s(R).count,\n collapse: $.collapse,\n stretch: \"\",\n \"is-mobile\": $.isMobile\n }, {\n default: we(({ instance: O }) => [\n $.$slots[\"top-extra\"] ? ie($.$slots, \"top-extra\", {\n key: 0,\n value: $.internalModelValue\n }) : Q(\"\", !0),\n $.$slots[\"month-year\"] ? ie($.$slots, \"month-year\", ze(He({ key: 1 }, {\n year: s(P),\n months: s(g)(O),\n years: s(d)(O),\n selectMonth: s(M),\n selectYear: s(A),\n instance: O\n }))) : (w(), Te(ta, {\n key: 2,\n items: s(g)(O),\n \"arrow-navigation\": $.arrowNavigation,\n \"is-last\": $.autoApply && !s(h).keepActionRow,\n \"esc-close\": $.escClose,\n height: s(h).modeHeight,\n config: $.config,\n \"no-overlay-focus\": !!($.noOverlayFocus || $.textInput),\n \"use-relative\": \"\",\n type: \"month\",\n onSelected: (J) => s(M)(J, O),\n onHoverValue: (J) => s(C)(J, O)\n }, Ge({\n header: we(() => [\n tt(Wn, He($.$props, {\n items: s(d)(O),\n instance: O,\n \"show-year-picker\": s(T)[O],\n year: s(P)(O),\n \"is-disabled\": (J) => s(v)(O, J),\n onHandleYear: (J) => s(L)(O, J),\n onYearSelect: (J) => s(z)(J, O),\n onToggleYearPicker: (J) => s(m)(O, J?.flow, J?.show)\n }), Ge({ _: 2 }, [\n Ce(s(f), (J, ce) => ({\n name: J,\n fn: we((pe) => [\n ie($.$slots, J, ze(Je(pe)))\n ])\n }))\n ]), 1040, [\"items\", \"instance\", \"show-year-picker\", \"year\", \"is-disabled\", \"onHandleYear\", \"onYearSelect\", \"onToggleYearPicker\"])\n ]),\n _: 2\n }, [\n $.$slots[\"month-overlay-value\"] ? {\n name: \"item\",\n fn: we(({ item: J }) => [\n ie($.$slots, \"month-overlay-value\", {\n text: J.text,\n value: J.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"arrow-navigation\", \"is-last\", \"esc-close\", \"height\", \"config\", \"no-overlay-focus\", \"onSelected\", \"onHoverValue\"]))\n ]),\n _: 3\n }, 8, [\"multi-calendars\", \"collapse\", \"is-mobile\"]));\n }\n}), br = (e, t) => {\n const l = () => {\n e.isTextInputDate && (v.value = ye(H(e.startDate)));\n }, { modelValue: n } = na(e, t, l), a = Z(null), { defaultedHighlight: f, defaultedMultiDates: i, defaultedFilters: g, defaultedRange: d, propDates: P } = Oe(e), v = Z();\n Ue(() => {\n e.startDate && (n.value && e.focusStartDate || !n.value) && (v.value = ye(H(e.startDate)));\n });\n const R = (m) => Array.isArray(n.value) ? n.value.some((z) => ye(z) === m) : n.value ? ye(n.value) === m : !1, h = (m) => d.value.enabled && Array.isArray(n.value) ? xt(n.value, a.value, C(m)) : !1, T = (m) => P.value.allowedDates instanceof Map ? P.value.allowedDates.size ? P.value.allowedDates.has(`${m}`) : !1 : !0, F = (m) => P.value.disabledDates instanceof Map ? P.value.disabledDates.size ? P.value.disabledDates.has(`${m}`) : !1 : typeof P.value.disabledDates == \"function\" ? P.value.disabledDates(ut(Fe(Gt(H())), m)) : !0, _ = j(() => Ht(qa(e.yearRange, e.locale, e.reverseYears), (m) => {\n const z = R(m.value), L = Zt(\n m.value,\n Wt(P.value.minDate),\n Wt(P.value.maxDate)\n ) || g.value.years.includes(m.value) || !T(m.value) || F(m.value), le = h(m.value) && !z, U = xa(f.value, m.value);\n return { active: z, disabled: L, isBetween: le, highlighted: U };\n })), C = (m) => ut(it(Gt(/* @__PURE__ */ new Date())), m);\n return {\n groupedYears: _,\n modelValue: n,\n focusYear: v,\n setHoverValue: (m) => {\n a.value = ut(it(/* @__PURE__ */ new Date()), m);\n },\n selectYear: (m) => {\n if (t(\"update-month-year\", { instance: 0, year: m }), i.value.enabled)\n return n.value ? Array.isArray(n.value) && ((n.value?.map((L) => ye(L))).includes(m) ? n.value = n.value.filter((L) => ye(L) !== m) : n.value.push(ut(Fe(H()), m))) : n.value = [ut(Fe(Gt(H())), m)], t(\"auto-apply\", !0);\n d.value.enabled ? (n.value = tn(n, C(m), t), at().then(() => {\n pa(n.value, t, e.autoApply, e.modelAuto);\n })) : (n.value = C(m), t(\"auto-apply\"));\n }\n };\n}, kr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"YearPicker\",\n props: {\n ...dt\n },\n emits: [\n \"update:internal-model-value\",\n \"reset-flow\",\n \"range-start\",\n \"range-end\",\n \"auto-apply\",\n \"update-month-year\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, { groupedYears: f, modelValue: i, focusYear: g, selectYear: d, setHoverValue: P } = br(a, n), { defaultedConfig: v } = Oe(a);\n return t({ getSidebarProps: () => ({\n modelValue: i,\n selectYear: d\n }) }), (h, T) => (w(), W(\"div\", null, [\n h.$slots[\"top-extra\"] ? ie(h.$slots, \"top-extra\", {\n key: 0,\n value: h.internalModelValue\n }) : Q(\"\", !0),\n h.$slots[\"month-year\"] ? ie(h.$slots, \"month-year\", ze(He({ key: 1 }, {\n years: s(f),\n selectYear: s(d)\n }))) : (w(), Te(ta, {\n key: 2,\n items: s(f),\n \"is-last\": h.autoApply && !s(v).keepActionRow,\n height: s(v).modeHeight,\n config: h.config,\n \"no-overlay-focus\": !!(h.noOverlayFocus || h.textInput),\n \"focus-value\": s(g),\n type: \"year\",\n \"use-relative\": \"\",\n onSelected: s(d),\n onHoverValue: s(P)\n }, Ge({ _: 2 }, [\n h.$slots[\"year-overlay-value\"] ? {\n name: \"item\",\n fn: we(({ item: F }) => [\n ie(h.$slots, \"year-overlay-value\", {\n text: F.text,\n value: F.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"is-last\", \"height\", \"config\", \"no-overlay-focus\", \"focus-value\", \"onSelected\", \"onHoverValue\"]))\n ]));\n }\n}), wr = {\n key: 0,\n class: \"dp__time_input\"\n}, Dr = [\"data-compact\", \"data-collapsed\"], Mr = [\"data-test-id\", \"aria-label\", \"onKeydown\", \"onClick\", \"onMousedown\"], $r = [\"aria-label\", \"disabled\", \"data-test-id\", \"onKeydown\", \"onClick\"], Ar = [\"data-test-id\", \"aria-label\", \"onKeydown\", \"onClick\", \"onMousedown\"], Tr = { key: 0 }, Sr = [\"aria-label\", \"data-compact\"], Pr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimeInput\",\n props: {\n hours: { type: Number, default: 0 },\n minutes: { type: Number, default: 0 },\n seconds: { type: Number, default: 0 },\n closeTimePickerBtn: { type: Object, default: null },\n order: { type: Number, default: 0 },\n disabledTimesConfig: { type: Function, default: null },\n validateTime: { type: Function, default: () => !1 },\n ...dt\n },\n emits: [\n \"set-hours\",\n \"set-minutes\",\n \"update:hours\",\n \"update:minutes\",\n \"update:seconds\",\n \"reset-flow\",\n \"mounted\",\n \"overlay-closed\",\n \"overlay-opened\",\n \"am-pm-change\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, { setTimePickerElements: f, setTimePickerBackRef: i } = At(), {\n defaultedAriaLabels: g,\n defaultedTransitions: d,\n defaultedFilters: P,\n defaultedConfig: v,\n defaultedRange: R,\n defaultedMultiCalendars: h\n } = Oe(a), { transitionName: T, showTransition: F } = aa(d), _ = ea({\n hours: !1,\n minutes: !1,\n seconds: !1\n }), C = Z(\"AM\"), M = Z(null), A = Z([]), m = Z(), z = Z(!1);\n Ue(() => {\n n(\"mounted\");\n });\n const L = (r) => Se(/* @__PURE__ */ new Date(), {\n hours: r.hours,\n minutes: r.minutes,\n seconds: a.enableSeconds ? r.seconds : 0,\n milliseconds: 0\n }), le = j(\n () => (r) => S(r, a[r]) || $(r, a[r])\n ), U = j(() => ({ hours: a.hours, minutes: a.minutes, seconds: a.seconds })), $ = (r, E) => R.value.enabled && !R.value.disableTimeRangeValidation ? !a.validateTime(r, E) : !1, ee = (r, E) => {\n if (R.value.enabled && !R.value.disableTimeRangeValidation) {\n const K = E ? +a[`${r}Increment`] : -+a[`${r}Increment`], oe = a[r] + K;\n return !a.validateTime(r, oe);\n }\n return !1;\n }, O = j(() => (r) => !re(+a[r] + +a[`${r}Increment`], r) || ee(r, !0)), J = j(() => (r) => !re(+a[r] - +a[`${r}Increment`], r) || ee(r, !1)), ce = (r, E) => Tn(Se(H(), r), E), pe = (r, E) => ml(Se(H(), r), E), p = j(\n () => ({\n dp__time_col: !0,\n dp__time_col_block: !a.timePickerInline,\n dp__time_col_reg_block: !a.enableSeconds && a.is24 && !a.timePickerInline,\n dp__time_col_reg_inline: !a.enableSeconds && a.is24 && a.timePickerInline,\n dp__time_col_reg_with_button: !a.enableSeconds && !a.is24,\n dp__time_col_sec: a.enableSeconds && a.is24,\n dp__time_col_sec_with_button: a.enableSeconds && !a.is24\n })\n ), Y = j(\n () => a.timePickerInline && R.value.enabled && !h.value.count\n ), te = j(() => {\n const r = [{ type: \"hours\" }];\n return a.enableMinutes && r.push({ type: \"\", separator: !0 }, {\n type: \"minutes\"\n }), a.enableSeconds && r.push({ type: \"\", separator: !0 }, {\n type: \"seconds\"\n }), r;\n }), y = j(() => te.value.filter((r) => !r.separator)), V = j(() => (r) => {\n if (r === \"hours\") {\n const E = X(+a.hours);\n return { text: E < 10 ? `0${E}` : `${E}`, value: E };\n }\n return { text: a[r] < 10 ? `0${a[r]}` : `${a[r]}`, value: a[r] };\n }), S = (r, E) => {\n if (!a.disabledTimesConfig) return !1;\n const K = a.disabledTimesConfig(a.order, r === \"hours\" ? E : void 0);\n return K[r] ? !!K[r]?.includes(E) : !0;\n }, q = (r, E) => E !== \"hours\" || C.value === \"AM\" ? r : r + 12, k = (r) => {\n const E = a.is24 ? 24 : 12, K = r === \"hours\" ? E : 60, oe = +a[`${r}GridIncrement`], ge = r === \"hours\" && !a.is24 ? oe : 0, _e = [];\n for (let Ye = ge; Ye < K; Ye += oe)\n _e.push({ value: a.is24 ? Ye : q(Ye, r), text: Ye < 10 ? `0${Ye}` : `${Ye}` });\n return r === \"hours\" && !a.is24 && _e.unshift({ value: C.value === \"PM\" ? 12 : 0, text: \"12\" }), Ht(_e, (Ye) => ({ active: !1, disabled: P.value.times[r].includes(Ye.value) || !re(Ye.value, r) || S(r, Ye.value) || $(r, Ye.value) }));\n }, se = (r) => r >= 0 ? r : 59, u = (r) => r >= 0 ? r : 23, re = (r, E) => {\n const K = a.minTime ? L(Sa(a.minTime)) : null, oe = a.maxTime ? L(Sa(a.maxTime)) : null, ge = L(\n Sa(\n U.value,\n E,\n E === \"minutes\" || E === \"seconds\" ? se(r) : u(r)\n )\n );\n return K && oe ? (Ft(ge, oe) || Nt(ge, oe)) && (_t(ge, K) || Nt(ge, K)) : K ? _t(ge, K) || Nt(ge, K) : oe ? Ft(ge, oe) || Nt(ge, oe) : !0;\n }, G = (r) => a[`no${r[0].toUpperCase() + r.slice(1)}Overlay`], I = (r) => {\n G(r) || (_[r] = !_[r], _[r] ? (z.value = !0, n(\"overlay-opened\", r)) : (z.value = !1, n(\"overlay-closed\", r)));\n }, x = (r) => r === \"hours\" ? yt : r === \"minutes\" ? $t : zt, c = () => {\n m.value && clearTimeout(m.value);\n }, o = (r, E = !0, K) => {\n const oe = E ? ce : pe, ge = E ? +a[`${r}Increment`] : -+a[`${r}Increment`];\n re(+a[r] + ge, r) && n(\n `update:${r}`,\n x(r)(oe({ [r]: +a[r] }, { [r]: +a[`${r}Increment`] }))\n ), !K?.keyboard && v.value.timeArrowHoldThreshold && (m.value = setTimeout(() => {\n o(r, E);\n }, v.value.timeArrowHoldThreshold));\n }, X = (r) => a.is24 ? r : (r >= 12 ? C.value = \"PM\" : C.value = \"AM\", Sl(r)), B = () => {\n C.value === \"PM\" ? (C.value = \"AM\", n(\"update:hours\", a.hours - 12)) : (C.value = \"PM\", n(\"update:hours\", a.hours + 12)), n(\"am-pm-change\", C.value);\n }, be = (r) => {\n _[r] = !0;\n }, Ae = (r, E, K) => {\n if (r && a.arrowNavigation) {\n Array.isArray(A.value[E]) ? A.value[E][K] = r : A.value[E] = [r];\n const oe = A.value.reduce(\n (ge, _e) => _e.map((Ye, nt) => [...ge[nt] || [], _e[nt]]),\n []\n );\n i(a.closeTimePickerBtn), M.value && (oe[1] = oe[1].concat(M.value)), f(oe, a.order);\n }\n }, ne = (r, E) => (I(r), n(`update:${r}`, E));\n return t({ openChildCmp: be }), (r, E) => r.disabled ? Q(\"\", !0) : (w(), W(\"div\", wr, [\n (w(!0), W(ke, null, Ce(te.value, (K, oe) => (w(), W(\"div\", {\n key: oe,\n class: De(p.value),\n \"data-compact\": Y.value && !r.enableSeconds,\n \"data-collapsed\": Y.value && r.enableSeconds\n }, [\n K.separator ? (w(), W(ke, { key: 0 }, [\n z.value ? Q(\"\", !0) : (w(), W(ke, { key: 0 }, [\n gt(\":\")\n ], 64))\n ], 64)) : (w(), W(ke, { key: 1 }, [\n he(\"button\", {\n ref_for: !0,\n ref: (ge) => Ae(ge, oe, 0),\n type: \"button\",\n class: De({\n dp__btn: !0,\n dp__inc_dec_button: !r.timePickerInline,\n dp__inc_dec_button_inline: r.timePickerInline,\n dp__tp_inline_btn_top: r.timePickerInline,\n dp__inc_dec_button_disabled: O.value(K.type),\n \"dp--hidden-el\": z.value\n }),\n \"data-test-id\": `${K.type}-time-inc-btn-${a.order}`,\n \"aria-label\": s(g)?.incrementValue(K.type),\n tabindex: \"0\",\n onKeydown: (ge) => s(qe)(ge, () => o(K.type, !0, { keyboard: !0 }), !0),\n onClick: (ge) => s(v).timeArrowHoldThreshold ? void 0 : o(K.type, !0),\n onMousedown: (ge) => s(v).timeArrowHoldThreshold ? o(K.type, !0) : void 0,\n onMouseup: c\n }, [\n a.timePickerInline ? (w(), W(ke, { key: 1 }, [\n r.$slots[\"tp-inline-arrow-up\"] ? ie(r.$slots, \"tp-inline-arrow-up\", { key: 0 }) : (w(), W(ke, { key: 1 }, [\n E[2] || (E[2] = he(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_l\" }, null, -1)),\n E[3] || (E[3] = he(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_r\" }, null, -1))\n ], 64))\n ], 64)) : (w(), W(ke, { key: 0 }, [\n r.$slots[\"arrow-up\"] ? ie(r.$slots, \"arrow-up\", { key: 0 }) : Q(\"\", !0),\n r.$slots[\"arrow-up\"] ? Q(\"\", !0) : (w(), Te(s(Ka), { key: 1 }))\n ], 64))\n ], 42, Mr),\n he(\"button\", {\n ref_for: !0,\n ref: (ge) => Ae(ge, oe, 1),\n type: \"button\",\n \"aria-label\": `${V.value(K.type).text}-${s(g)?.openTpOverlay(K.type)}`,\n class: De({\n dp__time_display: !0,\n dp__time_display_block: !r.timePickerInline,\n dp__time_display_inline: r.timePickerInline,\n \"dp--time-invalid\": le.value(K.type),\n \"dp--time-overlay-btn\": !le.value(K.type),\n \"dp--hidden-el\": z.value\n }),\n disabled: G(K.type),\n tabindex: \"0\",\n \"data-test-id\": `${K.type}-toggle-overlay-btn-${a.order}`,\n onKeydown: (ge) => s(qe)(ge, () => I(K.type), !0),\n onClick: (ge) => I(K.type)\n }, [\n r.$slots[K.type] ? ie(r.$slots, K.type, {\n key: 0,\n text: V.value(K.type).text,\n value: V.value(K.type).value\n }) : Q(\"\", !0),\n r.$slots[K.type] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(V.value(K.type).text), 1)\n ], 64))\n ], 42, $r),\n he(\"button\", {\n ref_for: !0,\n ref: (ge) => Ae(ge, oe, 2),\n type: \"button\",\n class: De({\n dp__btn: !0,\n dp__inc_dec_button: !r.timePickerInline,\n dp__inc_dec_button_inline: r.timePickerInline,\n dp__tp_inline_btn_bottom: r.timePickerInline,\n dp__inc_dec_button_disabled: J.value(K.type),\n \"dp--hidden-el\": z.value\n }),\n \"data-test-id\": `${K.type}-time-dec-btn-${a.order}`,\n \"aria-label\": s(g)?.decrementValue(K.type),\n tabindex: \"0\",\n onKeydown: (ge) => s(qe)(ge, () => o(K.type, !1, { keyboard: !0 }), !0),\n onClick: (ge) => s(v).timeArrowHoldThreshold ? void 0 : o(K.type, !1),\n onMousedown: (ge) => s(v).timeArrowHoldThreshold ? o(K.type, !1) : void 0,\n onMouseup: c\n }, [\n a.timePickerInline ? (w(), W(ke, { key: 1 }, [\n r.$slots[\"tp-inline-arrow-down\"] ? ie(r.$slots, \"tp-inline-arrow-down\", { key: 0 }) : (w(), W(ke, { key: 1 }, [\n E[4] || (E[4] = he(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_l\" }, null, -1)),\n E[5] || (E[5] = he(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_r\" }, null, -1))\n ], 64))\n ], 64)) : (w(), W(ke, { key: 0 }, [\n r.$slots[\"arrow-down\"] ? ie(r.$slots, \"arrow-down\", { key: 0 }) : Q(\"\", !0),\n r.$slots[\"arrow-down\"] ? Q(\"\", !0) : (w(), Te(s(Ga), { key: 1 }))\n ], 64))\n ], 42, Ar)\n ], 64))\n ], 10, Dr))), 128)),\n r.is24 ? Q(\"\", !0) : (w(), W(\"div\", Tr, [\n r.$slots[\"am-pm-button\"] ? ie(r.$slots, \"am-pm-button\", {\n key: 0,\n toggle: B,\n value: C.value\n }) : Q(\"\", !0),\n r.$slots[\"am-pm-button\"] ? Q(\"\", !0) : (w(), W(\"button\", {\n key: 1,\n ref_key: \"amPmButton\",\n ref: M,\n type: \"button\",\n class: \"dp__pm_am_button\",\n role: \"button\",\n \"aria-label\": s(g)?.amPmButton,\n tabindex: \"0\",\n \"data-compact\": Y.value,\n onClick: B,\n onKeydown: E[0] || (E[0] = (K) => s(qe)(K, () => B(), !0))\n }, Ke(C.value), 41, Sr))\n ])),\n (w(!0), W(ke, null, Ce(y.value, (K, oe) => (w(), Te(Vt, {\n key: oe,\n name: s(T)(_[K.type]),\n css: s(F)\n }, {\n default: we(() => [\n _[K.type] ? (w(), Te(ta, {\n key: 0,\n items: k(K.type),\n \"is-last\": r.autoApply && !s(v).keepActionRow,\n \"esc-close\": r.escClose,\n type: K.type,\n \"text-input\": r.textInput,\n config: r.config,\n \"arrow-navigation\": r.arrowNavigation,\n \"aria-labels\": r.ariaLabels,\n \"overlay-label\": s(g).timeOverlay?.(K.type),\n onSelected: (ge) => ne(K.type, ge),\n onToggle: (ge) => I(K.type),\n onResetFlow: E[1] || (E[1] = (ge) => r.$emit(\"reset-flow\"))\n }, Ge({\n \"button-icon\": we(() => [\n r.$slots[\"clock-icon\"] ? ie(r.$slots, \"clock-icon\", { key: 0 }) : Q(\"\", !0),\n r.$slots[\"clock-icon\"] ? Q(\"\", !0) : (w(), Te(fa(r.timePickerInline ? s(jt) : s(ja)), { key: 1 }))\n ]),\n _: 2\n }, [\n r.$slots[`${K.type}-overlay-value`] ? {\n name: \"item\",\n fn: we(({ item: ge }) => [\n ie(r.$slots, `${K.type}-overlay-value`, {\n text: ge.text,\n value: ge.value\n })\n ]),\n key: \"0\"\n } : void 0,\n r.$slots[`${K.type}-overlay-header`] ? {\n name: \"header\",\n fn: we(() => [\n ie(r.$slots, `${K.type}-overlay-header`, {\n toggle: () => I(K.type)\n })\n ]),\n key: \"1\"\n } : void 0\n ]), 1032, [\"items\", \"is-last\", \"esc-close\", \"type\", \"text-input\", \"config\", \"arrow-navigation\", \"aria-labels\", \"overlay-label\", \"onSelected\", \"onToggle\"])) : Q(\"\", !0)\n ]),\n _: 2\n }, 1032, [\"name\", \"css\"]))), 128))\n ]));\n }\n}), Rr = [\"data-dp-mobile\"], Cr = [\"aria-label\", \"tabindex\"], Or = [\"role\", \"aria-label\", \"tabindex\"], Br = [\"aria-label\"], Kn = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimePicker\",\n props: {\n hours: { type: [Number, Array], default: 0 },\n minutes: { type: [Number, Array], default: 0 },\n seconds: { type: [Number, Array], default: 0 },\n disabledTimesConfig: { type: Function, default: null },\n validateTime: {\n type: Function,\n default: () => !1\n },\n ...dt\n },\n emits: [\n \"update:hours\",\n \"update:minutes\",\n \"update:seconds\",\n \"mount\",\n \"reset-flow\",\n \"overlay-opened\",\n \"overlay-closed\",\n \"am-pm-change\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, { buildMatrix: f, setTimePicker: i } = At(), g = Yt(), { defaultedTransitions: d, defaultedAriaLabels: P, defaultedTextInput: v, defaultedConfig: R, defaultedRange: h } = Oe(a), { transitionName: T, showTransition: F } = aa(d), { hideNavigationButtons: _ } = ga(), C = Z(null), M = Z(null), A = Z([]), m = Z(null), z = Z(!1);\n Ue(() => {\n n(\"mount\"), !a.timePicker && a.arrowNavigation ? f([Le(C.value)], \"time\") : i(!0, a.timePicker);\n });\n const L = j(() => h.value.enabled && a.modelAuto ? Rn(a.internalModelValue) : !0), le = Z(!1), U = (S) => ({\n hours: Array.isArray(a.hours) ? a.hours[S] : a.hours,\n minutes: Array.isArray(a.minutes) ? a.minutes[S] : a.minutes,\n seconds: Array.isArray(a.seconds) ? a.seconds[S] : a.seconds\n }), $ = j(() => {\n const S = [];\n if (h.value.enabled)\n for (let q = 0; q < 2; q++)\n S.push(U(q));\n else\n S.push(U(0));\n return S;\n }), ee = (S, q = !1, k = \"\") => {\n q || n(\"reset-flow\"), le.value = S, n(S ? \"overlay-opened\" : \"overlay-closed\", je.time), a.arrowNavigation && i(S), at(() => {\n k !== \"\" && A.value[0] && A.value[0].openChildCmp(k);\n });\n }, O = j(() => ({\n dp__btn: !0,\n dp__button: !0,\n dp__button_bottom: a.autoApply && !R.value.keepActionRow\n })), J = et(g, \"timePicker\"), ce = (S, q, k) => h.value.enabled ? q === 0 ? [S, $.value[1][k]] : [$.value[0][k], S] : S, pe = (S) => {\n n(\"update:hours\", S);\n }, p = (S) => {\n n(\"update:minutes\", S);\n }, Y = (S) => {\n n(\"update:seconds\", S);\n }, te = () => {\n if (m.value && !v.value.enabled && !a.noOverlayFocus) {\n const S = Cn(m.value);\n S && S.focus({ preventScroll: !0 });\n }\n }, y = (S) => {\n z.value = !1, n(\"overlay-closed\", S);\n }, V = (S) => {\n z.value = !0, n(\"overlay-opened\", S);\n };\n return t({ toggleTimePicker: ee }), (S, q) => (w(), W(\"div\", {\n class: \"dp--tp-wrap\",\n \"data-dp-mobile\": S.isMobile\n }, [\n !S.timePicker && !S.timePickerInline ? ua((w(), W(\"button\", {\n key: 0,\n ref_key: \"openTimePickerBtn\",\n ref: C,\n type: \"button\",\n class: De({ ...O.value, \"dp--hidden-el\": le.value }),\n \"aria-label\": s(P)?.openTimePicker,\n tabindex: S.noOverlayFocus ? void 0 : 0,\n \"data-test-id\": \"open-time-picker-btn\",\n onKeydown: q[0] || (q[0] = (k) => s(qe)(k, () => ee(!0))),\n onClick: q[1] || (q[1] = (k) => ee(!0))\n }, [\n S.$slots[\"clock-icon\"] ? ie(S.$slots, \"clock-icon\", { key: 0 }) : Q(\"\", !0),\n S.$slots[\"clock-icon\"] ? Q(\"\", !0) : (w(), Te(s(ja), { key: 1 }))\n ], 42, Cr)), [\n [ia, !s(_)(S.hideNavigation, \"time\")]\n ]) : Q(\"\", !0),\n tt(Vt, {\n name: s(T)(le.value),\n css: s(F) && !S.timePickerInline\n }, {\n default: we(() => [\n le.value || S.timePicker || S.timePickerInline ? (w(), W(\"div\", {\n key: 0,\n ref_key: \"overlayRef\",\n ref: m,\n role: S.timePickerInline ? void 0 : \"dialog\",\n class: De({\n dp__overlay: !S.timePickerInline,\n \"dp--overlay-absolute\": !a.timePicker && !S.timePickerInline,\n \"dp--overlay-relative\": a.timePicker\n }),\n style: lt(S.timePicker ? { height: `${s(R).modeHeight}px` } : void 0),\n \"aria-label\": s(P)?.timePicker,\n tabindex: S.timePickerInline ? void 0 : 0\n }, [\n he(\"div\", {\n class: De(\n S.timePickerInline ? \"dp__time_picker_inline_container\" : \"dp__overlay_container dp__container_flex dp__time_picker_overlay_container\"\n ),\n style: { display: \"flex\" }\n }, [\n S.$slots[\"time-picker-overlay\"] ? ie(S.$slots, \"time-picker-overlay\", {\n key: 0,\n hours: e.hours,\n minutes: e.minutes,\n seconds: e.seconds,\n setHours: pe,\n setMinutes: p,\n setSeconds: Y\n }) : Q(\"\", !0),\n S.$slots[\"time-picker-overlay\"] ? Q(\"\", !0) : (w(), W(\"div\", {\n key: 1,\n class: De(S.timePickerInline ? \"dp__flex\" : \"dp__overlay_row dp__flex_row\")\n }, [\n (w(!0), W(ke, null, Ce($.value, (k, se) => ua((w(), Te(Pr, He({ key: se }, { ref_for: !0 }, {\n ...S.$props,\n order: se,\n hours: k.hours,\n minutes: k.minutes,\n seconds: k.seconds,\n closeTimePickerBtn: M.value,\n disabledTimesConfig: e.disabledTimesConfig,\n disabled: se === 0 ? s(h).fixedStart : s(h).fixedEnd\n }, {\n ref_for: !0,\n ref_key: \"timeInputRefs\",\n ref: A,\n \"validate-time\": (u, re) => e.validateTime(u, ce(re, se, u)),\n \"onUpdate:hours\": (u) => pe(ce(u, se, \"hours\")),\n \"onUpdate:minutes\": (u) => p(ce(u, se, \"minutes\")),\n \"onUpdate:seconds\": (u) => Y(ce(u, se, \"seconds\")),\n onMounted: te,\n onOverlayClosed: y,\n onOverlayOpened: V,\n onAmPmChange: q[2] || (q[2] = (u) => S.$emit(\"am-pm-change\", u))\n }), Ge({ _: 2 }, [\n Ce(s(J), (u, re) => ({\n name: u,\n fn: we((G) => [\n ie(S.$slots, u, He({ ref_for: !0 }, G))\n ])\n }))\n ]), 1040, [\"validate-time\", \"onUpdate:hours\", \"onUpdate:minutes\", \"onUpdate:seconds\"])), [\n [ia, se === 0 ? !0 : L.value]\n ])), 128))\n ], 2)),\n !S.timePicker && !S.timePickerInline ? ua((w(), W(\"button\", {\n key: 2,\n ref_key: \"closeTimePickerBtn\",\n ref: M,\n type: \"button\",\n class: De({ ...O.value, \"dp--hidden-el\": z.value }),\n \"aria-label\": s(P)?.closeTimePicker,\n tabindex: \"0\",\n onKeydown: q[3] || (q[3] = (k) => s(qe)(k, () => ee(!1))),\n onClick: q[4] || (q[4] = (k) => ee(!1))\n }, [\n S.$slots[\"calendar-icon\"] ? ie(S.$slots, \"calendar-icon\", { key: 0 }) : Q(\"\", !0),\n S.$slots[\"calendar-icon\"] ? Q(\"\", !0) : (w(), Te(s(jt), { key: 1 }))\n ], 42, Br)), [\n [ia, !s(_)(S.hideNavigation, \"time\")]\n ]) : Q(\"\", !0)\n ], 2)\n ], 14, Or)) : Q(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 8, Rr));\n }\n}), Gn = (e, t, l, n) => {\n const { defaultedRange: a } = Oe(e), f = (m, z) => Array.isArray(t[m]) ? t[m][z] : t[m], i = (m) => e.enableSeconds ? Array.isArray(t.seconds) ? t.seconds[m] : t.seconds : 0, g = (m, z) => m ? z !== void 0 ? Mt(m, f(\"hours\", z), f(\"minutes\", z), i(z)) : Mt(m, t.hours, t.minutes, i()) : wn(H(), i(z)), d = (m, z) => {\n t[m] = z;\n }, P = j(() => e.modelAuto && a.value.enabled ? Array.isArray(l.value) ? l.value.length > 1 : !1 : a.value.enabled), v = (m, z) => {\n const L = Object.fromEntries(\n Object.keys(t).map((le) => le === m ? [le, z] : [le, t[le]].slice())\n );\n if (P.value && !a.value.disableTimeRangeValidation) {\n const le = ($) => l.value ? Mt(\n l.value[$],\n L.hours[$],\n L.minutes[$],\n L.seconds[$]\n ) : null, U = ($) => Dn(l.value[$], 0);\n return !($e(le(0), le(1)) && (_t(le(0), U(1)) || Ft(le(1), U(0))));\n }\n return !0;\n }, R = (m, z) => {\n v(m, z) && (d(m, z), n && n());\n }, h = (m) => {\n R(\"hours\", m);\n }, T = (m) => {\n R(\"minutes\", m);\n }, F = (m) => {\n R(\"seconds\", m);\n }, _ = (m, z, L, le) => {\n z && h(m), !z && !L && T(m), L && F(m), l.value && le(l.value);\n }, C = (m) => {\n if (m) {\n const z = Array.isArray(m), L = z ? [+m[0].hours, +m[1].hours] : +m.hours, le = z ? [+m[0].minutes, +m[1].minutes] : +m.minutes, U = z ? [+m[0].seconds, +m[1].seconds] : +m.seconds;\n d(\"hours\", L), d(\"minutes\", le), e.enableSeconds && d(\"seconds\", U);\n }\n }, M = (m, z) => {\n const L = {\n hours: Array.isArray(t.hours) ? t.hours[m] : t.hours,\n disabledArr: []\n };\n return (z || z === 0) && (L.hours = z), Array.isArray(e.disabledTimes) && (L.disabledArr = a.value.enabled && Array.isArray(e.disabledTimes[m]) ? e.disabledTimes[m] : e.disabledTimes), L;\n }, A = j(() => (m, z) => {\n if (Array.isArray(e.disabledTimes)) {\n const { disabledArr: L, hours: le } = M(m, z), U = L.filter(($) => +$.hours === le);\n return U[0]?.minutes === \"*\" ? { hours: [le], minutes: void 0, seconds: void 0 } : {\n hours: [],\n minutes: U?.map(($) => +$.minutes) ?? [],\n seconds: U?.map(($) => $.seconds ? +$.seconds : void 0) ?? []\n };\n }\n return { hours: [], minutes: [], seconds: [] };\n });\n return {\n setTime: d,\n updateHours: h,\n updateMinutes: T,\n updateSeconds: F,\n getSetDateTime: g,\n updateTimeValues: _,\n getSecondsValue: i,\n assignStartTime: C,\n validateTime: v,\n disabledTimesConfig: A\n };\n}, _r = (e, t) => {\n const l = () => {\n e.isTextInputDate && z();\n }, { modelValue: n, time: a } = na(e, t, l), { defaultedStartTime: f, defaultedRange: i, defaultedTz: g } = Oe(e), { updateTimeValues: d, getSetDateTime: P, setTime: v, assignStartTime: R, disabledTimesConfig: h, validateTime: T } = Gn(e, a, n, F);\n function F() {\n t(\"update-flow-step\");\n }\n const _ = (U) => {\n const { hours: $, minutes: ee, seconds: O } = U;\n return { hours: +$, minutes: +ee, seconds: O ? +O : 0 };\n }, C = () => {\n if (e.startTime) {\n if (Array.isArray(e.startTime)) {\n const $ = _(e.startTime[0]), ee = _(e.startTime[1]);\n return [Se(H(), $), Se(H(), ee)];\n }\n const U = _(e.startTime);\n return Se(H(), U);\n }\n return i.value.enabled ? [null, null] : null;\n }, M = () => {\n if (i.value.enabled) {\n const [U, $] = C();\n n.value = [\n Ze(P(U, 0), g.value.timezone),\n Ze(P($, 1), g.value.timezone)\n ];\n } else\n n.value = Ze(P(C()), g.value.timezone);\n }, A = (U) => Array.isArray(U) ? [Bt(H(U[0])), Bt(H(U[1]))] : [Bt(U ?? H())], m = (U, $, ee) => {\n v(\"hours\", U), v(\"minutes\", $), v(\"seconds\", e.enableSeconds ? ee : 0);\n }, z = () => {\n const [U, $] = A(n.value);\n return i.value.enabled ? m(\n [U.hours, $.hours],\n [U.minutes, $.minutes],\n [U.seconds, $.seconds]\n ) : m(U.hours, U.minutes, U.seconds);\n };\n Ue(() => {\n if (!e.shadow)\n return R(f.value), n.value ? z() : M();\n });\n const L = () => {\n Array.isArray(n.value) ? n.value = n.value.map((U, $) => U && P(U, $)) : n.value = P(n.value), t(\"time-update\");\n };\n return {\n modelValue: n,\n time: a,\n disabledTimesConfig: h,\n updateTime: (U, $ = !0, ee = !1) => {\n d(U, $, ee, L);\n },\n validateTime: T\n };\n}, Yr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimePickerSolo\",\n props: {\n ...dt\n },\n emits: [\n \"update:internal-model-value\",\n \"time-update\",\n \"am-pm-change\",\n \"mount\",\n \"reset-flow\",\n \"update-flow-step\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, f = Yt(), i = et(f, \"timePicker\"), g = Z(null), { time: d, modelValue: P, disabledTimesConfig: v, updateTime: R, validateTime: h } = _r(a, n);\n return Ue(() => {\n a.shadow || n(\"mount\", null);\n }), t({ getSidebarProps: () => ({\n modelValue: P,\n time: d,\n updateTime: R\n }), toggleTimePicker: (_, C = !1, M = \"\") => {\n g.value?.toggleTimePicker(_, C, M);\n } }), (_, C) => (w(), Te(ma, {\n \"multi-calendars\": 0,\n stretch: \"\",\n \"is-mobile\": _.isMobile\n }, {\n default: we(() => [\n tt(Kn, He({\n ref_key: \"tpRef\",\n ref: g\n }, _.$props, {\n hours: s(d).hours,\n minutes: s(d).minutes,\n seconds: s(d).seconds,\n \"internal-model-value\": _.internalModelValue,\n \"disabled-times-config\": s(v),\n \"validate-time\": s(h),\n \"onUpdate:hours\": C[0] || (C[0] = (M) => s(R)(M)),\n \"onUpdate:minutes\": C[1] || (C[1] = (M) => s(R)(M, !1)),\n \"onUpdate:seconds\": C[2] || (C[2] = (M) => s(R)(M, !1, !0)),\n onAmPmChange: C[3] || (C[3] = (M) => _.$emit(\"am-pm-change\", M)),\n onResetFlow: C[4] || (C[4] = (M) => _.$emit(\"reset-flow\")),\n onOverlayClosed: C[5] || (C[5] = (M) => _.$emit(\"overlay-toggle\", { open: !1, overlay: M })),\n onOverlayOpened: C[6] || (C[6] = (M) => _.$emit(\"overlay-toggle\", { open: !0, overlay: M }))\n }), Ge({ _: 2 }, [\n Ce(s(i), (M, A) => ({\n name: M,\n fn: we((m) => [\n ie(_.$slots, M, ze(Je(m)))\n ])\n }))\n ]), 1040, [\"hours\", \"minutes\", \"seconds\", \"internal-model-value\", \"disabled-times-config\", \"validate-time\"])\n ]),\n _: 3\n }, 8, [\"is-mobile\"]));\n }\n}), Ir = { class: \"dp--header-wrap\" }, Er = {\n key: 0,\n class: \"dp__month_year_wrap\"\n}, Nr = { key: 0 }, Lr = { class: \"dp__month_year_wrap\" }, Fr = [\"data-dp-element\", \"aria-label\", \"data-test-id\", \"onClick\", \"onKeydown\"], zr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"DpHeader\",\n props: {\n month: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n instance: { type: Number, default: 0 },\n years: { type: Array, default: () => [] },\n months: { type: Array, default: () => [] },\n ...dt\n },\n emits: [\"update-month-year\", \"mount\", \"reset-flow\", \"overlay-closed\", \"overlay-opened\"],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, {\n defaultedTransitions: f,\n defaultedAriaLabels: i,\n defaultedMultiCalendars: g,\n defaultedFilters: d,\n defaultedConfig: P,\n defaultedHighlight: v,\n propDates: R,\n defaultedUI: h\n } = Oe(a), { transitionName: T, showTransition: F } = aa(f), { buildMatrix: _ } = At(), { handleMonthYearChange: C, isDisabled: M, updateMonthYear: A } = or(a, n), { showLeftIcon: m, showRightIcon: z } = ga(), L = Z(!1), le = Z(!1), U = Z(!1), $ = Z([null, null, null, null]);\n Ue(() => {\n n(\"mount\");\n });\n const ee = (u) => ({\n get: () => a[u],\n set: (re) => {\n const G = u === ot.month ? ot.year : ot.month;\n n(\"update-month-year\", { [u]: re, [G]: a[G] }), u === ot.month ? y(!0) : V(!0);\n }\n }), O = j(ee(ot.month)), J = j(ee(ot.year)), ce = j(() => (u) => ({\n month: a.month,\n year: a.year,\n items: u === ot.month ? a.months : a.years,\n instance: a.instance,\n updateMonthYear: A,\n toggle: u === ot.month ? y : V\n })), pe = j(() => {\n const u = a.months.find((re) => re.value === a.month);\n return u || { text: \"\", value: 0 };\n }), p = j(() => Ht(a.months, (u) => {\n const re = a.month === u.value, G = Zt(\n u.value,\n _n(a.year, R.value.minDate),\n Yn(a.year, R.value.maxDate)\n ) || d.value.months.includes(u.value), I = Fn(v.value, u.value, a.year);\n return { active: re, disabled: G, highlighted: I };\n })), Y = j(() => Ht(a.years, (u) => {\n const re = a.year === u.value, G = Zt(\n u.value,\n Wt(R.value.minDate),\n Wt(R.value.maxDate)\n ) || d.value.years.includes(u.value), I = xa(v.value, u.value);\n return { active: re, disabled: G, highlighted: I };\n })), te = (u, re, G) => {\n G !== void 0 ? u.value = G : u.value = !u.value, u.value ? (U.value = !0, n(\"overlay-opened\", re)) : (U.value = !1, n(\"overlay-closed\", re));\n }, y = (u = !1, re) => {\n S(u), te(L, je.month, re);\n }, V = (u = !1, re) => {\n S(u), te(le, je.year, re);\n }, S = (u) => {\n u || n(\"reset-flow\");\n }, q = (u, re) => {\n a.arrowNavigation && ($.value[re] = Le(u), _($.value, \"monthYear\"));\n }, k = j(() => [\n {\n type: ot.month,\n index: 1,\n toggle: y,\n modelValue: O.value,\n updateModelValue: (u) => O.value = u,\n text: pe.value.text,\n showSelectionGrid: L.value,\n items: p.value,\n ariaLabel: i.value?.openMonthsOverlay,\n overlayLabel: i.value.monthPicker?.(!0) ?? void 0\n },\n {\n type: ot.year,\n index: 2,\n toggle: V,\n modelValue: J.value,\n updateModelValue: (u) => J.value = u,\n text: Ja(a.year, a.locale),\n showSelectionGrid: le.value,\n items: Y.value,\n ariaLabel: i.value?.openYearsOverlay,\n overlayLabel: i.value.yearPicker?.(!0) ?? void 0\n }\n ]), se = j(() => a.disableYearSelect ? [k.value[0]] : a.yearFirst ? [...k.value].reverse() : k.value);\n return t({\n toggleMonthPicker: y,\n toggleYearPicker: V,\n handleMonthYearChange: C\n }), (u, re) => (w(), W(\"div\", Ir, [\n u.$slots[\"month-year\"] ? (w(), W(\"div\", Er, [\n ie(u.$slots, \"month-year\", ze(Je({\n month: e.month,\n year: e.year,\n months: e.months,\n years: e.years,\n updateMonthYear: s(A),\n handleMonthYearChange: s(C),\n instance: e.instance,\n isDisabled: s(M)\n })))\n ])) : (w(), W(ke, { key: 1 }, [\n u.$slots[\"top-extra\"] ? (w(), W(\"div\", Nr, [\n ie(u.$slots, \"top-extra\", { value: u.internalModelValue })\n ])) : Q(\"\", !0),\n he(\"div\", Lr, [\n s(m)(s(g), e.instance) && !u.vertical ? (w(), Te(Qt, {\n key: 0,\n \"aria-label\": s(i)?.prevMonth,\n disabled: s(M)(!1),\n class: De(s(h)?.navBtnPrev),\n \"el-name\": \"action-prev\",\n onActivate: re[0] || (re[0] = (G) => s(C)(!1, !0)),\n onSetRef: re[1] || (re[1] = (G) => q(G, 0))\n }, {\n default: we(() => [\n u.$slots[\"arrow-left\"] ? ie(u.$slots, \"arrow-left\", { key: 0 }) : Q(\"\", !0),\n u.$slots[\"arrow-left\"] ? Q(\"\", !0) : (w(), Te(s(Ua), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Q(\"\", !0),\n he(\"div\", {\n class: De([\"dp__month_year_wrap\", {\n dp__year_disable_select: u.disableYearSelect\n }])\n }, [\n (w(!0), W(ke, null, Ce(se.value, (G, I) => (w(), W(ke, {\n key: G.type\n }, [\n he(\"button\", {\n ref_for: !0,\n ref: (x) => q(x, I + 1),\n type: \"button\",\n \"data-dp-element\": `overlay-${G.type}`,\n class: De([\"dp__btn dp__month_year_select\", { \"dp--hidden-el\": U.value }]),\n \"aria-label\": `${G.text}-${G.ariaLabel}`,\n \"data-test-id\": `${G.type}-toggle-overlay-${e.instance}`,\n onClick: G.toggle,\n onKeydown: (x) => s(qe)(x, () => G.toggle(), !0)\n }, [\n u.$slots[G.type] ? ie(u.$slots, G.type, {\n key: 0,\n text: G.text,\n value: a[G.type]\n }) : Q(\"\", !0),\n u.$slots[G.type] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(G.text), 1)\n ], 64))\n ], 42, Fr),\n tt(Vt, {\n name: s(T)(G.showSelectionGrid),\n css: s(F)\n }, {\n default: we(() => [\n G.showSelectionGrid ? (w(), Te(ta, {\n key: 0,\n items: G.items,\n \"arrow-navigation\": u.arrowNavigation,\n \"hide-navigation\": u.hideNavigation,\n \"is-last\": u.autoApply && !s(P).keepActionRow,\n \"skip-button-ref\": !1,\n config: u.config,\n type: G.type,\n \"header-refs\": [],\n \"esc-close\": u.escClose,\n \"menu-wrap-ref\": u.menuWrapRef,\n \"text-input\": u.textInput,\n \"aria-labels\": u.ariaLabels,\n \"overlay-label\": G.overlayLabel,\n onSelected: G.updateModelValue,\n onToggle: G.toggle\n }, Ge({\n \"button-icon\": we(() => [\n u.$slots[\"calendar-icon\"] ? ie(u.$slots, \"calendar-icon\", { key: 0 }) : Q(\"\", !0),\n u.$slots[\"calendar-icon\"] ? Q(\"\", !0) : (w(), Te(s(jt), { key: 1 }))\n ]),\n _: 2\n }, [\n u.$slots[`${G.type}-overlay-value`] ? {\n name: \"item\",\n fn: we(({ item: x }) => [\n ie(u.$slots, `${G.type}-overlay-value`, {\n text: x.text,\n value: x.value\n })\n ]),\n key: \"0\"\n } : void 0,\n u.$slots[`${G.type}-overlay`] ? {\n name: \"overlay\",\n fn: we(() => [\n ie(u.$slots, `${G.type}-overlay`, He({ ref_for: !0 }, ce.value(G.type)))\n ]),\n key: \"1\"\n } : void 0,\n u.$slots[`${G.type}-overlay-header`] ? {\n name: \"header\",\n fn: we(() => [\n ie(u.$slots, `${G.type}-overlay-header`, {\n toggle: G.toggle\n })\n ]),\n key: \"2\"\n } : void 0\n ]), 1032, [\"items\", \"arrow-navigation\", \"hide-navigation\", \"is-last\", \"config\", \"type\", \"esc-close\", \"menu-wrap-ref\", \"text-input\", \"aria-labels\", \"overlay-label\", \"onSelected\", \"onToggle\"])) : Q(\"\", !0)\n ]),\n _: 2\n }, 1032, [\"name\", \"css\"])\n ], 64))), 128))\n ], 2),\n s(m)(s(g), e.instance) && u.vertical ? (w(), Te(Qt, {\n key: 1,\n \"aria-label\": s(i)?.prevMonth,\n \"el-name\": \"action-prev\",\n disabled: s(M)(!1),\n class: De(s(h)?.navBtnPrev),\n onActivate: re[2] || (re[2] = (G) => s(C)(!1, !0))\n }, {\n default: we(() => [\n u.$slots[\"arrow-up\"] ? ie(u.$slots, \"arrow-up\", { key: 0 }) : Q(\"\", !0),\n u.$slots[\"arrow-up\"] ? Q(\"\", !0) : (w(), Te(s(Ka), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Q(\"\", !0),\n s(z)(s(g), e.instance) ? (w(), Te(Qt, {\n key: 2,\n ref: \"rightIcon\",\n \"el-name\": \"action-next\",\n disabled: s(M)(!0),\n \"aria-label\": s(i)?.nextMonth,\n class: De(s(h)?.navBtnNext),\n onActivate: re[3] || (re[3] = (G) => s(C)(!0, !0)),\n onSetRef: re[4] || (re[4] = (G) => q(G, u.disableYearSelect ? 2 : 3))\n }, {\n default: we(() => [\n u.$slots[u.vertical ? \"arrow-down\" : \"arrow-right\"] ? ie(u.$slots, u.vertical ? \"arrow-down\" : \"arrow-right\", { key: 0 }) : Q(\"\", !0),\n u.$slots[u.vertical ? \"arrow-down\" : \"arrow-right\"] ? Q(\"\", !0) : (w(), Te(fa(u.vertical ? s(Ga) : s(Va)), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"disabled\", \"aria-label\", \"class\"])) : Q(\"\", !0)\n ])\n ], 64))\n ]));\n }\n}), Hr = {\n class: \"dp__calendar_header\",\n role: \"row\"\n}, Wr = {\n key: 0,\n class: \"dp__calendar_header_item\",\n role: \"gridcell\"\n}, Ur = [\"aria-label\"], Vr = {\n key: 0,\n class: \"dp__calendar_item dp__week_num\",\n role: \"gridcell\"\n}, jr = { class: \"dp__cell_inner\" }, Kr = [\"id\", \"aria-selected\", \"aria-disabled\", \"aria-label\", \"tabindex\", \"data-test-id\", \"onClick\", \"onTouchend\", \"onKeydown\", \"onMouseenter\", \"onMouseleave\", \"onMousedown\"], Gr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"DpCalendar\",\n props: {\n mappedDates: { type: Array, default: () => [] },\n instance: { type: Number, default: 0 },\n month: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n ...dt\n },\n emits: [\n \"select-date\",\n \"set-hover-date\",\n \"handle-scroll\",\n \"mount\",\n \"handle-swipe\",\n \"handle-space\",\n \"tooltip-open\",\n \"tooltip-close\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, { buildMultiLevelMatrix: f } = At(), {\n defaultedTransitions: i,\n defaultedConfig: g,\n defaultedAriaLabels: d,\n defaultedMultiCalendars: P,\n defaultedWeekNumbers: v,\n defaultedMultiDates: R,\n defaultedUI: h\n } = Oe(a), T = Z(null), F = Z({\n bottom: \"\",\n left: \"\",\n transform: \"\"\n }), _ = Z([]), C = Z(null), M = Z(!0), A = Z(\"\"), m = Z({ startX: 0, endX: 0, startY: 0, endY: 0 }), z = Z([]), L = Z({ left: \"50%\" }), le = Z(!1), U = j(() => a.calendar ? a.calendar(a.mappedDates) : a.mappedDates), $ = j(() => a.dayNames ? Array.isArray(a.dayNames) ? a.dayNames : a.dayNames(a.locale, +a.weekStart) : Tl(a.formatLocale, a.locale, +a.weekStart));\n Ue(() => {\n n(\"mount\", { cmp: \"calendar\", refs: _ }), g.value.noSwipe || C.value && (C.value.addEventListener(\"touchstart\", q, { passive: !1 }), C.value.addEventListener(\"touchend\", k, { passive: !1 }), C.value.addEventListener(\"touchmove\", se, { passive: !1 })), a.monthChangeOnScroll && C.value && C.value.addEventListener(\"wheel\", G, { passive: !1 });\n }), Ut(() => {\n g.value.noSwipe || C.value && (C.value.removeEventListener(\"touchstart\", q), C.value.removeEventListener(\"touchend\", k), C.value.removeEventListener(\"touchmove\", se)), a.monthChangeOnScroll && C.value && C.value.removeEventListener(\"wheel\", G);\n });\n const ee = (B) => B ? a.vertical ? \"vNext\" : \"next\" : a.vertical ? \"vPrevious\" : \"previous\", O = (B, be) => {\n if (a.transitions) {\n const Ae = Fe(pt(H(), a.month, a.year));\n A.value = Ee(Fe(pt(H(), B, be)), Ae) ? i.value[ee(!0)] : i.value[ee(!1)], M.value = !1, at(() => {\n M.value = !0;\n });\n }\n }, J = j(\n () => ({\n ...h.value.calendar ?? {}\n })\n ), ce = j(() => (B) => {\n const be = Pl(B);\n return {\n dp__marker_dot: be.type === \"dot\",\n dp__marker_line: be.type === \"line\"\n };\n }), pe = j(() => (B) => $e(B, T.value)), p = j(() => ({\n dp__calendar: !0,\n dp__calendar_next: P.value.count > 0 && a.instance !== 0\n })), Y = j(() => (B) => a.hideOffsetDates ? B.current : !0), te = async (B, be) => {\n const { width: Ae, height: ne } = B.getBoundingClientRect();\n T.value = be.value;\n let r = { left: `${Ae / 2}px` }, E = -50;\n if (await at(), z.value[0]) {\n const { left: K, width: oe } = z.value[0].getBoundingClientRect();\n K < 0 && (r = { left: \"0\" }, E = 0, L.value.left = `${Ae / 2}px`), window.innerWidth < K + oe && (r = { right: \"0\" }, E = 0, L.value.left = `${oe - Ae / 2}px`);\n }\n F.value = {\n bottom: `${ne}px`,\n ...r,\n transform: `translateX(${E}%)`\n };\n }, y = async (B, be, Ae) => {\n const ne = Le(_.value[be][Ae]);\n ne && (B.marker?.customPosition && B.marker?.tooltip?.length ? F.value = B.marker.customPosition(ne) : await te(ne, B), n(\"tooltip-open\", B.marker));\n }, V = async (B, be, Ae) => {\n if (le.value && R.value.enabled && R.value.dragSelect)\n return n(\"select-date\", B);\n if (n(\"set-hover-date\", B), B.marker?.tooltip?.length) {\n if (a.hideOffsetDates && !B.current) return;\n await y(B, be, Ae);\n }\n }, S = (B) => {\n T.value && (T.value = null, F.value = JSON.parse(JSON.stringify({ bottom: \"\", left: \"\", transform: \"\" })), n(\"tooltip-close\", B.marker));\n }, q = (B) => {\n m.value.startX = B.changedTouches[0].screenX, m.value.startY = B.changedTouches[0].screenY;\n }, k = (B) => {\n m.value.endX = B.changedTouches[0].screenX, m.value.endY = B.changedTouches[0].screenY, u();\n }, se = (B) => {\n a.vertical && !a.inline && B.preventDefault();\n }, u = () => {\n const B = a.vertical ? \"Y\" : \"X\";\n Math.abs(m.value[`start${B}`] - m.value[`end${B}`]) > 10 && n(\"handle-swipe\", m.value[`start${B}`] > m.value[`end${B}`] ? \"right\" : \"left\");\n }, re = (B, be, Ae) => {\n B && (Array.isArray(_.value[be]) ? _.value[be][Ae] = B : _.value[be] = [B]), a.arrowNavigation && f(_.value, \"calendar\");\n }, G = (B) => {\n a.monthChangeOnScroll && (B.preventDefault(), n(\"handle-scroll\", B));\n }, I = (B) => v.value.type === \"local\" ? pl(B.value, { weekStartsOn: +a.weekStart }) : v.value.type === \"iso\" ? gl(B.value) : typeof v.value.type == \"function\" ? v.value.type(B.value) : \"\", x = (B) => {\n const be = B[0];\n return v.value.hideOnOffsetDates ? B.some((Ae) => Ae.current) ? I(be) : \"\" : I(be);\n }, c = (B, be, Ae = !0) => {\n !Ae && _l() || (!R.value.enabled || g.value.allowPreventDefault) && (Dt(B, g.value), n(\"select-date\", be));\n }, o = (B) => {\n Dt(B, g.value);\n }, X = (B) => {\n R.value.enabled && R.value.dragSelect ? (le.value = !0, n(\"select-date\", B)) : R.value.enabled && n(\"select-date\", B);\n };\n return t({ triggerTransition: O }), (B, be) => (w(), W(\"div\", {\n class: De(p.value)\n }, [\n he(\"div\", {\n ref_key: \"calendarWrapRef\",\n ref: C,\n class: De(J.value),\n role: \"grid\"\n }, [\n he(\"div\", Hr, [\n B.weekNumbers ? (w(), W(\"div\", Wr, Ke(B.weekNumName), 1)) : Q(\"\", !0),\n (w(!0), W(ke, null, Ce($.value, (Ae, ne) => (w(), W(\"div\", {\n key: ne,\n class: \"dp__calendar_header_item\",\n role: \"gridcell\",\n \"data-test-id\": \"calendar-header\",\n \"aria-label\": s(d)?.weekDay?.(ne)\n }, [\n B.$slots[\"calendar-header\"] ? ie(B.$slots, \"calendar-header\", {\n key: 0,\n day: Ae,\n index: ne\n }) : Q(\"\", !0),\n B.$slots[\"calendar-header\"] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(Ae), 1)\n ], 64))\n ], 8, Ur))), 128))\n ]),\n be[2] || (be[2] = he(\"div\", { class: \"dp__calendar_header_separator\" }, null, -1)),\n tt(Vt, {\n name: A.value,\n css: !!B.transitions\n }, {\n default: we(() => [\n M.value ? (w(), W(\"div\", {\n key: 0,\n class: \"dp__calendar\",\n role: \"rowgroup\",\n onMouseleave: be[1] || (be[1] = (Ae) => le.value = !1)\n }, [\n (w(!0), W(ke, null, Ce(U.value, (Ae, ne) => (w(), W(\"div\", {\n key: ne,\n class: \"dp__calendar_row\",\n role: \"row\"\n }, [\n B.weekNumbers ? (w(), W(\"div\", Vr, [\n he(\"div\", jr, Ke(x(Ae.days)), 1)\n ])) : Q(\"\", !0),\n (w(!0), W(ke, null, Ce(Ae.days, (r, E) => (w(), W(\"div\", {\n id: s(Ha)(r.value),\n ref_for: !0,\n ref: (K) => re(K, ne, E),\n key: E + ne,\n role: \"gridcell\",\n class: \"dp__calendar_item\",\n \"aria-selected\": (r.classData.dp__active_date || r.classData.dp__range_start || r.classData.dp__range_end) ?? void 0,\n \"aria-disabled\": r.classData.dp__cell_disabled || void 0,\n \"aria-label\": s(d)?.day?.(r),\n tabindex: !r.current && B.hideOffsetDates ? void 0 : 0,\n \"data-test-id\": s(Ha)(r.value),\n onClick: Xt((K) => c(K, r), [\"prevent\"]),\n onTouchend: (K) => c(K, r, !1),\n onKeydown: (K) => s(qe)(K, () => B.$emit(\"select-date\", r)),\n onMouseenter: (K) => V(r, ne, E),\n onMouseleave: (K) => S(r),\n onMousedown: (K) => X(r),\n onMouseup: be[0] || (be[0] = (K) => le.value = !1)\n }, [\n he(\"div\", {\n class: De([\"dp__cell_inner\", r.classData])\n }, [\n B.$slots.day && Y.value(r) ? ie(B.$slots, \"day\", {\n key: 0,\n day: +r.text,\n date: r.value\n }) : Q(\"\", !0),\n B.$slots.day ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(r.text), 1)\n ], 64)),\n r.marker && Y.value(r) ? (w(), W(ke, { key: 2 }, [\n B.$slots.marker ? ie(B.$slots, \"marker\", {\n key: 0,\n marker: r.marker,\n day: +r.text,\n date: r.value\n }) : (w(), W(\"div\", {\n key: 1,\n class: De(ce.value(r.marker)),\n style: lt(r.marker.color ? { backgroundColor: r.marker.color } : {})\n }, null, 6))\n ], 64)) : Q(\"\", !0),\n pe.value(r.value) ? (w(), W(\"div\", {\n key: 3,\n ref_for: !0,\n ref_key: \"activeTooltip\",\n ref: z,\n class: \"dp__marker_tooltip\",\n style: lt(F.value)\n }, [\n r.marker?.tooltip ? (w(), W(\"div\", {\n key: 0,\n class: \"dp__tooltip_content\",\n onClick: o\n }, [\n (w(!0), W(ke, null, Ce(r.marker.tooltip, (K, oe) => (w(), W(\"div\", {\n key: oe,\n class: \"dp__tooltip_text\"\n }, [\n B.$slots[\"marker-tooltip\"] ? ie(B.$slots, \"marker-tooltip\", {\n key: 0,\n tooltip: K,\n day: r.value\n }) : Q(\"\", !0),\n B.$slots[\"marker-tooltip\"] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n he(\"div\", {\n class: \"dp__tooltip_mark\",\n style: lt(K.color ? { backgroundColor: K.color } : {})\n }, null, 4),\n he(\"div\", null, Ke(K.text), 1)\n ], 64))\n ]))), 128)),\n he(\"div\", {\n class: \"dp__arrow_bottom_tp\",\n style: lt(L.value)\n }, null, 4)\n ])) : Q(\"\", !0)\n ], 4)) : Q(\"\", !0)\n ], 2)\n ], 40, Kr))), 128))\n ]))), 128))\n ], 32)) : Q(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 2)\n ], 2));\n }\n}), yn = (e) => Array.isArray(e), Qr = (e, t, l, n) => {\n const a = Z([]), f = Z(/* @__PURE__ */ new Date()), i = Z(), g = () => k(e.isTextInputDate), { modelValue: d, calendars: P, time: v, today: R } = na(e, t, g), {\n defaultedMultiCalendars: h,\n defaultedStartTime: T,\n defaultedRange: F,\n defaultedConfig: _,\n defaultedTz: C,\n propDates: M,\n defaultedMultiDates: A\n } = Oe(e), { validateMonthYearInRange: m, isDisabled: z, isDateRangeAllowed: L, checkMinMaxRange: le } = Tt(e), { updateTimeValues: U, getSetDateTime: $, setTime: ee, assignStartTime: O, validateTime: J, disabledTimesConfig: ce } = Gn(e, v, d, n), pe = j(\n () => (b) => P.value[b] ? P.value[b].month : 0\n ), p = j(\n () => (b) => P.value[b] ? P.value[b].year : 0\n ), Y = (b) => !_.value.keepViewOnOffsetClick || b ? !0 : !i.value, te = (b, ae, ve, N = !1) => {\n Y(N) && (P.value[b] || (P.value[b] = { month: 0, year: 0 }), P.value[b].month = cn(ae) ? P.value[b]?.month : ae, P.value[b].year = cn(ve) ? P.value[b]?.year : ve);\n }, y = () => {\n e.autoApply && t(\"select-date\");\n }, V = () => {\n T.value && O(T.value);\n };\n Ue(() => {\n e.shadow || (d.value || (be(), V()), k(!0), e.focusStartDate && e.startDate && be());\n });\n const S = j(() => e.flow?.length && !e.partialFlow ? e.flowStep === e.flow.length : !0), q = () => {\n e.autoApply && S.value && t(\"auto-apply\", e.partialFlow ? e.flowStep !== e.flow.length : !1);\n }, k = (b = !1) => {\n if (d.value)\n return Array.isArray(d.value) ? (a.value = d.value, c(b)) : re(d.value, b);\n if (h.value.count && b && !e.startDate)\n return u(H(), b);\n }, se = () => Array.isArray(d.value) && F.value.enabled ? Me(d.value[0]) === Me(d.value[1] ?? d.value[0]) : !1, u = (b = /* @__PURE__ */ new Date(), ae = !1) => {\n if ((!h.value.count || !h.value.static || ae) && te(0, Me(b), ye(b)), h.value.count && (!d.value || se() || !h.value.solo) && (!h.value.solo || ae))\n for (let ve = 1; ve < h.value.count; ve++) {\n const N = Se(H(), { month: pe.value(ve - 1), year: p.value(ve - 1) }), ue = Tn(N, { months: 1 });\n P.value[ve] = { month: Me(ue), year: ye(ue) };\n }\n }, re = (b, ae) => {\n u(b), ee(\"hours\", yt(b)), ee(\"minutes\", $t(b)), ee(\"seconds\", zt(b)), h.value.count && ae && B();\n }, G = (b) => {\n if (h.value.count) {\n if (h.value.solo) return 0;\n const ae = Me(b[0]), ve = Me(b[1]);\n return Math.abs(ve - ae) < h.value.count ? 0 : 1;\n }\n return 1;\n }, I = (b, ae) => {\n b[1] && F.value.showLastInRange ? u(b[G(b)], ae) : u(b[0], ae);\n const ve = (N, ue) => [\n N(b[0]),\n b[1] ? N(b[1]) : v[ue][1]\n ];\n ee(\"hours\", ve(yt, \"hours\")), ee(\"minutes\", ve($t, \"minutes\")), ee(\"seconds\", ve(zt, \"seconds\"));\n }, x = (b, ae) => {\n if ((F.value.enabled || e.weekPicker) && !A.value.enabled)\n return I(b, ae);\n if (A.value.enabled && ae) {\n const ve = b[b.length - 1];\n return re(ve, ae);\n }\n }, c = (b) => {\n const ae = d.value;\n x(ae, b), h.value.count && h.value.solo && B();\n }, o = (b, ae) => {\n const ve = Se(H(), { month: pe.value(ae), year: p.value(ae) }), N = b < 0 ? Ct(ve, 1) : Jt(ve, 1);\n m(Me(N), ye(N), b < 0, e.preventMinMaxNavigation) && (te(ae, Me(N), ye(N)), t(\"update-month-year\", { instance: ae, month: Me(N), year: ye(N) }), h.value.count && !h.value.solo && X(ae), l());\n }, X = (b) => {\n for (let ae = b - 1; ae >= 0; ae--) {\n const ve = Jt(Se(H(), { month: pe.value(ae + 1), year: p.value(ae + 1) }), 1);\n te(ae, Me(ve), ye(ve));\n }\n for (let ae = b + 1; ae <= h.value.count - 1; ae++) {\n const ve = Ct(Se(H(), { month: pe.value(ae - 1), year: p.value(ae - 1) }), 1);\n te(ae, Me(ve), ye(ve));\n }\n }, B = () => {\n if (Array.isArray(d.value) && d.value.length === 2) {\n const b = H(\n H(d.value[1] ? d.value[1] : Ct(d.value[0], 1))\n ), [ae, ve] = [Me(d.value[0]), ye(d.value[0])], [N, ue] = [Me(d.value[1]), ye(d.value[1])];\n (ae !== N || ae === N && ve !== ue) && h.value.solo && te(1, Me(b), ye(b));\n } else d.value && !Array.isArray(d.value) && (te(0, Me(d.value), ye(d.value)), u(H()));\n }, be = () => {\n e.startDate && (te(0, Me(H(e.startDate)), ye(H(e.startDate))), h.value.count && X(0));\n }, Ae = (b, ae) => {\n if (e.monthChangeOnScroll) {\n const ve = (/* @__PURE__ */ new Date()).getTime() - f.value.getTime(), N = Math.abs(b.deltaY);\n let ue = 500;\n N > 1 && (ue = 100), N > 100 && (ue = 0), ve > ue && (f.value = /* @__PURE__ */ new Date(), o(e.monthChangeOnScroll !== \"inverse\" ? -b.deltaY : b.deltaY, ae));\n }\n }, ne = (b, ae, ve = !1) => {\n e.monthChangeOnArrows && e.vertical === ve && r(b, ae);\n }, r = (b, ae) => {\n o(b === \"right\" ? -1 : 1, ae);\n }, E = (b) => {\n if (M.value.markers)\n return ca(b.value, M.value.markers);\n }, K = (b, ae) => {\n switch (e.sixWeeks === !0 ? \"append\" : e.sixWeeks) {\n case \"prepend\":\n return [!0, !1];\n case \"center\":\n return [b == 0, !0];\n case \"fair\":\n return [b == 0 || ae > b, !0];\n case \"append\":\n return [!1, !1];\n default:\n return [!1, !1];\n }\n }, oe = (b, ae, ve, N) => {\n if (e.sixWeeks && b.length < 6) {\n const ue = 6 - b.length, me = (ae.getDay() + 7 - N) % 7, ct = 6 - (ve.getDay() + 7 - N) % 7, [Pt, $a] = K(me, ct);\n for (let Rt = 1; Rt <= ue; Rt++)\n if ($a ? !!(Rt % 2) == Pt : Pt) {\n const ra = b[0].days[0], Aa = ge(kt(ra.value, -7), Me(ae));\n b.unshift({ days: Aa });\n } else {\n const ra = b[b.length - 1], Aa = ra.days[ra.days.length - 1], Xn = ge(kt(Aa.value, 1), Me(ae));\n b.push({ days: Xn });\n }\n }\n return b;\n }, ge = (b, ae) => {\n const ve = H(b), N = [];\n for (let ue = 0; ue < 7; ue++) {\n const me = kt(ve, ue), vt = Me(me) !== ae;\n N.push({\n text: e.hideOffsetDates && vt ? \"\" : me.getDate(),\n value: me,\n current: !vt,\n classData: {}\n });\n }\n return N;\n }, _e = (b, ae) => {\n const ve = [], N = new Date(ae, b), ue = new Date(ae, b + 1, 0), me = e.weekStart, vt = Wa(N, { weekStartsOn: me }), ct = (Pt) => {\n const $a = ge(Pt, b);\n if (ve.push({ days: $a }), !ve[ve.length - 1].days.some(\n (Rt) => $e(Fe(Rt.value), Fe(ue))\n )) {\n const Rt = kt(Pt, 7);\n ct(Rt);\n }\n };\n return ct(vt), oe(ve, N, ue, me);\n }, Ye = (b) => {\n const ae = Mt(H(b.value), v.hours, v.minutes, xe());\n t(\"date-update\", ae), A.value.enabled ? en(ae, d, A.value.limit) : d.value = ae, n(), at().then(() => {\n q();\n });\n }, nt = (b) => F.value.noDisabledRange ? In(a.value[0], b).some((ve) => z(ve)) : !1, St = () => {\n a.value = d.value ? d.value.slice() : [], a.value.length === 2 && !(F.value.fixedStart || F.value.fixedEnd) && (a.value = []);\n }, D = (b, ae) => {\n const ve = [\n H(b.value),\n kt(H(b.value), +F.value.autoRange)\n ];\n L(ve) ? (ae && de(b.value), a.value = ve) : t(\"invalid-date\", b.value);\n }, de = (b) => {\n const ae = Me(H(b)), ve = ye(H(b));\n if (te(0, ae, ve), h.value.count > 0)\n for (let N = 1; N < h.value.count; N++) {\n const ue = El(\n Se(H(b), { year: p.value(N - 1), month: pe.value(N - 1) })\n );\n te(N, ue.month, ue.year);\n }\n }, fe = (b) => {\n if (nt(b.value) || !le(b.value, d.value, F.value.fixedStart ? 0 : 1))\n return t(\"invalid-date\", b.value);\n a.value = Vn(H(b.value), d, t, F);\n }, ht = (b, ae) => {\n if (St(), F.value.autoRange) return D(b, ae);\n if (F.value.fixedStart || F.value.fixedEnd) return fe(b);\n a.value[0] ? le(H(b.value), d.value) && !nt(b.value) ? Be(H(b.value), H(a.value[0])) ? (a.value.unshift(H(b.value)), t(\"range-end\", a.value[0])) : (a.value[1] = H(b.value), t(\"range-end\", a.value[1])) : (e.autoApply && t(\"auto-apply-invalid\", b.value), t(\"invalid-date\", b.value)) : (a.value[0] = H(b.value), t(\"range-start\", a.value[0]));\n }, xe = (b = !0) => e.enableSeconds ? Array.isArray(v.seconds) ? b ? v.seconds[0] : v.seconds[1] : v.seconds : 0, Xe = (b) => {\n a.value[b] = Mt(\n a.value[b],\n v.hours[b],\n v.minutes[b],\n xe(b !== 1)\n );\n }, ya = () => {\n a.value[0] && a.value[1] && +a.value?.[0] > +a.value?.[1] && (a.value.reverse(), t(\"range-start\", a.value[0]), t(\"range-end\", a.value[1]));\n }, ha = () => {\n a.value.length && (a.value[0] && !a.value[1] ? Xe(0) : (Xe(0), Xe(1), n()), ya(), d.value = a.value.slice(), pa(a.value, t, e.autoApply, e.modelAuto));\n }, la = (b, ae = !1) => {\n if (z(b.value) || !b.current && e.hideOffsetDates) return t(\"invalid-date\", b.value);\n if (i.value = JSON.parse(JSON.stringify(b)), !F.value.enabled) return Ye(b);\n yn(v.hours) && yn(v.minutes) && !A.value.enabled && (ht(b, ae), ha());\n }, ba = (b, ae) => {\n te(b, ae.month, ae.year, !0), h.value.count && !h.value.solo && X(b), t(\"update-month-year\", { instance: b, month: ae.month, year: ae.year }), l(h.value.solo ? b : void 0);\n const ve = e.flow?.length ? e.flow[e.flowStep] : void 0;\n !ae.fromNav && (ve === je.month || ve === je.year) && n();\n }, ka = (b, ae) => {\n Un({\n value: b,\n modelValue: d,\n range: F.value.enabled,\n timezone: ae ? void 0 : C.value.timezone\n }), y(), e.multiCalendars && at().then(() => k(!0));\n }, wa = () => {\n const b = Qa(H(), C.value);\n !F.value.enabled && !A.value.enabled ? d.value = b : d.value && Array.isArray(d.value) && d.value[0] ? A.value.enabled ? d.value = [...d.value, b] : d.value = Be(b, d.value[0]) ? [b, d.value[0]] : [d.value[0], b] : d.value = [b], y();\n }, Da = () => {\n if (Array.isArray(d.value))\n if (A.value.enabled) {\n const b = Ma();\n d.value[d.value.length - 1] = $(b);\n } else\n d.value = d.value.map((b, ae) => b && $(b, ae));\n else\n d.value = $(d.value);\n t(\"time-update\");\n }, Ma = () => Array.isArray(d.value) && d.value.length ? d.value[d.value.length - 1] : null;\n return {\n calendars: P,\n modelValue: d,\n month: pe,\n year: p,\n time: v,\n disabledTimesConfig: ce,\n today: R,\n validateTime: J,\n getCalendarDays: _e,\n getMarker: E,\n handleScroll: Ae,\n handleSwipe: r,\n handleArrow: ne,\n selectDate: la,\n updateMonthYear: ba,\n presetDate: ka,\n selectCurrentDate: wa,\n updateTime: (b, ae = !0, ve = !1) => {\n U(b, ae, ve, Da);\n },\n assignMonthAndYear: u,\n setStartTime: V\n };\n}, qr = { key: 0 }, Xr = /* @__PURE__ */ We({\n __name: \"DatePicker\",\n props: {\n ...dt\n },\n emits: [\n \"tooltip-open\",\n \"tooltip-close\",\n \"mount\",\n \"update:internal-model-value\",\n \"update-flow-step\",\n \"reset-flow\",\n \"auto-apply\",\n \"focus-menu\",\n \"select-date\",\n \"range-start\",\n \"range-end\",\n \"invalid-fixed-range\",\n \"time-update\",\n \"am-pm-change\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"recalculate-position\",\n \"update-month-year\",\n \"auto-apply-invalid\",\n \"date-update\",\n \"invalid-date\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, {\n calendars: f,\n month: i,\n year: g,\n modelValue: d,\n time: P,\n disabledTimesConfig: v,\n today: R,\n validateTime: h,\n getCalendarDays: T,\n getMarker: F,\n handleArrow: _,\n handleScroll: C,\n handleSwipe: M,\n selectDate: A,\n updateMonthYear: m,\n presetDate: z,\n selectCurrentDate: L,\n updateTime: le,\n assignMonthAndYear: U,\n setStartTime: $\n } = Qr(a, n, se, u), ee = Yt(), { setHoverDate: O, getDayClassData: J, clearHoverDate: ce } = mo(d, a), { defaultedMultiCalendars: pe } = Oe(a), p = Z([]), Y = Z([]), te = Z(null), y = et(ee, \"calendar\"), V = et(ee, \"monthYear\"), S = et(ee, \"timePicker\"), q = (ne) => {\n a.shadow || n(\"mount\", ne);\n };\n rt(\n f,\n () => {\n a.shadow || setTimeout(() => {\n n(\"recalculate-position\");\n }, 0);\n },\n { deep: !0 }\n ), rt(\n pe,\n (ne, r) => {\n ne.count - r.count > 0 && U();\n },\n { deep: !0 }\n );\n const k = j(() => (ne) => T(i.value(ne), g.value(ne)).map((r) => ({\n ...r,\n days: r.days.map((E) => (E.marker = F(E), E.classData = J(E), E))\n })));\n function se(ne) {\n ne || ne === 0 ? Y.value[ne]?.triggerTransition(i.value(ne), g.value(ne)) : Y.value.forEach((r, E) => r.triggerTransition(i.value(E), g.value(E)));\n }\n function u() {\n n(\"update-flow-step\");\n }\n const re = (ne, r = !1) => {\n A(ne, r), a.spaceConfirm && n(\"select-date\");\n }, G = (ne, r, E = 0) => {\n p.value[E]?.toggleMonthPicker(ne, r);\n }, I = (ne, r, E = 0) => {\n p.value[E]?.toggleYearPicker(ne, r);\n }, x = (ne, r, E) => {\n te.value?.toggleTimePicker(ne, r, E);\n }, c = (ne, r) => {\n if (!a.range) {\n const E = d.value ? d.value : R, K = r ? new Date(r) : E, oe = ne ? Wa(K, { weekStartsOn: 1 }) : kn(K, { weekStartsOn: 1 });\n A({\n value: oe,\n current: Me(K) === i.value(0),\n text: \"\",\n classData: {}\n }), document.getElementById(Ha(oe))?.focus();\n }\n }, o = (ne) => {\n p.value[0]?.handleMonthYearChange(ne, !0);\n }, X = (ne) => {\n m(0, { month: i.value(0), year: g.value(0) + (ne ? 1 : -1), fromNav: !0 });\n }, B = (ne, r) => {\n ne === je.time && n(`time-picker-${r ? \"open\" : \"close\"}`), n(\"overlay-toggle\", { open: r, overlay: ne });\n }, be = (ne) => {\n n(\"overlay-toggle\", { open: !1, overlay: ne }), n(\"focus-menu\");\n };\n return t({\n clearHoverDate: ce,\n presetDate: z,\n selectCurrentDate: L,\n toggleMonthPicker: G,\n toggleYearPicker: I,\n toggleTimePicker: x,\n handleArrow: _,\n updateMonthYear: m,\n getSidebarProps: () => ({\n modelValue: d,\n month: i,\n year: g,\n time: P,\n updateTime: le,\n updateMonthYear: m,\n selectDate: A,\n presetDate: z\n }),\n changeMonth: o,\n changeYear: X,\n selectWeekDate: c,\n setStartTime: $\n }), (ne, r) => (w(), W(ke, null, [\n tt(ma, {\n \"multi-calendars\": s(pe).count,\n collapse: ne.collapse,\n \"is-mobile\": ne.isMobile\n }, {\n default: we(({ instance: E, index: K }) => [\n ne.disableMonthYearSelect ? Q(\"\", !0) : (w(), Te(zr, He({\n key: 0,\n ref: (oe) => {\n oe && (p.value[K] = oe);\n },\n months: s(Pn)(ne.formatLocale, ne.locale, ne.monthNameFormat),\n years: s(qa)(ne.yearRange, ne.locale, ne.reverseYears),\n month: s(i)(E),\n year: s(g)(E),\n instance: E\n }, ne.$props, {\n onMount: r[0] || (r[0] = (oe) => q(s(Ot).header)),\n onResetFlow: r[1] || (r[1] = (oe) => ne.$emit(\"reset-flow\")),\n onUpdateMonthYear: (oe) => s(m)(E, oe),\n onOverlayClosed: be,\n onOverlayOpened: r[2] || (r[2] = (oe) => ne.$emit(\"overlay-toggle\", { open: !0, overlay: oe }))\n }), Ge({ _: 2 }, [\n Ce(s(V), (oe, ge) => ({\n name: oe,\n fn: we((_e) => [\n ie(ne.$slots, oe, ze(Je(_e)))\n ])\n }))\n ]), 1040, [\"months\", \"years\", \"month\", \"year\", \"instance\", \"onUpdateMonthYear\"])),\n tt(Gr, He({\n ref: (oe) => {\n oe && (Y.value[K] = oe);\n },\n \"mapped-dates\": k.value(E),\n month: s(i)(E),\n year: s(g)(E),\n instance: E\n }, ne.$props, {\n onSelectDate: (oe) => s(A)(oe, E !== 1),\n onHandleSpace: (oe) => re(oe, E !== 1),\n onSetHoverDate: r[3] || (r[3] = (oe) => s(O)(oe)),\n onHandleScroll: (oe) => s(C)(oe, E),\n onHandleSwipe: (oe) => s(M)(oe, E),\n onMount: r[4] || (r[4] = (oe) => q(s(Ot).calendar)),\n onResetFlow: r[5] || (r[5] = (oe) => ne.$emit(\"reset-flow\")),\n onTooltipOpen: r[6] || (r[6] = (oe) => ne.$emit(\"tooltip-open\", oe)),\n onTooltipClose: r[7] || (r[7] = (oe) => ne.$emit(\"tooltip-close\", oe))\n }), Ge({ _: 2 }, [\n Ce(s(y), (oe, ge) => ({\n name: oe,\n fn: we((_e) => [\n ie(ne.$slots, oe, ze(Je({ ..._e })))\n ])\n }))\n ]), 1040, [\"mapped-dates\", \"month\", \"year\", \"instance\", \"onSelectDate\", \"onHandleSpace\", \"onHandleScroll\", \"onHandleSwipe\"])\n ]),\n _: 3\n }, 8, [\"multi-calendars\", \"collapse\", \"is-mobile\"]),\n ne.enableTimePicker ? (w(), W(\"div\", qr, [\n ne.$slots[\"time-picker\"] ? ie(ne.$slots, \"time-picker\", ze(He({ key: 0 }, { time: s(P), updateTime: s(le) }))) : (w(), Te(Kn, He({\n key: 1,\n ref_key: \"timePickerRef\",\n ref: te\n }, ne.$props, {\n hours: s(P).hours,\n minutes: s(P).minutes,\n seconds: s(P).seconds,\n \"internal-model-value\": ne.internalModelValue,\n \"disabled-times-config\": s(v),\n \"validate-time\": s(h),\n onMount: r[8] || (r[8] = (E) => q(s(Ot).timePicker)),\n \"onUpdate:hours\": r[9] || (r[9] = (E) => s(le)(E)),\n \"onUpdate:minutes\": r[10] || (r[10] = (E) => s(le)(E, !1)),\n \"onUpdate:seconds\": r[11] || (r[11] = (E) => s(le)(E, !1, !0)),\n onResetFlow: r[12] || (r[12] = (E) => ne.$emit(\"reset-flow\")),\n onOverlayClosed: r[13] || (r[13] = (E) => B(E, !1)),\n onOverlayOpened: r[14] || (r[14] = (E) => B(E, !0)),\n onAmPmChange: r[15] || (r[15] = (E) => ne.$emit(\"am-pm-change\", E))\n }), Ge({ _: 2 }, [\n Ce(s(S), (E, K) => ({\n name: E,\n fn: we((oe) => [\n ie(ne.$slots, E, ze(Je(oe)))\n ])\n }))\n ]), 1040, [\"hours\", \"minutes\", \"seconds\", \"internal-model-value\", \"disabled-times-config\", \"validate-time\"]))\n ])) : Q(\"\", !0)\n ], 64));\n }\n}), Jr = (e, t) => {\n const l = Z(), {\n defaultedMultiCalendars: n,\n defaultedConfig: a,\n defaultedHighlight: f,\n defaultedRange: i,\n propDates: g,\n defaultedFilters: d,\n defaultedMultiDates: P\n } = Oe(e), { modelValue: v, year: R, month: h, calendars: T } = na(e, t), { isDisabled: F } = Tt(e), { selectYear: _, groupedYears: C, showYearPicker: M, isDisabled: A, toggleYearPicker: m, handleYearSelect: z, handleYear: L } = jn({\n modelValue: v,\n multiCalendars: n,\n range: i,\n highlight: f,\n calendars: T,\n propDates: g,\n month: h,\n year: R,\n filters: d,\n props: e,\n emit: t\n }), le = (y, V) => [y, V].map((S) => ft(S, \"MMMM\", { locale: e.formatLocale })).join(\"-\"), U = j(() => (y) => v.value ? Array.isArray(v.value) ? v.value.some((V) => rn(y, V)) : rn(v.value, y) : !1), $ = (y) => {\n if (i.value.enabled) {\n if (Array.isArray(v.value)) {\n const V = $e(y, v.value[0]) || $e(y, v.value[1]);\n return xt(v.value, l.value, y) && !V;\n }\n return !1;\n }\n return !1;\n }, ee = (y, V) => y.quarter === sn(V) && y.year === ye(V), O = (y) => typeof f.value == \"function\" ? f.value({ quarter: sn(y), year: ye(y) }) : !!f.value.quarters.find((V) => ee(V, y)), J = j(() => (y) => {\n const V = Se(/* @__PURE__ */ new Date(), { year: R.value(y) });\n return yl({\n start: Gt(V),\n end: An(V)\n }).map((S) => {\n const q = hl(S), k = on(S), se = F(S), u = $(q), re = O(q);\n return {\n text: le(q, k),\n value: q,\n active: U.value(q),\n highlighted: re,\n disabled: se,\n isBetween: u\n };\n });\n }), ce = (y) => {\n en(y, v, P.value.limit), t(\"auto-apply\", !0);\n }, pe = (y) => {\n v.value = tn(v, y, t), pa(v.value, t, e.autoApply, e.modelAuto);\n }, p = (y) => {\n v.value = y, t(\"auto-apply\");\n };\n return {\n defaultedConfig: a,\n defaultedMultiCalendars: n,\n groupedYears: C,\n year: R,\n isDisabled: A,\n quarters: J,\n showYearPicker: M,\n modelValue: v,\n setHoverDate: (y) => {\n l.value = y;\n },\n selectYear: _,\n selectQuarter: (y, V, S) => {\n if (!S)\n return T.value[V].month = Me(on(y)), P.value.enabled ? ce(y) : i.value.enabled ? pe(y) : p(y);\n },\n toggleYearPicker: m,\n handleYearSelect: z,\n handleYear: L\n };\n}, Zr = { class: \"dp--quarter-items\" }, xr = [\"data-test-id\", \"disabled\", \"onClick\", \"onMouseover\"], eo = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"QuarterPicker\",\n props: {\n ...dt\n },\n emits: [\n \"update:internal-model-value\",\n \"reset-flow\",\n \"overlay-closed\",\n \"auto-apply\",\n \"range-start\",\n \"range-end\",\n \"overlay-toggle\",\n \"update-month-year\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, f = Yt(), i = et(f, \"yearMode\"), {\n defaultedMultiCalendars: g,\n defaultedConfig: d,\n groupedYears: P,\n year: v,\n isDisabled: R,\n quarters: h,\n modelValue: T,\n showYearPicker: F,\n setHoverDate: _,\n selectQuarter: C,\n toggleYearPicker: M,\n handleYearSelect: A,\n handleYear: m\n } = Jr(a, n);\n return t({ getSidebarProps: () => ({\n modelValue: T,\n year: v,\n selectQuarter: C,\n handleYearSelect: A,\n handleYear: m\n }) }), (L, le) => (w(), Te(ma, {\n \"multi-calendars\": s(g).count,\n collapse: L.collapse,\n stretch: \"\",\n \"is-mobile\": L.isMobile\n }, {\n default: we(({ instance: U }) => [\n he(\"div\", {\n class: \"dp-quarter-picker-wrap\",\n style: lt({ minHeight: `${s(d).modeHeight}px` })\n }, [\n L.$slots[\"top-extra\"] ? ie(L.$slots, \"top-extra\", {\n key: 0,\n value: L.internalModelValue\n }) : Q(\"\", !0),\n he(\"div\", null, [\n tt(Wn, He(L.$props, {\n items: s(P)(U),\n instance: U,\n \"show-year-picker\": s(F)[U],\n year: s(v)(U),\n \"is-disabled\": ($) => s(R)(U, $),\n onHandleYear: ($) => s(m)(U, $),\n onYearSelect: ($) => s(A)($, U),\n onToggleYearPicker: ($) => s(M)(U, $?.flow, $?.show)\n }), Ge({ _: 2 }, [\n Ce(s(i), ($, ee) => ({\n name: $,\n fn: we((O) => [\n ie(L.$slots, $, ze(Je(O)))\n ])\n }))\n ]), 1040, [\"items\", \"instance\", \"show-year-picker\", \"year\", \"is-disabled\", \"onHandleYear\", \"onYearSelect\", \"onToggleYearPicker\"])\n ]),\n he(\"div\", Zr, [\n (w(!0), W(ke, null, Ce(s(h)(U), ($, ee) => (w(), W(\"div\", { key: ee }, [\n he(\"button\", {\n type: \"button\",\n class: De([\"dp--qr-btn\", {\n \"dp--qr-btn-active\": $.active,\n \"dp--qr-btn-between\": $.isBetween,\n \"dp--qr-btn-disabled\": $.disabled,\n \"dp--highlighted\": $.highlighted\n }]),\n \"data-test-id\": $.value,\n disabled: $.disabled,\n onClick: (O) => s(C)($.value, U, $.disabled),\n onMouseover: (O) => s(_)($.value)\n }, [\n L.$slots.quarter ? ie(L.$slots, \"quarter\", {\n key: 0,\n value: $.value,\n text: $.text\n }) : (w(), W(ke, { key: 1 }, [\n gt(Ke($.text), 1)\n ], 64))\n ], 42, xr)\n ]))), 128))\n ])\n ], 4)\n ]),\n _: 3\n }, 8, [\"multi-calendars\", \"collapse\", \"is-mobile\"]));\n }\n}), Qn = (e, t) => {\n const l = Z(0);\n Ue(() => {\n n(), window.addEventListener(\"resize\", n, { passive: !0 });\n }), Ut(() => {\n window.removeEventListener(\"resize\", n);\n });\n const n = () => {\n l.value = window.document.documentElement.clientWidth;\n };\n return {\n isMobile: j(\n () => l.value <= e.value.mobileBreakpoint && !t ? !0 : void 0\n )\n };\n}, to = [\"id\", \"tabindex\", \"role\", \"aria-label\"], ao = {\n key: 0,\n class: \"dp--menu-load-container\"\n}, no = {\n key: 1,\n class: \"dp--menu-header\"\n}, lo = [\"data-dp-mobile\"], ro = {\n key: 0,\n class: \"dp__sidebar_left\"\n}, oo = [\"data-dp-mobile\"], so = [\"data-test-id\", \"data-dp-mobile\", \"onClick\", \"onKeydown\"], uo = {\n key: 2,\n class: \"dp__sidebar_right\"\n}, io = {\n key: 3,\n class: \"dp__action_extra\"\n}, hn = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"DatepickerMenu\",\n props: {\n ...va,\n shadow: { type: Boolean, default: !1 },\n openOnTop: { type: Boolean, default: !1 },\n internalModelValue: { type: [Date, Array], default: null },\n noOverlayFocus: { type: Boolean, default: !1 },\n collapse: { type: Boolean, default: !1 },\n getInputRect: { type: Function, default: () => ({}) },\n isTextInputDate: { type: Boolean, default: !1 }\n },\n emits: [\n \"close-picker\",\n \"select-date\",\n \"auto-apply\",\n \"time-update\",\n \"flow-step\",\n \"update-month-year\",\n \"invalid-select\",\n \"update:internal-model-value\",\n \"recalculate-position\",\n \"invalid-fixed-range\",\n \"tooltip-open\",\n \"tooltip-close\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"am-pm-change\",\n \"range-start\",\n \"range-end\",\n \"auto-apply-invalid\",\n \"date-update\",\n \"invalid-date\",\n \"overlay-toggle\",\n \"menu-blur\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, f = Z(null), i = j(() => {\n const { openOnTop: D, ...de } = a;\n return {\n ...de,\n isMobile: C.value,\n flowStep: pe.value,\n menuWrapRef: f.value\n };\n }), { setMenuFocused: g, setShiftKey: d, control: P } = Hn(), v = Yt(), { defaultedTextInput: R, defaultedInline: h, defaultedConfig: T, defaultedUI: F, handleEventPropagation: _ } = Oe(a), { isMobile: C } = Qn(T, a.shadow), M = Z(null), A = Z(0), m = Z(null), z = Z(!1), L = Z(null), le = Z(!1), U = (D) => {\n le.value = !0, T.value.allowPreventDefault && D.preventDefault(), Dt(D, T.value, !0);\n };\n Ue(() => {\n if (!a.shadow) {\n z.value = !0, $(), window.addEventListener(\"resize\", $);\n const D = Le(f);\n D && !R.value.enabled && !h.value.enabled && (g(!0), q()), D && (D.addEventListener(\"pointerdown\", U), D.addEventListener(\"mousedown\", U));\n }\n document.addEventListener(\"mousedown\", nt);\n }), Ut(() => {\n window.removeEventListener(\"resize\", $), document.removeEventListener(\"mousedown\", nt);\n const D = Le(f);\n D && (D.removeEventListener(\"pointerdown\", U), D.removeEventListener(\"mousedown\", U));\n });\n const $ = () => {\n const D = Le(m);\n D && (A.value = D.getBoundingClientRect().width);\n }, { arrowRight: ee, arrowLeft: O, arrowDown: J, arrowUp: ce } = At(), { flowStep: pe, updateFlowStep: p, childMount: Y, resetFlow: te, handleFlow: y } = po(a, n, L), V = j(() => a.monthPicker ? hr : a.yearPicker ? kr : a.timePicker ? Yr : a.quarterPicker ? eo : Xr), S = j(() => {\n if (T.value.arrowLeft) return T.value.arrowLeft;\n const D = f.value?.getBoundingClientRect(), de = a.getInputRect();\n return de?.width < A?.value && de?.left <= (D?.left ?? 0) ? `${de?.width / 2}px` : de?.right >= (D?.right ?? 0) && de?.width < A?.value ? `${A?.value - de?.width / 2}px` : \"50%\";\n }), q = () => {\n const D = Le(f);\n D && D.focus({ preventScroll: !0 });\n }, k = j(() => L.value?.getSidebarProps() || {}), se = () => {\n a.openOnTop && n(\"recalculate-position\");\n }, u = et(v, \"action\"), re = j(() => a.monthPicker || a.yearPicker ? et(v, \"monthYear\") : a.timePicker ? et(v, \"timePicker\") : et(v, \"shared\")), G = j(() => a.openOnTop ? \"dp__arrow_bottom\" : \"dp__arrow_top\"), I = j(() => ({\n dp__menu_disabled: a.disabled,\n dp__menu_readonly: a.readonly,\n \"dp-menu-loading\": a.loading\n })), x = j(\n () => ({\n dp__menu: !0,\n dp__menu_index: !h.value.enabled,\n dp__relative: h.value.enabled,\n ...F.value.menu ?? {}\n })\n ), c = (D) => {\n Dt(D, T.value, !0);\n }, o = (D) => {\n a.escClose && (n(\"close-picker\"), _(D));\n }, X = (D) => {\n if (a.arrowNavigation) {\n if (D === Qe.up) return ce();\n if (D === Qe.down) return J();\n if (D === Qe.left) return O();\n if (D === Qe.right) return ee();\n } else D === Qe.left || D === Qe.up ? r(\"handleArrow\", Qe.left, 0, D === Qe.up) : r(\"handleArrow\", Qe.right, 0, D === Qe.down);\n }, B = (D) => {\n d(D.shiftKey), !a.disableMonthYearSelect && D.code === Re.tab && D.target.classList.contains(\"dp__menu\") && P.value.shiftKeyInMenu && (D.preventDefault(), Dt(D, T.value, !0), n(\"close-picker\"));\n }, be = () => {\n q(), n(\"time-picker-close\");\n }, Ae = (D) => {\n L.value?.toggleTimePicker(!1, !1), L.value?.toggleMonthPicker(!1, !1, D), L.value?.toggleYearPicker(!1, !1, D);\n }, ne = (D, de = 0) => D === \"month\" ? L.value?.toggleMonthPicker(!1, !0, de) : D === \"year\" ? L.value?.toggleYearPicker(!1, !0, de) : D === \"time\" ? L.value?.toggleTimePicker(!0, !1) : Ae(de), r = (D, ...de) => {\n L.value?.[D] && L.value?.[D](...de);\n }, E = () => {\n r(\"selectCurrentDate\");\n }, K = (D, de) => {\n r(\"presetDate\", el(D), de);\n }, oe = () => {\n r(\"clearHoverDate\");\n }, ge = (D, de) => {\n r(\"updateMonthYear\", D, de);\n }, _e = (D, de) => {\n D.preventDefault(), X(de);\n }, Ye = (D) => {\n if (B(D), D.key === Re.home || D.key === Re.end)\n return r(\n \"selectWeekDate\",\n D.key === Re.home,\n D.target.getAttribute(\"id\")\n );\n switch ((D.key === Re.pageUp || D.key === Re.pageDown) && (D.shiftKey ? (r(\"changeYear\", D.key === Re.pageUp), Fa(f.value, \"overlay-year\")?.focus()) : (r(\"changeMonth\", D.key === Re.pageUp), Fa(f.value, D.key === Re.pageUp ? \"action-prev\" : \"action-next\")?.focus()), D.target.getAttribute(\"id\") && f.value?.focus({ preventScroll: !0 })), D.key) {\n case Re.esc:\n return o(D);\n case Re.arrowLeft:\n return _e(D, Qe.left);\n case Re.arrowRight:\n return _e(D, Qe.right);\n case Re.arrowUp:\n return _e(D, Qe.up);\n case Re.arrowDown:\n return _e(D, Qe.down);\n default:\n return;\n }\n }, nt = (D) => {\n h.value.enabled && !h.value.input && !f.value?.contains(D.target) && le.value && (le.value = !1, n(\"menu-blur\"));\n };\n return t({\n updateMonthYear: ge,\n switchView: ne,\n handleFlow: y,\n onValueCleared: () => {\n L.value?.setStartTime?.();\n }\n }), (D, de) => (w(), W(\"div\", {\n id: D.uid ? `dp-menu-${D.uid}` : void 0,\n ref_key: \"dpMenuRef\",\n ref: f,\n tabindex: s(h).enabled ? void 0 : \"0\",\n role: s(h).enabled ? void 0 : \"dialog\",\n \"aria-label\": D.ariaLabels?.menu,\n class: De(x.value),\n style: lt({ \"--dp-arrow-left\": S.value }),\n onMouseleave: oe,\n onClick: c,\n onKeydown: Ye\n }, [\n (D.disabled || D.readonly) && s(h).enabled || D.loading ? (w(), W(\"div\", {\n key: 0,\n class: De(I.value)\n }, [\n D.loading ? (w(), W(\"div\", ao, [...de[19] || (de[19] = [\n he(\"span\", { class: \"dp--menu-loader\" }, null, -1)\n ])])) : Q(\"\", !0)\n ], 2)) : Q(\"\", !0),\n D.$slots[\"menu-header\"] ? (w(), W(\"div\", no, [\n ie(D.$slots, \"menu-header\")\n ])) : Q(\"\", !0),\n !s(h).enabled && !D.teleportCenter ? (w(), W(\"div\", {\n key: 2,\n class: De(G.value)\n }, null, 2)) : Q(\"\", !0),\n he(\"div\", {\n ref_key: \"innerMenuRef\",\n ref: m,\n class: De({\n dp__menu_content_wrapper: D.presetDates?.length || !!D.$slots[\"left-sidebar\"] || !!D.$slots[\"right-sidebar\"],\n \"dp--menu-content-wrapper-collapsed\": e.collapse && (D.presetDates?.length || !!D.$slots[\"left-sidebar\"] || !!D.$slots[\"right-sidebar\"])\n }),\n \"data-dp-mobile\": s(C),\n style: lt({ \"--dp-menu-width\": `${A.value}px` })\n }, [\n D.$slots[\"left-sidebar\"] ? (w(), W(\"div\", ro, [\n ie(D.$slots, \"left-sidebar\", ze(Je(k.value)))\n ])) : Q(\"\", !0),\n D.presetDates.length ? (w(), W(\"div\", {\n key: 1,\n class: De({ \"dp--preset-dates-collapsed\": e.collapse, \"dp--preset-dates\": !0 }),\n \"data-dp-mobile\": s(C)\n }, [\n (w(!0), W(ke, null, Ce(D.presetDates, (fe, ht) => (w(), W(ke, { key: ht }, [\n fe.slot ? ie(D.$slots, fe.slot, {\n key: 0,\n presetDate: K,\n label: fe.label,\n value: fe.value\n }) : (w(), W(\"button\", {\n key: 1,\n type: \"button\",\n style: lt(fe.style || {}),\n class: De([\"dp__btn dp--preset-range\", { \"dp--preset-range-collapsed\": e.collapse }]),\n \"data-test-id\": fe.testId ?? void 0,\n \"data-dp-mobile\": s(C),\n onClick: Xt((xe) => K(fe.value, fe.noTz), [\"prevent\"]),\n onKeydown: (xe) => s(qe)(xe, () => K(fe.value, fe.noTz), !0)\n }, Ke(fe.label), 47, so))\n ], 64))), 128))\n ], 10, oo)) : Q(\"\", !0),\n he(\"div\", {\n ref_key: \"calendarWrapperRef\",\n ref: M,\n class: \"dp__instance_calendar\",\n role: \"document\"\n }, [\n (w(), Te(fa(V.value), He({\n ref_key: \"dynCmpRef\",\n ref: L\n }, i.value, {\n \"flow-step\": s(pe),\n onMount: s(Y),\n onUpdateFlowStep: s(p),\n onResetFlow: s(te),\n onFocusMenu: q,\n onSelectDate: de[0] || (de[0] = (fe) => D.$emit(\"select-date\")),\n onDateUpdate: de[1] || (de[1] = (fe) => D.$emit(\"date-update\", fe)),\n onTooltipOpen: de[2] || (de[2] = (fe) => D.$emit(\"tooltip-open\", fe)),\n onTooltipClose: de[3] || (de[3] = (fe) => D.$emit(\"tooltip-close\", fe)),\n onAutoApply: de[4] || (de[4] = (fe) => D.$emit(\"auto-apply\", fe)),\n onRangeStart: de[5] || (de[5] = (fe) => D.$emit(\"range-start\", fe)),\n onRangeEnd: de[6] || (de[6] = (fe) => D.$emit(\"range-end\", fe)),\n onInvalidFixedRange: de[7] || (de[7] = (fe) => D.$emit(\"invalid-fixed-range\", fe)),\n onTimeUpdate: de[8] || (de[8] = (fe) => D.$emit(\"time-update\")),\n onAmPmChange: de[9] || (de[9] = (fe) => D.$emit(\"am-pm-change\", fe)),\n onTimePickerOpen: de[10] || (de[10] = (fe) => D.$emit(\"time-picker-open\", fe)),\n onTimePickerClose: be,\n onRecalculatePosition: se,\n onUpdateMonthYear: de[11] || (de[11] = (fe) => D.$emit(\"update-month-year\", fe)),\n onAutoApplyInvalid: de[12] || (de[12] = (fe) => D.$emit(\"auto-apply-invalid\", fe)),\n onInvalidDate: de[13] || (de[13] = (fe) => D.$emit(\"invalid-date\", fe)),\n onOverlayToggle: de[14] || (de[14] = (fe) => D.$emit(\"overlay-toggle\", fe)),\n \"onUpdate:internalModelValue\": de[15] || (de[15] = (fe) => D.$emit(\"update:internal-model-value\", fe))\n }), Ge({ _: 2 }, [\n Ce(re.value, (fe, ht) => ({\n name: fe,\n fn: we((xe) => [\n ie(D.$slots, fe, ze(Je({ ...xe })))\n ])\n }))\n ]), 1040, [\"flow-step\", \"onMount\", \"onUpdateFlowStep\", \"onResetFlow\"]))\n ], 512),\n D.$slots[\"right-sidebar\"] ? (w(), W(\"div\", uo, [\n ie(D.$slots, \"right-sidebar\", ze(Je(k.value)))\n ])) : Q(\"\", !0),\n D.$slots[\"action-extra\"] ? (w(), W(\"div\", io, [\n D.$slots[\"action-extra\"] ? ie(D.$slots, \"action-extra\", {\n key: 0,\n selectCurrentDate: E\n }) : Q(\"\", !0)\n ])) : Q(\"\", !0)\n ], 14, lo),\n !D.autoApply || s(T).keepActionRow ? (w(), Te(ir, He({\n key: 3,\n \"menu-mount\": z.value\n }, i.value, {\n \"calendar-width\": A.value,\n onClosePicker: de[16] || (de[16] = (fe) => D.$emit(\"close-picker\")),\n onSelectDate: de[17] || (de[17] = (fe) => D.$emit(\"select-date\")),\n onInvalidSelect: de[18] || (de[18] = (fe) => D.$emit(\"invalid-select\")),\n onSelectNow: E\n }), Ge({ _: 2 }, [\n Ce(s(u), (fe, ht) => ({\n name: fe,\n fn: we((xe) => [\n ie(D.$slots, fe, ze(Je({ ...xe })))\n ])\n }))\n ]), 1040, [\"menu-mount\", \"calendar-width\"])) : Q(\"\", !0)\n ], 46, to));\n }\n});\nvar Et = /* @__PURE__ */ ((e) => (e.center = \"center\", e.left = \"left\", e.right = \"right\", e))(Et || {});\nconst co = ({\n menuRef: e,\n menuRefInner: t,\n inputRef: l,\n pickerWrapperRef: n,\n inline: a,\n emit: f,\n props: i,\n slots: g\n}) => {\n const { defaultedConfig: d } = Oe(i), P = Z({}), v = Z(!1), R = Z({\n top: \"0\",\n left: \"0\"\n }), h = Z(!1), T = qt(i, \"teleportCenter\");\n rt(T, () => {\n R.value = JSON.parse(JSON.stringify({})), L();\n });\n const F = (y) => {\n if (i.teleport) {\n const V = y.getBoundingClientRect();\n return {\n left: V.left + window.scrollX,\n top: V.top + window.scrollY\n };\n }\n return { top: 0, left: 0 };\n }, _ = (y, V) => {\n R.value.left = `${y + V - P.value.width}px`;\n }, C = (y) => {\n R.value.left = `${y}px`;\n }, M = (y, V) => {\n i.position === Et.left && C(y), i.position === Et.right && _(y, V), i.position === Et.center && (R.value.left = `${y + V / 2 - P.value.width / 2}px`);\n }, A = (y) => {\n const { width: V, height: S } = y.getBoundingClientRect(), { top: q, left: k } = F(y);\n return { top: +q, left: +k, width: V, height: S };\n }, m = () => {\n R.value.left = \"50%\", R.value.top = \"50%\", R.value.transform = \"translate(-50%, -50%)\", R.value.position = \"fixed\", delete R.value.opacity;\n }, z = () => {\n const y = Le(l);\n R.value = i.altPosition(y);\n }, L = (y = !0) => {\n if (!a.value.enabled) {\n if (T.value) return m();\n if (i.altPosition !== null) return z();\n if (y) {\n const V = i.teleport ? t.value?.$el : e.value;\n V && (P.value = V.getBoundingClientRect()), f(\"recalculate-position\");\n }\n return ce();\n }\n }, le = ({ inputEl: y, left: V, width: S }) => {\n window.screen.width > 768 && !v.value && M(V, S), ee(y);\n }, U = (y) => {\n const { top: V, left: S, height: q, width: k } = A(y);\n R.value.top = `${q + V + +i.offset}px`, h.value = !1, v.value || (R.value.left = `${S + k / 2 - P.value.width / 2}px`), le({ inputEl: y, left: S, width: k });\n }, $ = (y) => {\n const { top: V, left: S, width: q } = A(y);\n R.value.top = `${V - +i.offset - P.value.height}px`, h.value = !0, le({ inputEl: y, left: S, width: q });\n }, ee = (y) => {\n if (i.autoPosition) {\n const { left: V, width: S } = A(y), { left: q, right: k } = P.value;\n if (!v.value) {\n if (Math.abs(q) !== Math.abs(k)) {\n if (q <= 0)\n return v.value = !0, C(V);\n if (k >= document.documentElement.clientWidth)\n return v.value = !0, _(V, S);\n }\n return M(V, S);\n }\n }\n }, O = () => {\n const y = Le(l);\n if (y) {\n if (i.autoPosition === st.top) return st.top;\n if (i.autoPosition === st.bottom) return st.bottom;\n const { height: V } = P.value, { top: S, height: q } = y.getBoundingClientRect(), se = window.innerHeight - S - q, u = S;\n return V <= se ? st.bottom : V > se && V <= u ? st.top : se >= u ? st.bottom : st.top;\n }\n return st.bottom;\n }, J = (y) => O() === st.bottom ? U(y) : $(y), ce = () => {\n const y = Le(l);\n if (y)\n return i.autoPosition ? J(y) : U(y);\n }, pe = function(y) {\n if (y) {\n const V = y.scrollHeight > y.clientHeight, q = window.getComputedStyle(y).overflowY.indexOf(\"hidden\") !== -1;\n return V && !q;\n }\n return !0;\n }, p = function(y) {\n return !y || y === document.body || y.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? window : pe(y) ? y : p(\n y.assignedSlot && d.value.shadowDom ? y.assignedSlot.parentNode : y.parentNode\n );\n }, Y = (y) => {\n if (y)\n switch (i.position) {\n case Et.left:\n return { left: 0, transform: \"translateX(0)\" };\n case Et.right:\n return { left: `${y.width}px`, transform: \"translateX(-100%)\" };\n default:\n return { left: `${y.width / 2}px`, transform: \"translateX(-50%)\" };\n }\n return {};\n };\n return {\n openOnTop: h,\n menuStyle: R,\n xCorrect: v,\n setMenuPosition: L,\n getScrollableParent: p,\n shadowRender: (y, V, S) => {\n const q = document.createElement(\"div\"), k = Le(l)?.getBoundingClientRect();\n q.setAttribute(\"id\", \"dp--temp-container\");\n const se = n.value?.clientWidth ? n.value : document.body;\n se.append(q);\n const u = Y(k), re = d.value.shadowDom ? Object.keys(g).filter(\n (I) => [\"right-sidebar\", \"left-sidebar\", \"top-extra\", \"action-extra\"].includes(I)\n ) : Object.keys(g), G = tl(\n V,\n {\n ...S,\n shadow: !0,\n style: { opacity: 0, position: \"absolute\", ...u }\n },\n Object.fromEntries(re.map((I) => [I, g[I]]))\n );\n y != null && (G.appContext = y.appContext), nn(G, q), P.value = G.el?.getBoundingClientRect(), nn(null, q), se.removeChild(q);\n }\n };\n}, bt = [\n { name: \"clock-icon\", use: [\"time\", \"calendar\", \"shared\"] },\n { name: \"arrow-left\", use: [\"month-year\", \"calendar\", \"shared\", \"year-mode\"] },\n { name: \"arrow-right\", use: [\"month-year\", \"calendar\", \"shared\", \"year-mode\"] },\n { name: \"arrow-up\", use: [\"time\", \"calendar\", \"month-year\", \"shared\"] },\n { name: \"arrow-down\", use: [\"time\", \"calendar\", \"month-year\", \"shared\"] },\n { name: \"calendar-icon\", use: [\"month-year\", \"time\", \"calendar\", \"shared\", \"year-mode\"] },\n { name: \"day\", use: [\"calendar\", \"shared\"] },\n { name: \"month-overlay-value\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"year-overlay-value\", use: [\"calendar\", \"month-year\", \"shared\", \"year-mode\"] },\n { name: \"year-overlay\", use: [\"month-year\", \"shared\"] },\n { name: \"month-overlay\", use: [\"month-year\", \"shared\"] },\n { name: \"month-overlay-header\", use: [\"month-year\", \"shared\"] },\n { name: \"year-overlay-header\", use: [\"month-year\", \"shared\"] },\n { name: \"hours-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"hours-overlay-header\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes-overlay-header\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"seconds-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"seconds-overlay-header\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"hours\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"month\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"year\", use: [\"calendar\", \"month-year\", \"shared\", \"year-mode\"] },\n { name: \"action-buttons\", use: [\"action\"] },\n { name: \"action-preview\", use: [\"action\"] },\n { name: \"calendar-header\", use: [\"calendar\", \"shared\"] },\n { name: \"marker-tooltip\", use: [\"calendar\", \"shared\"] },\n { name: \"action-extra\", use: [\"menu\"] },\n { name: \"time-picker-overlay\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"am-pm-button\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"left-sidebar\", use: [\"menu\"] },\n { name: \"right-sidebar\", use: [\"menu\"] },\n { name: \"month-year\", use: [\"month-year\", \"shared\"] },\n { name: \"time-picker\", use: [\"menu\", \"shared\"] },\n { name: \"action-row\", use: [\"action\"] },\n { name: \"marker\", use: [\"calendar\", \"shared\"] },\n { name: \"quarter\", use: [\"shared\"] },\n { name: \"top-extra\", use: [\"shared\", \"month-year\"] },\n { name: \"tp-inline-arrow-up\", use: [\"shared\", \"time\"] },\n { name: \"tp-inline-arrow-down\", use: [\"shared\", \"time\"] },\n { name: \"menu-header\", use: [\"menu\"] }\n], fo = [{ name: \"trigger\" }, { name: \"input-icon\" }, { name: \"clear-icon\" }, { name: \"dp-input\" }], vo = {\n all: () => bt,\n monthYear: () => bt.filter((e) => e.use.includes(\"month-year\")),\n input: () => fo,\n timePicker: () => bt.filter((e) => e.use.includes(\"time\")),\n action: () => bt.filter((e) => e.use.includes(\"action\")),\n calendar: () => bt.filter((e) => e.use.includes(\"calendar\")),\n menu: () => bt.filter((e) => e.use.includes(\"menu\")),\n shared: () => bt.filter((e) => e.use.includes(\"shared\")),\n yearMode: () => bt.filter((e) => e.use.includes(\"year-mode\"))\n}, et = (e, t, l) => {\n const n = [];\n return vo[t]().forEach((a) => {\n e[a.name] && n.push(a.name);\n }), l?.length && l.forEach((a) => {\n a.slot && n.push(a.slot);\n }), n;\n}, aa = (e) => {\n const t = j(() => (n) => e.value ? n ? e.value.open : e.value.close : \"\"), l = j(() => (n) => e.value ? n ? e.value.menuAppearTop : e.value.menuAppearBottom : \"\");\n return { transitionName: t, showTransition: !!e.value, menuTransition: l };\n}, na = (e, t, l) => {\n const { defaultedRange: n, defaultedTz: a } = Oe(e), f = H(Ze(H(), a.value.timezone)), i = Z([{ month: Me(f), year: ye(f) }]), g = (h) => {\n const T = {\n hours: yt(f),\n minutes: $t(f),\n seconds: 0\n };\n return n.value.enabled ? [T[h], T[h]] : T[h];\n }, d = ea({\n hours: g(\"hours\"),\n minutes: g(\"minutes\"),\n seconds: g(\"seconds\")\n });\n rt(\n n,\n (h, T) => {\n h.enabled !== T.enabled && (d.hours = g(\"hours\"), d.minutes = g(\"minutes\"), d.seconds = g(\"seconds\"));\n },\n { deep: !0 }\n );\n const P = j({\n get: () => e.internalModelValue,\n set: (h) => {\n !e.readonly && !e.disabled && t(\"update:internal-model-value\", h);\n }\n }), v = j(\n () => (h) => i.value[h] ? i.value[h].month : 0\n ), R = j(\n () => (h) => i.value[h] ? i.value[h].year : 0\n );\n return rt(\n P,\n (h, T) => {\n l && JSON.stringify(h ?? {}) !== JSON.stringify(T ?? {}) && l();\n },\n { deep: !0 }\n ), {\n calendars: i,\n time: d,\n modelValue: P,\n month: v,\n year: R,\n today: f\n };\n}, mo = (e, t) => {\n const {\n defaultedMultiCalendars: l,\n defaultedMultiDates: n,\n defaultedUI: a,\n defaultedHighlight: f,\n defaultedTz: i,\n propDates: g,\n defaultedRange: d\n } = Oe(t), { isDisabled: P } = Tt(t), v = Z(null), R = Z(Ze(/* @__PURE__ */ new Date(), i.value.timezone)), h = (c) => {\n !c.current && t.hideOffsetDates || (v.value = c.value);\n }, T = () => {\n v.value = null;\n }, F = (c) => Array.isArray(e.value) && d.value.enabled && e.value[0] && v.value ? c ? Ee(v.value, e.value[0]) : Be(v.value, e.value[0]) : !0, _ = (c, o) => {\n const X = () => e.value ? o ? e.value[0] || null : e.value[1] : null, B = e.value && Array.isArray(e.value) ? X() : null;\n return $e(H(c.value), B);\n }, C = (c) => {\n const o = Array.isArray(e.value) ? e.value[0] : null;\n return c ? !Be(v.value ?? null, o) : !0;\n }, M = (c, o = !0) => (d.value.enabled || t.weekPicker) && Array.isArray(e.value) && e.value.length === 2 ? t.hideOffsetDates && !c.current ? !1 : $e(H(c.value), e.value[o ? 0 : 1]) : d.value.enabled ? _(c, o) && C(o) || $e(c.value, Array.isArray(e.value) ? e.value[0] : null) && F(o) : !1, A = (c, o) => {\n if (Array.isArray(e.value) && e.value[0] && e.value.length === 1) {\n const X = $e(c.value, v.value);\n return o ? Ee(e.value[0], c.value) && X : Be(e.value[0], c.value) && X;\n }\n return !1;\n }, m = (c) => !e.value || t.hideOffsetDates && !c.current ? !1 : d.value.enabled ? t.modelAuto && Array.isArray(e.value) ? $e(c.value, e.value[0] ? e.value[0] : R.value) : !1 : n.value.enabled && Array.isArray(e.value) ? e.value.some((o) => $e(o, c.value)) : $e(c.value, e.value ? e.value : R.value), z = (c) => {\n if (d.value.autoRange || t.weekPicker) {\n if (v.value) {\n if (t.hideOffsetDates && !c.current) return !1;\n const o = kt(v.value, +d.value.autoRange), X = mt(H(v.value), t.weekStart);\n return t.weekPicker ? $e(X[1], H(c.value)) : $e(o, H(c.value));\n }\n return !1;\n }\n return !1;\n }, L = (c) => {\n if (d.value.autoRange || t.weekPicker) {\n if (v.value) {\n const o = kt(v.value, +d.value.autoRange);\n if (t.hideOffsetDates && !c.current) return !1;\n const X = mt(H(v.value), t.weekStart);\n return t.weekPicker ? Ee(c.value, X[0]) && Be(c.value, X[1]) : Ee(c.value, v.value) && Be(c.value, o);\n }\n return !1;\n }\n return !1;\n }, le = (c) => {\n if (d.value.autoRange || t.weekPicker) {\n if (v.value) {\n if (t.hideOffsetDates && !c.current) return !1;\n const o = mt(H(v.value), t.weekStart);\n return t.weekPicker ? $e(o[0], c.value) : $e(v.value, c.value);\n }\n return !1;\n }\n return !1;\n }, U = (c) => xt(e.value, v.value, c.value), $ = () => t.modelAuto && Array.isArray(t.internalModelValue) ? !!t.internalModelValue[0] : !1, ee = () => t.modelAuto ? Rn(t.internalModelValue) : !0, O = (c) => {\n if (t.weekPicker) return !1;\n const o = d.value.enabled ? !M(c) && !M(c, !1) : !0;\n return !P(c.value) && !m(c) && !(!c.current && t.hideOffsetDates) && o;\n }, J = (c) => d.value.enabled ? t.modelAuto ? $() && m(c) : !1 : m(c), ce = (c) => f.value ? Bl(c.value, g.value.highlight) : !1, pe = (c) => {\n const o = P(c.value);\n return o && (typeof f.value == \"function\" ? !f.value(c.value, o) : !f.value.options.highlightDisabled);\n }, p = (c) => typeof f.value == \"function\" ? f.value(c.value) : f.value.weekdays?.includes(c.value.getDay()), Y = (c) => (d.value.enabled || t.weekPicker) && (!(l.value.count > 0) || c.current) && ee() && !(!c.current && t.hideOffsetDates) && !m(c) ? U(c) : !1, te = (c) => {\n if (Array.isArray(e.value) && e.value.length === 1) {\n const { before: o, after: X } = mn(+d.value.maxRange, e.value[0]);\n return Ft(c.value, o) || _t(c.value, X);\n }\n return !1;\n }, y = (c) => {\n if (Array.isArray(e.value) && e.value.length === 1) {\n const { before: o, after: X } = mn(+d.value.minRange, e.value[0]);\n return xt([o, X], e.value[0], c.value);\n }\n return !1;\n }, V = (c) => d.value.enabled && (d.value.maxRange || d.value.minRange) ? d.value.maxRange && d.value.minRange ? te(c) || y(c) : d.value.maxRange ? te(c) : y(c) : !1, S = (c) => {\n const { isRangeStart: o, isRangeEnd: X } = u(c), B = d.value.enabled ? o || X : !1;\n return {\n dp__cell_offset: !c.current,\n dp__pointer: !t.disabled && !(!c.current && t.hideOffsetDates) && !P(c.value) && !V(c),\n dp__cell_disabled: P(c.value) || V(c),\n dp__cell_highlight: !pe(c) && (ce(c) || p(c)) && !J(c) && !B && !le(c) && !(Y(c) && t.weekPicker) && !X,\n dp__cell_highlight_active: !pe(c) && (ce(c) || p(c)) && J(c),\n dp__today: !t.noToday && $e(c.value, R.value) && c.current,\n \"dp--past\": Be(c.value, R.value),\n \"dp--future\": Ee(c.value, R.value)\n };\n }, q = (c) => ({\n dp__active_date: J(c),\n dp__date_hover: O(c)\n }), k = (c) => {\n if (e.value && !Array.isArray(e.value)) {\n const o = mt(e.value, t.weekStart);\n return {\n ...G(c),\n dp__range_start: $e(o[0], c.value),\n dp__range_end: $e(o[1], c.value),\n dp__range_between_week: Ee(c.value, o[0]) && Be(c.value, o[1])\n };\n }\n return {\n ...G(c)\n };\n }, se = (c) => {\n if (e.value && Array.isArray(e.value)) {\n const o = mt(e.value[0], t.weekStart), X = e.value[1] ? mt(e.value[1], t.weekStart) : [];\n return {\n ...G(c),\n dp__range_start: $e(o[0], c.value) || $e(X[0], c.value),\n dp__range_end: $e(o[1], c.value) || $e(X[1], c.value),\n dp__range_between_week: Ee(c.value, o[0]) && Be(c.value, o[1]) || Ee(c.value, X[0]) && Be(c.value, X[1]),\n dp__range_between: Ee(c.value, o[1]) && Be(c.value, X[0])\n };\n }\n return {\n ...G(c)\n };\n }, u = (c) => {\n const o = l.value.count > 0 ? c.current && M(c) && ee() : M(c) && ee(), X = l.value.count > 0 ? c.current && M(c, !1) && ee() : M(c, !1) && ee();\n return { isRangeStart: o, isRangeEnd: X };\n }, re = (c) => {\n const { isRangeStart: o, isRangeEnd: X } = u(c);\n return {\n dp__range_start: o,\n dp__range_end: X,\n dp__range_between: Y(c),\n dp__date_hover: $e(c.value, v.value) && !o && !X && !t.weekPicker,\n dp__date_hover_start: A(c, !0),\n dp__date_hover_end: A(c, !1)\n };\n }, G = (c) => ({\n ...re(c),\n dp__cell_auto_range: L(c),\n dp__cell_auto_range_start: le(c),\n dp__cell_auto_range_end: z(c)\n }), I = (c) => d.value.enabled ? d.value.autoRange ? G(c) : t.modelAuto ? { ...q(c), ...re(c) } : t.weekPicker ? se(c) : re(c) : t.weekPicker ? k(c) : q(c);\n return {\n setHoverDate: h,\n clearHoverDate: T,\n getDayClassData: (c) => t.hideOffsetDates && !c.current ? {} : {\n ...S(c),\n ...I(c),\n [t.dayClass ? t.dayClass(c.value, t.internalModelValue) : \"\"]: !0,\n ...a.value.calendarCell ?? {}\n }\n };\n}, Tt = (e) => {\n const { defaultedFilters: t, defaultedRange: l, propDates: n, defaultedMultiDates: a } = Oe(e), f = (p) => n.value.disabledDates ? typeof n.value.disabledDates == \"function\" ? n.value.disabledDates(H(p)) : !!ca(p, n.value.disabledDates) : !1, i = (p) => n.value.maxDate ? e.yearPicker ? ye(p) > ye(n.value.maxDate) : Ee(p, n.value.maxDate) : !1, g = (p) => n.value.minDate ? e.yearPicker ? ye(p) < ye(n.value.minDate) : Be(p, n.value.minDate) : !1, d = (p) => {\n const Y = i(p), te = g(p), y = f(p), S = t.value.months.map((re) => +re).includes(Me(p)), q = e.disabledWeekDays.length ? e.disabledWeekDays.some((re) => +re === kl(p)) : !1, k = T(p), se = ye(p), u = zn(e.yearRange, se);\n return !(Y || te || y || S || u || q || k);\n }, P = (p, Y) => Be(...wt(n.value.minDate, p, Y)) || $e(...wt(n.value.minDate, p, Y)), v = (p, Y) => Ee(...wt(n.value.maxDate, p, Y)) || $e(...wt(n.value.maxDate, p, Y)), R = (p, Y, te) => {\n let y = !1;\n return n.value.maxDate && te && v(p, Y) && (y = !0), n.value.minDate && !te && P(p, Y) && (y = !0), y;\n }, h = (p, Y, te, y) => {\n let V = !1;\n return y && (n.value.minDate || n.value.maxDate) ? n.value.minDate && n.value.maxDate ? V = R(p, Y, te) : (n.value.minDate && P(p, Y) || n.value.maxDate && v(p, Y)) && (V = !0) : V = !0, V;\n }, T = (p) => Array.isArray(n.value.allowedDates) && !n.value.allowedDates.length ? !0 : n.value.allowedDates ? !ca(p, n.value.allowedDates, On(e.monthPicker, e.yearPicker)) : !1, F = (p) => !d(p), _ = (p) => l.value.noDisabledRange ? !bn({ start: p[0], end: p[1] }).some((te) => F(te)) : !0, C = (p) => {\n if (p) {\n const Y = ye(p);\n return Y >= +e.yearRange[0] && Y <= e.yearRange[1];\n }\n return !0;\n }, M = (p, Y) => !!(Array.isArray(p) && p[Y] && (l.value.maxRange || l.value.minRange) && C(p[Y])), A = (p, Y, te = 0) => {\n if (M(Y, te) && C(p)) {\n const y = bl(p, Y[te]), V = In(Y[te], p), S = V.length === 1 ? 0 : V.filter((k) => F(k)).length, q = Math.abs(y) - (l.value.minMaxRawRange ? 0 : S);\n if (l.value.minRange && l.value.maxRange)\n return q >= +l.value.minRange && q <= +l.value.maxRange;\n if (l.value.minRange) return q >= +l.value.minRange;\n if (l.value.maxRange) return q <= +l.value.maxRange;\n }\n return !0;\n }, m = () => !e.enableTimePicker || e.monthPicker || e.yearPicker || e.ignoreTimeValidation, z = (p) => Array.isArray(p) ? [p[0] ? Ca(p[0]) : null, p[1] ? Ca(p[1]) : null] : Ca(p), L = (p, Y, te) => p.find(\n (y) => +y.hours === yt(Y) && y.minutes === \"*\" ? !0 : +y.minutes === $t(Y) && +y.hours === yt(Y)\n ) && te, le = (p, Y, te) => {\n const [y, V] = p, [S, q] = Y;\n return !L(y, S, te) && !L(V, q, te) && te;\n }, U = (p, Y) => {\n const te = Array.isArray(Y) ? Y : [Y];\n return Array.isArray(e.disabledTimes) ? Array.isArray(e.disabledTimes[0]) ? le(e.disabledTimes, te, p) : !te.some((y) => L(e.disabledTimes, y, p)) : p;\n }, $ = (p, Y) => {\n const te = Array.isArray(Y) ? [Bt(Y[0]), Y[1] ? Bt(Y[1]) : void 0] : Bt(Y), y = !e.disabledTimes(te);\n return p && y;\n }, ee = (p, Y) => e.disabledTimes ? Array.isArray(e.disabledTimes) ? U(Y, p) : $(Y, p) : Y, O = (p) => {\n let Y = !0;\n if (!p || m()) return !0;\n const te = !n.value.minDate && !n.value.maxDate ? z(p) : p;\n return (e.maxTime || n.value.maxDate) && (Y = vn(\n e.maxTime,\n n.value.maxDate,\n \"max\",\n Ne(te),\n Y\n )), (e.minTime || n.value.minDate) && (Y = vn(\n e.minTime,\n n.value.minDate,\n \"min\",\n Ne(te),\n Y\n )), ee(p, Y);\n }, J = (p) => {\n if (!e.monthPicker) return !0;\n let Y = !0;\n const te = H(it(p));\n if (n.value.minDate && n.value.maxDate) {\n const y = H(it(n.value.minDate)), V = H(it(n.value.maxDate));\n return Ee(te, y) && Be(te, V) || $e(te, y) || $e(te, V);\n }\n if (n.value.minDate) {\n const y = H(it(n.value.minDate));\n Y = Ee(te, y) || $e(te, y);\n }\n if (n.value.maxDate) {\n const y = H(it(n.value.maxDate));\n Y = Be(te, y) || $e(te, y);\n }\n return Y;\n }, ce = j(() => (p) => !e.enableTimePicker || e.ignoreTimeValidation ? !0 : O(p)), pe = j(() => (p) => e.monthPicker ? Array.isArray(p) && (l.value.enabled || a.value.enabled) ? !p.filter((te) => !J(te)).length : J(p) : !0);\n return {\n isDisabled: F,\n validateDate: d,\n validateMonthYearInRange: h,\n isDateRangeAllowed: _,\n checkMinMaxRange: A,\n isValidTime: O,\n isTimeValid: ce,\n isMonthValid: pe\n };\n}, ga = () => {\n const e = j(() => (n, a) => n?.includes(a)), t = j(() => (n, a) => n.count ? n.solo ? !0 : a === 0 : !0), l = j(() => (n, a) => n.count ? n.solo ? !0 : a === n.count - 1 : !0);\n return { hideNavigationButtons: e, showLeftIcon: t, showRightIcon: l };\n}, po = (e, t, l) => {\n const n = Z(0), a = ea({\n [Ot.timePicker]: !e.enableTimePicker || e.timePicker || e.monthPicker,\n [Ot.calendar]: !1,\n [Ot.header]: !1\n }), f = j(() => e.monthPicker || e.timePicker), i = (R) => {\n if (e.flow?.length) {\n if (!R && f.value) return v();\n a[R] = !0, Object.keys(a).filter((h) => !a[h]).length || v();\n }\n }, g = () => {\n e.flow?.length && n.value !== -1 && (n.value += 1, t(\"flow-step\", n.value), v()), e.flow?.length === n.value && at().then(() => d());\n }, d = () => {\n n.value = -1;\n }, P = (R, h, ...T) => {\n e.flow[n.value] === R && l.value && l.value[h]?.(...T);\n }, v = (R = 0) => {\n R && (n.value += R), P(je.month, \"toggleMonthPicker\", !0), P(je.year, \"toggleYearPicker\", !0), P(je.calendar, \"toggleTimePicker\", !1, !0), P(je.time, \"toggleTimePicker\", !0, !0);\n const h = e.flow[n.value];\n (h === je.hours || h === je.minutes || h === je.seconds) && P(h, \"toggleTimePicker\", !0, !0, h);\n };\n return { childMount: i, updateFlowStep: g, resetFlow: d, handleFlow: v, flowStep: n };\n}, go = {\n key: 1,\n class: \"dp__input_wrap\"\n}, yo = [\"id\", \"name\", \"inputmode\", \"placeholder\", \"disabled\", \"readonly\", \"required\", \"value\", \"autocomplete\", \"aria-label\", \"aria-disabled\", \"aria-invalid\"], ho = {\n key: 2,\n class: \"dp--clear-btn\"\n}, bo = [\"aria-label\"], ko = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"DatepickerInput\",\n props: {\n isMenuOpen: { type: Boolean, default: !1 },\n inputValue: { type: String, default: \"\" },\n ...va\n },\n emits: [\n \"clear\",\n \"open\",\n \"update:input-value\",\n \"set-input-date\",\n \"close\",\n \"select-date\",\n \"set-empty-date\",\n \"toggle\",\n \"focus-prev\",\n \"focus\",\n \"blur\",\n \"real-blur\",\n \"text-input\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, {\n defaultedTextInput: f,\n defaultedAriaLabels: i,\n defaultedInline: g,\n defaultedConfig: d,\n defaultedRange: P,\n defaultedMultiDates: v,\n defaultedUI: R,\n getDefaultPattern: h,\n getDefaultStartTime: T\n } = Oe(a), { checkMinMaxRange: F } = Tt(a), _ = Z(), C = Z(null), M = Z(!1), A = Z(!1), m = j(\n () => ({\n dp__pointer: !a.disabled && !a.readonly && !f.value.enabled,\n dp__disabled: a.disabled,\n dp__input_readonly: !f.value.enabled,\n dp__input: !0,\n dp__input_not_clearable: !a.clearable,\n dp__input_icon_pad: !a.hideInputIcon,\n dp__input_valid: typeof a.state == \"boolean\" ? a.state : !1,\n dp__input_invalid: typeof a.state == \"boolean\" ? !a.state : !1,\n dp__input_focus: M.value || a.isMenuOpen,\n dp__input_reg: !f.value.enabled,\n ...R.value.input ?? {}\n })\n ), z = () => {\n n(\"set-input-date\", null), a.clearable && a.autoApply && (n(\"set-empty-date\"), _.value = null);\n }, L = (k) => {\n const se = T();\n return Yl(\n k,\n f.value.format ?? h(),\n se ?? En({}, a.enableSeconds),\n a.inputValue,\n A.value,\n a.formatLocale\n );\n }, le = (k) => {\n const { rangeSeparator: se } = f.value, [u, re] = k.split(`${se}`);\n if (u) {\n const G = L(u.trim()), I = re ? L(re.trim()) : void 0;\n if (_t(G, I)) return;\n const x = G && I ? [G, I] : [G];\n F(I, x, 0) && (_.value = G ? x : null);\n }\n }, U = () => {\n A.value = !0;\n }, $ = (k) => {\n if (P.value.enabled)\n le(k);\n else if (v.value.enabled) {\n const se = k.split(\";\");\n _.value = se.map((u) => L(u.trim())).filter((u) => u);\n } else\n _.value = L(k);\n }, ee = (k) => {\n const se = typeof k == \"string\" ? k : k.target?.value;\n se !== \"\" ? (f.value.openMenu && !a.isMenuOpen && n(\"open\"), $(se), n(\"set-input-date\", _.value)) : z(), A.value = !1, n(\"update:input-value\", se), n(\"text-input\", k, _.value);\n }, O = (k) => {\n f.value.enabled ? ($(k.target.value), f.value.enterSubmit && za(_.value) && a.inputValue !== \"\" ? (n(\"set-input-date\", _.value, !0), _.value = null) : f.value.enterSubmit && a.inputValue === \"\" && (_.value = null, n(\"clear\"))) : pe(k);\n }, J = (k, se) => {\n f.value.enabled && f.value.tabSubmit && !se && $(k.target.value), f.value.tabSubmit && za(_.value) && a.inputValue !== \"\" ? (n(\"set-input-date\", _.value, !0, !0), _.value = null) : f.value.tabSubmit && a.inputValue === \"\" && (_.value = null, n(\"clear\", !0));\n }, ce = () => {\n M.value = !0, n(\"focus\"), at().then(() => {\n f.value.enabled && f.value.selectOnFocus && C.value?.select();\n });\n }, pe = (k) => {\n if (Dt(k, d.value, !0), f.value.enabled && f.value.openMenu && !g.value.input) {\n if (f.value.openMenu === \"open\" && !a.isMenuOpen) return n(\"open\");\n if (f.value.openMenu === \"toggle\") return n(\"toggle\");\n } else f.value.enabled || n(\"toggle\");\n }, p = () => {\n n(\"real-blur\"), M.value = !1, (!a.isMenuOpen || g.value.enabled && g.value.input) && n(\"blur\"), a.autoApply && f.value.enabled && _.value && !a.isMenuOpen && (n(\"set-input-date\", _.value), n(\"select-date\"), _.value = null);\n }, Y = (k) => {\n Dt(k, d.value, !0), n(\"clear\");\n }, te = () => {\n n(\"close\");\n }, y = (k) => {\n if (k.key === \"Tab\" && J(k), k.key === \"Enter\" && O(k), k.key === \"Escape\" && f.value.escClose && te(), !f.value.enabled) {\n if (k.code === \"Tab\") return;\n k.preventDefault();\n }\n }, V = () => {\n C.value?.focus({ preventScroll: !0 });\n }, S = (k) => {\n _.value = k;\n }, q = (k) => {\n k.key === Re.tab && J(k, !0);\n };\n return t({\n focusInput: V,\n setParsedDate: S\n }), (k, se) => (w(), W(\"div\", { onClick: pe }, [\n k.$slots.trigger && !k.$slots[\"dp-input\"] && !s(g).enabled ? ie(k.$slots, \"trigger\", { key: 0 }) : Q(\"\", !0),\n !k.$slots.trigger && (!s(g).enabled || s(g).input) ? (w(), W(\"div\", go, [\n k.$slots[\"dp-input\"] && !k.$slots.trigger && (!s(g).enabled || s(g).enabled && s(g).input) ? ie(k.$slots, \"dp-input\", {\n key: 0,\n value: e.inputValue,\n isMenuOpen: e.isMenuOpen,\n onInput: ee,\n onEnter: O,\n onTab: J,\n onClear: Y,\n onBlur: p,\n onKeypress: y,\n onPaste: U,\n onFocus: ce,\n openMenu: () => k.$emit(\"open\"),\n closeMenu: () => k.$emit(\"close\"),\n toggleMenu: () => k.$emit(\"toggle\")\n }) : Q(\"\", !0),\n k.$slots[\"dp-input\"] ? Q(\"\", !0) : (w(), W(\"input\", {\n key: 1,\n id: k.uid ? `dp-input-${k.uid}` : void 0,\n ref_key: \"inputRef\",\n ref: C,\n \"data-test-id\": \"dp-input\",\n name: k.name,\n class: De(m.value),\n inputmode: s(f).enabled ? \"text\" : \"none\",\n placeholder: k.placeholder,\n disabled: k.disabled,\n readonly: k.readonly,\n required: k.required,\n value: e.inputValue,\n autocomplete: k.autocomplete,\n \"aria-label\": s(i)?.input,\n \"aria-disabled\": k.disabled || void 0,\n \"aria-invalid\": k.state === !1 ? !0 : void 0,\n onInput: ee,\n onBlur: p,\n onFocus: ce,\n onKeypress: y,\n onKeydown: se[0] || (se[0] = (u) => y(u)),\n onPaste: U\n }, null, 42, yo)),\n he(\"div\", {\n onClick: se[3] || (se[3] = (u) => n(\"toggle\"))\n }, [\n k.$slots[\"input-icon\"] && !k.hideInputIcon ? (w(), W(\"span\", {\n key: 0,\n class: \"dp__input_icon\",\n onClick: se[1] || (se[1] = (u) => n(\"toggle\"))\n }, [\n ie(k.$slots, \"input-icon\")\n ])) : Q(\"\", !0),\n !k.$slots[\"input-icon\"] && !k.hideInputIcon && !k.$slots[\"dp-input\"] ? (w(), Te(s(jt), {\n key: 1,\n \"aria-label\": s(i)?.calendarIcon,\n class: \"dp__input_icon dp__input_icons\",\n onClick: se[2] || (se[2] = (u) => n(\"toggle\"))\n }, null, 8, [\"aria-label\"])) : Q(\"\", !0)\n ]),\n k.$slots[\"clear-icon\"] && (k.alwaysClearable || e.inputValue && k.clearable && !k.disabled && !k.readonly) ? (w(), W(\"span\", ho, [\n ie(k.$slots, \"clear-icon\", { clear: Y })\n ])) : Q(\"\", !0),\n !k.$slots[\"clear-icon\"] && (k.alwaysClearable || k.clearable && e.inputValue && !k.disabled && !k.readonly) ? (w(), W(\"button\", {\n key: 3,\n \"aria-label\": s(i)?.clearInput,\n class: \"dp--clear-btn\",\n type: \"button\",\n onKeydown: se[4] || (se[4] = (u) => s(qe)(u, () => Y(u), !0, q)),\n onClick: se[5] || (se[5] = Xt((u) => Y(u), [\"prevent\"]))\n }, [\n tt(s(Sn), {\n class: \"dp__input_icons\",\n \"data-test-id\": \"clear-icon\"\n })\n ], 40, bo)) : Q(\"\", !0)\n ])) : Q(\"\", !0)\n ]));\n }\n}), wo = typeof window < \"u\" ? window : void 0, Ea = () => {\n}, Do = (e) => al() ? (nl(e), !0) : !1, Mo = (e, t, l, n) => {\n if (!e) return Ea;\n let a = Ea;\n const f = rt(\n () => s(e),\n (g) => {\n a(), g && (g.removeEventListener(t, l), g.addEventListener(t, l, n), a = () => {\n g.removeEventListener(t, l, n), a = Ea;\n });\n },\n { immediate: !0, flush: \"post\" }\n ), i = () => {\n f(), a();\n };\n return Do(i), i;\n}, $o = (e, t, l, n = {}) => {\n const { window: a = wo, event: f = \"pointerdown\" } = n;\n return a ? Mo(a, f, (g) => {\n const d = Le(e), P = Le(t);\n !d || !P || d === g.target || g.composedPath().includes(d) || g.composedPath().includes(P) || l(g);\n }, { passive: !0 }) : void 0;\n}, Ao = [\"data-dp-mobile\"], To = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"VueDatePicker\",\n props: {\n ...va\n },\n emits: [\n \"update:model-value\",\n \"update:model-timezone-value\",\n \"text-submit\",\n \"closed\",\n \"cleared\",\n \"open\",\n \"focus\",\n \"blur\",\n \"internal-model-change\",\n \"recalculate-position\",\n \"flow-step\",\n \"update-month-year\",\n \"invalid-select\",\n \"invalid-fixed-range\",\n \"tooltip-open\",\n \"tooltip-close\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"am-pm-change\",\n \"range-start\",\n \"range-end\",\n \"date-update\",\n \"invalid-date\",\n \"overlay-toggle\",\n \"text-input\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, f = Yt(), i = Z(!1), g = qt(a, \"modelValue\"), d = qt(a, \"timezone\"), P = Z(null), v = Z(null), R = Z(null), h = Z(!1), T = Z(null), F = Z(!1), _ = Z(!1), C = Z(!1), M = Z(!1), { setMenuFocused: A, setShiftKey: m } = Hn(), { clearArrowNav: z } = At(), { validateDate: L, isValidTime: le } = Tt(a), {\n defaultedTransitions: U,\n defaultedTextInput: $,\n defaultedInline: ee,\n defaultedConfig: O,\n defaultedRange: J,\n defaultedMultiDates: ce\n } = Oe(a), { menuTransition: pe, showTransition: p } = aa(U), { isMobile: Y } = Qn(O), te = ll();\n Ue(() => {\n x(a.modelValue), at().then(() => {\n ee.value.enabled || (u(T.value)?.addEventListener(\"scroll\", K), window?.addEventListener(\"resize\", oe));\n }), ee.value.enabled && (i.value = !0), window?.addEventListener(\"keyup\", ge), window?.addEventListener(\"keydown\", _e);\n }), Ut(() => {\n ee.value.enabled || (u(T.value)?.removeEventListener(\"scroll\", K), window?.removeEventListener(\"resize\", oe)), window?.removeEventListener(\"keyup\", ge), window?.removeEventListener(\"keydown\", _e);\n });\n const y = et(f, \"all\", a.presetDates), V = et(f, \"input\");\n rt(\n [g, d],\n () => {\n x(g.value);\n },\n { deep: !0 }\n );\n const { openOnTop: S, menuStyle: q, xCorrect: k, setMenuPosition: se, getScrollableParent: u, shadowRender: re } = co({\n menuRef: P,\n menuRefInner: v,\n inputRef: R,\n pickerWrapperRef: T,\n inline: ee,\n emit: n,\n props: a,\n slots: f\n }), {\n inputValue: G,\n internalModelValue: I,\n parseExternalModelValue: x,\n emitModelValue: c,\n formatInputValue: o,\n checkBeforeEmit: X\n } = rr(n, a, { isInputFocused: h, isTextInputDate: M }), B = j(\n () => ({\n dp__main: !0,\n dp__theme_dark: a.dark,\n dp__theme_light: !a.dark,\n dp__flex_display: ee.value.enabled,\n \"dp--flex-display-collapsed\": C.value,\n dp__flex_display_with_input: ee.value.input\n })\n ), be = j(() => a.dark ? \"dp__theme_dark\" : \"dp__theme_light\"), Ae = j(() => a.teleport ? {\n to: typeof a.teleport == \"boolean\" ? \"body\" : a.teleport,\n disabled: !a.teleport || ee.value.enabled\n } : {}), ne = j(() => ({ class: \"dp__outer_menu_wrap\" })), r = j(() => ee.value.enabled && (a.timePicker || a.monthPicker || a.yearPicker || a.quarterPicker)), E = () => R.value?.$el?.getBoundingClientRect() ?? { width: 0, left: 0, right: 0 }, K = () => {\n i.value && (O.value.closeOnScroll ? Xe() : se());\n }, oe = () => {\n i.value && se();\n const N = v.value?.$el.getBoundingClientRect().width ?? 0;\n C.value = document.body.offsetWidth <= N;\n }, ge = (N) => {\n N.key === \"Tab\" && !ee.value.enabled && !a.teleport && O.value.tabOutClosesMenu && (T.value.contains(document.activeElement) || Xe()), _.value = N.shiftKey;\n }, _e = (N) => {\n _.value = N.shiftKey;\n }, Ye = () => {\n !a.disabled && !a.readonly && (re(te, hn, a), se(!1), i.value = !0, i.value && n(\"open\"), i.value || xe(), x(a.modelValue));\n }, nt = () => {\n G.value = \"\", xe(), v.value?.onValueCleared(), R.value?.setParsedDate(null), n(\"update:model-value\", null), n(\"update:model-timezone-value\", null), n(\"cleared\"), O.value.closeOnClearValue && Xe();\n }, St = () => {\n const N = I.value;\n return !N || !Array.isArray(N) && L(N) ? !0 : Array.isArray(N) ? ce.value.enabled || N.length === 2 && L(N[0]) && L(N[1]) ? !0 : J.value.partialRange && !a.timePicker ? L(N[0]) : !1 : !1;\n }, D = () => {\n X() && St() ? (c(), Xe()) : n(\"invalid-select\", I.value);\n }, de = (N) => {\n fe(), c(), O.value.closeOnAutoApply && !N && Xe();\n }, fe = () => {\n R.value && $.value.enabled && R.value.setParsedDate(I.value);\n }, ht = (N = !1) => {\n a.autoApply && le(I.value) && St() && (J.value.enabled && Array.isArray(I.value) ? (J.value.partialRange || I.value.length === 2) && de(N) : de(N));\n }, xe = () => {\n $.value.enabled || (I.value = null);\n }, Xe = (N = !1) => {\n N && I.value && O.value.setDateOnMenuClose && D(), ee.value.enabled || (i.value && (i.value = !1, k.value = !1, A(!1), m(!1), z(), n(\"closed\"), G.value && x(g.value)), xe(), n(\"blur\"), v.value?.$el?.remove());\n }, ya = (N, ue, me = !1) => {\n if (!N) {\n I.value = null;\n return;\n }\n const vt = Array.isArray(N) ? !N.some((Pt) => !L(Pt)) : L(N), ct = le(N);\n vt && ct ? (M.value = !0, I.value = N, ue ? (F.value = me, D(), n(\"text-submit\")) : a.autoApply && ht(!0), at().then(() => {\n M.value = !1;\n })) : n(\"invalid-date\", N);\n }, ha = () => {\n a.autoApply && le(I.value) && c(), fe();\n }, la = () => i.value ? Xe() : Ye(), ba = (N) => {\n I.value = N;\n }, ka = () => {\n $.value.enabled && (h.value = !0, o()), n(\"focus\");\n }, wa = () => {\n $.value.enabled && (h.value = !1, x(a.modelValue), F.value && Ol(T.value, _.value)?.focus()), n(\"blur\");\n }, Da = (N) => {\n v.value && v.value.updateMonthYear(0, {\n month: dn(N.month),\n year: dn(N.year)\n });\n }, Ma = (N) => {\n x(N ?? a.modelValue);\n }, an = (N, ue) => {\n v.value?.switchView(N, ue);\n }, b = (N, ue) => O.value.onClickOutside ? O.value.onClickOutside(N, ue) : Xe(!0), ae = (N = 0) => {\n v.value?.handleFlow(N);\n }, ve = () => P;\n return $o(\n P,\n R,\n (N) => b(St, N)\n ), t({\n closeMenu: Xe,\n selectDate: D,\n clearValue: nt,\n openMenu: Ye,\n onScroll: K,\n formatInputValue: o,\n // exposed for testing purposes\n updateInternalModelValue: ba,\n // modify internal modelValue\n setMonthYear: Da,\n parseModel: Ma,\n switchView: an,\n toggleMenu: la,\n handleFlow: ae,\n getDpWrapMenuRef: ve\n }), (N, ue) => (w(), W(\"div\", {\n ref_key: \"pickerWrapperRef\",\n ref: T,\n class: De(B.value),\n \"data-datepicker-instance\": \"\",\n \"data-dp-mobile\": s(Y)\n }, [\n tt(ko, He({\n ref_key: \"inputRef\",\n ref: R,\n \"input-value\": s(G),\n \"onUpdate:inputValue\": ue[0] || (ue[0] = (me) => ln(G) ? G.value = me : null),\n \"is-menu-open\": i.value\n }, N.$props, {\n onClear: nt,\n onOpen: Ye,\n onSetInputDate: ya,\n onSetEmptyDate: s(c),\n onSelectDate: D,\n onToggle: la,\n onClose: Xe,\n onFocus: ka,\n onBlur: wa,\n onRealBlur: ue[1] || (ue[1] = (me) => h.value = !1),\n onTextInput: ue[2] || (ue[2] = (me) => N.$emit(\"text-input\", me))\n }), Ge({ _: 2 }, [\n Ce(s(V), (me, vt) => ({\n name: me,\n fn: we((ct) => [\n ie(N.$slots, me, ze(Je(ct)))\n ])\n }))\n ]), 1040, [\"input-value\", \"is-menu-open\", \"onSetEmptyDate\"]),\n (w(), Te(fa(N.teleport ? rl : \"div\"), ze(Je(Ae.value)), {\n default: we(() => [\n tt(Vt, {\n name: s(pe)(s(S)),\n css: s(p) && !s(ee).enabled\n }, {\n default: we(() => [\n i.value ? (w(), W(\"div\", He({\n key: 0,\n ref_key: \"dpWrapMenuRef\",\n ref: P\n }, ne.value, {\n class: { \"dp--menu-wrapper\": !s(ee).enabled },\n style: s(ee).enabled ? void 0 : s(q)\n }), [\n tt(hn, He({\n ref_key: \"dpMenuRef\",\n ref: v\n }, N.$props, {\n \"internal-model-value\": s(I),\n \"onUpdate:internalModelValue\": ue[3] || (ue[3] = (me) => ln(I) ? I.value = me : null),\n class: { [be.value]: !0, \"dp--menu-wrapper\": N.teleport },\n \"open-on-top\": s(S),\n \"no-overlay-focus\": r.value,\n collapse: C.value,\n \"get-input-rect\": E,\n \"is-text-input-date\": M.value,\n onClosePicker: Xe,\n onSelectDate: D,\n onAutoApply: ht,\n onTimeUpdate: ha,\n onFlowStep: ue[4] || (ue[4] = (me) => N.$emit(\"flow-step\", me)),\n onUpdateMonthYear: ue[5] || (ue[5] = (me) => N.$emit(\"update-month-year\", me)),\n onInvalidSelect: ue[6] || (ue[6] = (me) => N.$emit(\"invalid-select\", s(I))),\n onAutoApplyInvalid: ue[7] || (ue[7] = (me) => N.$emit(\"invalid-select\", me)),\n onInvalidFixedRange: ue[8] || (ue[8] = (me) => N.$emit(\"invalid-fixed-range\", me)),\n onRecalculatePosition: s(se),\n onTooltipOpen: ue[9] || (ue[9] = (me) => N.$emit(\"tooltip-open\", me)),\n onTooltipClose: ue[10] || (ue[10] = (me) => N.$emit(\"tooltip-close\", me)),\n onTimePickerOpen: ue[11] || (ue[11] = (me) => N.$emit(\"time-picker-open\", me)),\n onTimePickerClose: ue[12] || (ue[12] = (me) => N.$emit(\"time-picker-close\", me)),\n onAmPmChange: ue[13] || (ue[13] = (me) => N.$emit(\"am-pm-change\", me)),\n onRangeStart: ue[14] || (ue[14] = (me) => N.$emit(\"range-start\", me)),\n onRangeEnd: ue[15] || (ue[15] = (me) => N.$emit(\"range-end\", me)),\n onDateUpdate: ue[16] || (ue[16] = (me) => N.$emit(\"date-update\", me)),\n onInvalidDate: ue[17] || (ue[17] = (me) => N.$emit(\"invalid-date\", me)),\n onOverlayToggle: ue[18] || (ue[18] = (me) => N.$emit(\"overlay-toggle\", me)),\n onMenuBlur: ue[19] || (ue[19] = (me) => N.$emit(\"blur\"))\n }), Ge({ _: 2 }, [\n Ce(s(y), (me, vt) => ({\n name: me,\n fn: we((ct) => [\n ie(N.$slots, me, ze(Je({ ...ct })))\n ])\n }))\n ]), 1040, [\"internal-model-value\", \"class\", \"open-on-top\", \"no-overlay-focus\", \"collapse\", \"is-text-input-date\", \"onRecalculatePosition\"])\n ], 16)) : Q(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ]),\n _: 3\n }, 16))\n ], 10, Ao));\n }\n}), qn = /* @__PURE__ */ (() => {\n const e = To;\n return e.install = (t) => {\n t.component(\"Vue3DatePicker\", e);\n }, e;\n})(), So = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: qn\n}, Symbol.toStringTag, { value: \"Module\" }));\nObject.entries(So).forEach(([e, t]) => {\n e !== \"default\" && (qn[e] = t);\n});\nexport {\n qn as default\n};\n","import { defineComponent, useModel, computed, openBlock, createBlock, unref, mergeModels } from \"vue\";\nimport { N as NcSelect } from \"./NcSelect-B1uITk_3.mjs\";\nimport { r as register, h as t45, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nregister(t45);\nfunction formatTimezoneId(timezoneId) {\n return timezoneId.slice(timezoneId.indexOf(\"/\") + 1).replaceAll(\"/\", \" - \").replaceAll(\"_\", \" \");\n}\nfunction getTimezones() {\n return Intl.supportedValuesOf(\"timeZone\").filter((tz) => !tz.startsWith(\"Etc/\")).map((timezoneId) => ({\n timezoneId,\n label: formatTimezoneId(timezoneId)\n })).sort((a, b) => a.timezoneId.localeCompare(b.timezoneId));\n}\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcTimezonePicker\",\n props: /* @__PURE__ */ mergeModels({\n additionalTimezones: { default: () => [] },\n uid: { default: createElementId() }\n }, {\n \"modelValue\": { default: \"floating\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n const formattedAdditionalTimezones = computed(() => {\n return props.additionalTimezones.map(({ timezoneId, label }) => ({\n timezoneId,\n label\n }));\n });\n const options = computed(() => {\n const timezones = getTimezones();\n timezones.unshift(...formattedAdditionalTimezones.value);\n return timezones;\n });\n function filterBy(option, label, search) {\n const terms = search.trim().split(/\\s+/);\n const values = Object.values(option);\n return terms.every((term) => {\n return values.some((value) => value.toLowerCase().includes(term.toLowerCase()));\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(NcSelect, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n \"aria-label-combobox\": unref(t)(\"Search for time zone\"),\n clearable: false,\n filterBy,\n multiple: false,\n options: options.value,\n placeholder: unref(t)(\"Type to search time zone\"),\n uid: _ctx.uid,\n reduce: (option) => option.timezoneId,\n label: \"label\"\n }, null, 8, [\"modelValue\", \"aria-label-combobox\", \"options\", \"placeholder\", \"uid\", \"reduce\"]);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcTimezonePicker.vue_vue_type_script_setup_true_lang-8CBGI3yi.mjs.map\n","import '../assets/NcDateTimePicker-HT1ZTE-Z.css';\nimport { defineComponent, useModel, useTemplateRef, computed, openBlock, createElementBlock, createVNode, unref, mergeProps, createSlots, withCtx, createTextVNode, toDisplayString, createBlock, Teleport, createElementVNode, mergeModels } from \"vue\";\nimport { x as mdiChevronUp, y as mdiChevronDown, c as mdiChevronRight, z as mdiChevronLeft, A as mdiClock, B as mdiCalendarBlank, b as mdiClose } from \"./mdi-CpchYUUV.mjs\";\nimport { getCanonicalLocale, getFirstDay, getDayNamesMin, getDayNames } from \"@nextcloud/l10n\";\nimport VueDatePicker from \"@vuepic/vue-datepicker\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcTimezonePicker.vue_vue_type_script_setup_true_lang-8CBGI3yi.mjs\";\nimport { r as register, y as t13, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t13);\nconst _hoisted_1 = { class: \"vue-date-time-picker__wrapper\" };\nconst _hoisted_2 = {\n ref: \"target\",\n class: \"vue-date-time-picker__wrapper vue-date-time-picker__wrapper--teleport\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcDateTimePicker\",\n props: /* @__PURE__ */ mergeModels({\n appendToBody: { type: Boolean },\n ariaLabel: { default: t(\"Datepicker input\") },\n ariaLabelMenu: { default: t(\"Datepicker menu\") },\n clearable: { type: Boolean },\n confirm: { type: Boolean },\n format: { type: [String, Function], default: void 0 },\n locale: { default: getCanonicalLocale() },\n max: { default: void 0 },\n min: { default: void 0 },\n minuteStep: { default: 10 },\n modelValue: { default: null },\n placeholder: { default: void 0 },\n showTimezoneSelect: { type: Boolean },\n showWeekNumber: { type: Boolean },\n type: { default: \"date\" },\n inline: { type: Boolean, default: false }\n }, {\n \"timezoneId\": { default: \"UTC\" },\n \"timezoneIdModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"update:modelValue\", \"update:timezoneId\", \"blur\"], [\"update:timezoneId\"]),\n setup(__props, { emit: __emit }) {\n const timezoneId = useModel(__props, \"timezoneId\");\n const props = __props;\n const emit = __emit;\n const targetElement = useTemplateRef(\"target\");\n const pickerInstance = useTemplateRef(\"picker\");\n const value = computed(() => {\n if (props.modelValue === null && props.clearable) {\n return null;\n }\n if (props.type === \"week\") {\n const date = props.modelValue instanceof Date ? props.modelValue : /* @__PURE__ */ new Date();\n const end = new Date(date);\n end.setUTCDate(date.getUTCDate() + 6);\n return [date, end];\n } else if (props.type === \"year\") {\n const date = props.modelValue instanceof Date ? props.modelValue : /* @__PURE__ */ new Date();\n return date.getUTCFullYear();\n } else if (props.type === \"month\") {\n const date = props.modelValue instanceof Date ? props.modelValue : /* @__PURE__ */ new Date();\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() };\n } else if (props.type === \"time\") {\n const time = props.modelValue instanceof Date ? props.modelValue : /* @__PURE__ */ new Date();\n return {\n hours: time.getHours(),\n minutes: time.getMinutes(),\n seconds: time.getSeconds()\n };\n } else if (props.type === \"time-range\") {\n const time = [props.modelValue].flat();\n if (time.length !== 2) {\n const start = /* @__PURE__ */ new Date();\n const end = new Date(start);\n end.setHours(end.getHours() + 1);\n time.splice(0, 2, start, end);\n }\n return time.map((date) => ({\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds()\n }));\n } else if (props.type.endsWith(\"-range\")) {\n if (props.modelValue === void 0) {\n const start = /* @__PURE__ */ new Date();\n const end = new Date(start);\n end.setUTCDate(start.getUTCDate() + 7);\n return [start, end];\n }\n return props.modelValue;\n }\n return props.modelValue ?? /* @__PURE__ */ new Date();\n });\n const placeholderFallback = computed(() => {\n if (props.type === \"date\") {\n return t(\"Select date\");\n } else if (props.type === \"time\") {\n return t(\"Select time\");\n } else if (props.type === \"datetime\") {\n return t(\"Select date and time\");\n } else if (props.type === \"week\") {\n return t(\"Select week\");\n } else if (props.type === \"month\") {\n return t(\"Select month\");\n } else if (props.type === \"year\") {\n return t(\"Select year\");\n } else if (props.type.endsWith(\"-range\")) {\n return t(\"Select time range\");\n }\n return t(\"Select date and time\");\n });\n const realFormat = computed(() => {\n if (props.format) {\n return props.format;\n } else if (props.type === \"week\") {\n return \"RR-II\";\n }\n let formatter;\n if (props.type === \"date\" || props.type === \"date-range\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { dateStyle: \"medium\" });\n } else if (props.type === \"time\" || props.type === \"time-range\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { timeStyle: \"short\" });\n } else if (props.type === \"datetime\" || props.type === \"datetime-range\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { dateStyle: \"medium\", timeStyle: \"short\" });\n } else if (props.type === \"month\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { year: \"numeric\", month: \"2-digit\" });\n } else if (props.type === \"year\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { year: \"numeric\" });\n }\n if (formatter) {\n return (input) => Array.isArray(input) ? formatter.formatRange(input[0], input[1]) : formatter.format(input);\n }\n return void 0;\n });\n const pickerType = computed(() => ({\n timePicker: props.type === \"time\" || props.type === \"time-range\",\n yearPicker: props.type === \"year\",\n monthPicker: props.type === \"month\",\n weekPicker: props.type === \"week\",\n range: props.type.endsWith(\"-range\") && {\n // do not use partial ranges (meaning after selecting the start [Date, null] will be emitted)\n // if this is needed someday we can enable it,\n // but its not covered by our component interface (props / events) documentation so just disabled for now.\n partialRange: false\n },\n enableTimePicker: !(props.type === \"date\" || props.type === \"date-range\"),\n flow: props.type === \"datetime\" ? [\"calendar\", \"time\"] : void 0\n }));\n const minTime = computed(() => props.min && { hours: props.min.getHours(), minutes: props.min.getMinutes(), seconds: props.min.getSeconds() });\n const maxTime = computed(() => props.max && { hours: props.max.getHours(), minutes: props.max.getMinutes(), seconds: props.max.getSeconds() });\n function onUpdateModelValue(value2) {\n if (value2 === null) {\n return emit(\"update:modelValue\", null);\n }\n if (props.type === \"time\") {\n emit(\"update:modelValue\", formatLibraryTime(value2));\n } else if (props.type === \"time-range\") {\n const start = formatLibraryTime(value2[0]);\n const end = formatLibraryTime(value2[1]);\n if (end.getTime() < start.getTime()) {\n end.setDate(end.getDate() + 1);\n }\n emit(\"update:modelValue\", [start, end]);\n } else if (props.type === \"month\") {\n const data = value2;\n emit(\"update:modelValue\", new Date(data.year, data.month, 1));\n } else if (props.type === \"year\") {\n emit(\"update:modelValue\", new Date(value2, 0));\n } else if (props.type === \"week\") {\n emit(\"update:modelValue\", value2[0]);\n } else {\n emit(\"update:modelValue\", value2);\n }\n }\n function formatLibraryTime(time) {\n const date = /* @__PURE__ */ new Date();\n date.setHours(time.hours);\n date.setMinutes(time.minutes);\n date.setSeconds(time.seconds);\n return date;\n }\n const weekStart = getFirstDay();\n const dayNames = [...getDayNamesMin()];\n for (let i = 0; i < weekStart; i++) {\n dayNames.push(dayNames.shift());\n }\n const weekNumName = t(\"W\");\n const ariaLabels = computed(() => ({\n toggleOverlay: t(\"Toggle overlay\"),\n menu: props.ariaLabelMenu,\n input: props.ariaLabel,\n openTimePicker: t(\"Open time picker\"),\n closeTimePicker: t(\"Close time Picker\"),\n incrementValue: (type) => {\n if (type === \"hours\") {\n return t(\"Increment hours\");\n } else if (type === \"minutes\") {\n return t(\"Increment minutes\");\n }\n return t(\"Increment seconds\");\n },\n decrementValue: (type) => {\n if (type === \"hours\") {\n return t(\"Decrement hours\");\n } else if (type === \"minutes\") {\n return t(\"Decrement minutes\");\n }\n return t(\"Decrement seconds\");\n },\n openTpOverlay: (type) => {\n if (type === \"hours\") {\n return t(\"Open hours overlay\");\n } else if (type === \"minutes\") {\n return t(\"Open minutes overlay\");\n }\n return t(\"Open seconds overlay\");\n },\n amPmButton: t(\"Switch AM/PM mode\"),\n openYearsOverlay: t(\"Open years overlay\"),\n openMonthsOverlay: t(\"Open months overlay\"),\n nextMonth: t(\"Next month\"),\n prevMonth: t(\"Previous month\"),\n nextYear: t(\"Next year\"),\n prevYear: t(\"Previous year\"),\n weekDay: (day) => getDayNames()[day],\n clearInput: t(\"Clear value\"),\n calendarIcon: t(\"Calendar icon\"),\n timePicker: t(\"Time picker\"),\n monthPicker: (overlay) => overlay ? t(\"Month picker overlay\") : t(\"Month picker\"),\n yearPicker: (overlay) => overlay ? t(\"Year picker overlay\") : t(\"Year picker\")\n }));\n function selectDate() {\n pickerInstance.value.selectDate();\n }\n function cancelSelection() {\n pickerInstance.value.closeMenu();\n }\n const calcMinMaxTime = computed(() => {\n if (props.type === \"datetime\") {\n return {\n minDate: props.min,\n maxDate: props.max,\n minTime: props.min && value.value && sameDay(props.min, value.value) ? minTime.value : void 0,\n maxTime: props.max && value.value && sameDay(props.max, value.value) ? maxTime.value : void 0\n };\n }\n if (props.type === \"datetime-range\") {\n return {\n minDate: props.min,\n maxDate: props.max,\n minTime: props.min && value.value ? sameDay(props.min, value.value[0]) ? minTime.value : void 0 : void 0,\n maxTime: props.max && value.value ? sameDay(props.max, value.value[1]) ? maxTime.value : void 0 : void 0\n };\n }\n if (props.type === \"time\" || props.type === \"time-range\") {\n return {\n minTime: props.min ? minTime.value : void 0,\n maxTime: props.max ? maxTime.value : void 0\n };\n }\n return {\n minDate: props.min,\n maxDate: props.max\n };\n });\n function sameDay(a, b) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createVNode(unref(VueDatePicker), mergeProps({\n ref: \"picker\",\n \"aria-labels\": ariaLabels.value,\n autoApply: !_ctx.confirm,\n class: [\"vue-date-time-picker\", { \"vue-date-time-picker--clearable\": _ctx.clearable }],\n cancelText: unref(t)(\"Cancel\"),\n clearable: _ctx.clearable,\n dayNames,\n placeholder: _ctx.placeholder ?? placeholderFallback.value,\n format: realFormat.value,\n locale: _ctx.locale,\n minDate: calcMinMaxTime.value.minDate,\n maxDate: calcMinMaxTime.value.maxDate,\n minTime: calcMinMaxTime.value.minTime,\n maxTime: calcMinMaxTime.value.maxTime,\n minutesIncrement: _ctx.minuteStep,\n modelValue: value.value,\n nowButtonLabel: unref(t)(\"Now\"),\n selectText: unref(t)(\"Pick\"),\n sixWeeks: \"fair\",\n inline: _ctx.inline,\n teleport: _ctx.appendToBody ? targetElement.value || void 0 : false,\n textInput: \"\",\n weekNumName: unref(weekNumName),\n weekNumbers: _ctx.showWeekNumber ? { type: \"iso\" } : void 0,\n weekStart: unref(weekStart)\n }, pickerType.value, {\n \"onUpdate:modelValue\": onUpdateModelValue,\n onBlur: _cache[1] || (_cache[1] = ($event) => emit(\"blur\"))\n }), createSlots({\n \"action-buttons\": withCtx(() => [\n createVNode(unref(NcButton), {\n size: \"small\",\n variant: \"tertiary\",\n onClick: cancelSelection\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"Cancel\")), 1)\n ]),\n _: 1\n }),\n createVNode(unref(NcButton), {\n size: \"small\",\n variant: \"primary\",\n onClick: selectDate\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"Pick\")), 1)\n ]),\n _: 1\n })\n ]),\n \"clear-icon\": withCtx(({ clear }) => [\n createVNode(unref(NcButton), {\n \"aria-label\": unref(t)(\"Clear value\"),\n variant: \"tertiary-no-background\",\n onClick: clear\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiClose),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n _: 2\n }, 1032, [\"aria-label\", \"onClick\"])\n ]),\n \"input-icon\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: unref(mdiCalendarBlank),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"clock-icon\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiClock),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"arrow-left\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiChevronLeft),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"arrow-right\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiChevronRight),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"arrow-down\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiChevronDown),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"arrow-up\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiChevronUp),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n _: 2\n }, [\n _ctx.showTimezoneSelect ? {\n name: \"action-extra\",\n fn: withCtx(() => [\n createVNode(_sfc_main$1, {\n modelValue: timezoneId.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => timezoneId.value = $event),\n class: \"vue-date-time-picker__timezone\",\n appendToBody: false,\n inputLabel: unref(t)(\"Time zone\")\n }, null, 8, [\"modelValue\", \"inputLabel\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1040, [\"aria-labels\", \"autoApply\", \"class\", \"cancelText\", \"clearable\", \"placeholder\", \"format\", \"locale\", \"minDate\", \"maxDate\", \"minTime\", \"maxTime\", \"minutesIncrement\", \"modelValue\", \"nowButtonLabel\", \"selectText\", \"inline\", \"teleport\", \"weekNumName\", \"weekNumbers\", \"weekStart\"]),\n (openBlock(), createBlock(Teleport, {\n to: \"body\",\n disabled: !_ctx.appendToBody\n }, [\n createElementVNode(\"div\", _hoisted_2, null, 512)\n ], 8, [\"disabled\"]))\n ]);\n };\n }\n});\nconst NcDateTimePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-e6654786\"]]);\nexport {\n NcDateTimePicker as N\n};\n//# sourceMappingURL=NcDateTimePicker-DksKisgE.mjs.map\n","import '../assets/NcFilePicker-CimiKIH1.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useTemplateRef, computed, normalizeClass, createVNode, withCtx, createBlock, createTextVNode, unref, Fragment, renderList, renderSlot, nextTick } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BuRnYpJX.mjs\";\nimport { N as NcActionCaption } from \"./NcActionCaption-f7L9gBlT.mjs\";\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-upload-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconFolderUpload = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon upload-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst IconUpload = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\n/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst gtBuilder = getGettextBuilder().detectLanguage();\nconst gt = gtBuilder.build();\ngt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\nconst _hoisted_1 = [\"accept\", \"multiple\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFilePicker\",\n props: {\n accept: { default: void 0 },\n actionCaption: { default: \"\" },\n actions: { default: () => [] },\n directory: { type: Boolean },\n directoryOnly: { type: Boolean },\n disabled: { type: Boolean },\n iconOnly: { type: Boolean },\n label: { default: void 0 },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n variant: { default: \"primary\" }\n },\n emits: [\"pick\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n __expose({\n reset\n });\n const formElement = useTemplateRef(\"form\");\n const inputElement = useTemplateRef(\"input\");\n const currentLabel = computed(() => {\n if (props.loading) {\n return t(\"Uploading …\");\n } else if (props.label) {\n return props.label;\n } else if (props.directoryOnly) {\n return t(\"Pick folder\");\n }\n return props.multiple ? t(\"Pick files\") : t(\"Pick file\");\n });\n const canUploadFolders = computed(() => {\n return (props.directory || props.directoryOnly) && \"webkitdirectory\" in HTMLInputElement.prototype;\n });\n function triggerPickFiles(uploadFolders) {\n reset();\n if (canUploadFolders.value) {\n inputElement.value.webkitdirectory = uploadFolders;\n }\n nextTick(() => inputElement.value.click());\n }\n function onPick() {\n const files = inputElement.value?.files ? Array.from(inputElement.value.files) : [];\n emit(\"pick\", files);\n }\n function reset() {\n formElement.value.reset();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"form\", {\n ref: \"form\",\n class: normalizeClass(_ctx.$style.filePicker)\n }, [\n createVNode(NcActions, {\n \"aria-label\": currentLabel.value,\n disabled: _ctx.disabled || _ctx.loading,\n menuName: _ctx.iconOnly ? void 0 : currentLabel.value,\n forceName: !_ctx.iconOnly,\n variant: _ctx.variant\n }, {\n icon: withCtx(() => [\n !_ctx.loading ? renderSlot(_ctx.$slots, \"icon\", { key: 0 }, () => [\n createVNode(IconPlus, { size: 20 })\n ]) : (openBlock(), createBlock(NcLoadingIcon, { key: 1 }))\n ]),\n default: withCtx(() => [\n _ctx.actionCaption ? (openBlock(), createBlock(NcActionCaption, {\n key: 0,\n name: _ctx.actionCaption\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n !_ctx.directoryOnly ? (openBlock(), createBlock(NcActionButton, {\n key: 1,\n closeAfterClick: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => triggerPickFiles(false))\n }, {\n icon: withCtx(() => [\n createVNode(IconUpload, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(canUploadFolders.value || _ctx.$slots.actions ? _ctx.multiple ? unref(t)(\"Upload files\") : unref(t)(\"Upload file\") : currentLabel.value), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n canUploadFolders.value ? (openBlock(), createBlock(NcActionButton, {\n key: 2,\n closeAfterClick: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => triggerPickFiles(true))\n }, {\n icon: withCtx(() => [\n createVNode(IconFolderUpload, {\n style: { \"color\": \"var(--color-primary-element)\" },\n size: 20\n })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(!_ctx.directoryOnly || _ctx.$slots.actions ? unref(t)(\"Upload folder\") : currentLabel.value), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.actions, (group) => {\n return openBlock(), createElementBlock(Fragment, null, [\n group.caption ? (openBlock(), createBlock(NcActionCaption, {\n key: group.caption,\n name: group.caption\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(group.actions ?? [group], (action) => {\n return openBlock(), createBlock(NcActionButton, {\n key: action.label,\n closeAfterClick: \"\",\n onClick: action.onClick\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n svg: action.iconSvg\n }, null, 8, [\"svg\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(action.label), 1)\n ]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))\n ], 64);\n }), 256))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"menuName\", \"forceName\", \"variant\"]),\n createElementVNode(\"input\", {\n ref: \"input\",\n accept: _ctx.accept?.join(\", \"),\n \"aria-hidden\": \"true\",\n class: \"hidden-visually\",\n multiple: _ctx.multiple,\n type: \"file\",\n onChange: onPick\n }, null, 40, _hoisted_1),\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nconst filePicker = \"_filePicker_UHtO-\";\nconst style0 = {\n filePicker\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcFilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcFilePicker as N\n};\n//# sourceMappingURL=NcFilePicker-DtOsHB4q.mjs.map\n","import '../assets/NcKbd-BeQpGp0b.css';\nimport { defineComponent, computed, openBlock, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString } from \"vue\";\nimport { r as register, o as t7, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { i as isMac } from \"./platform-CC2ecGvV.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t7);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcKbd\",\n props: {\n symbol: { default: () => void 0 },\n mac: { type: Boolean, default: () => isMac }\n },\n setup(__props) {\n const labels = computed(() => ({\n ArrowUp: \"↑\",\n ArrowDown: \"↓\",\n ArrowLeft: \"←\",\n ArrowRight: \"→\",\n Control: !__props.mac ? t(\"Ctrl\") : \"⌘\",\n Alt: !__props.mac ? t(\"Alt\") : \"⌥\",\n Shift: !__props.mac ? t(\"Shift\") : \"⇧\",\n Enter: !__props.mac ? t(\"Enter\") : \"⏎\",\n Tab: !__props.mac ? t(\"Tab\") : \"⇥\",\n Delete: !__props.mac ? t(\"Delete\") : \"⌫\",\n Escape: !__props.mac ? t(\"Escape\") : \"⎋\",\n Space: t(\"Space\")\n // TRANSLATORS: Space key on keyboard\n }));\n const label = computed(() => __props.symbol && labels.value[__props.symbol] || __props.symbol);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"kbd\", {\n class: normalizeClass(_ctx.$style.kbd)\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(label.value), 1)\n ])\n ], 2);\n };\n }\n});\nconst kbd = \"_kbd_3V7rw\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_FHHYV\",\n kbd\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcKbd = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcKbd as N\n};\n//# sourceMappingURL=NcKbd-DE1emmb_.mjs.map\n","import '../assets/NcHotkeyList-Braxeyah.css';\nimport { defineComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, unref, renderSlot } from \"vue\";\nimport { r as register, p as t31, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHotkeyList\",\n props: {\n label: { default: () => void 0 }\n },\n setup(__props) {\n const labelId = `NcHotkeyList_${createElementId()}`;\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(_ctx.$style.hotkeyList)\n }, [\n createElementVNode(\"div\", {\n id: labelId,\n class: normalizeClass([_ctx.$style.hotkeyList__heading, { \"hidden-visually\": !_ctx.label }])\n }, toDisplayString(_ctx.label || unref(t)(\"Keyboard shortcuts\")), 3),\n createElementVNode(\"ul\", { \"aria-labelledby\": labelId }, [\n renderSlot(_ctx.$slots, \"default\")\n ])\n ], 2);\n };\n }\n});\nconst hotkeyList = \"_hotkeyList_xNXCh\";\nconst hotkeyList__heading = \"_hotkeyList__heading_j6G86\";\nconst style0 = {\n hotkeyList,\n hotkeyList__heading\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcHotkeyList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcHotkeyList as N\n};\n//# sourceMappingURL=NcHotkeyList-CHLWkWfY.mjs.map\n","import '../assets/NcListItemIcon-DJRcmlo1.css';\nimport \"escape-html\";\nimport \"striptags\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeStyle, normalizeClass, createVNode, mergeProps, createElementVNode, createBlock, toDisplayString, createCommentVNode, renderSlot } from \"vue\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"@nextcloud/router\";\nimport \"../functions/isDarkTheme/index.mjs\";\nimport \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_45238efd_lang-D6LzDiYf.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { u as userStatus, N as NcAvatar } from \"./NcAvatar-ruClKRzS.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nconst margin = 8;\nconst defaultSize = 32;\nconst _sfc_main = {\n name: \"NcListItemIcon\",\n components: {\n NcAvatar,\n NcHighlight: _sfc_main$1,\n NcIconSvgWrapper\n },\n mixins: [\n userStatus\n ],\n props: {\n /**\n * Default first line text\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Secondary optional line\n * Only visible on size of 32 and above\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Icon class to be displayed at the end of the component\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * SVG icon to be displayed at the end of the component\n */\n iconSvg: {\n type: String,\n default: \"\"\n },\n /**\n * Descriptive name for the icon\n */\n iconName: {\n type: String,\n default: \"\"\n },\n /**\n * Search within the highlight of name/subname\n */\n search: {\n type: String,\n default: \"\"\n },\n /**\n * Set a size in px that will define the avatar height/width\n * and therefore, the height of the component\n */\n avatarSize: {\n type: Number,\n default: defaultSize\n },\n /**\n * Disable the margins of this component.\n * Useful for integration in `NcSelect` for example\n */\n noMargin: {\n type: Boolean,\n default: false\n },\n /**\n * See the [Avatar](#Avatar) displayName prop\n * Fallback to name\n */\n displayName: {\n type: String,\n default: null\n },\n /**\n * See the [Avatar](#Avatar) isNoUser prop\n * Enable/disable the UserStatus fetching\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Unique list item ID\n */\n id: {\n type: String,\n default: null\n }\n },\n setup() {\n return {\n margin,\n defaultSize\n };\n },\n computed: {\n hasIcon() {\n return this.icon !== \"\";\n },\n hasIconSvg() {\n return this.iconSvg !== \"\";\n },\n isValidSubname() {\n return this.subname?.trim?.() !== \"\";\n },\n isSizeBigEnough() {\n return this.avatarSize >= 26;\n },\n cssVars() {\n const margin2 = this.noMargin ? 0 : this.margin;\n return {\n \"--height\": this.avatarSize + 2 * margin2 + \"px\",\n \"--margin\": this.margin + \"px\"\n };\n },\n /**\n * Separates the search property into two parts, the first one is the search part on the name, the second on the subname.\n *\n * @return {[string, string]}\n */\n searchParts() {\n const EMAIL_NOTATION = /^([^<]*)<([^>]+)>?$/;\n const match = this.search.match(EMAIL_NOTATION);\n if (this.isNoUser || !match) {\n return [this.search, this.search];\n }\n return [match[1].trim(), match[2]];\n }\n },\n beforeMount() {\n if (!this.isNoUser && !this.subname) {\n this.fetchUserStatus(this.user);\n }\n }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = { class: \"option__details\" };\nconst _hoisted_3 = { key: 1 };\nconst _hoisted_4 = [\"aria-label\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcHighlight = resolveComponent(\"NcHighlight\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return openBlock(), createElementBlock(\"span\", {\n id: $props.id,\n class: normalizeClass([\"option\", { \"option--compact\": $props.avatarSize < $setup.defaultSize }]),\n style: normalizeStyle($options.cssVars)\n }, [\n createVNode(_component_NcAvatar, mergeProps(_ctx.$attrs, {\n disableMenu: \"\",\n disableTooltip: \"\",\n displayName: $props.displayName || $props.name,\n isNoUser: $props.isNoUser,\n size: $props.avatarSize,\n class: \"option__avatar\"\n }), null, 16, [\"displayName\", \"isNoUser\", \"size\"]),\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcHighlight, {\n class: \"option__lineone\",\n text: $props.name,\n search: $options.searchParts[0]\n }, null, 8, [\"text\", \"search\"]),\n $options.isValidSubname && $options.isSizeBigEnough ? (openBlock(), createBlock(_component_NcHighlight, {\n key: 0,\n class: \"option__linetwo\",\n text: $props.subname,\n search: $options.searchParts[1]\n }, null, 8, [\"text\", \"search\"])) : _ctx.hasStatus ? (openBlock(), createElementBlock(\"span\", _hoisted_3, [\n createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.icon), 1),\n createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.message), 1)\n ])) : createCommentVNode(\"\", true)\n ]),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n $options.hasIconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 0,\n class: \"option__icon\",\n svg: $props.iconSvg,\n name: $props.iconName\n }, null, 8, [\"svg\", \"name\"])) : $options.hasIcon ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass([\"icon option__icon\", $props.icon]),\n \"aria-label\": $props.iconName\n }, null, 10, _hoisted_4)) : createCommentVNode(\"\", true)\n ], true)\n ], 14, _hoisted_1);\n}\nconst NcListItemIcon = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0ee94269\"]]);\nexport {\n NcListItemIcon as N\n};\n//# sourceMappingURL=NcListItemIcon-DJJR4RtI.mjs.map\n","if (!Array.prototype.find) {\n Array.prototype.find = function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined')\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function')\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value\n }\n }\n return undefined\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n function CustomEvent$1(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt\n }\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent$1.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n static keys() {\n return [\n {\n key: 9,\n value: \"TAB\"\n },\n {\n key: 8,\n value: \"DELETE\"\n },\n {\n key: 13,\n value: \"ENTER\"\n },\n {\n key: 27,\n value: \"ESCAPE\"\n },\n {\n key: 32,\n value: \"SPACE\"\n },\n {\n key: 38,\n value: \"UP\"\n },\n {\n key: 40,\n value: \"DOWN\"\n }\n ];\n }\n\n bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n\n element.addEventListener(\"keydown\", element.boundKeydown, false);\n element.addEventListener(\"keyup\", element.boundKeyup, false);\n element.addEventListener(\"input\", element.boundInput, false);\n }\n\n unbind(element) {\n element.removeEventListener(\"keydown\", element.boundKeydown, false);\n element.removeEventListener(\"keyup\", element.boundKeyup, false);\n element.removeEventListener(\"input\", element.boundInput, false);\n\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n\n keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n let element = this;\n instance.commandEvent = false;\n\n TributeEvents.keys().forEach(o => {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n\n input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n\n click(instance, event) {\n let tribute = instance.tribute;\n if (tribute.menu && tribute.menu.contains(event.target)) {\n let li = event.target;\n event.preventDefault();\n event.stopPropagation();\n while (li.nodeName.toLowerCase() !== \"li\") {\n li = li.parentNode;\n if (!li || li === tribute.menu) {\n throw new Error(\"cannot find the
  • container for the click\");\n }\n }\n tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n tribute.hideMenu();\n\n // TODO: should fire with externalTrigger and target is outside of menu\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(() => tribute.hideMenu());\n }\n }\n\n keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n instance.updateSelection(this);\n\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, \"\");\n } else {\n let keyCode = instance.getKeyCode(instance, this, event);\n\n if (isNaN(keyCode) || !keyCode) return;\n\n let trigger = instance.tribute.triggers().find(trigger => {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== \"undefined\") {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if (\n instance.tribute.current.mentionText.length <\n instance.tribute.current.collection.menuShowMinLength\n ) {\n return;\n }\n\n if (\n ((instance.tribute.current.trigger ||\n instance.tribute.autocompleteMode) &&\n instance.commandEvent === false) ||\n (instance.tribute.isActive && event.keyCode === 8)\n ) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n\n shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n let eventKeyPressed = false;\n TributeEvents.keys().forEach(o => {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n\n return !eventKeyPressed;\n }\n\n return false;\n }\n\n getKeyCode(instance, el, event) {\n let tribute = instance.tribute;\n let info = tribute.range.getTriggerInfo(\n false,\n tribute.hasTrailingSpace,\n true,\n tribute.allowSpaces,\n tribute.autocompleteMode\n );\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n\n updateSelection(el) {\n this.tribute.current.element = el;\n let info = this.tribute.range.getTriggerInfo(\n false,\n this.tribute.hasTrailingSpace,\n true,\n this.tribute.allowSpaces,\n this.tribute.autocompleteMode\n );\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n\n callbacks() {\n return {\n triggerChar: (e, el, trigger) => {\n let tribute = this.tribute;\n tribute.current.trigger = trigger;\n\n let collectionItem = tribute.collection.find(item => {\n return item.trigger === trigger;\n });\n\n tribute.current.collection = collectionItem;\n\n if (\n tribute.current.mentionText.length >=\n tribute.current.collection.menuShowMinLength &&\n tribute.inputEvent\n ) {\n tribute.showMenuFor(el, true);\n }\n },\n enter: (e, el) => {\n // choose selection\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: (e, el) => {\n if (this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n this.tribute.isActive = false;\n this.tribute.hideMenu();\n }\n },\n tab: (e, el) => {\n // choose first match\n this.callbacks().enter(e, el);\n },\n space: (e, el) => {\n if (this.tribute.isActive) {\n if (this.tribute.spaceSelectsMatch) {\n this.callbacks().enter(e, el);\n } else if (!this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.hideMenu();\n this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: (e, el) => {\n // navigate up ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length,\n selected = this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n this.tribute.menuSelected--;\n this.setActiveLi();\n } else if (selected === 0) {\n this.tribute.menuSelected = count - 1;\n this.setActiveLi();\n this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n }\n }\n },\n down: (e, el) => {\n // navigate down ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length - 1,\n selected = this.tribute.menuSelected;\n\n if (count > selected) {\n this.tribute.menuSelected++;\n this.setActiveLi();\n } else if (count === selected) {\n this.tribute.menuSelected = 0;\n this.setActiveLi();\n this.tribute.menu.scrollTop = 0;\n }\n }\n },\n delete: (e, el) => {\n if (\n this.tribute.isActive &&\n this.tribute.current.mentionText.length < 1\n ) {\n this.tribute.hideMenu();\n } else if (this.tribute.isActive) {\n this.tribute.showMenuFor(el);\n }\n }\n };\n }\n\n setActiveLi(index) {\n let lis = this.tribute.menu.querySelectorAll(\"li\"),\n length = lis.length >>> 0;\n\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (let i = 0; i < length; i++) {\n let li = lis[i];\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n\n let liClientRect = li.getBoundingClientRect();\n let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n let scrollDistance = menuClientRect.top - liClientRect.top;\n this.tribute.menu.scrollTop -= scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n\n getFullHeight(elem, includeMargin) {\n let height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n let style = elem.currentStyle || window.getComputedStyle(elem);\n return (\n height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n );\n }\n\n return height;\n }\n}\n\nclass TributeMenuEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n bind(menu) {\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.showMenuFor(this.tribute.current.element, false);\n }\n },\n 300,\n false\n );\n this.windowResizeEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.range.positionMenuAtCaret(true);\n }\n },\n 300,\n false\n );\n\n // fixes IE11 issues with mousedown\n this.tribute.range\n .getDocument()\n .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .addEventListener(\"mousedown\", this.menuClickEvent, false);\n window.addEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n unbind(menu) {\n this.tribute.range\n .getDocument()\n .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n debounce(func, wait, immediate) {\n var timeout;\n return () => {\n var context = this,\n args = arguments;\n var later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n}\n\n// Thanks to https://github.com/jeff-collins/ment.io\n\nclass TributeRange {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.range = this;\n }\n\n getDocument() {\n let iframe;\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe;\n }\n\n if (!iframe) {\n return document\n }\n\n return iframe.contentWindow.document\n }\n\n positionMenuAtCaret(scrollTo) {\n let context = this.tribute.current,\n coordinates;\n\n let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (typeof info !== 'undefined') {\n\n if(!this.tribute.positionMenu){\n this.tribute.menu.style.cssText = `display: block;`;\n return\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n info.mentionPosition);\n }\n else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n }\n\n this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n left: ${coordinates.left}px;\n right: ${coordinates.right}px;\n bottom: ${coordinates.bottom}px;\n position: absolute;\n display: block;`;\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto';\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto';\n }\n\n if (scrollTo) this.scrollIntoView();\n\n window.setTimeout(() => {\n let menuDimensions = {\n width: this.tribute.menu.offsetWidth,\n height: this.tribute.menu.offsetHeight\n };\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n this.tribute.menu.style.cssText = 'display: none';\n this.positionMenuAtCaret(scrollTo);\n }\n }, 0);\n\n } else {\n this.tribute.menu.style.cssText = 'display: none';\n }\n }\n\n get menuContainerIsBody() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n\n\n selectElement(targetElement, path, offset) {\n let range;\n let elem = targetElement;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]];\n if (elem === undefined) {\n return\n }\n while (elem.length < offset) {\n offset -= elem.length;\n elem = elem.nextSibling;\n }\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling;\n }\n }\n }\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(elem, offset);\n range.setEnd(elem, offset);\n range.collapse(true);\n\n try {\n sel.removeAllRanges();\n } catch (error) {}\n\n sel.addRange(range);\n targetElement.focus();\n }\n\n replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info !== undefined) {\n let context = this.tribute.current;\n let replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent,\n }\n });\n\n if (!this.isContentEditable(context.element)) {\n let myField = this.tribute.current.element;\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : ' ';\n text += textSuffix;\n let startPos = info.mentionPosition;\n let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length - 1;\n }\n myField.value = myField.value.substring(0, startPos) + text +\n myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + text.length;\n myField.selectionEnd = startPos + text.length;\n } else {\n // add a space to the end of the pasted text\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : '\\xA0';\n text += textSuffix;\n let endPos = info.mentionPosition + info.mentionText.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length;\n }\n this.pasteHtml(text, info.mentionPosition, endPos);\n }\n\n context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n context.element.dispatchEvent(replaceEvent);\n }\n }\n\n pasteHtml(html, startPos, endPos) {\n let range, sel;\n sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, startPos);\n range.setEnd(sel.anchorNode, endPos);\n range.deleteContents();\n\n let el = this.getDocument().createElement('div');\n el.innerHTML = html;\n let frag = this.getDocument().createDocumentFragment(),\n node, lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n\n getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection()\n }\n\n return window.getSelection()\n }\n\n getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n let node = element.parentNode.childNodes[i];\n\n if (node === element) {\n return i\n }\n }\n }\n\n getContentEditableSelectedPath(ctx) {\n let sel = this.getWindowSelection();\n let selected = sel.anchorNode;\n let path = [];\n let offset;\n\n if (selected != null) {\n let i;\n let ce = selected.contentEditable;\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected);\n path.push(i);\n selected = selected.parentNode;\n if (selected !== null) {\n ce = selected.contentEditable;\n }\n }\n path.reverse();\n\n // getRangeAt may not exist, need alternative\n offset = sel.getRangeAt(0).startOffset;\n\n return {\n selected: selected,\n path: path,\n offset: offset\n }\n }\n }\n\n getTextPrecedingCurrentSelection() {\n let context = this.tribute.current,\n text = '';\n\n if (!this.isContentEditable(context.element)) {\n let textComponent = this.tribute.current.element;\n if (textComponent) {\n let startPos = textComponent.selectionStart;\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos);\n }\n }\n\n } else {\n let selectedElem = this.getWindowSelection().anchorNode;\n\n if (selectedElem != null) {\n let workingNodeContent = selectedElem.textContent;\n let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n\n return text\n }\n\n getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n let wordsArray = text.split(/\\s+/);\n let worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim()\n }\n\n getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n let ctx = this.tribute.current;\n let selected, path, offset;\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element;\n } else {\n let selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n if (selectionInfo) {\n selected = selectionInfo.selected;\n path = selectionInfo.path;\n offset = selectionInfo.offset;\n }\n }\n\n let effectiveRange = this.getTextPrecedingCurrentSelection();\n let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n }\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n let mostRecentTriggerCharPos = -1;\n let triggerChar;\n\n this.tribute.collection.forEach(config => {\n let c = config.trigger;\n let idx = config.requireLeadingSpace ?\n this.lastIndexWithLeadingSpace(effectiveRange, c) :\n effectiveRange.lastIndexOf(c);\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n triggerChar = c;\n requireLeadingSpace = config.requireLeadingSpace;\n }\n });\n\n if (mostRecentTriggerCharPos >= 0 &&\n (\n mostRecentTriggerCharPos === 0 ||\n !requireLeadingSpace ||\n /[\\xA0\\s]/g.test(\n effectiveRange.substring(\n mostRecentTriggerCharPos - 1,\n mostRecentTriggerCharPos)\n )\n )\n ) {\n let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n effectiveRange.length);\n\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length);\n let firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n let leadingSpace = currentTriggerSnippet.length > 0 &&\n (\n firstSnippetChar === ' ' ||\n firstSnippetChar === '\\xA0'\n );\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim();\n }\n\n let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n }\n }\n }\n }\n }\n\n lastIndexWithLeadingSpace (str, trigger) {\n let reversedStr = str.split('').reverse().join('');\n let index = -1;\n\n for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n let firstChar = cidx === str.length - 1;\n let leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n\n let match = true;\n for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n match = false;\n break\n }\n }\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx;\n break\n }\n }\n\n return index\n }\n\n isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n }\n\n isMenuOffScreen(coordinates, menuDimensions) {\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n }\n }\n\n getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n let dimensions = {\n width: null,\n height: null\n };\n\n this.tribute.menu.style.cssText = `top: 0px;\n left: 0px;\n position: fixed;\n display: block;\n visibility; hidden;`;\n dimensions.width = this.tribute.menu.offsetWidth;\n dimensions.height = this.tribute.menu.offsetHeight;\n\n this.tribute.menu.style.cssText = `display: none;`;\n\n return dimensions\n }\n\n getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n 'overflowY', 'borderTopWidth', 'borderRightWidth',\n 'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n 'textAlign', 'textTransform', 'textIndent',\n 'textDecoration', 'letterSpacing', 'wordSpacing'\n ];\n\n let isFirefox = (window.mozInnerScreenX !== null);\n\n let div = this.getDocument().createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n this.getDocument().body.appendChild(div);\n\n let style = div.style;\n let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n\n style.whiteSpace = 'pre-wrap';\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word';\n }\n\n // position off-screen\n style.position = 'absolute';\n style.visibility = 'hidden';\n\n // transfer the element's properties to the div\n properties.forEach(prop => {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n style.width = `${(parseInt(computed.width) - 2)}px`;\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden';\n }\n\n div.textContent = element.value.substring(0, position);\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ');\n }\n\n let span = this.getDocument().createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n\n let rect = element.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let top = 0;\n let left = 0;\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n let coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n };\n\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left;\n coordinates.left = 'auto';\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n coordinates.top = 'auto';\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n this.getDocument().body.removeChild(div);\n return coordinates\n }\n\n getContentEditableCaretPosition(selectedNodePosition) {\n let range;\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, selectedNodePosition);\n range.setEnd(sel.anchorNode, selectedNodePosition);\n\n range.collapse(false);\n\n let rect = range.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let left = rect.left;\n let top = rect.top;\n\n let coordinates = {\n left: left + windowLeft,\n top: top + rect.height + windowTop\n };\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto';\n coordinates.right = windowWidth - rect.left - windowLeft;\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.top = 'auto';\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n if (!this.menuContainerIsBody) {\n coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left;\n coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top;\n }\n\n return coordinates\n }\n\n scrollIntoView(elem) {\n let reasonableBuffer = 20,\n clientRect;\n let maxScrollDisplacement = 100;\n let e = this.menu;\n\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect();\n\n if (clientRect.height === 0) {\n e = e.childNodes[0];\n if (e === undefined || !e.getBoundingClientRect) {\n return\n }\n }\n }\n\n let elemTop = clientRect.top;\n let elemBottom = elemTop + clientRect.height;\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n } else if (elemBottom > window.innerHeight) {\n let maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement;\n }\n\n let targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n if (targetY > maxY) {\n targetY = maxY;\n }\n\n window.scrollTo(0, targetY);\n }\n }\n}\n\n// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.search = this;\n }\n\n simpleFilter(pattern, array) {\n return array.filter(string => {\n return this.test(pattern, string)\n })\n }\n\n test(pattern, string) {\n return this.match(pattern, string) !== null\n }\n\n match(pattern, string, opts) {\n opts = opts || {};\n let len = string.length,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase();\n\n if (opts.skip) {\n return {rendered: string, score: 0}\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n let patternCache = this.traverse(compareString, pattern, 0, 0, []);\n if (!patternCache) {\n return null\n }\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n }\n }\n\n traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n // if the pattern search at end\n if (pattern.length === patternIndex) {\n\n // calculate score and copy the cache containing the indices where it's found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n }\n }\n\n // if string at end or remaining pattern > remaining string\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined\n }\n\n let c = pattern[patternIndex];\n let index = string.indexOf(c, stringIndex);\n let best, temp;\n\n while (index > -1) {\n patternCache.push(index);\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n patternCache.pop();\n\n // if downstream traversal failed, return best answer so far\n if (!temp) {\n return best\n }\n\n if (!best || best.score < temp.score) {\n best = temp;\n }\n\n index = string.indexOf(c, index + 1);\n }\n\n return best\n }\n\n calculateScore(patternCache) {\n let score = 0;\n let temp = 1;\n\n patternCache.forEach((index, i) => {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1;\n }\n else {\n temp = 1;\n }\n }\n\n score += temp;\n });\n\n return score\n }\n\n render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0]);\n\n indices.forEach((index, i) => {\n rendered += pre + string[index] + post +\n string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length);\n });\n\n return rendered\n }\n\n filter(pattern, arr, opts) {\n opts = opts || {};\n return arr\n .reduce((prev, element, idx, arr) => {\n let str = element;\n\n if (opts.extract) {\n str = opts.extract(element);\n\n if (!str) { // take care of undefineds / nulls / etc.\n str = '';\n }\n }\n\n let rendered = this.match(pattern, str, opts);\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n };\n }\n\n return prev\n }, [])\n\n .sort((a, b) => {\n let compare = b.score - a.score;\n if (compare) return compare\n return a.index - b.index\n })\n }\n}\n\nclass Tribute {\n constructor({\n values = null,\n iframe = null,\n selectClass = \"highlight\",\n containerClass = \"tribute-container\",\n itemClass = \"\",\n trigger = \"@\",\n autocompleteMode = false,\n selectTemplate = null,\n menuItemTemplate = null,\n lookup = \"key\",\n fillAttr = \"value\",\n collection = null,\n menuContainer = null,\n noMatchTemplate = null,\n requireLeadingSpace = true,\n allowSpaces = false,\n replaceTextSuffix = null,\n positionMenu = true,\n spaceSelectsMatch = false,\n searchOpts = {},\n menuItemLimit = null,\n menuShowMinLength = 0\n }) {\n this.autocompleteMode = autocompleteMode;\n this.menuSelected = 0;\n this.current = {};\n this.inputEvent = false;\n this.isActive = false;\n this.menuContainer = menuContainer;\n this.allowSpaces = allowSpaces;\n this.replaceTextSuffix = replaceTextSuffix;\n this.positionMenu = positionMenu;\n this.hasTrailingSpace = false;\n this.spaceSelectsMatch = spaceSelectsMatch;\n\n if (this.autocompleteMode) {\n trigger = \"\";\n allowSpaces = false;\n }\n\n if (values) {\n this.collection = [\n {\n // symbol that starts the lookup\n trigger: trigger,\n\n // is it wrapped in an iframe\n iframe: iframe,\n\n // class applied to selected item\n selectClass: selectClass,\n\n // class applied to the Container\n containerClass: containerClass,\n\n // class applied to each item\n itemClass: itemClass,\n\n // function called on select that retuns the content to insert\n selectTemplate: (\n selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n\n // function called that returns content for an item\n menuItemTemplate: (\n menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
  • No Match Found!
  • \";\n }.bind(this)\n );\n })(noMatchTemplate),\n\n // column to search against in the object\n lookup: lookup,\n\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n\n // array of objects or a function returning an array of objects\n values: values,\n\n requireLeadingSpace: requireLeadingSpace,\n\n searchOpts: searchOpts,\n\n menuItemLimit: menuItemLimit,\n\n menuShowMinLength: menuShowMinLength\n }\n ];\n } else if (collection) {\n if (this.autocompleteMode)\n console.warn(\n \"Tribute in autocomplete mode does not work for collections\"\n );\n this.collection = collection.map(item => {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n containerClass: item.containerClass || containerClass,\n itemClass: item.itemClass || itemClass,\n selectTemplate: (\n item.selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n menuItemTemplate: (\n item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
  • No Match Found!
  • \";\n }.bind(this)\n );\n })(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit,\n menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n };\n });\n } else {\n throw new Error(\"[Tribute] No collection specified.\");\n }\n\n new TributeRange(this);\n new TributeEvents(this);\n new TributeMenuEvents(this);\n new TributeSearch(this);\n }\n\n get isActive() {\n return this._isActive;\n }\n\n set isActive(val) {\n if (this._isActive != val) {\n this._isActive = val;\n if (this.current.element) {\n let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n this.current.element.dispatchEvent(noMatchEvent);\n }\n }\n }\n\n static defaultSelectTemplate(item) {\n if (typeof item === \"undefined\")\n return `${this.current.collection.trigger}${this.current.mentionText}`;\n if (this.range.isContentEditable(this.current.element)) {\n return (\n '' +\n (this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]) +\n \"\"\n );\n }\n\n return (\n this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]\n );\n }\n\n static defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n\n static inputTypes() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n\n triggers() {\n return this.collection.map(config => {\n return config.trigger;\n });\n }\n\n attach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n\n _attach(el) {\n if (el.hasAttribute(\"data-tribute\")) {\n console.warn(\"Tribute was already bound to \" + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute(\"data-tribute\", true);\n }\n\n ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n }\n }\n }\n\n createMenu(containerClass) {\n let wrapper = this.range.getDocument().createElement(\"div\"),\n ul = this.range.getDocument().createElement(\"ul\");\n wrapper.className = containerClass;\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n\n showMenuFor(element, scrollTo) {\n // Only proceed if menu isn't already shown for the current element & mentionText\n if (\n this.isActive &&\n this.current.element === element &&\n this.current.mentionText === this.currentMentionTextSnapshot\n ) {\n return;\n }\n this.currentMentionTextSnapshot = this.current.mentionText;\n\n // create the menu if it doesn't exist.\n if (!this.menu) {\n this.menu = this.createMenu(this.current.collection.containerClass);\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = \"\";\n }\n\n const processValues = values => {\n // Tribute may not be active any more by the time the value callback returns\n if (!this.isActive) {\n return;\n }\n\n let items = this.search.filter(this.current.mentionText, values, {\n pre: this.current.collection.searchOpts.pre || \"\",\n post: this.current.collection.searchOpts.post || \"\",\n skip: this.current.collection.searchOpts.skip,\n extract: el => {\n if (typeof this.current.collection.lookup === \"string\") {\n return el[this.current.collection.lookup];\n } else if (typeof this.current.collection.lookup === \"function\") {\n return this.current.collection.lookup(el, this.current.mentionText);\n } else {\n throw new Error(\n \"Invalid lookup attribute, lookup must be string or function.\"\n );\n }\n }\n });\n\n if (this.current.collection.menuItemLimit) {\n items = items.slice(0, this.current.collection.menuItemLimit);\n }\n\n this.current.filteredItems = items;\n\n let ul = this.menu.querySelector(\"ul\");\n\n this.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n detail: this.menu\n });\n this.current.element.dispatchEvent(noMatchEvent);\n if (\n (typeof this.current.collection.noMatchTemplate === \"function\" &&\n !this.current.collection.noMatchTemplate()) ||\n !this.current.collection.noMatchTemplate\n ) {\n this.hideMenu();\n } else {\n typeof this.current.collection.noMatchTemplate === \"function\"\n ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n : (ul.innerHTML = this.current.collection.noMatchTemplate);\n }\n\n return;\n }\n\n ul.innerHTML = \"\";\n let fragment = this.range.getDocument().createDocumentFragment();\n\n items.forEach((item, index) => {\n let li = this.range.getDocument().createElement(\"li\");\n li.setAttribute(\"data-index\", index);\n li.className = this.current.collection.itemClass;\n li.addEventListener(\"mousemove\", e => {\n let [li, index] = this._findLiTarget(e.target);\n if (e.movementY !== 0) {\n this.events.setActiveLi(index);\n }\n });\n if (this.menuSelected === index) {\n li.classList.add(this.current.collection.selectClass);\n }\n li.innerHTML = this.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === \"function\") {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n\n _findLiTarget(el) {\n if (!el) return [];\n const index = el.getAttribute(\"data-index\");\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n\n showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n\n if (element.isContentEditable)\n this.insertTextAtCursor(this.current.collection.trigger);\n else this.insertAtCaret(element, this.current.collection.trigger);\n\n this.showMenuFor(element);\n }\n\n // TODO: make sure this works for inputs/textareas\n placeCaretAtEnd(el) {\n el.focus();\n if (\n typeof window.getSelection != \"undefined\" &&\n typeof document.createRange != \"undefined\"\n ) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }\n\n // for contenteditable\n insertTextAtCursor(text) {\n var sel, range;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n // for regular inputs\n insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(\n textarea.selectionEnd,\n textarea.value.length\n );\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n\n hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = \"display: none;\";\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n\n selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== \"number\" || isNaN(index)) return;\n let item = this.current.filteredItems[index];\n let content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n\n replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n\n _append(collection, newValues, replace) {\n if (typeof collection.values === \"function\") {\n throw new Error(\"Unable to append to values, as it is a function.\");\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n\n append(collectionIndex, newValues, replace) {\n let index = parseInt(collectionIndex);\n if (typeof index !== \"number\")\n throw new Error(\"please provide an index for the collection to update.\");\n\n let collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n\n appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error(\n \"No active state. Please use append instead and pass an index.\"\n );\n }\n }\n\n detach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n\n _detach(el) {\n this.events.unbind(el);\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(() => {\n el.removeAttribute(\"data-tribute\");\n this.isActive = false;\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","import '../assets/NcProgressBar-D1DYRrCN.css';\nimport { defineComponent, useCssVars, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"aria-valuenow\"];\nconst _hoisted_2 = [\"height\", \"width\"];\nconst _hoisted_3 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_4 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_5 = {\n key: 1,\n class: \"progress-bar-container\"\n};\nconst _hoisted_6 = [\"value\"];\nconst _hoisted_7 = {\n key: 0,\n class: \"progress-bar__value\"\n};\nconst gridBaseline = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\nconst clickableAreaSmall = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--clickable-area-small\"));\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcProgressBar\",\n props: {\n value: { default: 0 },\n size: { default: \"small\" },\n error: { type: Boolean },\n type: { default: \"linear\" },\n color: { default: \"var(--color-primary-element)\" },\n showValue: { type: Boolean, default: false }\n },\n setup(__props) {\n useCssVars((_ctx) => ({\n \"3a86fec2\": _ctx.color,\n \"57442460\": heightPx.value\n }));\n const props = __props;\n const normalizedProgress = computed(() => Math.max(0, Math.min(100, props.value)) / 100);\n const height = computed(() => {\n if (typeof props.size === \"number\") {\n return Math.round(props.size);\n }\n if (props.type === \"circular\") {\n if (props.size === \"medium\") {\n return clickableArea;\n } else {\n return clickableAreaSmall;\n }\n }\n if (props.size === \"medium\") {\n return 1.5 * gridBaseline;\n }\n return gridBaseline;\n });\n const heightPx = computed(() => `${height.value}px`);\n const strokeWidth = computed(() => Math.max(gridBaseline, height.value / clickableArea * gridBaseline));\n const circleCenterPosition = computed(() => height.value / 2);\n const circleRadius = computed(() => height.value / 2 - strokeWidth.value);\n const circumference = computed(() => circleRadius.value * 2 * Math.PI);\n return (_ctx, _cache) => {\n return _ctx.type === \"circular\" ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n role: \"progressbar\",\n \"aria-valuenow\": _ctx.value,\n class: normalizeClass([{ \"progress-bar--error\": _ctx.error }, \"progress-bar progress-bar--circular\"])\n }, [\n (openBlock(), createElementBlock(\"svg\", {\n height: height.value,\n width: height.value\n }, [\n createElementVNode(\"circle\", {\n stroke: \"currentColor\",\n fill: \"transparent\",\n \"stroke-dasharray\": `${normalizedProgress.value * circumference.value} ${(1 - normalizedProgress.value) * circumference.value}`,\n \"stroke-dashoffset\": 0.25 * circumference.value,\n \"stroke-width\": strokeWidth.value,\n r: circleRadius.value,\n cx: circleCenterPosition.value,\n cy: circleCenterPosition.value\n }, null, 8, _hoisted_3),\n createElementVNode(\"circle\", {\n stroke: \"var(--color-background-darker)\",\n fill: \"transparent\",\n \"stroke-dasharray\": `${(1 - normalizedProgress.value) * circumference.value} ${normalizedProgress.value * circumference.value}`,\n \"stroke-dashoffset\": (0.25 - normalizedProgress.value) * circumference.value,\n \"stroke-width\": strokeWidth.value,\n r: circleRadius.value,\n cx: circleCenterPosition.value,\n cy: circleCenterPosition.value\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_2))\n ], 10, _hoisted_1)) : (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n createElementVNode(\"progress\", {\n class: normalizeClass([\"progress-bar progress-bar--linear vue\", { \"progress-bar--error\": _ctx.error }]),\n value: _ctx.value,\n max: \"100\"\n }, null, 10, _hoisted_6),\n _ctx.showValue ? (openBlock(), createElementBlock(\"span\", _hoisted_7, toDisplayString(_ctx.value) + \"%\", 1)) : createCommentVNode(\"\", true)\n ]));\n };\n }\n});\nconst NcProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-353fa414\"]]);\nexport {\n NcProgressBar as N\n};\n//# sourceMappingURL=NcProgressBar-JyXXoHLT.mjs.map\n","import '../assets/NcRelatedResourcesPanel-D1efpH8E.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, S as t38, a as t, T as t42, U as t9 } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { g as getRoute } from \"./autolink-U5pBzLgI.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, withCtx, createTextVNode, toDisplayString, createElementVNode, mergeProps, createCommentVNode, Fragment, renderList, createBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nregister(t38);\nconst _sfc_main$4 = {\n name: \"NcResource\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n icon: {\n type: String,\n required: true\n },\n name: {\n type: String,\n required: true\n },\n url: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n labelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name })\n };\n },\n computed: {\n route() {\n return getRoute(this.$router, this.url);\n }\n },\n methods: {\n t\n }\n};\nconst _hoisted_1$4 = { class: \"resource\" };\nconst _hoisted_2$4 = { class: \"resource__icon\" };\nconst _hoisted_3$3 = [\"src\"];\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n return openBlock(), createElementBlock(\"li\", _hoisted_1$4, [\n createVNode(_component_NcButton, {\n class: \"resource__button\",\n \"aria-label\": $data.labelTranslated,\n to: $options.route,\n href: $options.route ? null : $props.url,\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createElementVNode(\"div\", _hoisted_2$4, [\n createElementVNode(\"img\", { src: $props.icon }, null, 8, _hoisted_3$3)\n ])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString($props.name), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\", \"to\", \"href\"])\n ]);\n}\nconst NcResource = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4], [\"__scopeId\", \"data-v-8db55138\"]]);\nconst _sfc_main$3 = {\n name: \"AccountGroupIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon account-group-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$3);\n}\nconst AccountGroup = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n name: \"OpenInNewIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon open-in-new-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst OpenInNew = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t42);\nconst teamResourceProviders = getCapabilities()?.circles?.teamResourceProviders ?? [];\nconst _sfc_main$1 = {\n name: \"NcTeamResources\",\n components: {\n AccountGroup,\n ChevronDown,\n ChevronUp,\n OpenInNew,\n NcButton,\n NcIconSvgWrapper\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n providerId: {\n type: String,\n default: null\n },\n itemId: {\n type: [String, Number],\n default: null\n }\n },\n data() {\n return {\n appEnabled: OC?.appswebroots?.circles !== void 0 && (OC.config.version.split(\".\")[0] ?? 0) >= 29,\n loading: false,\n teamResources: null,\n teamOpen: []\n };\n },\n computed: {\n isVisible() {\n return !this.loading && this.teamResources?.length > 0;\n },\n teamProviders() {\n return (teamId) => {\n const team = this.teamResources.find((t2) => t2.teamId === teamId);\n return team.resources?.reduce((acc, resource) => {\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n if (!acc[resource.provider.id]) {\n acc[resource.provider.id] = resource.provider;\n acc[resource.provider.id].resources = [];\n }\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n acc[resource.provider.id].resources.push(resource);\n return acc;\n }, {});\n };\n },\n open() {\n return (teamId) => {\n return this.teamOpen.indexOf(teamId) !== -1;\n };\n }\n },\n watch: {\n providerId() {\n this.fetchTeamResources();\n },\n itemId() {\n this.fetchTeamResources();\n }\n },\n created() {\n this.fetchTeamResources();\n },\n methods: {\n t,\n async fetchTeamResources() {\n if (!teamResourceProviders.includes(this.providerId)) {\n return;\n }\n try {\n this.loading = true;\n const response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`));\n this.teamResources = response.data.ocs.data.teams;\n this.teamOpen = [this.teamResources[0]?.teamId];\n } catch (error) {\n this.teamResources = null;\n logger.error(\"[NcTeamResources] Failed to fetch resources\", { error });\n } finally {\n this.loading = false;\n }\n },\n toggleOpen(teamId, open) {\n if (open) {\n this.teamOpen.push(teamId);\n } else {\n this.teamOpen.splice(this.teamOpen.indexOf(teamId), 1);\n }\n }\n }\n};\nconst _hoisted_1$1 = {\n key: 0,\n class: \"team-resources\"\n};\nconst _hoisted_2$1 = { class: \"team-resources__header\" };\nconst _hoisted_3 = [\"open\", \"onToggle\"];\nconst _hoisted_4 = { class: \"related-team__header\" };\nconst _hoisted_5 = { class: \"related-team__name\" };\nconst _hoisted_6 = { key: 0 };\nconst _hoisted_7 = [\"href\"];\nconst _hoisted_8 = {\n key: 0,\n class: \"resource__icon\"\n};\nconst _hoisted_9 = {\n key: 2,\n class: \"resource__icon\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = { class: \"resource__name\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_AccountGroup = resolveComponent(\"AccountGroup\");\n const _component_OpenInNew = resolveComponent(\"OpenInNew\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createElementVNode(\"h5\", _hoisted_2$1, toDisplayString($options.t(\"Related team resources\")), 1),\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.teamResources, (team) => {\n return openBlock(), createElementBlock(\"details\", {\n key: team.teamId,\n name: \"Team resources\",\n class: \"related-team\",\n open: $options.open(team.teamId),\n onToggle: (event) => $options.toggleOpen(team.teamId, event.target.open)\n }, [\n createElementVNode(\"summary\", _hoisted_4, [\n createElementVNode(\"h5\", _hoisted_5, [\n createVNode(_component_AccountGroup, { size: 20 }),\n createTextVNode(\" \" + toDisplayString(team.displayName), 1)\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $options.t(\"View team\"),\n href: team.link,\n title: $options.t(\"View team\"),\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_OpenInNew, { size: 20 })\n ]),\n _: 2\n }, 1032, [\"aria-label\", \"href\", \"title\"]),\n $options.open(team.teamId) ? (openBlock(), createBlock(_component_ChevronUp, {\n key: 0,\n size: 20\n })) : (openBlock(), createBlock(_component_ChevronDown, {\n key: 1,\n size: 20\n }))\n ]),\n createElementVNode(\"div\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.teamProviders(team.teamId), (provider) => {\n return openBlock(), createElementBlock(\"div\", {\n key: provider.id,\n class: \"related-team-provider\"\n }, [\n provider.resources.length > 0 ? (openBlock(), createElementBlock(\"h6\", _hoisted_6, toDisplayString(provider.name), 1)) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(provider.resources, (resource) => {\n return openBlock(), createElementBlock(\"li\", {\n key: resource.url,\n class: \"related-team-resource\"\n }, [\n createElementVNode(\"a\", {\n href: resource.url,\n class: \"related-team-resource__link\"\n }, [\n resource.iconEmoji ? (openBlock(), createElementBlock(\"span\", _hoisted_8, toDisplayString(resource.iconEmoji), 1)) : resource.iconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 1,\n class: \"resource__icon\",\n svg: resource.iconSvg,\n size: 20\n }, null, 8, [\"svg\"])) : resource.iconURL ? (openBlock(), createElementBlock(\"span\", _hoisted_9, [\n createElementVNode(\"img\", {\n src: resource.iconURL,\n alt: \"\"\n }, null, 8, _hoisted_10)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_11, toDisplayString(resource.label), 1)\n ], 8, _hoisted_7)\n ]);\n }), 128))\n ])\n ]);\n }), 128))\n ])\n ], 40, _hoisted_3);\n }), 128))\n ])) : createCommentVNode(\"\", true);\n}\nconst NcTeamResources = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-a0203ee5\"]]);\nregister(t9);\nconst _sfc_main = {\n name: \"NcRelatedResourcesPanel\",\n components: {\n NcResource,\n NcTeamResources\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n */\n itemId: {\n type: [String, Number],\n default: null\n },\n /**\n * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n resourceType: {\n type: String,\n default: \"\"\n },\n /**\n * Set the maximum number of resources to load\n */\n limit: {\n type: Number,\n default: 0\n },\n /**\n * Only used by the files sidebar\n *\n * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n */\n fileInfo: {\n type: Object,\n default: null\n },\n /**\n * Make the header name dynamic\n */\n header: {\n type: String,\n default: t(\"Related resources\")\n },\n description: {\n type: String,\n default: t(\"Anything shared with the same group of people will show up here\")\n },\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"hasError\",\n \"hasResources\"\n ],\n data() {\n return {\n appEnabled: OC?.appswebroots?.related_resources !== void 0,\n loading: false,\n error: null,\n resources: []\n };\n },\n computed: {\n isVisible() {\n if (this.loading) {\n return false;\n }\n return this.error ?? this.resources.length > 0;\n },\n subline() {\n if (this.error) {\n return t(\"Error getting related resources. Please contact your system administrator if you have any questions.\");\n }\n return this.description;\n },\n hasResourceInfo() {\n if (this.providerId !== null && this.itemId !== null) {\n return true;\n }\n if (this.fileInfo !== null) {\n return true;\n }\n return false;\n },\n isFiles() {\n return this.fileInfo?.id !== void 0;\n },\n url() {\n let providerId = null;\n let itemId = null;\n if (this.isFiles) {\n providerId = \"files\";\n itemId = this.fileInfo.id;\n } else {\n providerId = this.providerId;\n itemId = this.itemId;\n }\n return generateOcsUrl(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n providerId,\n itemId,\n resourceType: this.resourceType,\n limit: this.limit\n });\n }\n },\n watch: {\n providerId() {\n this.fetchRelatedResources();\n },\n itemId() {\n this.fetchRelatedResources();\n },\n fileInfo() {\n this.fetchRelatedResources();\n },\n error(error) {\n this.$emit(\"hasError\", Boolean(error));\n },\n resources(resources) {\n this.$emit(\"hasResources\", resources.length > 0);\n }\n },\n created() {\n this.fetchRelatedResources();\n },\n methods: {\n t,\n async fetchRelatedResources() {\n if (!this.appEnabled || !this.hasResourceInfo) {\n return;\n }\n this.loading = true;\n this.error = null;\n this.resources = [];\n try {\n const response = await axios.get(this.url);\n this.resources = response.data.ocs?.data;\n } catch (error) {\n this.error = error;\n logger.error(\"[NcRelatedResourcesPanel] Failed to fetch resources\", { error });\n } finally {\n this.loading = false;\n }\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"related-resources\"\n};\nconst _hoisted_2 = { class: \"related-resources__header\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcTeamResources = resolveComponent(\"NcTeamResources\");\n const _component_NcResource = resolveComponent(\"NcResource\");\n return openBlock(), createElementBlock(\"div\", null, [\n createVNode(_component_NcTeamResources, {\n providerId: $props.providerId,\n itemId: $props.itemId\n }, null, 8, [\"providerId\", \"itemId\"]),\n $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"div\", _hoisted_2, [\n createElementVNode(\"h5\", null, toDisplayString($props.header), 1),\n createElementVNode(\"p\", null, toDisplayString($options.subline), 1)\n ]),\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.resources, (resource) => {\n return openBlock(), createBlock(_component_NcResource, {\n key: resource.itemId,\n class: \"related-resources__entry\",\n icon: resource.icon,\n name: resource.title,\n url: resource.url\n }, null, 8, [\"icon\", \"name\", \"url\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]);\n}\nconst NcRelatedResourcesPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-a1a23691\"]]);\nexport {\n NcRelatedResourcesPanel as N\n};\n//# sourceMappingURL=NcRelatedResourcesPanel-Cn27rj0H.mjs.map\n","import '../assets/NcRichContenteditable-Do20Rmk1.css';\nimport debounce from \"debounce\";\nimport Tribute from \"tributejs/dist/tribute.esm.js\";\nimport { useIsDarkTheme } from \"../composables/useIsDarkTheme/index.mjs\";\nimport { g as getAvatarUrl } from \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_45238efd_lang-D6LzDiYf.mjs\";\nimport { N as NcUserStatusIcon } from \"./NcUserStatusIcon-JWiuiAXe.mjs\";\nimport { openBlock, createElementBlock, normalizeClass, createElementVNode, normalizeStyle, toDisplayString, createApp, resolveComponent, createBlock, createCommentVNode, mergeProps, withModifiers, withKeys } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { a as emojiSearch, e as emojiAddRecent } from \"./emoji-V9hqFgPs.mjs\";\nimport { r as register, s as t37, J as t34, a as t, K as n } from \"./_l10n-BklkVPDO.mjs\";\nimport escapeHTML from \"escape-html\";\nimport stripTags from \"striptags\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue-router\";\nimport \"./legacy-DcjXBL_t.mjs\";\nimport \"./NcButton-lQra4n2g.mjs\";\nimport { g as getLinkWithPicker, s as searchProvider } from \"./referencePickerModal-D09ZVhqa.mjs\";\nimport \"./customPickerElements-Cu7bLbap.mjs\";\nimport \"./autolink-U5pBzLgI.mjs\";\nimport \"./NcRichText-D_ssz6sB.mjs\";\nimport \"./NcEmptyContent-CDgWCt_m.mjs\";\nimport \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport \"./NcSelect-B1uITk_3.mjs\";\nimport \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport \"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH.mjs\";\nimport \"dompurify\";\nimport \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport \"./NcInputField-CPL-a_MM.mjs\";\nimport \"@nextcloud/event-bus\";\nimport \"focus-trap\";\nimport \"./NcActions-B_QR93qv.mjs\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport \"../composables/useHotKey/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport \"./NcModal-kyWZ3UFC.mjs\";\nimport \"./rtl-v0UOPAM7.mjs\";\nconst _sfc_main$2 = {\n name: \"NcMentionBubble\",\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * Id of the bubble\n */\n id: {\n type: String,\n required: true\n },\n /**\n * The main text\n */\n label: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Icon to be applied\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * URL of the icon\n */\n iconUrl: {\n type: [String, null],\n default: null\n },\n source: {\n type: String,\n required: true\n },\n /**\n * Is the bubble shown as primary\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n },\n mentionText() {\n return !this.id.includes(\" \") && !this.id.includes(\"/\") ? `@${this.id}` : `@\"${this.id}\"`;\n }\n }\n};\nconst _hoisted_1$2 = { class: \"mention-bubble__wrapper\" };\nconst _hoisted_2$2 = { class: \"mention-bubble__content\" };\nconst _hoisted_3$1 = [\"title\"];\nconst _hoisted_4$1 = {\n role: \"none\",\n class: \"mention-bubble__select\"\n};\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\"mention-bubble\", { \"mention-bubble--primary\": $props.primary }]),\n contenteditable: \"false\"\n }, [\n createElementVNode(\"span\", _hoisted_1$2, [\n createElementVNode(\"span\", _hoisted_2$2, [\n createElementVNode(\"span\", {\n class: normalizeClass([[$props.icon, `mention-bubble__icon--${$options.avatarUrl ? \"with-avatar\" : \"\"}`], \"mention-bubble__icon\"]),\n style: normalizeStyle($options.avatarUrl ? { backgroundImage: `url(${$options.avatarUrl})` } : null)\n }, null, 6),\n createElementVNode(\"span\", {\n role: \"heading\",\n class: \"mention-bubble__title\",\n title: $props.label\n }, null, 8, _hoisted_3$1)\n ]),\n createElementVNode(\"span\", _hoisted_4$1, toDisplayString($options.mentionText), 1)\n ])\n ], 2);\n}\nconst NcMentionBubble = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2], [\"__scopeId\", \"data-v-45238efd\"]]);\nconst MENTION_START = /(?=[a-z0-9_\\-@.'])\\B/.source;\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source;\nconst MENTION_GUEST = /@"(?:guest|email){1}\\/[a-f0-9]+"/.source;\nconst MENTION_PREFIXED = /@"(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+"/.source;\nconst MENTION_WITH_SPACE = /@"[a-z0-9_\\-@.' ]+"/.source;\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`;\nconst USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, \"gi\");\nconst USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, \"gi\");\nconst richEditor = {\n props: {\n userData: {\n type: Object,\n default: () => ({})\n }\n },\n methods: {\n /**\n * Convert the value string to html for the inner content\n *\n * @param {string} value the content without html\n * @return {string} rendered html\n */\n renderContent(value) {\n const sanitizedValue = escapeHTML(value);\n const splitValue = sanitizedValue.split(USERID_REGEX).map((part) => part.split(USERID_REGEX_WITH_SPACE)).flat();\n return splitValue.map((part) => {\n if (!part.startsWith(\"@\")) {\n return part;\n }\n const id = part.slice(1).replace(/"/gi, \"\");\n return this.genSelectTemplate(id);\n }).join(\"\").replace(/\\n/gmi, \"
    \").replace(/&/gmi, \"&\");\n },\n /**\n * Convert the innerHtml content to a string with mentions as text\n *\n * @param {string} content the content without html\n * @return {string}\n */\n parseContent(content) {\n let text = content;\n text = text.replace(/
    /gmi, \"\\n\");\n text = text.replace(/ /gmi, \" \");\n text = text.replace(/&/gmi, \"&\");\n text = text.replace(/<\\/div>/gmi, \"\\n\");\n text = stripTags(text, \"
    \");\n text = stripTags(text);\n return text;\n },\n /**\n * Generate an autocompletion popup entry template\n *\n * @param {string} value the value to match against the userData\n * @return {string}\n */\n genSelectTemplate(value) {\n if (typeof value === \"undefined\") {\n return `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`;\n }\n const data = this.userData[value];\n if (!data) {\n return [\" \", \"/\", \":\"].every((char) => !value.includes(char)) ? `@${value}` : `@\"${value}\"`;\n }\n return this.renderComponentHtml(data, NcMentionBubble).replace(/[\\n\\t]/gmi, \"\").replace(/>\\s+<\");\n },\n /**\n * Render a component and return its html content\n *\n * @param {object} props the props to pass to the component\n * @param {object} component the component to render\n * @return {string} the rendered html\n */\n renderComponentHtml(props, component) {\n const Item = createApp(component, {\n ...props\n });\n const mount = document.createElement(\"div\");\n mount.style.display = \"none\";\n document.body.appendChild(mount);\n Item.mount(mount);\n const renderedHtml = mount.innerHTML;\n Item.unmount();\n mount.remove();\n return renderedHtml;\n }\n }\n};\nconst _sfc_main$1 = {\n name: \"NcAutoCompleteResult\",\n components: {\n NcUserStatusIcon\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The label text\n */\n label: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The secondary line of text if any\n */\n subline: {\n type: String,\n default: null\n },\n /**\n * Unique id\n */\n id: {\n type: String,\n default: null\n },\n /**\n * The icon class\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * Icon as external URL\n */\n iconUrl: {\n type: String,\n default: null\n },\n source: {\n type: String,\n required: true\n },\n status: {\n type: [Object, Array],\n default: () => ({})\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n }\n }\n};\nconst _hoisted_1$1 = { class: \"autocomplete-result\" };\nconst _hoisted_2$1 = {\n key: 0,\n class: \"autocomplete-result__status autocomplete-result__status--icon\"\n};\nconst _hoisted_3 = { class: \"autocomplete-result__content\" };\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n key: 0,\n class: \"autocomplete-result__subline\"\n};\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcUserStatusIcon = resolveComponent(\"NcUserStatusIcon\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createElementVNode(\"div\", {\n class: normalizeClass([[$props.icon, `autocomplete-result__icon--${$options.avatarUrl ? \"with-avatar\" : \"\"}`], \"autocomplete-result__icon\"]),\n style: normalizeStyle($options.avatarUrl ? { backgroundImage: `url(${$options.avatarUrl})` } : null)\n }, [\n $props.status.icon ? (openBlock(), createElementBlock(\"span\", _hoisted_2$1, toDisplayString($props.status && $props.status.icon || \"\"), 1)) : $props.status.status && $props.status.status !== \"offline\" ? (openBlock(), createBlock(_component_NcUserStatusIcon, {\n key: 1,\n class: \"autocomplete-result__status\",\n status: $props.status.status\n }, null, 8, [\"status\"])) : createCommentVNode(\"\", true)\n ], 6),\n createElementVNode(\"span\", _hoisted_3, [\n createElementVNode(\"span\", {\n class: \"autocomplete-result__title\",\n title: $props.label\n }, toDisplayString($props.label), 9, _hoisted_4),\n $props.subline ? (openBlock(), createElementBlock(\"span\", _hoisted_5, toDisplayString($props.subline), 1)) : createCommentVNode(\"\", true)\n ])\n ]);\n}\nconst NcAutoCompleteResult = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-ca83b679\"]]);\nregister(t34, t37);\nconst style1 = {\n \"material-design-icon\": \"_material-design-icon_UrExO\",\n \"tribute-container\": \"_tribute-container_aTO5r\",\n \"tribute-container__item\": \"_tribute-container__item_EHZ07\",\n \"tribute-container--focus-visible\": \"_tribute-container--focus-visible_GHsDW\",\n \"tribute-container-autocomplete\": \"_tribute-container-autocomplete_YNk1h\",\n \"tribute-container-emoji\": \"_tribute-container-emoji_jWgZX\",\n \"tribute-container-link\": \"_tribute-container-link_1b7mc\",\n \"tribute-item\": \"_tribute-item_p5sRT\",\n \"tribute-item__title\": \"_tribute-item__title_VPcy9\",\n \"tribute-item__icon\": \"_tribute-item__icon_aTxCU\"\n};\nconst smilesCharacters = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\nconst textSmiles = [];\nsmilesCharacters.forEach((char) => {\n textSmiles.push(\":\" + char);\n textSmiles.push(\":-\" + char);\n});\nlet isPlaintextOnlySupported = null;\nconst _sfc_main = {\n name: \"NcRichContenteditable\",\n mixins: [richEditor],\n inheritAttrs: false,\n props: {\n /**\n * The ID attribute of the content editable\n */\n id: {\n type: String,\n default: () => createElementId()\n },\n /**\n * Visual label of the contenteditable\n */\n label: {\n type: String,\n default: \"\"\n },\n /**\n * The text content\n */\n modelValue: {\n type: String,\n required: true\n },\n /**\n * Placeholder to be shown if empty\n */\n placeholder: {\n type: String,\n default: t(\"Write a message …\")\n },\n /**\n * Auto complete function\n */\n autoComplete: {\n type: Function,\n default: () => []\n },\n /**\n * The containing element for the menu popover\n */\n menuContainer: {\n type: Element,\n default: () => document.body\n },\n /**\n * Make the contenteditable looks like a textarea or not.\n * Default looks like a single-line input.\n * This also handle the default enter/shift+enter behaviour.\n * if multiline, enter = newline; otherwise enter = submit\n * shift+enter always add a new line. ctrl+enter always submits\n */\n multiline: {\n type: Boolean,\n default: false\n },\n /**\n * Is the content editable ?\n */\n contenteditable: {\n type: Boolean,\n default: true\n },\n /**\n * Disable the editing and show specific disabled design\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Max allowed length\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Enable or disable emoji autocompletion\n */\n emojiAutocomplete: {\n type: Boolean,\n default: true\n },\n /**\n * Enable or disable link autocompletion\n */\n linkAutocomplete: {\n type: Boolean,\n default: true\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"paste\",\n \"update:modelValue\",\n \"smartPickerSubmit\",\n \"submit\"\n ],\n setup() {\n const segmenter = new Intl.Segmenter();\n if (isPlaintextOnlySupported === null) {\n try {\n document.createElement(\"div\").contentEditable = \"plaintext-only\";\n isPlaintextOnlySupported = true;\n } catch (error) {\n logger.debug(\"[NcRichContenteditable] Unsupported attribute value:\", { error });\n isPlaintextOnlySupported = false;\n }\n }\n return {\n // Constants\n labelId: createElementId(),\n tributeId: createElementId(),\n segmenter,\n /**\n * Non-reactive property to store Tribute instance\n *\n * @type {import('tributejs').default | null}\n */\n tribute: null,\n tributeStyleMutationObserver: null\n };\n },\n data() {\n return {\n // Represent the raw untrimmed text of the contenteditable\n // serves no other purpose than to check whether the\n // content is empty or not\n localValue: this.modelValue,\n // Is in text composition session in IME\n isComposing: false,\n // Tribute autocomplete\n isAutocompleteOpen: false,\n autocompleteActiveId: void 0,\n isTributeIntegrationDone: false\n };\n },\n computed: {\n /**\n * Is the current trimmed value empty?\n *\n * @return {boolean}\n */\n isEmptyValue() {\n return !this.localValue || this.localValue.trim() === \"\";\n },\n /**\n * Is the current value over maxlength?\n *\n * @return {boolean}\n */\n isOverMaxlength() {\n if (this.isEmptyValue || !this.maxlength) {\n return false;\n }\n const length = [...this.segmenter.segment(this.localValue)].length;\n return length > this.maxlength;\n },\n /**\n * Tooltip to show if characters count is over limit\n *\n * @return {string}\n */\n tooltipString() {\n if (!this.isOverMaxlength) {\n return null;\n }\n return n(\"Message limit of %n character reached\", \"Message limit of %n characters reached\", this.maxlength);\n },\n /**\n * Edit is only allowed when contenteditable is:\n * 'true' (all browsers since 2015)\n * 'plaintext-only' (most browsers since 2015, Firefox since 136+)\n *\n * @return {string}\n */\n contenteditableAttributeValue() {\n if (this.contenteditable && !this.disabled) {\n return isPlaintextOnlySupported ? \"plaintext-only\" : \"true\";\n }\n return \"false\";\n },\n /**\n * Compute debounce function for the autocomplete function\n */\n debouncedAutoComplete() {\n return debounce(async (search, callback) => {\n this.autoComplete(search, callback);\n }, 100);\n }\n },\n watch: {\n /**\n * If the parent value change, we compare the plain text rendering\n * If it's different, we render everything and update the main content\n */\n modelValue() {\n const html = this.$refs.contenteditable.innerHTML;\n if (this.modelValue.trim() !== this.parseContent(html).trim()) {\n this.updateContent(this.modelValue);\n }\n }\n },\n mounted() {\n this.initializeTribute();\n this.updateContent(this.modelValue);\n this.$refs.contenteditable.contentEditable = this.contenteditableAttributeValue;\n },\n beforeUnmount() {\n if (this.tribute) {\n this.tribute.detach(this.$refs.contenteditable);\n }\n if (this.tributeStyleMutationObserver) {\n this.tributeStyleMutationObserver.disconnect();\n }\n },\n methods: {\n /**\n * Focus the richContenteditable\n *\n * @public\n */\n focus() {\n this.$refs.contenteditable.focus();\n },\n initializeTribute() {\n const renderMenuItem = (content) => `
    ${content}
    `;\n const tributesCollection = [];\n tributesCollection.push({\n fillAttr: \"id\",\n // Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n lookup: (result) => `${result.id} ${result.label ?? result.title}`,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n // Hide if no results\n noMatchTemplate: () => '',\n // Inner display of mentions\n selectTemplate: (item) => this.genSelectTemplate(item?.original?.id),\n // Autocompletion results\n values: this.debouncedAutoComplete,\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-autocomplete\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n if (this.emojiAutocomplete) {\n tributesCollection.push({\n trigger: \":\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n return renderMenuItem(`${item.original.native} :${item.original.short_name}`);\n },\n // Hide if no results\n noMatchTemplate: () => t(\"No emoji found\"),\n // Display raw emoji along with its name\n selectTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n emojiAddRecent(item.original);\n return item.original.native;\n },\n // Pass the search results as values\n values: (text, cb) => {\n const emojiResults = emojiSearch(text);\n if (textSmiles.includes(\":\" + text)) {\n emojiResults.unshift(\":\" + text);\n }\n cb(emojiResults);\n },\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-emoji\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n if (this.linkAutocomplete) {\n tributesCollection.push({\n trigger: \"/\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(` ${item.original.title}`),\n // Hide if no results\n noMatchTemplate: () => t(\"No link provider found\"),\n selectTemplate: this.getLink,\n // Pass the search results as values\n values: (text, cb) => cb(searchProvider(text)),\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-link\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n this.tribute = new Tribute({\n collection: tributesCollection,\n // FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n // Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n allowSpaces: false,\n // Where to inject the menu popup\n menuContainer: this.menuContainer\n });\n this.tribute.attach(this.$refs.contenteditable);\n },\n getLink(item) {\n getLinkWithPicker(item.original.id).then((result) => {\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n const eventData = {\n result,\n insertText: true\n };\n this.$emit(\"smartPickerSubmit\", eventData);\n if (eventData.insertText) {\n const newElem = document.createTextNode(result);\n tmpElem.replaceWith(newElem);\n this.setCursorAfter(newElem);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n } else {\n tmpElem.remove();\n }\n }).catch((error) => {\n logger.debug(\"[NcRichContenteditable] Smart picker promise rejected:\", { error });\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n this.setCursorAfter(tmpElem);\n tmpElem.remove();\n });\n return '';\n },\n setCursorAfter(element) {\n const range = document.createRange();\n range.setEndAfter(element);\n range.collapse();\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n moveCursorToEnd() {\n if (!document.createRange) {\n return;\n }\n if (window.getSelection().rangeCount > 0 && this.$refs.contenteditable.contains(window.getSelection().getRangeAt(0).commonAncestorContainer)) {\n return;\n }\n const range = document.createRange();\n range.selectNodeContents(this.$refs.contenteditable);\n range.collapse(false);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n /**\n * Re-emit the input event to the parent\n *\n * @param {Event} event the input event\n */\n onInput(event) {\n this.updateValue(event.target.innerHTML);\n },\n /**\n * When pasting, sanitize the content, extract text\n * and render it again\n *\n * @param {Event} event the paste event\n * @fires Event paste the original paste event\n */\n onPaste(event) {\n if (!this.contenteditable || this.disabled) {\n return;\n }\n if (isPlaintextOnlySupported) {\n this.$emit(\"paste\", event);\n } else {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n this.$emit(\"paste\", event);\n if (clipboardData.files.length !== 0 || !Object.values(clipboardData.items).find((item) => item?.type.startsWith(\"text\"))) {\n return;\n }\n const text = clipboardData.getData(\"text\");\n const selection = window.getSelection();\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n }\n this.updateValue(this.$refs.contenteditable.innerHTML);\n },\n /**\n * Update the value text from the provided html\n *\n * @param {string} htmlOrText the html content (or raw text with @mentions)\n */\n updateValue(htmlOrText) {\n const text = this.parseContent(htmlOrText).replace(/^\\n$/, \"\");\n this.localValue = text;\n this.$emit(\"update:modelValue\", text);\n },\n /**\n * Update content and local value\n *\n * @param {string} value the message value\n */\n updateContent(value) {\n const renderedContent = this.renderContent(value);\n this.$refs.contenteditable.innerHTML = renderedContent;\n this.localValue = value;\n },\n /**\n * Enter key pressed. Submits if not multiline\n *\n * @param {Event} event the keydown event\n */\n onEnter(event) {\n if (this.multiline || this.isOverMaxlength || this.tribute.isActive || this.isComposing) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.$emit(\"submit\", event);\n },\n /**\n * Ctrl + Enter key pressed is used to submit\n *\n * @param {Event} event the keydown event\n */\n onCtrlEnter(event) {\n if (this.isOverMaxlength) {\n return;\n }\n this.$emit(\"submit\", event);\n },\n onKeyUp(event) {\n event.stopImmediatePropagation();\n },\n onKeyEsc(event) {\n if (this.tribute && this.isAutocompleteOpen) {\n event.stopImmediatePropagation();\n this.tribute.hideMenu();\n }\n },\n /**\n * Get HTML element with Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeContainer() {\n return this.tribute.menu;\n },\n /**\n * Get the currently selected item element id in Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeSelectedItem() {\n return this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]');\n },\n /**\n * Handle Tribute activation\n *\n * @param {boolean} isActive - is active\n */\n onTributeActive(isActive) {\n this.isAutocompleteOpen = isActive;\n if (isActive) {\n this.getTributeContainer().setAttribute(\"class\", this.tribute.current.collection.containerClass || this.$style[\"tribute-container\"]);\n this.setupTributeIntegration();\n document.removeEventListener(\"click\", this.hideTribute, true);\n } else {\n this.debouncedAutoComplete.clear();\n this.autocompleteActiveId = void 0;\n this.setTributeFocusVisible(false);\n }\n },\n onTributeArrowKeyDown() {\n if (!this.isAutocompleteOpen) {\n return;\n }\n this.setTributeFocusVisible(true);\n this.onTributeSelectedItemWillChange();\n },\n onTributeSelectedItemWillChange() {\n requestAnimationFrame(() => {\n this.autocompleteActiveId = this.getTributeSelectedItem()?.id;\n });\n },\n setupTributeIntegration() {\n if (this.isTributeIntegrationDone) {\n return;\n }\n this.isTributeIntegrationDone = true;\n const tributeContainer = this.getTributeContainer();\n tributeContainer.id = this.tributeId;\n tributeContainer.setAttribute(\"role\", \"listbox\");\n const ul = tributeContainer.children[0];\n ul.setAttribute(\"role\", \"presentation\");\n this.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n if (target.style.display !== \"none\") {\n this.onTributeSelectedItemWillChange();\n }\n }).observe(tributeContainer, {\n attributes: true,\n attributeFilter: [\"style\"]\n });\n tributeContainer.addEventListener(\"mousemove\", () => {\n this.setTributeFocusVisible(false);\n this.onTributeSelectedItemWillChange();\n }, { passive: true });\n },\n /**\n * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n *\n * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n * to style selected options in the autocomplete listbox.\n *\n * @param {boolean} withFocusVisible - should the focus-visible class be added\n */\n setTributeFocusVisible(withFocusVisible) {\n if (withFocusVisible) {\n this.getTributeContainer().classList.add(this.$style[\"tribute-container--focus-visible\"]);\n } else {\n this.getTributeContainer().classList.remove(this.$style[\"tribute-container--focus-visible\"]);\n }\n },\n /**\n * Show tribute menu programmatically.\n *\n * @param {string} trigger - trigger character, can be '/', '@', or ':'\n *\n * @public\n */\n showTribute(trigger) {\n this.focus();\n const index = this.tribute.collection.findIndex((collection) => collection.trigger === trigger);\n this.tribute.showMenuForCollection(this.$refs.contenteditable, index);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n document.addEventListener(\"click\", this.hideTribute, true);\n },\n /**\n * Hide tribute menu programmatically\n *\n */\n hideTribute() {\n this.tribute.hideMenu();\n document.removeEventListener(\"click\", this.hideTribute, true);\n }\n }\n};\nconst _hoisted_1 = [\"id\", \"contenteditable\", \"aria-labelledby\", \"aria-placeholder\", \"aria-controls\", \"aria-expanded\", \"aria-activedescendant\", \"title\"];\nconst _hoisted_2 = [\"id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"rich-contenteditable\", _ctx.$props.class])\n }, [\n createElementVNode(\"div\", mergeProps({\n id: $props.id,\n ref: \"contenteditable\",\n class: [{\n \"rich-contenteditable__input--empty\": $options.isEmptyValue,\n \"rich-contenteditable__input--multiline\": $props.multiline,\n \"rich-contenteditable__input--has-label\": $props.label,\n \"rich-contenteditable__input--overflow\": $options.isOverMaxlength,\n \"rich-contenteditable__input--disabled\": $props.disabled\n }, \"rich-contenteditable__input\"],\n contenteditable: $options.contenteditableAttributeValue,\n \"aria-labelledby\": $props.label ? $setup.labelId : void 0,\n \"aria-placeholder\": $props.placeholder,\n \"aria-multiline\": \"true\",\n role: \"textbox\",\n \"aria-haspopup\": \"listbox\",\n \"aria-autocomplete\": \"inline\",\n \"aria-controls\": $setup.tributeId,\n \"aria-expanded\": $data.isAutocompleteOpen ? \"true\" : \"false\",\n \"aria-activedescendant\": $data.autocompleteActiveId,\n title: $options.tooltipString\n }, _ctx.$attrs, {\n onFocus: _cache[0] || (_cache[0] = (...args) => $options.moveCursorToEnd && $options.moveCursorToEnd(...args)),\n onInput: _cache[1] || (_cache[1] = (...args) => $options.onInput && $options.onInput(...args)),\n onCompositionstart: _cache[2] || (_cache[2] = ($event) => $data.isComposing = true),\n onCompositionend: _cache[3] || (_cache[3] = ($event) => $data.isComposing = false),\n onKeydownCapture: _cache[4] || (_cache[4] = withKeys((...args) => $options.onKeyEsc && $options.onKeyEsc(...args), [\"esc\"])),\n onKeydown: [\n _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.onEnter && $options.onEnter(...args), [\"exact\"]), [\"enter\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.onCtrlEnter && $options.onCtrlEnter(...args), [\"ctrl\", \"exact\", \"stop\", \"prevent\"]), [\"enter\"])),\n _cache[9] || (_cache[9] = withKeys(withModifiers((...args) => $options.onTributeArrowKeyDown && $options.onTributeArrowKeyDown(...args), [\"exact\", \"stop\"]), [\"up\"])),\n _cache[10] || (_cache[10] = withKeys(withModifiers((...args) => $options.onTributeArrowKeyDown && $options.onTributeArrowKeyDown(...args), [\"exact\", \"stop\"]), [\"down\"]))\n ],\n onPaste: _cache[7] || (_cache[7] = (...args) => $options.onPaste && $options.onPaste(...args)),\n onKeyupCapture: _cache[8] || (_cache[8] = withModifiers((...args) => $options.onKeyUp && $options.onKeyUp(...args), [\"stop\", \"prevent\"])),\n onTributeActiveTrue: _cache[11] || (_cache[11] = ($event) => $options.onTributeActive(true)),\n onTributeActiveFalse: _cache[12] || (_cache[12] = ($event) => $options.onTributeActive(false))\n }), null, 16, _hoisted_1),\n $props.label ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: $setup.labelId,\n class: \"rich-contenteditable__label\"\n }, toDisplayString($props.label), 9, _hoisted_2)) : createCommentVNode(\"\", true)\n ], 2);\n}\nconst cssModules = {\n \"$style\": style1\n};\nconst NcRichContenteditable = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__cssModules\", cssModules], [\"__scopeId\", \"data-v-426785d7\"]]);\nexport {\n NcAutoCompleteResult as N,\n NcMentionBubble as a,\n NcRichContenteditable as b\n};\n//# sourceMappingURL=NcRichContenteditable-BREsny-v.mjs.map\n","import '../assets/NcSelectUsers-YF5729PJ.css';\nimport { defineComponent, useModel, ref, watch, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, mergeModels } from \"vue\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-DJJR4RtI.mjs\";\nimport { N as NcSelect } from \"./NcSelect-B1uITk_3.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcSelectUsers\",\n props: /* @__PURE__ */ mergeModels({\n ariaLabelClearSelected: {},\n ariaLabelListbox: {},\n ariaLabelDeselectOption: { type: Function },\n disabled: { type: Boolean },\n inputId: {},\n inputLabel: {},\n labelOutside: { type: Boolean },\n keepOpen: { type: Boolean },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n noWrap: { type: Boolean },\n options: {},\n placeholder: {},\n required: { type: Boolean }\n }, {\n \"modelValue\": {},\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"search\"], [\"update:modelValue\"]),\n setup(__props, { emit: __emit }) {\n const modelValue = useModel(__props, \"modelValue\");\n const emit = __emit;\n const search = ref(\"\");\n watch(search, () => emit(\"search\", search.value));\n const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n const avatarSize = clickableArea - 2 * gridBaseLine;\n function filterBy(option, label, search2) {\n const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n const match = search2.match(EMAIL_NOTATION);\n const subname = option.subname?.toLocaleLowerCase() ?? \"\";\n return match && subname.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search2.toLocaleLowerCase()) > -1;\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcSelect), mergeProps({\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n class: \"nc-select-users\"\n }, _ctx.$props, {\n filterBy,\n label: \"displayName\",\n onSearch: _cache[1] || (_cache[1] = ($event) => search.value = $event)\n }), {\n option: withCtx((option) => [\n createVNode(unref(NcListItemIcon), mergeProps(option, {\n avatarSize: 32,\n name: option.displayName,\n search: search.value\n }), null, 16, [\"name\", \"search\"])\n ]),\n \"selected-option\": withCtx((selectedOption) => [\n createVNode(unref(NcListItemIcon), mergeProps(selectedOption, {\n avatarSize,\n name: selectedOption.displayName,\n noMargin: \"\",\n search: search.value\n }), null, 16, [\"name\", \"search\"])\n ]),\n _: 1\n }, 16, [\"modelValue\"]);\n };\n }\n});\nconst NcSelectUsers = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-e8e18fd3\"]]);\nexport {\n NcSelectUsers as N\n};\n//# sourceMappingURL=NcSelectUsers-B9ZFtd6B.mjs.map\n","import '../assets/NcSettingsSelectGroup-D_fSrafm.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcSelect } from \"./NcSelect-B1uITk_3.mjs\";\nimport { r as register, i as t50, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createVNode, withDirectives, createElementVNode, vShow } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t50);\nconst _sfc_main = {\n name: \"NcSettingsSelectGroup\",\n components: {\n NcSelect\n },\n props: {\n /**\n * The text of the label element of the select group input\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Placeholder for the input element\n * For backwards compatibility it falls back to the `label` value\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * value of the select group input\n * A list of group IDs can be provided\n */\n modelValue: {\n type: Array,\n default: () => []\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"error\",\n \"input\",\n \"update:modelValue\"\n ],\n data() {\n return {\n /** Temporary store to cache groups */\n groups: {},\n randId: createElementId(),\n errorMessage: \"\"\n };\n },\n computed: {\n /**\n * If the error message should be shown\n */\n hasError() {\n return this.errorMessage !== \"\";\n },\n /**\n * Validate input value and only return valid strings (group IDs)\n *\n * @return {string[]}\n */\n filteredValue() {\n return this.modelValue.filter((group) => group !== \"\" && typeof group === \"string\");\n },\n /**\n * value property converted to an array of group objects used as input for the NcSelect\n */\n inputValue() {\n return this.filteredValue.map((id) => {\n if (typeof this.groups[id] === \"undefined\") {\n return {\n id,\n displayname: id\n };\n }\n return this.groups[id];\n });\n },\n /**\n * Convert groups object to array of groups required for NcSelect.options\n * Filter out currently selected values\n *\n * @return {object[]}\n */\n groupsArray() {\n return Object.values(this.groups).filter((g) => !this.modelValue.includes(g.id));\n }\n },\n watch: {\n /**\n * If the value is changed, check that all groups are loaded so we show the correct display name\n */\n modelValue: {\n handler() {\n const loadedGroupIds = Object.keys(this.groups);\n const missing = this.filteredValue.filter((group) => !loadedGroupIds.includes(group));\n missing.forEach((groupId) => {\n this.loadGroup(groupId);\n });\n },\n // Run the watch handler also when the component is initially mounted\n immediate: true\n }\n },\n /**\n * Load groups matching the empty query to reduce API calls\n */\n async mounted() {\n const storageName = `${appName}:${appVersion}/initialGroups`;\n let savedGroups = window.sessionStorage.getItem(storageName);\n if (savedGroups) {\n savedGroups = Object.fromEntries(JSON.parse(savedGroups).map((group) => [group.id, group]));\n this.groups = { ...this.groups, ...savedGroups };\n } else {\n await this.loadGroup(\"\");\n window.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)));\n }\n },\n methods: {\n t,\n /**\n * Called when a new group is selected or previous group is deselected to emit the update event\n *\n * @param {object[]} updatedValue Array of selected groups\n */\n update(updatedValue) {\n const value = updatedValue.map((element) => element.id);\n this.$emit(\"update:modelValue\", value);\n },\n /**\n * Use provisioning API to search for given group and save it in the groups object\n *\n * @param {string} query The query like parts of the id oder display name\n * @return {boolean}\n */\n async loadGroup(query) {\n try {\n query = typeof query === \"string\" ? encodeURI(query) : \"\";\n const response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2));\n if (this.errorMessage !== \"\") {\n window.setTimeout(() => {\n this.errorMessage = \"\";\n }, 5e3);\n }\n if (Object.keys(response.data.ocs.data.groups).length > 0) {\n const newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]));\n this.groups = { ...this.groups, ...newGroups };\n return true;\n }\n } catch (error) {\n this.$emit(\"error\", error);\n this.errorMessage = t(\"Unable to search the group\");\n }\n return false;\n },\n /**\n * Custom filter function for `NcSelect` to filter by ID *and* display name\n *\n * @param {object} option One of the groups\n * @param {string} label The label property of the group\n * @param {string} search The current search string\n */\n filterGroups(option, label, search) {\n return `${label || \"\"} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n },\n /**\n * Debounce the group search (reduce API calls)\n */\n onSearch: debounce(function(query) {\n this.loadGroup(query);\n }, 200)\n }\n};\nconst _hoisted_1 = [\"for\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n return openBlock(), createElementBlock(\"div\", null, [\n $props.label ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n for: $props.id,\n class: \"hidden-visually\"\n }, toDisplayString($props.label), 9, _hoisted_1)) : createCommentVNode(\"\", true),\n createVNode(_component_NcSelect, {\n modelValue: $options.inputValue,\n options: $options.groupsArray,\n placeholder: $props.placeholder || $props.label,\n filterBy: $options.filterGroups,\n inputId: $props.id,\n limit: 5,\n label: \"displayname\",\n multiple: true,\n closeOnSelect: false,\n disabled: $props.disabled,\n \"onUpdate:modelValue\": $options.update,\n onSearch: $options.onSearch\n }, null, 8, [\"modelValue\", \"options\", \"placeholder\", \"filterBy\", \"inputId\", \"disabled\", \"onUpdate:modelValue\", \"onSearch\"]),\n withDirectives(createElementVNode(\"div\", { class: \"select-group-error\" }, toDisplayString($data.errorMessage), 513), [\n [vShow, $options.hasError]\n ])\n ]);\n}\nconst NcSettingsSelectGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f2b71592\"]]);\nexport {\n NcSettingsSelectGroup as N\n};\n//# sourceMappingURL=NcSettingsSelectGroup-CupkYUPJ.mjs.map\n","import '../assets/NcTextArea-DF9NgPUa.css';\nimport { defineComponent, useModel, useAttrs, useTemplateRef, computed, watch, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, mergeProps, toDisplayString, createCommentVNode, createBlock, createTextVNode, mergeModels } from \"vue\";\nimport { d as mdiCheck, j as mdiAlertCircleOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { i as isLegacy } from \"./legacy-DcjXBL_t.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"textarea__main-wrapper\" };\nconst _hoisted_2 = [\"id\", \"aria-describedby\", \"disabled\", \"placeholder\", \"value\"];\nconst _hoisted_3 = [\"for\"];\nconst _hoisted_4 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcTextArea\",\n props: /* @__PURE__ */ mergeModels({\n disabled: { type: Boolean },\n error: { type: Boolean },\n helperText: { default: void 0 },\n id: { default: () => createElementId() },\n inputClass: { default: \"\" },\n label: { default: void 0 },\n labelOutside: { type: Boolean },\n placeholder: { default: void 0 },\n resize: { default: \"both\" },\n success: { type: Boolean }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n __expose({\n focus,\n select\n });\n const attrs = useAttrs();\n const textAreaElement = useTemplateRef(\"input\");\n const internalPlaceholder = computed(() => props.placeholder || (isLegacy ? props.label : void 0));\n watch(() => props.labelOutside, () => {\n if (!props.labelOutside && !props.label) {\n logger.warn(\"[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n });\n const ariaDescribedby = computed(() => {\n const ariaDescribedby2 = [];\n if (props.helperText) {\n ariaDescribedby2.push(`${props.id}-helper-text`);\n }\n if (typeof attrs[\"aria-describedby\"] === \"string\") {\n ariaDescribedby2.push(attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby2.join(\" \") || void 0;\n });\n function handleInput(event) {\n const { value } = event.target;\n modelValue.value = value;\n }\n function focus(options) {\n textAreaElement.value.focus(options);\n }\n function select() {\n textAreaElement.value.select();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"textarea\", [\n _ctx.$attrs.class,\n {\n \"textarea--disabled\": _ctx.disabled,\n \"textarea--legacy\": unref(isLegacy)\n }\n ]])\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"textarea\", mergeProps({ ..._ctx.$attrs, class: void 0 }, {\n id: _ctx.id,\n ref: \"input\",\n \"aria-describedby\": ariaDescribedby.value,\n \"aria-live\": \"polite\",\n class: [\"textarea__input\", [\n _ctx.inputClass,\n {\n \"textarea__input--label-outside\": _ctx.labelOutside,\n \"textarea__input--legacy\": unref(isLegacy),\n \"textarea__input--success\": _ctx.success,\n \"textarea__input--error\": _ctx.error\n }\n ]],\n disabled: _ctx.disabled,\n placeholder: internalPlaceholder.value,\n style: { resize: _ctx.resize },\n value: modelValue.value,\n onInput: handleInput\n }), null, 16, _hoisted_2),\n !_ctx.labelOutside ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: \"textarea__label\",\n for: _ctx.id\n }, toDisplayString(_ctx.label), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ]),\n _ctx.helperText ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n id: `${_ctx.id}-helper-text`,\n class: normalizeClass([\"textarea__helper-text-message\", {\n \"textarea__helper-text-message--error\": _ctx.error,\n \"textarea__helper-text-message--success\": _ctx.success\n }])\n }, [\n _ctx.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 0,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiCheck),\n inline: \"\"\n }, null, 8, [\"path\"])) : _ctx.error ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 1,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiAlertCircleOutline),\n inline: \"\"\n }, null, 8, [\"path\"])) : createCommentVNode(\"\", true),\n createTextVNode(\" \" + toDisplayString(_ctx.helperText), 1)\n ], 10, _hoisted_4)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcTextArea = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-657c47f8\"]]);\nexport {\n NcTextArea as N\n};\n//# sourceMappingURL=NcTextArea-CseOD9aM.mjs.map\n"],"names":["register","t20","NcActions","t14","t21","t23","t51","t16","t44","t","t47","t48","t31","LOCALHOST","COLON","defaults","noop","Options","opts","defaultRender","o","ignoredTags","uppercaseIgnoredTags","i","ir","token","key","operator","isCallable","option","obj","val","MultiToken","value","tokens","scheme","options","truncate","formatted","protocol","href","formattedHref","tagName","content","attributes","className","target","rel","attrs","eventListeners","createTokenClass","type","props","Token","p","t15","PQueue","t28","t6","t35","millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","constructFromSymbol","constructFrom","date","toDate","argument","context","addDays","amount","_date","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","add","duration","years","months","weeks","days","hours","minutes","seconds","dateWithMonths","dateWithDays","minutesToAdd","msToAdd","addMilliseconds","addHours","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","day","diff","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTimezoneOffsetInMilliseconds","utcDate","normalizeDates","dates","normalize","startOfDay","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","startOfISOWeekYear","fourthOfJanuary","addQuarters","addYears","compareAsc","dateLeft","dateRight","isDate","isValid","getQuarter","differenceInCalendarYears","differenceInYears","sign","partial","result","normalizeInterval","interval","start","end","eachDayOfInterval","reversed","endTime","step","startOfQuarter","currentMonth","month","eachQuarterOfInterval","startOfMonth","endOfYear","startOfYear","date_","endOfWeek","endOfQuarter","formatDistanceLocale","formatDistance","count","tokenValue","buildFormatLongFn","args","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","index","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","output","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","offset","delimiter","absOffset","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","format","input","_message","message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","locale","defaultLocale","originalDate","parts","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","formatter","matched","getDay","getDaysInMonth","monthIndex","lastDayOfMonth","getInternalDefaultOptions","getHours","getISODay","getMinutes","getMonth","getSeconds","getYear","isAfter","dateToCompare","isBefore","isEqual","leftDate","rightDate","transpose","constructor","isConstructor","TIMEZONE_UNIT_PRIORITY","Setter","_utcDate","ValueSetter","validateValue","setValue","priority","subPriority","flags","DateTimezoneSetter","reference","Parser","dateString","_value","EraParser","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","n","parseNDigitsSigned","dayPeriodEnumToHours","dayPeriod","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","isLeapYearIndex","YearParser","valueCallback","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","setWeek","LocalWeekParser","setISOWeek","ISOWeekParser","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setDay","currentDay","dayIndex","delta","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","setISODay","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","notWhitespaceRegExp","parse","dateStr","referenceDate","invalidDate","subFnOptions","setters","usedTokens","parser","incompatibleTokens","incompatibleToken","usedToken","uniquePrioritySetters","setter","a","b","setterArray","isSameQuarter","dateLeft_","dateRight_","subDays","setMonth","midMonth","set","values","setHours","setMilliseconds","setMinutes","setSeconds","setYear","subMonths","sub","withoutMonths","withoutDays","minutesToSub","msToSub","subYears","jt","Jn","w","W","he","Sn","Ua","Va","ja","Ka","Ga","Ze","Qa","l","La","H","wl","Fe","Dl","Ml","ot","st","Ot","je","$l","Qe","Re","Lt","un","Al","ft","Tl","f","qa","Ja","Pn","g","d","Sl","Le","s","Pl","Rn","Xa","Ne","dn","cn","Cn","Rl","Zt","Ht","Dt","Cl","Ol","Fa","Za","Ta","ca","Bl","qe","_l","On","Bn","fn","Na","da","dl","Se","Yl","Il","ol","Mt","ul","il","wn","Dn","Be","Ft","$e","Nt","Ee","_t","xt","it","Sa","Bt","yt","$t","zt","_n","ye","Me","Yn","Wt","In","bn","El","Ct","mt","Wa","kn","En","wt","pt","sl","ut","Nn","Jt","Ll","Nl","Ln","It","oa","za","Fl","Pa","Ra","vn","Ca","zl","Hl","Fn","xa","Ha","mn","cl","kt","zn","Kt","ea","Hn","j","Pe","Oa","Z","sa","Ba","_a","Ya","Ve","Ie","At","M","A","P","v","pn","Wl","gn","Ul","Vl","jl","Kl","Gl","Ql","ql","Xl","Jl","Zl","xl","er","Ia","tr","ar","nr","lr","Oe","U","$","C","z","R","h","T","F","_","m","L","rr","qt","rt","x","X","S","fl","B","k","q","le","ee","O","J","ce","pe","Y","te","y","V","se","be","Ae","u","re","G","I","or","Tt","Mn","$n","va","dt","sr","ur","We","Ue","Ut","ie","ze","He","ke","lt","Q","gt","Ke","dr","cr","fr","vr","ta","ga","Zn","at","c","De","Xt","Ce","ua","ia","mr","ma","pr","Qt","gr","Wn","aa","Te","we","xn","tt","Vt","Ge","en","tn","pa","Un","Vn","jn","An","Gt","vl","yr","na","hr","Yt","et","Je","br","kr","wr","Dr","Mr","$r","Ar","Tr","Sr","Pr","r","E","K","oe","Tn","ml","ge","_e","Ye","nt","ne","fa","Rr","Cr","Or","Br","Kn","Gn","_r","Yr","Ir","Er","Nr","Lr","Fr","zr","Hr","Wr","Ur","Vr","jr","Kr","Gr","pl","gl","yn","Qr","ae","ve","N","ue","me","ct","Pt","$a","Rt","ra","Aa","Xn","vt","xe","St","D","fe","ht","Xe","ya","ha","la","ba","ka","wa","Da","Ma","qr","Xr","mo","Jr","rn","sn","yl","hl","on","Zr","xr","eo","Qn","to","ao","no","lo","ro","oo","so","uo","io","hn","de","po","el","Et","co","tl","nn","bt","fo","vo","kl","bl","go","yo","ho","bo","ko","wo","Ea","Do","al","nl","Mo","$o","Ao","To","ll","an","ln","rl","qn","So","t45","formatTimezoneId","timezoneId","getTimezones","tz","_sfc_main","defineComponent","mergeModels","createElementId","__props","modelValue","useModel","formattedAdditionalTimezones","computed","label","timezones","filterBy","search","terms","term","_ctx","_cache","openBlock","createBlock","NcSelect","$event","unref","t13","_hoisted_1","_hoisted_2","getCanonicalLocale","__emit","emit","targetElement","useTemplateRef","pickerInstance","time","placeholderFallback","realFormat","pickerType","minTime","maxTime","onUpdateModelValue","value2","formatLibraryTime","data","weekStart","getFirstDay","dayNames","getDayNamesMin","weekNumName","ariaLabels","getDayNames","overlay","selectDate","cancelSelection","calcMinMaxTime","sameDay","createElementBlock","createVNode","VueDatePicker","mergeProps","createSlots","withCtx","NcButton","createTextVNode","toDisplayString","clear","NcIconSvgWrapper","mdiClose","mdiCalendarBlank","mdiClock","mdiChevronLeft","mdiChevronRight","mdiChevronDown","mdiChevronUp","_sfc_main$1","Teleport","createElementVNode","NcDateTimePicker","_export_sfc","gtBuilder","getGettextBuilder","t7","margin","defaultSize","NcAvatar","userStatus","margin2","EMAIL_NOTATION","_hoisted_3","_hoisted_4","_sfc_render","$props","$setup","$data","$options","_component_NcAvatar","resolveComponent","_component_NcHighlight","_component_NcIconSvgWrapper","normalizeClass","normalizeStyle","createCommentVNode","renderSlot","NcListItemIcon","t38","t42","getCapabilities","t9","list","length","thisArg","CustomEvent$1","event","params","evt","t34","t37","ref","watch","clickableArea","gridBaseLine","avatarSize","search2","subname","selectedOption","NcSelectUsers","t50","debounce","query","__expose","focus","select","useAttrs","textAreaElement","internalPlaceholder","isLegacy","logger","ariaDescribedby","ariaDescribedby2","handleInput","mdiCheck","mdiAlertCircleOutline","NcTextArea"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148]} \ No newline at end of file +{"version":3,"file":"index-Bk4hMpWo.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcActionButtonGroup-CrbcMWK-.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigation-DQzgUarc.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationCaption-DsM6rzrK.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcInputConfirmCancel-Ch0byKa3.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationItem-XSXn3qhJ.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSearch-DpcjjmY5.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppNavigationSettings-CxjLIB1E.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsDialog-Brgi3W2x.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSettingsShortcutsSection-HmIjAN0a.mjs","../node_modules/linkifyjs/dist/linkify.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcAppSidebar-KwLsRcZO.mjs","../node_modules/@nextcloud/vue/dist/functions/preloadImage/index.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcCollectionList-pWG42SU1.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDashboardWidget-CvpYMKur.mjs","../node_modules/date-fns/constants.js","../node_modules/date-fns/constructFrom.js","../node_modules/date-fns/toDate.js","../node_modules/date-fns/addDays.js","../node_modules/date-fns/addMonths.js","../node_modules/date-fns/add.js","../node_modules/date-fns/addMilliseconds.js","../node_modules/date-fns/addHours.js","../node_modules/date-fns/_lib/defaultOptions.js","../node_modules/date-fns/startOfWeek.js","../node_modules/date-fns/startOfISOWeek.js","../node_modules/date-fns/getISOWeekYear.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds.js","../node_modules/date-fns/_lib/normalizeDates.js","../node_modules/date-fns/startOfDay.js","../node_modules/date-fns/differenceInCalendarDays.js","../node_modules/date-fns/startOfISOWeekYear.js","../node_modules/date-fns/addQuarters.js","../node_modules/date-fns/addYears.js","../node_modules/date-fns/compareAsc.js","../node_modules/date-fns/isDate.js","../node_modules/date-fns/isValid.js","../node_modules/date-fns/getQuarter.js","../node_modules/date-fns/differenceInCalendarYears.js","../node_modules/date-fns/differenceInYears.js","../node_modules/date-fns/_lib/normalizeInterval.js","../node_modules/date-fns/eachDayOfInterval.js","../node_modules/date-fns/startOfQuarter.js","../node_modules/date-fns/eachQuarterOfInterval.js","../node_modules/date-fns/startOfMonth.js","../node_modules/date-fns/endOfYear.js","../node_modules/date-fns/startOfYear.js","../node_modules/date-fns/endOfWeek.js","../node_modules/date-fns/endOfQuarter.js","../node_modules/date-fns/locale/en-US/_lib/formatDistance.js","../node_modules/date-fns/locale/_lib/buildFormatLongFn.js","../node_modules/date-fns/locale/en-US/_lib/formatLong.js","../node_modules/date-fns/locale/en-US/_lib/formatRelative.js","../node_modules/date-fns/locale/_lib/buildLocalizeFn.js","../node_modules/date-fns/locale/en-US/_lib/localize.js","../node_modules/date-fns/locale/_lib/buildMatchFn.js","../node_modules/date-fns/locale/_lib/buildMatchPatternFn.js","../node_modules/date-fns/locale/en-US/_lib/match.js","../node_modules/date-fns/locale/en-US.js","../node_modules/date-fns/getDayOfYear.js","../node_modules/date-fns/getISOWeek.js","../node_modules/date-fns/getWeekYear.js","../node_modules/date-fns/startOfWeekYear.js","../node_modules/date-fns/getWeek.js","../node_modules/date-fns/_lib/addLeadingZeros.js","../node_modules/date-fns/_lib/format/lightFormatters.js","../node_modules/date-fns/_lib/format/formatters.js","../node_modules/date-fns/_lib/format/longFormatters.js","../node_modules/date-fns/_lib/protectedTokens.js","../node_modules/date-fns/format.js","../node_modules/date-fns/getDay.js","../node_modules/date-fns/getDaysInMonth.js","../node_modules/date-fns/getDefaultOptions.js","../node_modules/date-fns/getHours.js","../node_modules/date-fns/getISODay.js","../node_modules/date-fns/getMinutes.js","../node_modules/date-fns/getMonth.js","../node_modules/date-fns/getSeconds.js","../node_modules/date-fns/getYear.js","../node_modules/date-fns/isAfter.js","../node_modules/date-fns/isBefore.js","../node_modules/date-fns/isEqual.js","../node_modules/date-fns/transpose.js","../node_modules/date-fns/parse/_lib/Setter.js","../node_modules/date-fns/parse/_lib/Parser.js","../node_modules/date-fns/parse/_lib/parsers/EraParser.js","../node_modules/date-fns/parse/_lib/constants.js","../node_modules/date-fns/parse/_lib/utils.js","../node_modules/date-fns/parse/_lib/parsers/YearParser.js","../node_modules/date-fns/parse/_lib/parsers/LocalWeekYearParser.js","../node_modules/date-fns/parse/_lib/parsers/ISOWeekYearParser.js","../node_modules/date-fns/parse/_lib/parsers/ExtendedYearParser.js","../node_modules/date-fns/parse/_lib/parsers/QuarterParser.js","../node_modules/date-fns/parse/_lib/parsers/StandAloneQuarterParser.js","../node_modules/date-fns/parse/_lib/parsers/MonthParser.js","../node_modules/date-fns/parse/_lib/parsers/StandAloneMonthParser.js","../node_modules/date-fns/setWeek.js","../node_modules/date-fns/parse/_lib/parsers/LocalWeekParser.js","../node_modules/date-fns/setISOWeek.js","../node_modules/date-fns/parse/_lib/parsers/ISOWeekParser.js","../node_modules/date-fns/parse/_lib/parsers/DateParser.js","../node_modules/date-fns/parse/_lib/parsers/DayOfYearParser.js","../node_modules/date-fns/setDay.js","../node_modules/date-fns/parse/_lib/parsers/DayParser.js","../node_modules/date-fns/parse/_lib/parsers/LocalDayParser.js","../node_modules/date-fns/parse/_lib/parsers/StandAloneLocalDayParser.js","../node_modules/date-fns/setISODay.js","../node_modules/date-fns/parse/_lib/parsers/ISODayParser.js","../node_modules/date-fns/parse/_lib/parsers/AMPMParser.js","../node_modules/date-fns/parse/_lib/parsers/AMPMMidnightParser.js","../node_modules/date-fns/parse/_lib/parsers/DayPeriodParser.js","../node_modules/date-fns/parse/_lib/parsers/Hour1to12Parser.js","../node_modules/date-fns/parse/_lib/parsers/Hour0to23Parser.js","../node_modules/date-fns/parse/_lib/parsers/Hour0To11Parser.js","../node_modules/date-fns/parse/_lib/parsers/Hour1To24Parser.js","../node_modules/date-fns/parse/_lib/parsers/MinuteParser.js","../node_modules/date-fns/parse/_lib/parsers/SecondParser.js","../node_modules/date-fns/parse/_lib/parsers/FractionOfSecondParser.js","../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneWithZParser.js","../node_modules/date-fns/parse/_lib/parsers/ISOTimezoneParser.js","../node_modules/date-fns/parse/_lib/parsers/TimestampSecondsParser.js","../node_modules/date-fns/parse/_lib/parsers/TimestampMillisecondsParser.js","../node_modules/date-fns/parse/_lib/parsers.js","../node_modules/date-fns/parse.js","../node_modules/date-fns/isSameQuarter.js","../node_modules/date-fns/subDays.js","../node_modules/date-fns/setMonth.js","../node_modules/date-fns/set.js","../node_modules/date-fns/setHours.js","../node_modules/date-fns/setMilliseconds.js","../node_modules/date-fns/setMinutes.js","../node_modules/date-fns/setSeconds.js","../node_modules/date-fns/setYear.js","../node_modules/date-fns/subMonths.js","../node_modules/date-fns/sub.js","../node_modules/date-fns/subYears.js","../node_modules/@vuepic/vue-datepicker/dist/vue-datepicker.js","../node_modules/@nextcloud/vue/dist/chunks/NcTimezonePicker.vue_vue_type_script_setup_true_lang-8CBGI3yi.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcDateTimePicker-DksKisgE.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcFilePicker-DtOsHB4q.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcKbd-DE1emmb_.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcHotkeyList-CHLWkWfY.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcListItemIcon-DJJR4RtI.mjs","../node_modules/tributejs/dist/tribute.esm.js","../node_modules/@nextcloud/vue/dist/chunks/NcProgressBar-JyXXoHLT.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRelatedResourcesPanel-Cn27rj0H.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcRichContenteditable-BREsny-v.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSelectUsers-B9ZFtd6B.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcSettingsSelectGroup-CupkYUPJ.mjs","../node_modules/@nextcloud/vue/dist/chunks/NcTextArea-CseOD9aM.mjs"],"sourcesContent":["import '../assets/NcActionButtonGroup-Bt8kRk79.css';\nimport { defineComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createElementVNode, renderSlot } from \"vue\";\nimport { r as register, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { a as NC_ACTIONS_IS_SEMANTIC_MENU } from \"./useNcActions-BzPO2c4h.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister();\nconst _sfc_main = defineComponent({\n name: \"NcActionButtonGroup\",\n inject: {\n isInSemanticMenu: {\n from: NC_ACTIONS_IS_SEMANTIC_MENU,\n default: false\n }\n },\n props: {\n /**\n * Optional text shown below the button group\n */\n name: {\n required: false,\n default: void 0,\n type: String\n }\n },\n setup() {\n return {\n labelId: createElementId()\n };\n },\n methods: {\n t\n }\n});\nconst _hoisted_1 = [\"role\"];\nconst _hoisted_2 = [\"id\"];\nconst _hoisted_3 = [\"aria-labelledby\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"li\", {\n class: \"nc-button-group-base\",\n role: _ctx.isInSemanticMenu && \"presentation\"\n }, [\n _ctx.name ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: _ctx.labelId\n }, toDisplayString(_ctx.name), 9, _hoisted_2)) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", {\n class: \"nc-button-group-content\",\n role: \"group\",\n \"aria-labelledby\": _ctx.name ? _ctx.labelId : void 0\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 8, _hoisted_3)\n ], 8, _hoisted_1);\n}\nconst NcActionButtonGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-6a2b8de0\"]]);\nexport {\n NcActionButtonGroup as N\n};\n//# sourceMappingURL=NcActionButtonGroup-CrbcMWK-.mjs.map\n","import '../assets/NcAppNavigation-f2zUqaiQ.css';\nimport { defineComponent, useModel, computed, openBlock, createElementBlock, createVNode, unref, withCtx, inject, warn, useTemplateRef, ref, watchEffect, watch, onMounted, onUnmounted, normalizeClass, createElementVNode, withKeys, renderSlot, createBlock, createCommentVNode } from \"vue\";\nimport { subscribe, emit, unsubscribe } from \"@nextcloud/event-bus\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { N as NcAppNavigationList } from \"./NcAppNavigationList-CGSWabRB.mjs\";\nimport { G as mdiMenuOpen, H as mdiMenu } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { r as register, P as t20, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { H as HAS_APP_NAVIGATION_KEY } from \"./constants-Ciwvl5xb.mjs\";\nregister(t20);\nconst _hoisted_1$1 = { class: \"app-navigation-toggle-wrapper\" };\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationToggle\",\n props: {\n \"open\": { type: Boolean, ...{ required: true } },\n \"openModifiers\": {}\n },\n emits: [\"update:open\"],\n setup(__props) {\n const open = useModel(__props, \"open\");\n const title = computed(() => open.value ? t(\"Close navigation\") : t(\"Open navigation\"));\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createVNode(unref(NcButton), {\n class: \"app-navigation-toggle\",\n \"aria-controls\": \"app-navigation-vue\",\n \"aria-expanded\": open.value ? \"true\" : \"false\",\n \"aria-label\": title.value,\n title: title.value,\n variant: \"tertiary\",\n onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: open.value ? unref(mdiMenuOpen) : unref(mdiMenu)\n }, null, 8, [\"path\"])\n ]),\n _: 1\n }, 8, [\"aria-expanded\", \"aria-label\", \"title\"])\n ]);\n };\n }\n});\nconst NcAppNavigationToggle = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__scopeId\", \"data-v-5a15295d\"]]);\nconst _hoisted_1 = [\"aria-hidden\", \"aria-label\", \"aria-labelledby\", \"inert\"];\nconst _hoisted_2 = { class: \"app-navigation__search\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigation\",\n props: {\n ariaLabel: {},\n ariaLabelledby: {}\n },\n setup(__props) {\n const props = __props;\n let focusTrap;\n const setHasAppNavigation = inject(\n HAS_APP_NAVIGATION_KEY,\n () => warn(\"NcAppNavigation is not mounted inside NcContent, this is probably an error.\"),\n false\n );\n const appNavigationContainerElement = useTemplateRef(\"appNavigationContainer\");\n const isMobile = useIsMobile();\n const open = ref(!isMobile.value);\n watchEffect(() => {\n if (!props.ariaLabel && !props.ariaLabelledby) {\n warn(\"NcAppNavigation requires either `ariaLabel` or `ariaLabelledby` to be set for accessibility.\");\n }\n });\n watch(isMobile, () => {\n open.value = !isMobile.value;\n });\n watch(open, () => {\n toggleFocusTrap();\n });\n onMounted(() => {\n setHasAppNavigation(true);\n subscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n emit(\"navigation-toggled\", {\n open: open.value\n });\n focusTrap = createFocusTrap(appNavigationContainerElement.value, {\n allowOutsideClick: true,\n fallbackFocus: appNavigationContainerElement.value,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n toggleFocusTrap();\n });\n onUnmounted(() => {\n setHasAppNavigation(false);\n unsubscribe(\"toggle-navigation\", toggleNavigationByEventBus);\n focusTrap.deactivate();\n });\n function toggleNavigation(state) {\n if (open.value === state) {\n emit(\"navigation-toggled\", {\n open: open.value\n });\n return;\n }\n open.value = state === void 0 ? !open.value : state;\n const bodyStyles = getComputedStyle(document.body);\n const animationLength = parseInt(bodyStyles.getPropertyValue(\"--animation-quick\")) || 100;\n setTimeout(() => {\n emit(\"navigation-toggled\", {\n open: open.value\n });\n }, 1.5 * animationLength);\n }\n function toggleNavigationByEventBus({ open: open2 }) {\n return toggleNavigation(open2);\n }\n function toggleFocusTrap() {\n if (isMobile.value && open.value) {\n focusTrap.activate();\n } else {\n focusTrap.deactivate();\n }\n }\n function handleEsc() {\n if (isMobile.value) {\n toggleNavigation(false);\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"appNavigationContainer\",\n class: normalizeClass([\"app-navigation\", { \"app-navigation--closed\": !open.value }])\n }, [\n createElementVNode(\"nav\", {\n id: \"app-navigation-vue\",\n \"aria-hidden\": open.value ? \"false\" : \"true\",\n \"aria-label\": _ctx.ariaLabel || void 0,\n \"aria-labelledby\": _ctx.ariaLabelledby || void 0,\n class: \"app-navigation__content\",\n inert: !open.value || void 0,\n onKeydown: withKeys(handleEsc, [\"esc\"])\n }, [\n createElementVNode(\"div\", _hoisted_2, [\n renderSlot(_ctx.$slots, \"search\", {}, void 0, true)\n ]),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation__body\", { \"app-navigation__body--no-list\": !_ctx.$slots.list }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2),\n _ctx.$slots.list ? (openBlock(), createBlock(NcAppNavigationList, {\n key: 0,\n class: \"app-navigation__list\"\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"list\", {}, void 0, true)\n ]),\n _: 3\n })) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"footer\", {}, void 0, true)\n ], 40, _hoisted_1),\n createVNode(NcAppNavigationToggle, {\n open: open.value,\n \"onUpdate:open\": toggleNavigation\n }, null, 8, [\"open\"])\n ], 2);\n };\n }\n});\nconst NcAppNavigation = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-d5ce90cd\"]]);\nexport {\n NcAppNavigation as N\n};\n//# sourceMappingURL=NcAppNavigation-DQzgUarc.mjs.map\n","import '../assets/NcAppNavigationCaption-HUg9fMCm.css';\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { resolveComponent, openBlock, createBlock, resolveDynamicComponent, normalizeClass, withCtx, createTextVNode, toDisplayString, createElementBlock, createVNode, normalizeProps, guardReactiveProps, renderSlot, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = {\n name: \"NcAppNavigationCaption\",\n components: {\n NcActions\n },\n props: {\n /**\n * The text of the caption\n */\n name: {\n type: String,\n required: true\n },\n /**\n * `id` to set on the inner caption\n * Can be used for connecting the `NcActionCaption` with `NcActionList` using `aria-labelledby`.\n */\n headingId: {\n type: String,\n default: null\n },\n /**\n * Enable when used as a heading\n * e.g. Before NcAppNavigationList\n */\n isHeading: {\n type: Boolean,\n default: false\n },\n /**\n * If `isHeading` is set, this defines the heading level that should be used\n */\n headingLevel: {\n type: Number,\n default: 2\n },\n /**\n * Any [NcActions](#/Components/NcActions?id=ncactions-1) prop\n */\n // Not an actual prop but needed to show in vue-styleguidist docs\n ...NcActions.props\n },\n computed: {\n actionsProps() {\n const actionProps = Object.keys(NcActions.props);\n const props = Object.entries(this.$props).filter(([key, _value]) => actionProps.includes(key));\n return Object.fromEntries(props);\n },\n wrapperTag() {\n return this.isHeading ? \"div\" : \"li\";\n },\n captionTag() {\n const headingLevel = Math.max(2, this.headingLevel);\n return this.isHeading ? `h${headingLevel}` : \"span\";\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"app-navigation-caption__actions\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcActions = resolveComponent(\"NcActions\");\n return openBlock(), createBlock(resolveDynamicComponent($options.wrapperTag), {\n class: normalizeClass([\"app-navigation-caption\", { \"app-navigation-caption--heading\": $props.isHeading }])\n }, {\n default: withCtx(() => [\n (openBlock(), createBlock(resolveDynamicComponent($options.captionTag), {\n id: $props.headingId,\n class: \"app-navigation-caption__name\"\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($props.name), 1)\n ]),\n _: 1\n }, 8, [\"id\"])),\n !!_ctx.$slots.actions ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createVNode(_component_NcActions, normalizeProps(guardReactiveProps($options.actionsProps)), {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"actionsTriggerIcon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 3\n }, 16)\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 3\n }, 8, [\"class\"]);\n}\nconst NcAppNavigationCaption = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-21e6b451\"]]);\nexport {\n NcAppNavigationCaption as N\n};\n//# sourceMappingURL=NcAppNavigationCaption-DsM6rzrK.mjs.map\n","import '../assets/NcInputConfirmCancel-BrdZEfr2.css';\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { r as register, k as t14, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createElementVNode, withModifiers, withKeys, withDirectives, vModelText, createVNode, withCtx } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t14);\nconst _sfc_main = {\n name: \"NcInputConfirmCancel\",\n components: {\n IconArrowRight,\n IconClose,\n NcButton\n },\n props: {\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n default: false,\n type: Boolean\n },\n /**\n * Placeholder of the edit field\n */\n placeholder: {\n default: \"\",\n type: String\n },\n /**\n * The current name (model value)\n */\n modelValue: {\n default: \"\",\n type: String\n }\n },\n emits: [\n \"cancel\",\n \"confirm\",\n \"update:modelValue\"\n ],\n data() {\n return {\n labelConfirm: t(\"Confirm changes\"),\n labelCancel: t(\"Cancel changes\")\n };\n },\n computed: {\n valueModel: {\n get() {\n return this.modelValue;\n },\n set(newValue) {\n this.$emit(\"update:modelValue\", newValue);\n }\n }\n },\n methods: {\n confirm() {\n this.$emit(\"confirm\");\n },\n cancel() {\n this.$emit(\"cancel\");\n },\n focusInput() {\n this.$refs.input.focus();\n }\n }\n};\nconst _hoisted_1 = { class: \"app-navigation-input-confirm\" };\nconst _hoisted_2 = [\"placeholder\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_IconClose = resolveComponent(\"IconClose\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"form\", {\n onSubmit: _cache[1] || (_cache[1] = withModifiers((...args) => $options.confirm && $options.confirm(...args), [\"prevent\"])),\n onKeydown: _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.cancel && $options.cancel(...args), [\"exact\", \"stop\", \"prevent\"]), [\"esc\"])),\n onClick: _cache[3] || (_cache[3] = withModifiers(() => {\n }, [\"stop\", \"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"input\",\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $options.valueModel = $event),\n type: \"text\",\n class: \"app-navigation-input-confirm__input\",\n placeholder: $props.placeholder\n }, null, 8, _hoisted_2), [\n [vModelText, $options.valueModel]\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.labelConfirm,\n type: \"submit\",\n variant: \"primary\",\n onClick: withModifiers($options.confirm, [\"stop\", \"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconArrowRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.labelCancel,\n type: \"reset\",\n variant: $props.primary ? \"primary\" : \"tertiary\",\n onClick: withModifiers($options.cancel, [\"stop\", \"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"variant\", \"onClick\"])\n ], 32)\n ]);\n}\nconst NcInputConfirmCancel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-dd457d48\"]]);\nexport {\n NcInputConfirmCancel as N\n};\n//# sourceMappingURL=NcInputConfirmCancel-Ch0byKa3.mjs.map\n","import '../assets/NcAppNavigationItem-qicc4X_c.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, normalizeClass, withCtx, resolveDynamicComponent, normalizeProps, guardReactiveProps, withKeys, withModifiers, renderSlot, createVNode, createTextVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { r as register, N as t21, a as t, b as t51, O as t23 } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { N as NcInputConfirmCancel } from \"./NcInputConfirmCancel-Ch0byKa3.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BuRnYpJX.mjs\";\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport { _ as _sfc_main$4 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nconst _sfc_main$3 = {\n name: \"PencilIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20.71,7.04C21.1,6.65 21.1,6 20.71,5.63L18.37,3.29C18,2.9 17.35,2.9 16.96,3.29L15.12,5.12L18.87,8.87M3,17.25V21H6.75L17.81,9.93L14.06,6.18L3,17.25Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon pencil-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst Pencil = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n name: \"UndoIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon undo-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst Undo = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t21);\nconst _sfc_main$1 = {\n name: \"NcAppNavigationIconCollapsible\",\n components: {\n NcButton,\n ChevronDown,\n ChevronUp\n },\n props: {\n /**\n * Is the list currently open (or collapsed)\n */\n open: {\n type: Boolean,\n required: true\n },\n /**\n * Is the navigation item currently active.\n */\n active: {\n type: Boolean,\n required: true\n }\n },\n emits: [\"click\"],\n computed: {\n labelButton() {\n return this.open ? t(\"Collapse menu\") : t(\"Open menu\");\n }\n },\n methods: {\n onClick(e) {\n this.$emit(\"click\", e);\n }\n }\n};\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n return openBlock(), createBlock(_component_NcButton, {\n class: normalizeClass([\"icon-collapse\", {\n \"icon-collapse--active\": $props.active,\n \"icon-collapse--open\": $props.open\n }]),\n \"aria-label\": $options.labelButton,\n variant: $props.active ? \"tertiary-on-primary\" : \"tertiary\",\n onClick: $options.onClick\n }, {\n icon: withCtx(() => [\n $props.open ? (openBlock(), createBlock(_component_ChevronUp, {\n key: 0,\n size: 20\n })) : (openBlock(), createBlock(_component_ChevronDown, {\n key: 1,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"class\", \"aria-label\", \"variant\", \"onClick\"]);\n}\nconst NcAppNavigationIconCollapsible = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-e6236e50\"]]);\nregister(t23, t51);\nconst _sfc_main = {\n name: \"NcAppNavigationItem\",\n components: {\n NcActions,\n NcActionButton,\n NcAppNavigationIconCollapsible,\n NcInputConfirmCancel,\n NcLoadingIcon,\n NcVNodes: _sfc_main$4,\n Pencil,\n Undo\n },\n props: {\n /**\n * If you are not using vue-router you can use the property to set this item as the active navigation entry.\n * When using vue-router and the `to` property this is set automatically.\n */\n active: {\n type: Boolean,\n default: false\n },\n /**\n * The main text content of the entry.\n */\n name: {\n type: String,\n required: true\n },\n /**\n * The title attribute of the element.\n */\n title: {\n type: String,\n default: null\n },\n /**\n * id attribute of the list item element\n */\n id: {\n type: String,\n default: () => createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * Refers to the icon on the left, this prop accepts a class\n * like 'icon-category-enabled'.\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * Displays a loading animated icon on the left of the element\n * instead of the icon.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Passing in a route will make the root element of this\n * component a `` that points to that route.\n * By leaving this blank, the root element will be a `
  • `.\n */\n to: {\n type: [String, Object],\n default: null\n },\n /**\n * A direct link. This will be used as the `href` attribute.\n * This will ignore any `to` prop being defined.\n */\n href: {\n type: String,\n default: null\n },\n /**\n * Gives the possibility to collapse the children elements into the\n * parent element (true) or expands the children elements (false).\n */\n allowCollapse: {\n type: Boolean,\n default: false\n },\n /**\n * Makes the name of the item editable by providing an `ActionButton`\n * component that toggles a form\n */\n editable: {\n type: Boolean,\n default: false\n },\n /**\n * Only for 'editable' items, sets label for the edit action button.\n */\n editLabel: {\n type: String,\n default: \"\"\n },\n /**\n * Only for items in 'editable' mode, sets the placeholder text for the editing form.\n */\n editPlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Pins the item to the bottom left area, above the settings. Do not\n * place 'non-pinned' `AppnavigationItem` components below `pinned`\n * ones.\n */\n pinned: {\n type: Boolean,\n default: false\n },\n /**\n * Puts the item in the 'undo' state.\n */\n undo: {\n type: Boolean,\n default: false\n },\n /**\n * The navigation collapsible state (synced)\n */\n open: {\n type: Boolean,\n default: false\n },\n /**\n * The actions menu open state (synced)\n */\n menuOpen: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * The action's menu default icon\n */\n menuIcon: {\n type: String,\n default: void 0\n },\n /**\n * The action's menu direction\n */\n menuPlacement: {\n type: String,\n default: \"bottom\"\n },\n /**\n * Entry aria details\n */\n ariaDescription: {\n type: String,\n default: null\n },\n /**\n * To be used only when the elements in the actions menu are very important\n */\n forceDisplayActions: {\n type: Boolean,\n default: false\n },\n /**\n * Number of action items outside the menu\n */\n inlineActions: {\n type: Number,\n default: 0\n }\n },\n emits: [\n \"update:menuOpen\",\n \"update:open\",\n \"update:name\",\n \"click\",\n \"undo\"\n ],\n setup() {\n return {\n isMobile: useIsMobile()\n };\n },\n data() {\n return {\n actionsBoundariesElement: void 0,\n editingValue: \"\",\n opened: this.open,\n // Collapsible state\n editingActive: false,\n /**\n * Tracks the open state of the actions menu\n */\n menuOpenLocalValue: false,\n focused: false\n };\n },\n computed: {\n isRouterLink() {\n return this.to && !this.href;\n },\n // Checks if the component is already a children of another\n // instance of AppNavigationItem\n canHaveChildren() {\n if (this.$parent.$options._componentTag === \"AppNavigationItem\") {\n return false;\n } else {\n return true;\n }\n },\n editButtonAriaLabel() {\n return this.editLabel ? this.editLabel : t(\"Edit item\");\n },\n undoButtonAriaLabel() {\n return t(\"Undo changes\");\n }\n },\n watch: {\n open(newVal) {\n this.opened = newVal;\n }\n },\n mounted() {\n this.actionsBoundariesElement = document.querySelector(\"#content-vue\") || void 0;\n },\n methods: {\n // sync opened menu state with prop\n onMenuToggle(state) {\n this.$emit(\"update:menuOpen\", state);\n this.menuOpenLocalValue = state;\n },\n // toggle the collapsible state\n toggleCollapse() {\n this.opened = !this.opened;\n this.$emit(\"update:open\", this.opened);\n },\n /**\n * Handle link click\n *\n * @param {PointerEvent} event - Native click event\n * @param {Function} [navigate] - VueRouter link's navigate if any\n * @param {string} [routerLinkHref] - VueRouter link's href\n */\n onClick(event, navigate, routerLinkHref) {\n this.$emit(\"click\", event);\n if (event.metaKey || event.altKey || event.ctrlKey || event.shiftKey) {\n return;\n }\n if (routerLinkHref) {\n navigate?.(event);\n event.preventDefault();\n }\n },\n // Edition methods\n handleEdit() {\n this.editingValue = this.name;\n this.editingActive = true;\n this.onMenuToggle(false);\n this.$nextTick(() => {\n this.$refs.editingInput.focusInput();\n });\n },\n cancelEditing() {\n this.editingActive = false;\n },\n handleEditingDone() {\n this.$emit(\"update:name\", this.editingValue);\n this.editingValue = \"\";\n this.editingActive = false;\n },\n // Undo methods\n handleUndo() {\n this.$emit(\"undo\");\n },\n /**\n * Show actions upon focus\n */\n handleFocus() {\n this.focused = true;\n },\n handleBlur() {\n this.focused = false;\n },\n /**\n * This method checks if the root element of the component is focused and\n * if that's the case it focuses the actions button if available\n *\n * @param {Event} e the keydown event\n */\n handleTab(e) {\n if (!this.$refs.actions) {\n return;\n }\n if (this.focused) {\n e.preventDefault();\n this.$refs.actions.$refs.triggerButton.$el.focus();\n this.focused = false;\n } else {\n this.$refs.actions.$refs.triggerButton.$el.blur();\n }\n },\n /**\n * Is this an external link\n *\n * @param {string} href The link to check\n * @return {boolean} Whether it is external or not\n */\n isExternal(href) {\n return href && href.match(/[a-z]+:\\/\\//i);\n }\n }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = [\"aria-current\", \"aria-description\", \"aria-expanded\", \"href\", \"target\", \"title\", \"onClick\"];\nconst _hoisted_3 = {\n key: 0,\n class: \"editingContainer\"\n};\nconst _hoisted_4 = {\n key: 1,\n class: \"app-navigation-entry__deleted\"\n};\nconst _hoisted_5 = { class: \"app-navigation-entry__deleted-description\" };\nconst _hoisted_6 = {\n key: 0,\n class: \"app-navigation-entry__counter-wrapper\"\n};\nconst _hoisted_7 = {\n key: 0,\n class: \"app-navigation-entry__children\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_NcInputConfirmCancel = resolveComponent(\"NcInputConfirmCancel\");\n const _component_Pencil = resolveComponent(\"Pencil\");\n const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n const _component_Undo = resolveComponent(\"Undo\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_NcAppNavigationIconCollapsible = resolveComponent(\"NcAppNavigationIconCollapsible\");\n return openBlock(), createElementBlock(\"li\", {\n id: $props.id,\n class: normalizeClass([{\n \"app-navigation-entry--opened\": $data.opened,\n \"app-navigation-entry--pinned\": $props.pinned,\n \"app-navigation-entry--collapsible\": $props.allowCollapse && !!_ctx.$slots.default\n }, \"app-navigation-entry-wrapper\"])\n }, [\n (openBlock(), createBlock(resolveDynamicComponent($options.isRouterLink ? \"router-link\" : \"NcVNodes\"), normalizeProps(guardReactiveProps({ ...$options.isRouterLink && { custom: true, to: $props.to } })), {\n default: withCtx(({ href: routerLinkHref, navigate, isActive }) => [\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation-entry\", {\n \"app-navigation-entry--editing\": $data.editingActive,\n \"app-navigation-entry--deleted\": $props.undo,\n active: $props.to && isActive || $props.active\n }])\n }, [\n !$props.undo ? (openBlock(), createElementBlock(\"a\", {\n key: 0,\n class: \"app-navigation-entry-link\",\n \"aria-current\": $props.active || $props.to && isActive ? \"page\" : void 0,\n \"aria-description\": $props.ariaDescription,\n \"aria-expanded\": !!_ctx.$slots.default ? $data.opened.toString() : void 0,\n href: $props.href || routerLinkHref || \"#\",\n target: $options.isExternal($props.href) ? \"_blank\" : void 0,\n title: $props.title || $props.name,\n onBlur: _cache[1] || (_cache[1] = (...args) => $options.handleBlur && $options.handleBlur(...args)),\n onClick: ($event) => $options.onClick($event, navigate, routerLinkHref),\n onFocus: _cache[2] || (_cache[2] = (...args) => $options.handleFocus && $options.handleFocus(...args)),\n onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.handleTab && $options.handleTab(...args), [\"exact\"]), [\"tab\"]))\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-navigation-entry-icon\", { [$props.icon]: $props.icon }])\n }, [\n $props.loading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : renderSlot(_ctx.$slots, \"icon\", {\n key: 1,\n active: $props.active || $props.to && isActive\n }, void 0, true)\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass([\"app-navigation-entry__name\", { \"hidden-visually\": $data.editingActive }])\n }, toDisplayString($props.name), 3),\n $data.editingActive ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n createVNode(_component_NcInputConfirmCancel, {\n ref: \"editingInput\",\n modelValue: $data.editingValue,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.editingValue = $event),\n placeholder: $props.editPlaceholder !== \"\" ? $props.editPlaceholder : $props.name,\n primary: $props.to && isActive || $props.active,\n onCancel: $options.cancelEditing,\n onConfirm: $options.handleEditingDone\n }, null, 8, [\"modelValue\", \"placeholder\", \"primary\", \"onCancel\", \"onConfirm\"])\n ])) : createCommentVNode(\"\", true)\n ], 40, _hoisted_2)) : createCommentVNode(\"\", true),\n $props.undo ? (openBlock(), createElementBlock(\"div\", _hoisted_4, [\n createElementVNode(\"div\", _hoisted_5, toDisplayString($props.name), 1)\n ])) : createCommentVNode(\"\", true),\n (!!_ctx.$slots.actions || !!_ctx.$slots.counter || $props.editable || $props.undo) && !$data.editingActive ? (openBlock(), createElementBlock(\"div\", {\n key: 2,\n class: normalizeClass([\"app-navigation-entry__utils\", { \"app-navigation-entry__utils--display-actions\": $props.forceDisplayActions || $data.menuOpenLocalValue || $props.menuOpen }])\n }, [\n !!_ctx.$slots.counter ? (openBlock(), createElementBlock(\"div\", _hoisted_6, [\n renderSlot(_ctx.$slots, \"counter\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true),\n !!_ctx.$slots.actions || $props.editable && !$data.editingActive || $props.undo ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n ref: \"actions\",\n class: \"app-navigation-entry__actions\",\n container: \"#app-navigation-vue\",\n boundariesElement: $data.actionsBoundariesElement,\n inline: $props.inlineActions,\n placement: $props.menuPlacement,\n open: $props.menuOpen,\n forceMenu: $props.forceMenu,\n defaultIcon: $props.menuIcon,\n variant: $props.to && isActive || $props.active ? \"tertiary-on-primary\" : \"tertiary\",\n \"onUpdate:open\": $options.onMenuToggle\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"menu-icon\", {}, void 0, true)\n ]),\n default: withCtx(() => [\n $props.editable && !$data.editingActive ? (openBlock(), createBlock(_component_NcActionButton, {\n key: 0,\n \"aria-label\": $options.editButtonAriaLabel,\n onClick: $options.handleEdit\n }, {\n icon: withCtx(() => [\n createVNode(_component_Pencil, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString($props.editLabel), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n $props.undo ? (openBlock(), createBlock(_component_NcActionButton, {\n key: 1,\n \"aria-label\": $options.undoButtonAriaLabel,\n onClick: $options.handleUndo\n }, {\n icon: withCtx(() => [\n createVNode(_component_Undo, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"onClick\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ]),\n _: 2\n }, 1032, [\"boundariesElement\", \"inline\", \"placement\", \"open\", \"forceMenu\", \"defaultIcon\", \"variant\", \"onUpdate:open\"])) : createCommentVNode(\"\", true)\n ], 2)) : createCommentVNode(\"\", true),\n $props.allowCollapse && !!_ctx.$slots.default ? (openBlock(), createBlock(_component_NcAppNavigationIconCollapsible, {\n key: 3,\n active: $props.to && isActive || $props.active,\n open: $data.opened,\n onClick: withModifiers($options.toggleCollapse, [\"prevent\", \"stop\"])\n }, null, 8, [\"active\", \"open\", \"onClick\"])) : createCommentVNode(\"\", true),\n renderSlot(_ctx.$slots, \"extra\", {}, void 0, true)\n ], 2)\n ]),\n _: 3\n }, 16)),\n $options.canHaveChildren && !!_ctx.$slots.default ? (openBlock(), createElementBlock(\"ul\", _hoisted_7, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 10, _hoisted_1);\n}\nconst NcAppNavigationItem = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f925f8d0\"]]);\nexport {\n NcAppNavigationItem as N\n};\n//# sourceMappingURL=NcAppNavigationItem-XSXn3qhJ.mjs.map\n","import '../assets/NcAppNavigationSearch-Bpd_RlYz.css';\nimport { defineComponent, useModel, useSlots, ref, useTemplateRef, watch, openBlock, createElementBlock, normalizeClass, createVNode, unref, withCtx, renderSlot, createCommentVNode, mergeModels, nextTick } from \"vue\";\nimport { useFocusWithin } from \"@vueuse/core\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { N as NcInputField } from \"./NcInputField-CPL-a_MM.mjs\";\nimport { r as register, C as t44, u as t16, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t16, t44);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSearch\",\n props: /* @__PURE__ */ mergeModels({\n /**\n * Text used to label the search input\n */\n label: {\n type: String,\n default: t(\"Search …\")\n },\n /**\n * Placeholder of the search input\n * By default the value of `label` is used.\n */\n placeholder: {\n type: String,\n default: null\n }\n }, {\n \"modelValue\": { default: \"\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const model = useModel(__props, \"modelValue\");\n const slots = useSlots();\n const inputElement = ref();\n const { focused: inputHasFocus } = useFocusWithin(inputElement);\n const transitionTimeout = Number.parseInt(window.getComputedStyle(window.document.body).getPropertyValue(\"--animation-quick\")) || 100;\n const actionsContainerElement = useTemplateRef(\"actionsContainer\");\n const hasActions = () => !!slots.actions?.({});\n const showActions = ref(true);\n const timeoutId = ref();\n const hideActions = ref(false);\n watch(inputHasFocus, () => {\n showActions.value = !inputHasFocus.value;\n window.clearTimeout(timeoutId.value);\n if (showActions.value) {\n hideActions.value = false;\n } else {\n window.setTimeout(() => {\n hideActions.value = !showActions.value;\n }, transitionTimeout);\n }\n });\n function onCloseSearch() {\n model.value = \"\";\n if (hasActions()) {\n showActions.value = true;\n nextTick(() => actionsContainerElement.value?.querySelector(\"button\")?.focus());\n }\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"app-navigation-search\", {\n \"app-navigation-search--has-actions\": hasActions()\n }])\n }, [\n createVNode(NcInputField, {\n ref_key: \"inputElement\",\n ref: inputElement,\n modelValue: model.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => model.value = $event),\n \"aria-label\": __props.label,\n class: \"app-navigation-search__input\",\n labelOutside: \"\",\n placeholder: __props.placeholder ?? __props.label,\n showTrailingButton: \"\",\n trailingButtonLabel: unref(t)(\"Clear search\"),\n type: \"search\",\n onTrailingButtonClick: onCloseSearch\n }, {\n \"trailing-button-icon\": withCtx(() => [\n createVNode(IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label\", \"placeholder\", \"trailingButtonLabel\"]),\n hasActions() ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n ref: \"actionsContainer\",\n class: normalizeClass([\"app-navigation-search__actions\", {\n \"app-navigation-search__actions--hidden\": !showActions.value,\n \"hidden-visually\": hideActions.value\n }])\n }, [\n renderSlot(_ctx.$slots, \"actions\", {}, void 0, true)\n ], 2)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcAppNavigationSearch = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9f5c0794\"]]);\nexport {\n NcAppNavigationSearch as N\n};\n//# sourceMappingURL=NcAppNavigationSearch-DpcjjmY5.mjs.map\n","import '../assets/NcAppNavigationSettings-BmfpoWXN.css';\nimport { defineComponent, ref, useTemplateRef, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, createVNode, unref, withCtx, createTextVNode, toDisplayString, Transition, withDirectives, renderSlot, vShow } from \"vue\";\nimport { C as mdiCog, D as mdiCogOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { onClickOutside } from \"@vueuse/core\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { r as register, B as t47, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { i as isLegacy } from \"./legacy-DcjXBL_t.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t47);\nconst _hoisted_1 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppNavigationSettings\",\n props: {\n excludeClickOutsideSelectors: { default: () => [] },\n name: { default: () => t(\"Settings\") }\n },\n setup(__props) {\n const contentId = createElementId();\n const open = ref(false);\n const container2 = useTemplateRef(\"wrapperElement\");\n const ignore = computed(() => Array.isArray(__props.excludeClickOutsideSelectors) ? __props.excludeClickOutsideSelectors : __props.excludeClickOutsideSelectors.split(\" \"));\n onClickOutside(container2, () => {\n open.value = false;\n }, { ignore });\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n ref: \"wrapperElement\",\n class: normalizeClass(_ctx.$style.container)\n }, [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.$style.header)\n }, [\n createVNode(NcButton, {\n \"aria-controls\": unref(contentId),\n \"aria-expanded\": open.value ? \"true\" : \"false\",\n class: normalizeClass(_ctx.$style.button),\n alignment: \"start\",\n variant: \"tertiary\",\n wide: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => open.value = !open.value)\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: unref(isLegacy) ? unref(mdiCog) : unref(mdiCogOutline)\n }, null, 8, [\"path\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(_ctx.name), 1)\n ]),\n _: 1\n }, 8, [\"aria-controls\", \"aria-expanded\", \"class\"])\n ], 2),\n createVNode(Transition, {\n enterActiveClass: _ctx.$style.animationActive,\n leaveActiveClass: _ctx.$style.animationActive,\n enterFromClass: _ctx.$style.animationStop,\n leaveToClass: _ctx.$style.animationStop\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"div\", {\n id: unref(contentId),\n class: normalizeClass(_ctx.$style.content)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 10, _hoisted_1), [\n [vShow, open.value]\n ])\n ]),\n _: 3\n }, 8, [\"enterActiveClass\", \"leaveActiveClass\", \"enterFromClass\", \"leaveToClass\"])\n ], 2);\n };\n }\n});\nconst container = \"_container_RFk6U\";\nconst header = \"_header_2CtDS\";\nconst button = \"_button_tAyis\";\nconst content = \"_content_--KYD\";\nconst animationActive = \"_animationActive_DAG1p\";\nconst animationStop = \"_animationStop_fWYQj\";\nconst style0 = {\n container,\n header,\n button,\n content,\n animationActive,\n animationStop\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppNavigationSettings = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcAppNavigationSettings as N\n};\n//# sourceMappingURL=NcAppNavigationSettings-CxjLIB1E.mjs.map\n","import '../assets/NcAppSettingsDialog-Ckc0OWTs.css';\nimport { defineComponent, inject, openBlock, createElementBlock, normalizeClass, unref, toDisplayString, useModel, provide, toRef, useTemplateRef, ref, computed, onBeforeUnmount, warn, createBlock, createSlots, withCtx, createElementVNode, renderSlot, createCommentVNode, Fragment, renderList, withKeys, withModifiers, mergeModels } from \"vue\";\nimport debounce from \"debounce\";\nimport { N as NcDialog } from \"./NcDialog-nDc1gW50.mjs\";\nimport { _ as _sfc_main$2 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { u as useLocalizedAppName, A as APP_VERSION } from \"./appName-DyNMVZpX.mjs\";\nimport { A as APP_SETTINGS_LEGACY_DESIGN_KEY, a as APP_SETTINGS_REGISTRATION_KEY } from \"./useAppSettingsDialog-C73Wx6iQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { useIsMobile } from \"../composables/useIsMobile/index.mjs\";\nimport { r as register, I as t48, a as t } from \"./_l10n-BklkVPDO.mjs\";\nconst _sfc_main$1 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialogVersion\",\n setup(__props) {\n const legacy = inject(APP_SETTINGS_LEGACY_DESIGN_KEY);\n const localizedAppName = useLocalizedAppName();\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([_ctx.$style.appSettingsDialogVersion, { [_ctx.$style.appSettingsDialogVersion__legacy]: unref(legacy) }])\n }, toDisplayString(unref(localizedAppName)) + \" \" + toDisplayString(unref(APP_VERSION)), 3);\n };\n }\n});\nconst appSettingsDialogVersion = \"_appSettingsDialogVersion_8Xr7R\";\nconst appSettingsDialogVersion__legacy = \"_appSettingsDialogVersion__legacy_7MO71\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_qDIHA\",\n appSettingsDialogVersion,\n appSettingsDialogVersion__legacy\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSettingsDialogVersion = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"__cssModules\", cssModules]]);\nregister(t48);\nconst _hoisted_1 = {\n key: 0,\n class: \"navigation-list\"\n};\nconst _hoisted_2 = [\"aria-current\", \"href\", \"onClick\", \"onKeydown\"];\nconst _hoisted_3 = {\n key: 0,\n class: \"navigation-list__link-icon\"\n};\nconst _hoisted_4 = { class: \"navigation-list__link-text\" };\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsDialog\",\n props: /* @__PURE__ */ mergeModels({\n showNavigation: { type: Boolean },\n container: { default: \"body\" },\n name: { default: \"\" },\n additionalTrapElements: { default: () => [] },\n legacy: { type: Boolean, default: false },\n noVersion: { type: Boolean, default: false }\n }, {\n \"open\": { type: Boolean, ...{ required: true } },\n \"openModifiers\": {}\n }),\n emits: [\"update:open\"],\n setup(__props) {\n const open = useModel(__props, \"open\");\n const props = __props;\n provide(APP_SETTINGS_REGISTRATION_KEY, {\n registerSection,\n unregisterSection\n });\n provide(APP_SETTINGS_LEGACY_DESIGN_KEY, toRef(() => props.legacy));\n const settingsScrollerElement = useTemplateRef(\"settingsScroller\");\n const isMobile = useIsMobile();\n const selectedSection = ref(\"\");\n const linkClicked = ref(false);\n const registeredSections = ref([]);\n const hasNavigation = computed(() => !isMobile.value && props.showNavigation);\n const hasNavigationIcons = computed(() => registeredSections.value.some(({ icon }) => !!icon));\n const unfocusNavigationItem = debounce(() => {\n selectedSection.value = \"\";\n if (document.activeElement?.className.includes(\"navigation-list__link\")) {\n document.activeElement.blur();\n }\n }, 300);\n const sectionsOrderMap = /* @__PURE__ */ new Map();\n onBeforeUnmount(() => {\n sectionsOrderMap.clear();\n });\n function handleSettingsNavigationClick(item) {\n linkClicked.value = true;\n document.getElementById(\"settings-section_\" + item).scrollIntoView({\n behavior: \"smooth\",\n inline: \"nearest\"\n });\n selectedSection.value = item;\n setTimeout(() => {\n linkClicked.value = false;\n }, 1e3);\n }\n function handleCloseModal(isOpen) {\n if (isOpen) {\n return;\n }\n open.value = false;\n settingsScrollerElement.value.scrollTop = 0;\n }\n function handleScroll() {\n if (open.value && !linkClicked.value) {\n unfocusNavigationItem();\n }\n }\n function registerSection(id, name, order, icon) {\n if (registeredSections.value.some(({ id: otherId }) => id === otherId)) {\n throw new Error(`Duplicate section id found: ${id}. Settings navigation sections must have unique section ids.`);\n }\n if (registeredSections.value.some(({ name: otherName }) => name === otherName)) {\n warn(`Duplicate section name found: ${name}. Settings navigation sections must have unique section names.`);\n }\n if (order !== void 0) {\n sectionsOrderMap.set(id, order);\n } else if (sectionsOrderMap.has(id)) {\n order = sectionsOrderMap.get(id);\n } else {\n order = Math.max(0, ...sectionsOrderMap.values()) + 1;\n sectionsOrderMap.set(id, order);\n }\n registeredSections.value = [...registeredSections.value, { id, name, order, icon }].sort(({ order: orderA }, { order: orderB }) => {\n return orderA - orderB;\n });\n if (registeredSections.value.length === 1) {\n selectedSection.value = id;\n }\n }\n function unregisterSection(id) {\n registeredSections.value = registeredSections.value.filter(({ id: otherId }) => id !== otherId);\n if (selectedSection.value === id) {\n selectedSection.value = registeredSections.value[0]?.id ?? \"\";\n }\n }\n return (_ctx, _cache) => {\n return open.value ? (openBlock(), createBlock(NcDialog, {\n key: 0,\n class: \"app-settings\",\n contentClasses: \"app-settings__content\",\n navigationClasses: \"app-settings__navigation\",\n additionalTrapElements: _ctx.additionalTrapElements,\n container: _ctx.container,\n closeOnClickOutside: \"\",\n \"navigation-aria-label\": unref(t)(\"Settings navigation\"),\n size: \"large\",\n name: _ctx.name,\n \"onUpdate:open\": handleCloseModal\n }, createSlots({\n default: withCtx(() => [\n createElementVNode(\"div\", {\n ref: \"settingsScroller\",\n onScroll: handleScroll\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true),\n !_ctx.noVersion ? (openBlock(), createBlock(NcAppSettingsDialogVersion, { key: 0 })) : createCommentVNode(\"\", true)\n ], 544)\n ]),\n _: 2\n }, [\n hasNavigation.value ? {\n name: \"navigation\",\n fn: withCtx(({ isCollapsed }) => [\n !isCollapsed ? (openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(registeredSections.value, (section) => {\n return openBlock(), createElementBlock(\"li\", {\n key: section.id\n }, [\n createElementVNode(\"a\", {\n \"aria-current\": `${section.id === selectedSection.value}`,\n class: normalizeClass([\"navigation-list__link\", {\n \"navigation-list__link--active\": section.id === selectedSection.value,\n \"navigation-list__link--icon\": hasNavigationIcons.value\n }]),\n href: `#settings-section_${section.id}`,\n tabindex: \"0\",\n onClick: withModifiers(($event) => handleSettingsNavigationClick(section.id), [\"prevent\"]),\n onKeydown: withKeys(($event) => handleSettingsNavigationClick(section.id), [\"enter\"])\n }, [\n hasNavigationIcons.value ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n section.icon ? (openBlock(), createBlock(_sfc_main$2, {\n key: 0,\n vnodes: section.icon\n }, null, 8, [\"vnodes\"])) : createCommentVNode(\"\", true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_4, toDisplayString(section.name), 1)\n ], 42, _hoisted_2)\n ]);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"additionalTrapElements\", \"container\", \"navigation-aria-label\", \"name\"])) : createCommentVNode(\"\", true);\n };\n }\n});\nconst NcAppSettingsDialog = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-9445186a\"]]);\nexport {\n NcAppSettingsDialog as N\n};\n//# sourceMappingURL=NcAppSettingsDialog-Brgi3W2x.mjs.map\n","import '../assets/NcAppSettingsShortcutsSection-BonG0SgH.css';\nimport { defineComponent, openBlock, createBlock, unref, withCtx, createElementVNode, normalizeClass, renderSlot } from \"vue\";\nimport { N as NcAppSettingsSection } from \"./NcAppSettingsSection-B-ak1kbx.mjs\";\nimport { r as register, p as t31, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSettingsShortcutsSection\",\n setup(__props) {\n return (_ctx, _cache) => {\n return openBlock(), createBlock(NcAppSettingsSection, {\n id: \"keyboard-shortcuts\",\n name: unref(t)(\"Keyboard shortcuts\")\n }, {\n default: withCtx(() => [\n createElementVNode(\"div\", {\n class: normalizeClass(_ctx.$style.appSettingsSectionShortcuts)\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ]),\n _: 3\n }, 8, [\"name\"]);\n };\n }\n});\nconst appSettingsSectionShortcuts = \"_appSettingsSectionShortcuts_RqpkA\";\nconst style0 = {\n appSettingsSectionShortcuts\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSettingsShortcutsSection = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcAppSettingsShortcutsSection as N\n};\n//# sourceMappingURL=NcAppSettingsShortcutsSection-HmIjAN0a.mjs.map\n","// THIS FILE IS AUTOMATICALLY GENERATED DO NOT EDIT DIRECTLY\n// See update-tlds.js for encoding/decoding format\n// https://data.iana.org/TLD/tlds-alpha-by-domain.txt\nconst encodedTlds = 'aaa1rp3bb0ott3vie4c1le2ogado5udhabi7c0ademy5centure6ountant0s9o1tor4d0s1ult4e0g1ro2tna4f0l1rica5g0akhan5ency5i0g1rbus3force5tel5kdn3l0ibaba4pay4lfinanz6state5y2sace3tom5m0azon4ericanexpress7family11x2fam3ica3sterdam8nalytics7droid5quan4z2o0l2partments8p0le4q0uarelle8r0ab1mco4chi3my2pa2t0e3s0da2ia2sociates9t0hleta5torney7u0ction5di0ble3o3spost5thor3o0s4w0s2x0a2z0ure5ba0by2idu3namex4d1k2r0celona5laycard4s5efoot5gains6seball5ketball8uhaus5yern5b0c1t1va3cg1n2d1e0ats2uty4er2rlin4st0buy5t2f1g1h0arti5i0ble3d1ke2ng0o3o1z2j1lack0friday9ockbuster8g1omberg7ue3m0s1w2n0pparibas9o0ats3ehringer8fa2m1nd2o0k0ing5sch2tik2on4t1utique6x2r0adesco6idgestone9oadway5ker3ther5ussels7s1t1uild0ers6siness6y1zz3v1w1y1z0h3ca0b1fe2l0l1vinklein9m0era3p2non3petown5ital0one8r0avan4ds2e0er0s4s2sa1e1h1ino4t0ering5holic7ba1n1re3c1d1enter4o1rn3f0a1d2g1h0anel2nel4rity4se2t2eap3intai5ristmas6ome4urch5i0priani6rcle4sco3tadel4i0c2y3k1l0aims4eaning6ick2nic1que6othing5ud3ub0med6m1n1o0ach3des3ffee4llege4ogne5m0mbank4unity6pany2re3uter5sec4ndos3struction8ulting7tact3ractors9oking4l1p2rsica5untry4pon0s4rses6pa2r0edit0card4union9icket5own3s1uise0s6u0isinella9v1w1x1y0mru3ou3z2dad1nce3ta1e1ing3sun4y2clk3ds2e0al0er2s3gree4livery5l1oitte5ta3mocrat6ntal2ist5si0gn4v2hl2iamonds6et2gital5rect0ory7scount3ver5h2y2j1k1m1np2o0cs1tor4g1mains5t1wnload7rive4tv2ubai3nlop4pont4rban5vag2r2z2earth3t2c0o2deka3u0cation8e1g1mail3erck5nergy4gineer0ing9terprises10pson4quipment8r0icsson6ni3s0q1tate5t1u0rovision8s2vents5xchange6pert3osed4ress5traspace10fage2il1rwinds6th3mily4n0s2rm0ers5shion4t3edex3edback6rrari3ero6i0delity5o2lm2nal1nce1ial7re0stone6mdale6sh0ing5t0ness6j1k1lickr3ghts4r2orist4wers5y2m1o0o0d1tball6rd1ex2sale4um3undation8x2r0ee1senius7l1ogans4ntier7tr2ujitsu5n0d2rniture7tbol5yi3ga0l0lery3o1up4me0s3p1rden4y2b0iz3d0n2e0a1nt0ing5orge5f1g0ee3h1i0ft0s3ves2ing5l0ass3e1obal2o4m0ail3bh2o1x2n1odaddy5ld0point6f2o0dyear5g0le4p1t1v2p1q1r0ainger5phics5tis4een3ipe3ocery4up4s1t1u0cci3ge2ide2tars5ru3w1y2hair2mburg5ngout5us3bo2dfc0bank7ealth0care8lp1sinki6re1mes5iphop4samitsu7tachi5v2k0t2m1n1ockey4ldings5iday5medepot5goods5s0ense7nda3rse3spital5t0ing5t0els3mail5use3w2r1sbc3t1u0ghes5yatt3undai7ibm2cbc2e1u2d1e0ee3fm2kano4l1m0amat4db2mo0bilien9n0c1dustries8finiti5o2g1k1stitute6urance4e4t0ernational10uit4vestments10o1piranga7q1r0ish4s0maili5t0anbul7t0au2v3jaguar4va3cb2e0ep2tzt3welry6io2ll2m0p2nj2o0bs1urg4t1y2p0morgan6rs3uegos4niper7kaufen5ddi3e0rryhotels6properties14fh2g1h1i0a1ds2m1ndle4tchen5wi3m1n1oeln3matsu5sher5p0mg2n2r0d1ed3uokgroup8w1y0oto4z2la0caixa5mborghini8er3nd0rover6xess5salle5t0ino3robe5w0yer5b1c1ds2ease3clerc5frak4gal2o2xus4gbt3i0dl2fe0insurance9style7ghting6ke2lly3mited4o2ncoln4k2ve1ing5k1lc1p2oan0s3cker3us3l1ndon4tte1o3ve3pl0financial11r1s1t0d0a3u0ndbeck6xe1ury5v1y2ma0drid4if1son4keup4n0agement7go3p1rket0ing3s4riott5shalls7ttel5ba2c0kinsey7d1e0d0ia3et2lbourne7me1orial6n0u2rckmsd7g1h1iami3crosoft7l1ni1t2t0subishi9k1l0b1s2m0a2n1o0bi0le4da2e1i1m1nash3ey2ster5rmon3tgage6scow4to0rcycles9v0ie4p1q1r1s0d2t0n1r2u0seum3ic4v1w1x1y1z2na0b1goya4me2vy3ba2c1e0c1t0bank4flix4work5ustar5w0s2xt0direct7us4f0l2g0o2hk2i0co2ke1on3nja3ssan1y5l1o0kia3rton4w0ruz3tv4p1r0a1w2tt2u1yc2z2obi1server7ffice5kinawa6layan0group9lo3m0ega4ne1g1l0ine5oo2pen3racle3nge4g0anic5igins6saka4tsuka4t2vh3pa0ge2nasonic7ris2s1tners4s1y3y2ccw3e0t2f0izer5g1h0armacy6d1ilips5one2to0graphy6s4ysio5ics1tet2ures6d1n0g1k2oneer5zza4k1l0ace2y0station9umbing5s3m1n0c2ohl2ker3litie5rn2st3r0axi3ess3ime3o0d0uctions8f1gressive8mo2perties3y5tection8u0dential9s1t1ub2w0c2y2qa1pon3uebec3st5racing4dio4e0ad1lestate6tor2y4cipes5d0stone5umbrella9hab3ise0n3t2liance6n0t0als5pair3ort3ublican8st0aurant8view0s5xroth6ich0ardli6oh3l1o1p2o0cks3deo3gers4om3s0vp3u0gby3hr2n2w0e2yukyu6sa0arland6fe0ty4kura4le1on3msclub4ung5ndvik0coromant12ofi4p1rl2s1ve2xo3b0i1s2c0b1haeffler7midt4olarships8ol3ule3warz5ience5ot3d1e0arch3t2cure1ity6ek2lect4ner3rvices6ven3w1x0y3fr2g1h0angrila6rp3ell3ia1ksha5oes2p0ping5uji3w3i0lk2na1gles5te3j1k0i0n2y0pe4l0ing4m0art3ile4n0cf3o0ccer3ial4ftbank4ware6hu2lar2utions7ng1y2y2pa0ce3ort2t3r0l2s1t0ada2ples4r1tebank4farm7c0group6ockholm6rage3e3ream4udio2y3yle4u0cks3pplies3y2ort5rf1gery5zuki5v1watch4iss4x1y0dney4stems6z2tab1ipei4lk2obao4rget4tamotors6r2too4x0i3c0i2d0k2eam2ch0nology8l1masek5nnis4va3f1g1h0d1eater2re6iaa2ckets5enda4ps2res2ol4j0maxx4x2k0maxx5l1m0all4n1o0day3kyo3ols3p1ray3shiba5tal3urs3wn2yota3s3r0ade1ing4ining5vel0ers0insurance16ust3v2t1ube2i1nes3shu4v0s2w1z2ua1bank3s2g1k1nicom3versity8o2ol2ps2s1y1z2va0cations7na1guard7c1e0gas3ntures6risign5mögensberater2ung14sicherung10t2g1i0ajes4deo3g1king4llas4n1p1rgin4sa1ion4va1o3laanderen9n1odka3lvo3te1ing3o2yage5u2wales2mart4ter4ng0gou5tch0es6eather0channel12bcam3er2site5d0ding5ibo2r3f1hoswho6ien2ki2lliamhill9n0dows4e1ners6me2olterskluwer11odside6rk0s2ld3w2s1tc1f3xbox3erox4ihuan4n2xx2yz3yachts4hoo3maxun5ndex5e1odobashi7ga2kohama6u0tube6t1un3za0ppos4ra3ero3ip2m1one3uerich6w2';\n// Internationalized domain names containing non-ASCII\nconst encodedUtlds = 'ελ1υ2бг1ел3дети4ею2католик6ом3мкд2он1сква6онлайн5рг3рус2ф2сайт3рб3укр3қаз3հայ3ישראל5קום3ابوظبي5رامكو5لاردن4بحرين5جزائر5سعودية6عليان5مغرب5مارات5یران5بارت2زار4يتك3ھارت5تونس4سودان3رية5شبكة4عراق2ب2مان4فلسطين6قطر3كاثوليك6وم3مصر2ليسيا5وريتانيا7قع4همراه5پاکستان7ڀارت4कॉम3नेट3भारत0म्3ोत5संगठन5বাংলা5ভারত2ৰত4ਭਾਰਤ4ભારત4ଭାରତ4இந்தியா6லங்கை6சிங்கப்பூர்11భారత్5ಭಾರತ4ഭാരതം5ලංකා4คอม3ไทย3ລາວ3გე2みんな3アマゾン4クラウド4グーグル4コム2ストア3セール3ファッション6ポイント4世界2中信1国1國1文网3亚马逊3企业2佛山2信息2健康2八卦2公司1益2台湾1灣2商城1店1标2嘉里0大酒店5在线2大拿2天主教3娱乐2家電2广东2微博2慈善2我爱你3手机2招聘2政务1府2新加坡2闻2时尚2書籍2机构2淡马锡3游戏2澳門2点看2移动2组织机构4网址1店1站1络2联通2谷歌2购物2通販2集团2電訊盈科4飞利浦3食品2餐厅2香格里拉3港2닷넷1컴2삼성2한국2';\n\n/**\n * Finite State Machine generation utilities\n */\n\n/**\n * @template T\n * @typedef {{ [group: string]: T[] }} Collections\n */\n\n/**\n * @typedef {{ [group: string]: true }} Flags\n */\n\n// Keys in scanner Collections instances\nconst numeric = 'numeric';\nconst ascii = 'ascii';\nconst alpha = 'alpha';\nconst asciinumeric = 'asciinumeric';\nconst alphanumeric = 'alphanumeric';\nconst domain = 'domain';\nconst emoji = 'emoji';\nconst scheme = 'scheme';\nconst slashscheme = 'slashscheme';\nconst whitespace = 'whitespace';\n\n/**\n * @template T\n * @param {string} name\n * @param {Collections} groups to register in\n * @returns {T[]} Current list of tokens in the given collection\n */\nfunction registerGroup(name, groups) {\n if (!(name in groups)) {\n groups[name] = [];\n }\n return groups[name];\n}\n\n/**\n * @template T\n * @param {T} t token to add\n * @param {Collections} groups\n * @param {Flags} flags\n */\nfunction addToGroups(t, flags, groups) {\n if (flags[numeric]) {\n flags[asciinumeric] = true;\n flags[alphanumeric] = true;\n }\n if (flags[ascii]) {\n flags[asciinumeric] = true;\n flags[alpha] = true;\n }\n if (flags[asciinumeric]) {\n flags[alphanumeric] = true;\n }\n if (flags[alpha]) {\n flags[alphanumeric] = true;\n }\n if (flags[alphanumeric]) {\n flags[domain] = true;\n }\n if (flags[emoji]) {\n flags[domain] = true;\n }\n for (const k in flags) {\n const group = registerGroup(k, groups);\n if (group.indexOf(t) < 0) {\n group.push(t);\n }\n }\n}\n\n/**\n * @template T\n * @param {T} t token to check\n * @param {Collections} groups\n * @returns {Flags} group flags that contain this token\n */\nfunction flagsForToken(t, groups) {\n const result = {};\n for (const c in groups) {\n if (groups[c].indexOf(t) >= 0) {\n result[c] = true;\n }\n }\n return result;\n}\n\n/**\n * @template T\n * @typedef {null | T } Transition\n */\n\n/**\n * Define a basic state machine state. j is the list of character transitions,\n * jr is the list of regex-match transitions, jd is the default state to\n * transition to t is the accepting token type, if any. If this is the terminal\n * state, then it does not emit a token.\n *\n * The template type T represents the type of the token this state accepts. This\n * should be a string (such as of the token exports in `text.js`) or a\n * MultiToken subclass (from `multi.js`)\n *\n * @template T\n * @param {T} [token] Token that this state emits\n */\nfunction State(token = null) {\n // this.n = null; // DEBUG: State name\n /** @type {{ [input: string]: State }} j */\n this.j = {}; // IMPLEMENTATION 1\n // this.j = []; // IMPLEMENTATION 2\n /** @type {[RegExp, State][]} jr */\n this.jr = [];\n /** @type {?State} jd */\n this.jd = null;\n /** @type {?T} t */\n this.t = token;\n}\n\n/**\n * Scanner token groups\n * @type Collections\n */\nState.groups = {};\nState.prototype = {\n accepts() {\n return !!this.t;\n },\n /**\n * Follow an existing transition from the given input to the next state.\n * Does not mutate.\n * @param {string} input character or token type to transition on\n * @returns {?State} the next state, if any\n */\n go(input) {\n const state = this;\n const nextState = state.j[input];\n if (nextState) {\n return nextState;\n }\n for (let i = 0; i < state.jr.length; i++) {\n const regex = state.jr[i][0];\n const nextState = state.jr[i][1]; // note: might be empty to prevent default jump\n if (nextState && regex.test(input)) {\n return nextState;\n }\n }\n // Nowhere left to jump! Return default, if any\n return state.jd;\n },\n /**\n * Whether the state has a transition for the given input. Set the second\n * argument to true to only look for an exact match (and not a default or\n * regular-expression-based transition)\n * @param {string} input\n * @param {boolean} exactOnly\n */\n has(input, exactOnly = false) {\n return exactOnly ? input in this.j : !!this.go(input);\n },\n /**\n * Short for \"transition all\"; create a transition from the array of items\n * in the given list to the same final resulting state.\n * @param {string | string[]} inputs Group of inputs to transition on\n * @param {Transition | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n */\n ta(inputs, next, flags, groups) {\n for (let i = 0; i < inputs.length; i++) {\n this.tt(inputs[i], next, flags, groups);\n }\n },\n /**\n * Short for \"take regexp transition\"; defines a transition for this state\n * when it encounters a token which matches the given regular expression\n * @param {RegExp} regexp Regular expression transition (populate first)\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */\n tr(regexp, next, flags, groups) {\n groups = groups || State.groups;\n let nextState;\n if (next && next.j) {\n nextState = next;\n } else {\n // Token with maybe token groups\n nextState = new State(next);\n if (flags && groups) {\n addToGroups(next, flags, groups);\n }\n }\n this.jr.push([regexp, nextState]);\n return nextState;\n },\n /**\n * Short for \"take transitions\", will take as many sequential transitions as\n * the length of the given input and returns the\n * resulting final state.\n * @param {string | string[]} input\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of token groups\n * @returns {State} taken after the given input\n */\n ts(input, next, flags, groups) {\n let state = this;\n const len = input.length;\n if (!len) {\n return state;\n }\n for (let i = 0; i < len - 1; i++) {\n state = state.tt(input[i]);\n }\n return state.tt(input[len - 1], next, flags, groups);\n },\n /**\n * Short for \"take transition\", this is a method for building/working with\n * state machines.\n *\n * If a state already exists for the given input, returns it.\n *\n * If a token is specified, that state will emit that token when reached by\n * the linkify engine.\n *\n * If no state exists, it will be initialized with some default transitions\n * that resemble existing default transitions.\n *\n * If a state is given for the second argument, that state will be\n * transitioned to on the given input regardless of what that input\n * previously did.\n *\n * Specify a token group flags to define groups that this token belongs to.\n * The token will be added to corresponding entires in the given groups\n * object.\n *\n * @param {string} input character, token type to transition on\n * @param {T | State} [next] Transition options\n * @param {Flags} [flags] Collections flags to add token to\n * @param {Collections} [groups] Master list of groups\n * @returns {State} taken after the given input\n */\n tt(input, next, flags, groups) {\n groups = groups || State.groups;\n const state = this;\n\n // Check if existing state given, just a basic transition\n if (next && next.j) {\n state.j[input] = next;\n return next;\n }\n const t = next;\n\n // Take the transition with the usual default mechanisms and use that as\n // a template for creating the next state\n let nextState,\n templateState = state.go(input);\n if (templateState) {\n nextState = new State();\n Object.assign(nextState.j, templateState.j);\n nextState.jr.push.apply(nextState.jr, templateState.jr);\n nextState.jd = templateState.jd;\n nextState.t = templateState.t;\n } else {\n nextState = new State();\n }\n if (t) {\n // Ensure newly token is in the same groups as the old token\n if (groups) {\n if (nextState.t && typeof nextState.t === 'string') {\n const allFlags = Object.assign(flagsForToken(nextState.t, groups), flags);\n addToGroups(t, allFlags, groups);\n } else if (flags) {\n addToGroups(t, flags, groups);\n }\n }\n nextState.t = t; // overwrite anything that was previously there\n }\n state.j[input] = nextState;\n return nextState;\n }\n};\n\n// Helper functions to improve minification (not exported outside linkifyjs module)\n\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */\nconst ta = (state, input, next, flags, groups) => state.ta(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State} state\n * @param {RegExp} regexp\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */\nconst tr = (state, regexp, next, flags, groups) => state.tr(regexp, next, flags, groups);\n\n/**\n * @template T\n * @param {State} state\n * @param {string | string[]} input\n * @param {T | State} [next]\n * @param {Flags} [flags]\n * @param {Collections} [groups]\n */\nconst ts = (state, input, next, flags, groups) => state.ts(input, next, flags, groups);\n\n/**\n * @template T\n * @param {State} state\n * @param {string} input\n * @param {T | State} [next]\n * @param {Collections} [groups]\n * @param {Flags} [flags]\n */\nconst tt = (state, input, next, flags, groups) => state.tt(input, next, flags, groups);\n\n/******************************************************************************\nText Tokens\nIdentifiers for token outputs from the regexp scanner\n******************************************************************************/\n\n// A valid web domain token\nconst WORD = 'WORD'; // only contains a-z\nconst UWORD = 'UWORD'; // contains letters other than a-z, used for IDN\nconst ASCIINUMERICAL = 'ASCIINUMERICAL'; // contains a-z, 0-9\nconst ALPHANUMERICAL = 'ALPHANUMERICAL'; // contains numbers and letters other than a-z, used for IDN\n\n// Special case of word\nconst LOCALHOST = 'LOCALHOST';\n\n// Valid top-level domain, special case of WORD (see tlds.js)\nconst TLD = 'TLD';\n\n// Valid IDN TLD, special case of UWORD (see tlds.js)\nconst UTLD = 'UTLD';\n\n// The scheme portion of a web URI protocol. Supported types include: `mailto`,\n// `file`, and user-defined custom protocols. Limited to schemes that contain\n// only letters\nconst SCHEME = 'SCHEME';\n\n// Similar to SCHEME, except makes distinction for schemes that must always be\n// followed by `://`, not just `:`. Supported types include `http`, `https`,\n// `ftp`, `ftps`\nconst SLASH_SCHEME = 'SLASH_SCHEME';\n\n// Any sequence of digits 0-9\nconst NUM = 'NUM';\n\n// Any number of consecutive whitespace characters that are not newline\nconst WS = 'WS';\n\n// New line (unix style)\nconst NL = 'NL'; // \\n\n\n// Opening/closing bracket classes\n// TODO: Rename OPEN -> LEFT and CLOSE -> RIGHT in v5 to fit with Unicode names\n// Also rename angle brackes to LESSTHAN and GREATER THAN\nconst OPENBRACE = 'OPENBRACE'; // {\nconst CLOSEBRACE = 'CLOSEBRACE'; // }\nconst OPENBRACKET = 'OPENBRACKET'; // [\nconst CLOSEBRACKET = 'CLOSEBRACKET'; // ]\nconst OPENPAREN = 'OPENPAREN'; // (\nconst CLOSEPAREN = 'CLOSEPAREN'; // )\nconst OPENANGLEBRACKET = 'OPENANGLEBRACKET'; // <\nconst CLOSEANGLEBRACKET = 'CLOSEANGLEBRACKET'; // >\nconst FULLWIDTHLEFTPAREN = 'FULLWIDTHLEFTPAREN'; // (\nconst FULLWIDTHRIGHTPAREN = 'FULLWIDTHRIGHTPAREN'; // )\nconst LEFTCORNERBRACKET = 'LEFTCORNERBRACKET'; // 「\nconst RIGHTCORNERBRACKET = 'RIGHTCORNERBRACKET'; // 」\nconst LEFTWHITECORNERBRACKET = 'LEFTWHITECORNERBRACKET'; // 『\nconst RIGHTWHITECORNERBRACKET = 'RIGHTWHITECORNERBRACKET'; // 』\nconst FULLWIDTHLESSTHAN = 'FULLWIDTHLESSTHAN'; // <\nconst FULLWIDTHGREATERTHAN = 'FULLWIDTHGREATERTHAN'; // >\n\n// Various symbols\nconst AMPERSAND = 'AMPERSAND'; // &\nconst APOSTROPHE = 'APOSTROPHE'; // '\nconst ASTERISK = 'ASTERISK'; // *\nconst AT = 'AT'; // @\nconst BACKSLASH = 'BACKSLASH'; // \\\nconst BACKTICK = 'BACKTICK'; // `\nconst CARET = 'CARET'; // ^\nconst COLON = 'COLON'; // :\nconst COMMA = 'COMMA'; // ,\nconst DOLLAR = 'DOLLAR'; // $\nconst DOT = 'DOT'; // .\nconst EQUALS = 'EQUALS'; // =\nconst EXCLAMATION = 'EXCLAMATION'; // !\nconst HYPHEN = 'HYPHEN'; // -\nconst PERCENT = 'PERCENT'; // %\nconst PIPE = 'PIPE'; // |\nconst PLUS = 'PLUS'; // +\nconst POUND = 'POUND'; // #\nconst QUERY = 'QUERY'; // ?\nconst QUOTE = 'QUOTE'; // \"\nconst FULLWIDTHMIDDLEDOT = 'FULLWIDTHMIDDLEDOT'; // ・\n\nconst SEMI = 'SEMI'; // ;\nconst SLASH = 'SLASH'; // /\nconst TILDE = 'TILDE'; // ~\nconst UNDERSCORE = 'UNDERSCORE'; // _\n\n// Emoji symbol\nconst EMOJI$1 = 'EMOJI';\n\n// Default token - anything that is not one of the above\nconst SYM = 'SYM';\n\nvar tk = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tALPHANUMERICAL: ALPHANUMERICAL,\n\tAMPERSAND: AMPERSAND,\n\tAPOSTROPHE: APOSTROPHE,\n\tASCIINUMERICAL: ASCIINUMERICAL,\n\tASTERISK: ASTERISK,\n\tAT: AT,\n\tBACKSLASH: BACKSLASH,\n\tBACKTICK: BACKTICK,\n\tCARET: CARET,\n\tCLOSEANGLEBRACKET: CLOSEANGLEBRACKET,\n\tCLOSEBRACE: CLOSEBRACE,\n\tCLOSEBRACKET: CLOSEBRACKET,\n\tCLOSEPAREN: CLOSEPAREN,\n\tCOLON: COLON,\n\tCOMMA: COMMA,\n\tDOLLAR: DOLLAR,\n\tDOT: DOT,\n\tEMOJI: EMOJI$1,\n\tEQUALS: EQUALS,\n\tEXCLAMATION: EXCLAMATION,\n\tFULLWIDTHGREATERTHAN: FULLWIDTHGREATERTHAN,\n\tFULLWIDTHLEFTPAREN: FULLWIDTHLEFTPAREN,\n\tFULLWIDTHLESSTHAN: FULLWIDTHLESSTHAN,\n\tFULLWIDTHMIDDLEDOT: FULLWIDTHMIDDLEDOT,\n\tFULLWIDTHRIGHTPAREN: FULLWIDTHRIGHTPAREN,\n\tHYPHEN: HYPHEN,\n\tLEFTCORNERBRACKET: LEFTCORNERBRACKET,\n\tLEFTWHITECORNERBRACKET: LEFTWHITECORNERBRACKET,\n\tLOCALHOST: LOCALHOST,\n\tNL: NL,\n\tNUM: NUM,\n\tOPENANGLEBRACKET: OPENANGLEBRACKET,\n\tOPENBRACE: OPENBRACE,\n\tOPENBRACKET: OPENBRACKET,\n\tOPENPAREN: OPENPAREN,\n\tPERCENT: PERCENT,\n\tPIPE: PIPE,\n\tPLUS: PLUS,\n\tPOUND: POUND,\n\tQUERY: QUERY,\n\tQUOTE: QUOTE,\n\tRIGHTCORNERBRACKET: RIGHTCORNERBRACKET,\n\tRIGHTWHITECORNERBRACKET: RIGHTWHITECORNERBRACKET,\n\tSCHEME: SCHEME,\n\tSEMI: SEMI,\n\tSLASH: SLASH,\n\tSLASH_SCHEME: SLASH_SCHEME,\n\tSYM: SYM,\n\tTILDE: TILDE,\n\tTLD: TLD,\n\tUNDERSCORE: UNDERSCORE,\n\tUTLD: UTLD,\n\tUWORD: UWORD,\n\tWORD: WORD,\n\tWS: WS\n});\n\n// Note that these two Unicode ones expand into a really big one with Babel\nconst ASCII_LETTER = /[a-z]/;\nconst LETTER = /\\p{L}/u; // Any Unicode character with letter data type\nconst EMOJI = /\\p{Emoji}/u; // Any Unicode emoji character\nconst EMOJI_VARIATION$1 = /\\ufe0f/;\nconst DIGIT = /\\d/;\nconst SPACE = /\\s/;\n\nvar regexp = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tASCII_LETTER: ASCII_LETTER,\n\tDIGIT: DIGIT,\n\tEMOJI: EMOJI,\n\tEMOJI_VARIATION: EMOJI_VARIATION$1,\n\tLETTER: LETTER,\n\tSPACE: SPACE\n});\n\n/**\n\tThe scanner provides an interface that takes a string of text as input, and\n\toutputs an array of tokens instances that can be used for easy URL parsing.\n*/\n\nconst CR = '\\r'; // carriage-return character\nconst LF = '\\n'; // line-feed character\nconst EMOJI_VARIATION = '\\ufe0f'; // Variation selector, follows heart and others\nconst EMOJI_JOINER = '\\u200d'; // zero-width joiner\nconst OBJECT_REPLACEMENT = '\\ufffc'; // whitespace placeholder that sometimes appears in rich text editors\n\nlet tlds = null,\n utlds = null; // don't change so only have to be computed once\n\n/**\n * Scanner output token:\n * - `t` is the token name (e.g., 'NUM', 'EMOJI', 'TLD')\n * - `v` is the value of the token (e.g., '123', '❤️', 'com')\n * - `s` is the start index of the token in the original string\n * - `e` is the end index of the token in the original string\n * @typedef {{t: string, v: string, s: number, e: number}} Token\n */\n\n/**\n * @template T\n * @typedef {{ [collection: string]: T[] }} Collections\n */\n\n/**\n * Initialize the scanner character-based state machine for the given start\n * state\n * @param {[string, boolean][]} customSchemes List of custom schemes, where each\n * item is a length-2 tuple with the first element set to the string scheme, and\n * the second element set to `true` if the `://` after the scheme is optional\n */\nfunction init$2(customSchemes = []) {\n // Frequently used states (name argument removed during minification)\n /** @type Collections */\n const groups = {}; // of tokens\n State.groups = groups;\n /** @type State */\n const Start = new State();\n if (tlds == null) {\n tlds = decodeTlds(encodedTlds);\n }\n if (utlds == null) {\n utlds = decodeTlds(encodedUtlds);\n }\n\n // States for special URL symbols that accept immediately after start\n tt(Start, \"'\", APOSTROPHE);\n tt(Start, '{', OPENBRACE);\n tt(Start, '}', CLOSEBRACE);\n tt(Start, '[', OPENBRACKET);\n tt(Start, ']', CLOSEBRACKET);\n tt(Start, '(', OPENPAREN);\n tt(Start, ')', CLOSEPAREN);\n tt(Start, '<', OPENANGLEBRACKET);\n tt(Start, '>', CLOSEANGLEBRACKET);\n tt(Start, '(', FULLWIDTHLEFTPAREN);\n tt(Start, ')', FULLWIDTHRIGHTPAREN);\n tt(Start, '「', LEFTCORNERBRACKET);\n tt(Start, '」', RIGHTCORNERBRACKET);\n tt(Start, '『', LEFTWHITECORNERBRACKET);\n tt(Start, '』', RIGHTWHITECORNERBRACKET);\n tt(Start, '<', FULLWIDTHLESSTHAN);\n tt(Start, '>', FULLWIDTHGREATERTHAN);\n tt(Start, '&', AMPERSAND);\n tt(Start, '*', ASTERISK);\n tt(Start, '@', AT);\n tt(Start, '`', BACKTICK);\n tt(Start, '^', CARET);\n tt(Start, ':', COLON);\n tt(Start, ',', COMMA);\n tt(Start, '$', DOLLAR);\n tt(Start, '.', DOT);\n tt(Start, '=', EQUALS);\n tt(Start, '!', EXCLAMATION);\n tt(Start, '-', HYPHEN);\n tt(Start, '%', PERCENT);\n tt(Start, '|', PIPE);\n tt(Start, '+', PLUS);\n tt(Start, '#', POUND);\n tt(Start, '?', QUERY);\n tt(Start, '\"', QUOTE);\n tt(Start, '/', SLASH);\n tt(Start, ';', SEMI);\n tt(Start, '~', TILDE);\n tt(Start, '_', UNDERSCORE);\n tt(Start, '\\\\', BACKSLASH);\n tt(Start, '・', FULLWIDTHMIDDLEDOT);\n const Num = tr(Start, DIGIT, NUM, {\n [numeric]: true\n });\n tr(Num, DIGIT, Num);\n const Asciinumeric = tr(Num, ASCII_LETTER, ASCIINUMERICAL, {\n [asciinumeric]: true\n });\n const Alphanumeric = tr(Num, LETTER, ALPHANUMERICAL, {\n [alphanumeric]: true\n });\n\n // State which emits a word token\n const Word = tr(Start, ASCII_LETTER, WORD, {\n [ascii]: true\n });\n tr(Word, DIGIT, Asciinumeric);\n tr(Word, ASCII_LETTER, Word);\n tr(Asciinumeric, DIGIT, Asciinumeric);\n tr(Asciinumeric, ASCII_LETTER, Asciinumeric);\n\n // Same as previous, but specific to non-fsm.ascii alphabet words\n const UWord = tr(Start, LETTER, UWORD, {\n [alpha]: true\n });\n tr(UWord, ASCII_LETTER); // Non-accepting\n tr(UWord, DIGIT, Alphanumeric);\n tr(UWord, LETTER, UWord);\n tr(Alphanumeric, DIGIT, Alphanumeric);\n tr(Alphanumeric, ASCII_LETTER); // Non-accepting\n tr(Alphanumeric, LETTER, Alphanumeric); // Non-accepting\n\n // Whitespace jumps\n // Tokens of only non-newline whitespace are arbitrarily long\n // If any whitespace except newline, more whitespace!\n const Nl = tt(Start, LF, NL, {\n [whitespace]: true\n });\n const Cr = tt(Start, CR, WS, {\n [whitespace]: true\n });\n const Ws = tr(Start, SPACE, WS, {\n [whitespace]: true\n });\n tt(Start, OBJECT_REPLACEMENT, Ws);\n tt(Cr, LF, Nl); // \\r\\n\n tt(Cr, OBJECT_REPLACEMENT, Ws);\n tr(Cr, SPACE, Ws);\n tt(Ws, CR); // non-accepting state to avoid mixing whitespaces\n tt(Ws, LF); // non-accepting state to avoid mixing whitespaces\n tr(Ws, SPACE, Ws);\n tt(Ws, OBJECT_REPLACEMENT, Ws);\n\n // Emoji tokens. They are not grouped by the scanner except in cases where a\n // zero-width joiner is present\n const Emoji = tr(Start, EMOJI, EMOJI$1, {\n [emoji]: true\n });\n tt(Emoji, '#'); // no transition, emoji regex seems to match #\n tr(Emoji, EMOJI, Emoji);\n tt(Emoji, EMOJI_VARIATION, Emoji);\n // tt(Start, EMOJI_VARIATION, Emoji); // This one is sketchy\n\n const EmojiJoiner = tt(Emoji, EMOJI_JOINER);\n tt(EmojiJoiner, '#');\n tr(EmojiJoiner, EMOJI, Emoji);\n // tt(EmojiJoiner, EMOJI_VARIATION, Emoji); // also sketchy\n\n // Generates states for top-level domains\n // Note that this is most accurate when tlds are in alphabetical order\n const wordjr = [[ASCII_LETTER, Word], [DIGIT, Asciinumeric]];\n const uwordjr = [[ASCII_LETTER, null], [LETTER, UWord], [DIGIT, Alphanumeric]];\n for (let i = 0; i < tlds.length; i++) {\n fastts(Start, tlds[i], TLD, WORD, wordjr);\n }\n for (let i = 0; i < utlds.length; i++) {\n fastts(Start, utlds[i], UTLD, UWORD, uwordjr);\n }\n addToGroups(TLD, {\n tld: true,\n ascii: true\n }, groups);\n addToGroups(UTLD, {\n utld: true,\n alpha: true\n }, groups);\n\n // Collect the states generated by different protocols. NOTE: If any new TLDs\n // get added that are also protocols, set the token to be the same as the\n // protocol to ensure parsing works as expected.\n fastts(Start, 'file', SCHEME, WORD, wordjr);\n fastts(Start, 'mailto', SCHEME, WORD, wordjr);\n fastts(Start, 'http', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'https', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftp', SLASH_SCHEME, WORD, wordjr);\n fastts(Start, 'ftps', SLASH_SCHEME, WORD, wordjr);\n addToGroups(SCHEME, {\n scheme: true,\n ascii: true\n }, groups);\n addToGroups(SLASH_SCHEME, {\n slashscheme: true,\n ascii: true\n }, groups);\n\n // Register custom schemes. Assumes each scheme is asciinumeric with hyphens\n customSchemes = customSchemes.sort((a, b) => a[0] > b[0] ? 1 : -1);\n for (let i = 0; i < customSchemes.length; i++) {\n const sch = customSchemes[i][0];\n const optionalSlashSlash = customSchemes[i][1];\n const flags = optionalSlashSlash ? {\n [scheme]: true\n } : {\n [slashscheme]: true\n };\n if (sch.indexOf('-') >= 0) {\n flags[domain] = true;\n } else if (!ASCII_LETTER.test(sch)) {\n flags[numeric] = true; // numbers only\n } else if (DIGIT.test(sch)) {\n flags[asciinumeric] = true;\n } else {\n flags[ascii] = true;\n }\n ts(Start, sch, sch, flags);\n }\n\n // Localhost token\n ts(Start, 'localhost', LOCALHOST, {\n ascii: true\n });\n\n // Set default transition for start state (some symbol)\n Start.jd = new State(SYM);\n return {\n start: Start,\n tokens: Object.assign({\n groups\n }, tk)\n };\n}\n\n/**\n\tGiven a string, returns an array of TOKEN instances representing the\n\tcomposition of that string.\n\n\t@method run\n\t@param {State} start scanner starting state\n\t@param {string} str input string to scan\n\t@return {Token[]} list of tokens, each with a type and value\n*/\nfunction run$1(start, str) {\n // State machine is not case sensitive, so input is tokenized in lowercased\n // form (still returns regular case). Uses selective `toLowerCase` because\n // lowercasing the entire string causes the length and character position to\n // vary in some non-English strings with V8-based runtimes.\n const iterable = stringToArray(str.replace(/[A-Z]/g, c => c.toLowerCase()));\n const charCount = iterable.length; // <= len if there are emojis, etc\n const tokens = []; // return value\n\n // cursor through the string itself, accounting for characters that have\n // width with length 2 such as emojis\n let cursor = 0;\n\n // Cursor through the array-representation of the string\n let charCursor = 0;\n\n // Tokenize the string\n while (charCursor < charCount) {\n let state = start;\n let nextState = null;\n let tokenLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n let charsSinceAccepts = -1;\n while (charCursor < charCount && (nextState = state.go(iterable[charCursor]))) {\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n charsSinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts += iterable[charCursor].length;\n charsSinceAccepts++;\n }\n tokenLength += iterable[charCursor].length;\n cursor += iterable[charCursor].length;\n charCursor++;\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n charCursor -= charsSinceAccepts;\n tokenLength -= sinceAccepts;\n\n // No more jumps, just make a new token from the last accepting one\n tokens.push({\n t: latestAccepting.t,\n // token type/name\n v: str.slice(cursor - tokenLength, cursor),\n // string value\n s: cursor - tokenLength,\n // start index\n e: cursor // end index (excluding)\n });\n }\n return tokens;\n}\n\n/**\n * Convert a String to an Array of characters, taking into account that some\n * characters like emojis take up two string indexes.\n *\n * Adapted from core-js (MIT license)\n * https://github.com/zloirock/core-js/blob/2d69cf5f99ab3ea3463c395df81e5a15b68f49d9/packages/core-js/internals/string-multibyte.js\n *\n * @function stringToArray\n * @param {string} str\n * @returns {string[]}\n */\nfunction stringToArray(str) {\n const result = [];\n const len = str.length;\n let index = 0;\n while (index < len) {\n let first = str.charCodeAt(index);\n let second;\n let char = first < 0xd800 || first > 0xdbff || index + 1 === len || (second = str.charCodeAt(index + 1)) < 0xdc00 || second > 0xdfff ? str[index] // single character\n : str.slice(index, index + 2); // two-index characters\n result.push(char);\n index += char.length;\n }\n return result;\n}\n\n/**\n * Fast version of ts function for when transition defaults are well known\n * @param {State} state\n * @param {string} input\n * @param {string} t\n * @param {string} defaultt\n * @param {[RegExp, State][]} jr\n * @returns {State}\n */\nfunction fastts(state, input, t, defaultt, jr) {\n let next;\n const len = input.length;\n for (let i = 0; i < len - 1; i++) {\n const char = input[i];\n if (state.j[char]) {\n next = state.j[char];\n } else {\n next = new State(defaultt);\n next.jr = jr.slice();\n state.j[char] = next;\n }\n state = next;\n }\n next = new State(t);\n next.jr = jr.slice();\n state.j[input[len - 1]] = next;\n return next;\n}\n\n/**\n * Converts a string of Top-Level Domain names encoded in update-tlds.js back\n * into a list of strings.\n * @param {str} encoded encoded TLDs string\n * @returns {str[]} original TLDs list\n */\nfunction decodeTlds(encoded) {\n const words = [];\n const stack = [];\n let i = 0;\n let digits = '0123456789';\n while (i < encoded.length) {\n let popDigitCount = 0;\n while (digits.indexOf(encoded[i + popDigitCount]) >= 0) {\n popDigitCount++; // encountered some digits, have to pop to go one level up trie\n }\n if (popDigitCount > 0) {\n words.push(stack.join('')); // whatever preceded the pop digits must be a word\n for (let popCount = parseInt(encoded.substring(i, i + popDigitCount), 10); popCount > 0; popCount--) {\n stack.pop();\n }\n i += popDigitCount;\n } else {\n stack.push(encoded[i]); // drop down a level into the trie\n i++;\n }\n }\n return words;\n}\n\n/**\n * An object where each key is a valid DOM Event Name such as `click` or `focus`\n * and each value is an event handler function.\n *\n * https://developer.mozilla.org/en-US/docs/Web/API/Element#events\n * @typedef {?{ [event: string]: Function }} EventListeners\n */\n\n/**\n * All formatted properties required to render a link, including `tagName`,\n * `attributes`, `content` and `eventListeners`.\n * @typedef {{ tagName: any, attributes: {[attr: string]: any}, content: string,\n * eventListeners: EventListeners }} IntermediateRepresentation\n */\n\n/**\n * Specify either an object described by the template type `O` or a function.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `O`\n * @template O\n * @typedef {O | ((value: string, type: string, token: MultiToken) => O)} OptObj\n */\n\n/**\n * Specify either a function described by template type `F` or an object.\n *\n * Each key in the object should be a link type (`'url'`, `'hashtag`', etc.). Each\n * value should be a function with template type `F` that is called when the\n * corresponding link type is encountered.\n * @template F\n * @typedef {F | { [type: string]: F}} OptFn\n */\n\n/**\n * Specify either a value with template type `V`, a function that returns `V` or\n * an object where each value resolves to `V`.\n *\n * The function takes a string value (usually the link's href attribute), the\n * link type (`'url'`, `'hashtag`', etc.) and an internal token representation\n * of the link. It should return an object of the template type `V`\n *\n * For the object, each key should be a link type (`'url'`, `'hashtag`', etc.).\n * Each value should either have type `V` or a function that returns V. This\n * function similarly takes a string value and a token.\n *\n * Example valid types for `Opt`:\n *\n * ```js\n * 'hello'\n * (value, type, token) => 'world'\n * { url: 'hello', email: (value, token) => 'world'}\n * ```\n * @template V\n * @typedef {V | ((value: string, type: string, token: MultiToken) => V) | { [type: string]: V | ((value: string, token: MultiToken) => V) }} Opt\n */\n\n/**\n * See available options: https://linkify.js.org/docs/options.html\n * @typedef {{\n * \tdefaultProtocol?: string,\n * events?: OptObj,\n * \tformat?: Opt,\n * \tformatHref?: Opt,\n * \tnl2br?: boolean,\n * \ttagName?: Opt,\n * \ttarget?: Opt,\n * \trel?: Opt,\n * \tvalidate?: Opt,\n * \ttruncate?: Opt,\n * \tclassName?: Opt,\n * \tattributes?: OptObj<({ [attr: string]: any })>,\n * ignoreTags?: string[],\n * \trender?: OptFn<((ir: IntermediateRepresentation) => any)>\n * }} Opts\n */\n\n/**\n * @type Required\n */\nconst defaults = {\n defaultProtocol: 'http',\n events: null,\n format: noop,\n formatHref: noop,\n nl2br: false,\n tagName: 'a',\n target: null,\n rel: null,\n validate: true,\n truncate: Infinity,\n className: null,\n attributes: null,\n ignoreTags: [],\n render: null\n};\n\n/**\n * Utility class for linkify interfaces to apply specified\n * {@link Opts formatting and rendering options}.\n *\n * @param {Opts | Options} [opts] Option value overrides.\n * @param {(ir: IntermediateRepresentation) => any} [defaultRender] (For\n * internal use) default render function that determines how to generate an\n * HTML element based on a link token's derived tagName, attributes and HTML.\n * Similar to render option\n */\nfunction Options(opts, defaultRender = null) {\n let o = Object.assign({}, defaults);\n if (opts) {\n o = Object.assign(o, opts instanceof Options ? opts.o : opts);\n }\n\n // Ensure all ignored tags are uppercase\n const ignoredTags = o.ignoreTags;\n const uppercaseIgnoredTags = [];\n for (let i = 0; i < ignoredTags.length; i++) {\n uppercaseIgnoredTags.push(ignoredTags[i].toUpperCase());\n }\n /** @protected */\n this.o = o;\n if (defaultRender) {\n this.defaultRender = defaultRender;\n }\n this.ignoreTags = uppercaseIgnoredTags;\n}\nOptions.prototype = {\n o: defaults,\n /**\n * @type string[]\n */\n ignoreTags: [],\n /**\n * @param {IntermediateRepresentation} ir\n * @returns {any}\n */\n defaultRender(ir) {\n return ir;\n },\n /**\n * Returns true or false based on whether a token should be displayed as a\n * link based on the user options.\n * @param {MultiToken} token\n * @returns {boolean}\n */\n check(token) {\n return this.get('validate', token.toString(), token);\n },\n // Private methods\n\n /**\n * Resolve an option's value based on the value of the option and the given\n * params. If operator and token are specified and the target option is\n * callable, automatically calls the function with the given argument.\n * @template {keyof Opts} K\n * @param {K} key Name of option to use\n * @param {string} [operator] will be passed to the target option if it's a\n * function. If not specified, RAW function value gets returned\n * @param {MultiToken} [token] The token from linkify.tokenize\n * @returns {Opts[K] | any}\n */\n get(key, operator, token) {\n const isCallable = operator != null;\n let option = this.o[key];\n if (!option) {\n return option;\n }\n if (typeof option === 'object') {\n option = token.t in option ? option[token.t] : defaults[key];\n if (typeof option === 'function' && isCallable) {\n option = option(operator, token);\n }\n } else if (typeof option === 'function' && isCallable) {\n option = option(operator, token.t, token);\n }\n return option;\n },\n /**\n * @template {keyof Opts} L\n * @param {L} key Name of options object to use\n * @param {string} [operator]\n * @param {MultiToken} [token]\n * @returns {Opts[L] | any}\n */\n getObj(key, operator, token) {\n let obj = this.o[key];\n if (typeof obj === 'function' && operator != null) {\n obj = obj(operator, token.t, token);\n }\n return obj;\n },\n /**\n * Convert the given token to a rendered element that may be added to the\n * calling-interface's DOM\n * @param {MultiToken} token Token to render to an HTML element\n * @returns {any} Render result; e.g., HTML string, DOM element, React\n * Component, etc.\n */\n render(token) {\n const ir = token.render(this); // intermediate representation\n const renderFn = this.get('render', null, token) || this.defaultRender;\n return renderFn(ir, token.t, token);\n }\n};\nfunction noop(val) {\n return val;\n}\n\nvar options = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tOptions: Options,\n\tdefaults: defaults\n});\n\n/******************************************************************************\n\tMulti-Tokens\n\tTokens composed of arrays of TextTokens\n******************************************************************************/\n\n/**\n * @param {string} value\n * @param {Token[]} tokens\n */\nfunction MultiToken(value, tokens) {\n this.t = 'token';\n this.v = value;\n this.tk = tokens;\n}\n\n/**\n * Abstract class used for manufacturing tokens of text tokens. That is rather\n * than the value for a token being a small string of text, it's value an array\n * of text tokens.\n *\n * Used for grouping together URLs, emails, hashtags, and other potential\n * creations.\n * @class MultiToken\n * @property {string} t\n * @property {string} v\n * @property {Token[]} tk\n * @abstract\n */\nMultiToken.prototype = {\n isLink: false,\n /**\n * Return the string this token represents.\n * @return {string}\n */\n toString() {\n return this.v;\n },\n /**\n * What should the value for this token be in the `href` HTML attribute?\n * Returns the `.toString` value by default.\n * @param {string} [scheme]\n * @return {string}\n */\n toHref(scheme) {\n return this.toString();\n },\n /**\n * @param {Options} options Formatting options\n * @returns {string}\n */\n toFormattedString(options) {\n const val = this.toString();\n const truncate = options.get('truncate', val, this);\n const formatted = options.get('format', val, this);\n return truncate && formatted.length > truncate ? formatted.substring(0, truncate) + '…' : formatted;\n },\n /**\n *\n * @param {Options} options\n * @returns {string}\n */\n toFormattedHref(options) {\n return options.get('formatHref', this.toHref(options.get('defaultProtocol')), this);\n },\n /**\n * The start index of this token in the original input string\n * @returns {number}\n */\n startIndex() {\n return this.tk[0].s;\n },\n /**\n * The end index of this token in the original input string (up to this\n * index but not including it)\n * @returns {number}\n */\n endIndex() {\n return this.tk[this.tk.length - 1].e;\n },\n /**\n \tReturns an object of relevant values for this token, which includes keys\n \t* type - Kind of token ('url', 'email', etc.)\n \t* value - Original text\n \t* href - The value that should be added to the anchor tag's href\n \t\tattribute\n \t\t@method toObject\n \t@param {string} [protocol] `'http'` by default\n */\n toObject(protocol = defaults.defaultProtocol) {\n return {\n type: this.t,\n value: this.toString(),\n isLink: this.isLink,\n href: this.toHref(protocol),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n *\n * @param {Options} options Formatting option\n */\n toFormattedObject(options) {\n return {\n type: this.t,\n value: this.toFormattedString(options),\n isLink: this.isLink,\n href: this.toFormattedHref(options),\n start: this.startIndex(),\n end: this.endIndex()\n };\n },\n /**\n * Whether this token should be rendered as a link according to the given options\n * @param {Options} options\n * @returns {boolean}\n */\n validate(options) {\n return options.get('validate', this.toString(), this);\n },\n /**\n * Return an object that represents how this link should be rendered.\n * @param {Options} options Formattinng options\n */\n render(options) {\n const token = this;\n const href = this.toHref(options.get('defaultProtocol'));\n const formattedHref = options.get('formatHref', href, this);\n const tagName = options.get('tagName', href, token);\n const content = this.toFormattedString(options);\n const attributes = {};\n const className = options.get('className', href, token);\n const target = options.get('target', href, token);\n const rel = options.get('rel', href, token);\n const attrs = options.getObj('attributes', href, token);\n const eventListeners = options.getObj('events', href, token);\n attributes.href = formattedHref;\n if (className) {\n attributes.class = className;\n }\n if (target) {\n attributes.target = target;\n }\n if (rel) {\n attributes.rel = rel;\n }\n if (attrs) {\n Object.assign(attributes, attrs);\n }\n return {\n tagName,\n attributes,\n content,\n eventListeners\n };\n }\n};\n\n/**\n * Create a new token that can be emitted by the parser state machine\n * @param {string} type readable type of the token\n * @param {object} props properties to assign or override, including isLink = true or false\n * @returns {new (value: string, tokens: Token[]) => MultiToken} new token class\n */\nfunction createTokenClass(type, props) {\n class Token extends MultiToken {\n constructor(value, tokens) {\n super(value, tokens);\n this.t = type;\n }\n }\n for (const p in props) {\n Token.prototype[p] = props[p];\n }\n Token.t = type;\n return Token;\n}\n\n/**\n\tRepresents a list of tokens making up a valid email address\n*/\nconst Email = createTokenClass('email', {\n isLink: true,\n toHref() {\n return 'mailto:' + this.toString();\n }\n});\n\n/**\n\tRepresents some plain text\n*/\nconst Text = createTokenClass('text');\n\n/**\n\tMulti-linebreak token - represents a line break\n\t@class Nl\n*/\nconst Nl = createTokenClass('nl');\n\n/**\n\tRepresents a list of text tokens making up a valid URL\n\t@class Url\n*/\nconst Url = createTokenClass('url', {\n isLink: true,\n /**\n \tLowercases relevant parts of the domain and adds the protocol if\n \trequired. Note that this will not escape unsafe HTML characters in the\n \tURL.\n \t\t@param {string} [scheme] default scheme (e.g., 'https')\n \t@return {string} the full href\n */\n toHref(scheme = defaults.defaultProtocol) {\n // Check if already has a prefix scheme\n return this.hasProtocol() ? this.v : `${scheme}://${this.v}`;\n },\n /**\n * Check whether this URL token has a protocol\n * @return {boolean}\n */\n hasProtocol() {\n const tokens = this.tk;\n return tokens.length >= 2 && tokens[0].t !== LOCALHOST && tokens[1].t === COLON;\n }\n});\n\nvar multi = /*#__PURE__*/Object.freeze({\n\t__proto__: null,\n\tBase: MultiToken,\n\tEmail: Email,\n\tMultiToken: MultiToken,\n\tNl: Nl,\n\tText: Text,\n\tUrl: Url,\n\tcreateTokenClass: createTokenClass\n});\n\n/**\n\tNot exactly parser, more like the second-stage scanner (although we can\n\ttheoretically hotswap the code here with a real parser in the future... but\n\tfor a little URL-finding utility abstract syntax trees may be a little\n\toverkill).\n\n\tURL format: http://en.wikipedia.org/wiki/URI_scheme\n\tEmail format: http://en.wikipedia.org/wiki/EmailAddress (links to RFC in\n\treference)\n\n\t@module linkify\n\t@submodule parser\n\t@main run\n*/\n\nconst makeState = arg => new State(arg);\n\n/**\n * Generate the parser multi token-based state machine\n * @param {{ groups: Collections }} tokens\n */\nfunction init$1({\n groups\n}) {\n // Types of characters the URL can definitely end in\n const qsAccepting = groups.domain.concat([AMPERSAND, ASTERISK, AT, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, NUM, PERCENT, PIPE, PLUS, POUND, SLASH, SYM, TILDE, UNDERSCORE]);\n\n // Types of tokens that can follow a URL and be part of the query string\n // but cannot be the very last characters\n // Characters that cannot appear in the URL at all should be excluded\n const qsNonAccepting = [APOSTROPHE, COLON, COMMA, DOT, EXCLAMATION, PERCENT, QUERY, QUOTE, SEMI, OPENANGLEBRACKET, CLOSEANGLEBRACKET, OPENBRACE, CLOSEBRACE, CLOSEBRACKET, OPENBRACKET, OPENPAREN, CLOSEPAREN, FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN, LEFTCORNERBRACKET, RIGHTCORNERBRACKET, LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET, FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN];\n\n // For addresses without the mailto prefix\n // Tokens allowed in the localpart of the email\n const localpartAccepting = [AMPERSAND, APOSTROPHE, ASTERISK, BACKSLASH, BACKTICK, CARET, DOLLAR, EQUALS, HYPHEN, OPENBRACE, CLOSEBRACE, PERCENT, PIPE, PLUS, POUND, QUERY, SLASH, SYM, TILDE, UNDERSCORE];\n\n // The universal starting state.\n /**\n * @type State\n */\n const Start = makeState();\n const Localpart = tt(Start, TILDE); // Local part of the email address\n ta(Localpart, localpartAccepting, Localpart);\n ta(Localpart, groups.domain, Localpart);\n const Domain = makeState(),\n Scheme = makeState(),\n SlashScheme = makeState();\n ta(Start, groups.domain, Domain); // parsed string ends with a potential domain name (A)\n ta(Start, groups.scheme, Scheme); // e.g., 'mailto'\n ta(Start, groups.slashscheme, SlashScheme); // e.g., 'http'\n\n ta(Domain, localpartAccepting, Localpart);\n ta(Domain, groups.domain, Domain);\n const LocalpartAt = tt(Domain, AT); // Local part of the email address plus @\n\n tt(Localpart, AT, LocalpartAt); // close to an email address now\n\n // Local part of an email address can be e.g. 'http' or 'mailto'\n tt(Scheme, AT, LocalpartAt);\n tt(SlashScheme, AT, LocalpartAt);\n const LocalpartDot = tt(Localpart, DOT); // Local part of the email address plus '.' (localpart cannot end in .)\n ta(LocalpartDot, localpartAccepting, Localpart);\n ta(LocalpartDot, groups.domain, Localpart);\n const EmailDomain = makeState();\n ta(LocalpartAt, groups.domain, EmailDomain); // parsed string starts with local email info + @ with a potential domain name\n ta(EmailDomain, groups.domain, EmailDomain);\n const EmailDomainDot = tt(EmailDomain, DOT); // domain followed by DOT\n ta(EmailDomainDot, groups.domain, EmailDomain);\n const Email$1 = makeState(Email); // Possible email address (could have more tlds)\n ta(EmailDomainDot, groups.tld, Email$1);\n ta(EmailDomainDot, groups.utld, Email$1);\n tt(LocalpartAt, LOCALHOST, Email$1);\n\n // Hyphen can jump back to a domain name\n const EmailDomainHyphen = tt(EmailDomain, HYPHEN); // parsed string starts with local email info + @ with a potential domain name\n tt(EmailDomainHyphen, HYPHEN, EmailDomainHyphen);\n ta(EmailDomainHyphen, groups.domain, EmailDomain);\n ta(Email$1, groups.domain, EmailDomain);\n tt(Email$1, DOT, EmailDomainDot);\n tt(Email$1, HYPHEN, EmailDomainHyphen);\n\n // Final possible email states\n const EmailColon = tt(Email$1, COLON); // URL followed by colon (potential port number here)\n /*const EmailColonPort = */\n ta(EmailColon, groups.numeric, Email); // URL followed by colon and port number\n\n // Account for dots and hyphens. Hyphens are usually parts of domain names\n // (but not TLDs)\n const DomainHyphen = tt(Domain, HYPHEN); // domain followed by hyphen\n const DomainDot = tt(Domain, DOT); // domain followed by DOT\n tt(DomainHyphen, HYPHEN, DomainHyphen);\n ta(DomainHyphen, groups.domain, Domain);\n ta(DomainDot, localpartAccepting, Localpart);\n ta(DomainDot, groups.domain, Domain);\n const DomainDotTld = makeState(Url); // Simplest possible URL with no query string\n ta(DomainDot, groups.tld, DomainDotTld);\n ta(DomainDot, groups.utld, DomainDotTld);\n ta(DomainDotTld, groups.domain, Domain);\n ta(DomainDotTld, localpartAccepting, Localpart);\n tt(DomainDotTld, DOT, DomainDot);\n tt(DomainDotTld, HYPHEN, DomainHyphen);\n tt(DomainDotTld, AT, LocalpartAt);\n const DomainDotTldColon = tt(DomainDotTld, COLON); // URL followed by colon (potential port number here)\n const DomainDotTldColonPort = makeState(Url); // TLD followed by a port number\n ta(DomainDotTldColon, groups.numeric, DomainDotTldColonPort);\n\n // Long URL with optional port and maybe query string\n const Url$1 = makeState(Url);\n\n // URL with extra symbols at the end, followed by an opening bracket\n const UrlNonaccept = makeState(); // URL followed by some symbols (will not be part of the final URL)\n\n // Query strings\n ta(Url$1, qsAccepting, Url$1);\n ta(Url$1, qsNonAccepting, UrlNonaccept);\n ta(UrlNonaccept, qsAccepting, Url$1);\n ta(UrlNonaccept, qsNonAccepting, UrlNonaccept);\n\n // Become real URLs after `SLASH` or `COLON NUM SLASH`\n // Here works with or without scheme:// prefix\n tt(DomainDotTld, SLASH, Url$1);\n tt(DomainDotTldColonPort, SLASH, Url$1);\n\n // Note that domains that begin with schemes are treated slighly differently\n const SchemeColon = tt(Scheme, COLON); // e.g., 'mailto:'\n const SlashSchemeColon = tt(SlashScheme, COLON); // e.g., 'http:'\n const SlashSchemeColonSlash = tt(SlashSchemeColon, SLASH); // e.g., 'http:/'\n\n const UriPrefix = tt(SlashSchemeColonSlash, SLASH); // e.g., 'http://'\n\n // Scheme states can transition to domain states\n ta(Scheme, groups.domain, Domain);\n tt(Scheme, DOT, DomainDot);\n tt(Scheme, HYPHEN, DomainHyphen);\n ta(SlashScheme, groups.domain, Domain);\n tt(SlashScheme, DOT, DomainDot);\n tt(SlashScheme, HYPHEN, DomainHyphen);\n\n // Force URL with scheme prefix followed by anything sane\n ta(SchemeColon, groups.domain, Url$1);\n tt(SchemeColon, SLASH, Url$1);\n tt(SchemeColon, QUERY, Url$1);\n ta(UriPrefix, groups.domain, Url$1);\n ta(UriPrefix, qsAccepting, Url$1);\n tt(UriPrefix, SLASH, Url$1);\n const bracketPairs = [[OPENBRACE, CLOSEBRACE],\n // {}\n [OPENBRACKET, CLOSEBRACKET],\n // []\n [OPENPAREN, CLOSEPAREN],\n // ()\n [OPENANGLEBRACKET, CLOSEANGLEBRACKET],\n // <>\n [FULLWIDTHLEFTPAREN, FULLWIDTHRIGHTPAREN],\n // ()\n [LEFTCORNERBRACKET, RIGHTCORNERBRACKET],\n // 「」\n [LEFTWHITECORNERBRACKET, RIGHTWHITECORNERBRACKET],\n // 『』\n [FULLWIDTHLESSTHAN, FULLWIDTHGREATERTHAN] // <>\n ];\n for (let i = 0; i < bracketPairs.length; i++) {\n const [OPEN, CLOSE] = bracketPairs[i];\n const UrlOpen = tt(Url$1, OPEN); // URL followed by open bracket\n\n // Continue not accepting for open brackets\n tt(UrlNonaccept, OPEN, UrlOpen);\n\n // Closing bracket component. This character WILL be included in the URL\n tt(UrlOpen, CLOSE, Url$1);\n\n // URL that beings with an opening bracket, followed by a symbols.\n // Note that the final state can still be `UrlOpen` (if the URL has a\n // single opening bracket for some reason).\n const UrlOpenQ = makeState(Url);\n ta(UrlOpen, qsAccepting, UrlOpenQ);\n const UrlOpenSyms = makeState(); // UrlOpen followed by some symbols it cannot end it\n ta(UrlOpen, qsNonAccepting);\n\n // URL that begins with an opening bracket, followed by some symbols\n ta(UrlOpenQ, qsAccepting, UrlOpenQ);\n ta(UrlOpenQ, qsNonAccepting, UrlOpenSyms);\n ta(UrlOpenSyms, qsAccepting, UrlOpenQ);\n ta(UrlOpenSyms, qsNonAccepting, UrlOpenSyms);\n\n // Close brace/bracket to become regular URL\n tt(UrlOpenQ, CLOSE, Url$1);\n tt(UrlOpenSyms, CLOSE, Url$1);\n }\n tt(Start, LOCALHOST, DomainDotTld); // localhost is a valid URL state\n tt(Start, NL, Nl); // single new line\n\n return {\n start: Start,\n tokens: tk\n };\n}\n\n/**\n * Run the parser state machine on a list of scanned string-based tokens to\n * create a list of multi tokens, each of which represents a URL, email address,\n * plain text, etc.\n *\n * @param {State} start parser start state\n * @param {string} input the original input used to generate the given tokens\n * @param {Token[]} tokens list of scanned tokens\n * @returns {MultiToken[]}\n */\nfunction run(start, input, tokens) {\n let len = tokens.length;\n let cursor = 0;\n let multis = [];\n let textTokens = [];\n while (cursor < len) {\n let state = start;\n let secondState = null;\n let nextState = null;\n let multiLength = 0;\n let latestAccepting = null;\n let sinceAccepts = -1;\n while (cursor < len && !(secondState = state.go(tokens[cursor].t))) {\n // Starting tokens with nowhere to jump to.\n // Consider these to be just plain text\n textTokens.push(tokens[cursor++]);\n }\n while (cursor < len && (nextState = secondState || state.go(tokens[cursor].t))) {\n // Get the next state\n secondState = null;\n state = nextState;\n\n // Keep track of the latest accepting state\n if (state.accepts()) {\n sinceAccepts = 0;\n latestAccepting = state;\n } else if (sinceAccepts >= 0) {\n sinceAccepts++;\n }\n cursor++;\n multiLength++;\n }\n if (sinceAccepts < 0) {\n // No accepting state was found, part of a regular text token add\n // the first text token to the text tokens array and try again from\n // the next\n cursor -= multiLength;\n if (cursor < len) {\n textTokens.push(tokens[cursor]);\n cursor++;\n }\n } else {\n // Accepting state!\n // First close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n textTokens = [];\n }\n\n // Roll back to the latest accepting state\n cursor -= sinceAccepts;\n multiLength -= sinceAccepts;\n\n // Create a new multitoken\n const Multi = latestAccepting.t;\n const subtokens = tokens.slice(cursor - multiLength, cursor);\n multis.push(initMultiToken(Multi, input, subtokens));\n }\n }\n\n // Finally close off the textTokens (if available)\n if (textTokens.length > 0) {\n multis.push(initMultiToken(Text, input, textTokens));\n }\n return multis;\n}\n\n/**\n * Utility function for instantiating a new multitoken with all the relevant\n * fields during parsing.\n * @param {new (value: string, tokens: Token[]) => MultiToken} Multi class to instantiate\n * @param {string} input original input string\n * @param {Token[]} tokens consecutive tokens scanned from input string\n * @returns {MultiToken}\n */\nfunction initMultiToken(Multi, input, tokens) {\n const startIdx = tokens[0].s;\n const endIdx = tokens[tokens.length - 1].e;\n const value = input.slice(startIdx, endIdx);\n return new Multi(value, tokens);\n}\n\nconst warn = typeof console !== 'undefined' && console && console.warn || (() => {});\nconst warnAdvice = 'until manual call of linkify.init(). Register all schemes and plugins before invoking linkify the first time.';\n\n// Side-effect initialization state\nconst INIT = {\n scanner: null,\n parser: null,\n tokenQueue: [],\n pluginQueue: [],\n customSchemes: [],\n initialized: false\n};\n\n/**\n * @typedef {{\n * \tstart: State,\n * \ttokens: { groups: Collections } & typeof tk\n * }} ScannerInit\n */\n\n/**\n * @typedef {{\n * \tstart: State,\n * \ttokens: typeof multi\n * }} ParserInit\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit }) => void} TokenPlugin\n */\n\n/**\n * @typedef {(arg: { scanner: ScannerInit, parser: ParserInit }) => void} Plugin\n */\n\n/**\n * De-register all plugins and reset the internal state-machine. Used for\n * testing; not required in practice.\n * @private\n */\nfunction reset() {\n State.groups = {};\n INIT.scanner = null;\n INIT.parser = null;\n INIT.tokenQueue = [];\n INIT.pluginQueue = [];\n INIT.customSchemes = [];\n INIT.initialized = false;\n return INIT;\n}\n\n/**\n * Register a token plugin to allow the scanner to recognize additional token\n * types before the parser state machine is constructed from the results.\n * @param {string} name of plugin to register\n * @param {TokenPlugin} plugin function that accepts the scanner state machine\n * and available scanner tokens and collections and extends the state machine to\n * recognize additional tokens or groups.\n */\nfunction registerTokenPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid token plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n if (name === INIT.tokenQueue[i][0]) {\n warn(`linkifyjs: token plugin \"${name}\" already registered - will be overwritten`);\n INIT.tokenQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.tokenQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register token plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Register a linkify plugin\n * @param {string} name of plugin to register\n * @param {Plugin} plugin function that accepts the parser state machine and\n * extends the parser to recognize additional link types\n */\nfunction registerPlugin(name, plugin) {\n if (typeof plugin !== 'function') {\n throw new Error(`linkifyjs: Invalid plugin ${plugin} (expects function)`);\n }\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n if (name === INIT.pluginQueue[i][0]) {\n warn(`linkifyjs: plugin \"${name}\" already registered - will be overwritten`);\n INIT.pluginQueue[i] = [name, plugin];\n return;\n }\n }\n INIT.pluginQueue.push([name, plugin]);\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register plugin \"${name}\" ${warnAdvice}`);\n }\n}\n\n/**\n * Detect URLs with the following additional protocol. Anything with format\n * \"protocol://...\" will be considered a link. If `optionalSlashSlash` is set to\n * `true`, anything with format \"protocol:...\" will be considered a link.\n * @param {string} scheme\n * @param {boolean} [optionalSlashSlash]\n */\nfunction registerCustomProtocol(scheme, optionalSlashSlash = false) {\n if (INIT.initialized) {\n warn(`linkifyjs: already initialized - will not register custom scheme \"${scheme}\" ${warnAdvice}`);\n }\n if (!/^[0-9a-z]+(-[0-9a-z]+)*$/.test(scheme)) {\n throw new Error(`linkifyjs: incorrect scheme format.\n1. Must only contain digits, lowercase ASCII letters or \"-\"\n2. Cannot start or end with \"-\"\n3. \"-\" cannot repeat`);\n }\n INIT.customSchemes.push([scheme, optionalSlashSlash]);\n}\n\n/**\n * Initialize the linkify state machine. Called automatically the first time\n * linkify is called on a string, but may be called manually as well.\n */\nfunction init() {\n // Initialize scanner state machine and plugins\n INIT.scanner = init$2(INIT.customSchemes);\n for (let i = 0; i < INIT.tokenQueue.length; i++) {\n INIT.tokenQueue[i][1]({\n scanner: INIT.scanner\n });\n }\n\n // Initialize parser state machine and plugins\n INIT.parser = init$1(INIT.scanner.tokens);\n for (let i = 0; i < INIT.pluginQueue.length; i++) {\n INIT.pluginQueue[i][1]({\n scanner: INIT.scanner,\n parser: INIT.parser\n });\n }\n INIT.initialized = true;\n return INIT;\n}\n\n/**\n * Parse a string into tokens that represent linkable and non-linkable sub-components\n * @param {string} str\n * @return {MultiToken[]} tokens\n */\nfunction tokenize(str) {\n if (!INIT.initialized) {\n init();\n }\n return run(INIT.parser.start, str, run$1(INIT.scanner.start, str));\n}\ntokenize.scan = run$1; // for testing\n\n/**\n * Find a list of linkable items in the given string.\n * @param {string} str string to find links in\n * @param {string | Opts} [type] either formatting options or specific type of\n * links to find, e.g., 'url' or 'email'\n * @param {Opts} [opts] formatting options for final output. Cannot be specified\n * if opts already provided in `type` argument\n */\nfunction find(str, type = null, opts = null) {\n if (type && typeof type === 'object') {\n if (opts) {\n throw Error(`linkifyjs: Invalid link type ${type}; must be a string`);\n }\n opts = type;\n type = null;\n }\n const options = new Options(opts);\n const tokens = tokenize(str);\n const filtered = [];\n for (let i = 0; i < tokens.length; i++) {\n const token = tokens[i];\n if (token.isLink && (!type || token.t === type) && options.check(token)) {\n filtered.push(token.toFormattedObject(options));\n }\n }\n return filtered;\n}\n\n/**\n * Is the given string valid linkable text of some sort. Note that this does not\n * trim the text for you.\n *\n * Optionally pass in a second `type` param, which is the type of link to test\n * for.\n *\n * For example,\n *\n * linkify.test(str, 'email');\n *\n * Returns `true` if str is a valid email.\n * @param {string} str string to test for links\n * @param {string} [type] optional specific link type to look for\n * @returns boolean true/false\n */\nfunction test(str, type = null) {\n const tokens = tokenize(str);\n return tokens.length === 1 && tokens[0].isLink && (!type || tokens[0].t === type);\n}\n\nexport { MultiToken, Options, State, createTokenClass, find, init, multi, options, regexp, registerCustomProtocol, registerPlugin, registerTokenPlugin, reset, stringToArray, test, multi as text, tokenize };\n","import '../assets/NcAppSidebar-Ci7hXMpX.css';\nimport { vOnClickOutside } from \"@vueuse/components\";\nimport { createFocusTrap } from \"focus-trap\";\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useModel, normalizeClass, createVNode, withCtx, mergeModels, resolveComponent, withKeys, withModifiers, Fragment, renderList, createBlock, renderSlot, resolveDirective, Transition, withDirectives, Teleport, normalizeStyle, vShow, createTextVNode, warn, ref, provide } from \"vue\";\nimport { I as IconArrowRight } from \"./ArrowRight-B1ncAhus.mjs\";\nimport { I as IconClose } from \"./Close-CuhcJnX2.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCanonicalLocale } from \"@nextcloud/l10n\";\nimport { _ as _sfc_main$6 } from \"./NcVNodes.vue_vue_type_script_lang-BqUHinRZ.mjs\";\nimport { useIsSmallMobile } from \"../composables/useIsMobile/index.mjs\";\nimport directive from \"../directives/Focus/index.mjs\";\nimport { r as register, V as t15, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { g as getTrapStack } from \"./focusTrap-HJQ4pqHV.mjs\";\nimport { i as isSlotPopulated, N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _sfc_main$7 } from \"./NcAppSidebarHeader.vue_vue_type_script_setup_true_lang-Bk4yFBHY.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { C as CONTENT_SELECTOR_KEY } from \"./constants-Ciwvl5xb.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent-CDgWCt_m.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nconst _sfc_main$5 = {\n name: \"DockRightIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$5 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$3 = { d: \"M20 4H4A2 2 0 0 0 2 6V18A2 2 0 0 0 4 20H20A2 2 0 0 0 22 18V6A2 2 0 0 0 20 4M15 18H4V6H15Z\" };\nconst _hoisted_4$3 = { key: 0 };\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon dock-right-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$3, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$5);\n}\nconst IconDockRight = /* @__PURE__ */ _export_sfc(_sfc_main$5, [[\"render\", _sfc_render$4]]);\nconst _sfc_main$4 = {\n name: \"StarIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$4 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,17.27L18.18,21L16.54,13.97L22,9.24L14.81,8.62L12,2L9.19,8.62L2,9.24L7.45,13.97L5.82,21L12,17.27Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon star-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$4);\n}\nconst IconStar = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$3 = {\n name: \"StarOutlineIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M12,15.39L8.24,17.66L9.23,13.38L5.91,10.5L10.29,10.13L12,6.09L13.71,10.13L18.09,10.5L14.77,13.38L15.76,17.66M22,9.24L14.81,8.63L12,2L9.19,8.63L2,9.24L7.45,13.97L5.82,21L12,17.27L18.18,21L16.54,13.97L22,9.24Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon star-outline-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$3);\n}\nconst IconStarOutline = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _hoisted_1$2 = [\"aria-selected\", \"tabindex\"];\nconst _sfc_main$2 = /* @__PURE__ */ defineComponent({\n __name: \"NcAppSidebarTabsButton\",\n props: /* @__PURE__ */ mergeModels({\n tab: {}\n }, {\n \"selected\": { type: Boolean, ...{ required: true } },\n \"selectedModifiers\": {}\n }),\n emits: [\"update:selected\"],\n setup(__props) {\n const selected = useModel(__props, \"selected\");\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"button\", {\n class: normalizeClass([\"button-vue\", [_ctx.$style.sidebarTabsButton, {\n [_ctx.$style.sidebarTabsButton_selected]: selected.value\n }]]),\n role: \"tab\",\n \"aria-selected\": selected.value,\n tabindex: selected.value ? 0 : -1,\n onClick: _cache[0] || (_cache[0] = ($event) => selected.value = true)\n }, [\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.$style.sidebarTabsButton__icon)\n }, [\n createVNode(_sfc_main$6, {\n vnodes: _ctx.tab.renderIcon()\n }, {\n default: withCtx(() => [\n createElementVNode(\"span\", {\n class: normalizeClass([_ctx.$style.sidebarTabsButton__legacyIcon, _ctx.tab.icon])\n }, null, 2)\n ]),\n _: 1\n }, 8, [\"vnodes\"])\n ], 2),\n createElementVNode(\"span\", {\n class: normalizeClass(_ctx.$style.sidebarTabsButton__name)\n }, toDisplayString(_ctx.tab.name), 3)\n ], 10, _hoisted_1$2);\n };\n }\n});\nconst sidebarTabsButton = \"_sidebarTabsButton_6hxfz\";\nconst sidebarTabsButton_selected = \"_sidebarTabsButton_selected_eBHM-\";\nconst sidebarTabsButton__name = \"_sidebarTabsButton__name_YlW5S\";\nconst sidebarTabsButton__icon = \"_sidebarTabsButton__icon_MPS-D\";\nconst sidebarTabsButton__legacyIcon = \"_sidebarTabsButton__legacyIcon_rzPOu\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_m4vbX\",\n sidebarTabsButton,\n sidebarTabsButton_selected,\n sidebarTabsButton__name,\n sidebarTabsButton__icon,\n sidebarTabsButton__legacyIcon\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcAppSidebarTabsButton = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"__cssModules\", cssModules]]);\nconst _sfc_main$1 = {\n name: \"NcAppSidebarTabs\",\n components: {\n NcAppSidebarTabsButton\n },\n provide() {\n return {\n registerTab: this.registerTab,\n unregisterTab: this.unregisterTab,\n // Getter as an alternative to Vue 2.7 computed(() => this.activeTab)\n getActiveTab: () => this.activeTab,\n // Used to check whether the tab header is shown so the tabs can reference the tab header for `aria-labelledby` or not\n isTablistShown: () => this.hasMultipleTabs\n };\n },\n props: {\n /**\n * Id of the tab to activate\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n }\n },\n emits: [\"update:active\"],\n data(props) {\n return {\n /**\n * Tab descriptions from the passed NcSidebarTab components' props to build the tab navbar from.\n */\n tabs: [],\n /**\n * Local active (open) tab's ID. It allows to use component without v-model:active\n */\n activeTab: props.active\n };\n },\n computed: {\n /**\n * Has multiple tabs. If only one tab - its content is shown without navigation\n *\n * @return {boolean}\n */\n hasMultipleTabs() {\n return this.tabs.length > 1;\n },\n showForSingleTab() {\n return this.forceTabs && this.tabs.length === 1;\n },\n currentTabIndex() {\n return this.tabs.findIndex((tab) => tab.id === this.activeTab);\n }\n },\n watch: {\n tabs() {\n if (this.active) {\n this.updateActive();\n }\n },\n active(active) {\n if (active !== this.activeTab) {\n this.updateActive();\n }\n }\n },\n methods: {\n /**\n * Set the current active tab\n *\n * @param {string} id the id of the tab\n */\n setActive(id) {\n this.activeTab = id;\n this.$emit(\"update:active\", this.activeTab);\n },\n /**\n * Focus the previous tab\n * and emit to the parent component\n */\n focusPreviousTab() {\n if (this.currentTabIndex > 0) {\n this.setActive(this.tabs[this.currentTabIndex - 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the next tab\n * and emit to the parent component\n */\n focusNextTab() {\n if (this.currentTabIndex < this.tabs.length - 1) {\n this.setActive(this.tabs[this.currentTabIndex + 1].id);\n }\n this.focusActiveTab();\n },\n /**\n * Focus the first tab\n * and emit to the parent component\n */\n focusFirstTab() {\n this.setActive(this.tabs[0].id);\n this.focusActiveTab();\n },\n /**\n * Focus the last tab\n * and emit to the parent component\n */\n focusLastTab() {\n this.setActive(this.tabs[this.tabs.length - 1].id);\n this.focusActiveTab();\n },\n /**\n * Focus the current active tab\n */\n focusActiveTab() {\n this.$el.querySelector(`#tab-button-${this.activeTab}`).focus();\n },\n /**\n * Focus the content on tab\n * see aria accessibility guidelines\n */\n focusActiveTabContent() {\n this.$el.querySelector(\"#tab-\" + this.activeTab).focus();\n },\n /**\n * Update the current active tab\n */\n updateActive() {\n this.activeTab = this.active && this.tabs.some(({ id }) => id === this.active) ? this.active : this.tabs[0]?.id ?? \"\";\n },\n /**\n * Register child tab in the tabs\n *\n * @param {object} tab child tab passed to slot\n */\n registerTab(tab) {\n this.tabs.push(tab);\n this.tabs.sort((a, b) => {\n if (a.order === b.order) {\n return a.name.localeCompare(b.name, [getCanonicalLocale()]);\n }\n return a.order - b.order;\n });\n this.updateActive();\n },\n /**\n * Unregister child tab from the tabs\n *\n * @param {string} id tab's id\n */\n unregisterTab(id) {\n const tabIndex = this.tabs.findIndex((tab) => tab.id === id);\n if (tabIndex !== -1) {\n this.tabs.splice(tabIndex, 1);\n }\n if (this.activeTab === id) {\n this.updateActive();\n }\n }\n }\n};\nconst _hoisted_1$1 = { class: \"app-sidebar-tabs\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAppSidebarTabsButton = resolveComponent(\"NcAppSidebarTabsButton\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n $options.hasMultipleTabs || $options.showForSingleTab ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n role: \"tablist\",\n class: \"app-sidebar-tabs__nav\",\n onKeydown: [\n _cache[0] || (_cache[0] = withKeys(withModifiers((...args) => $options.focusPreviousTab && $options.focusPreviousTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"left\"])),\n _cache[1] || (_cache[1] = withKeys(withModifiers((...args) => $options.focusNextTab && $options.focusNextTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"right\"])),\n _cache[2] || (_cache[2] = withKeys(withModifiers((...args) => $options.focusActiveTabContent && $options.focusActiveTabContent(...args), [\"exact\", \"prevent\", \"stop\"]), [\"tab\"])),\n _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"home\"])),\n _cache[4] || (_cache[4] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"end\"])),\n _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.focusFirstTab && $options.focusFirstTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-up\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.focusLastTab && $options.focusLastTab(...args), [\"exact\", \"prevent\", \"stop\"]), [\"page-down\"]))\n ]\n }, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.tabs, (tab) => {\n return openBlock(), createBlock(_component_NcAppSidebarTabsButton, {\n id: `tab-button-${tab.id}`,\n key: tab.id,\n class: \"app-sidebar-tabs__tab\",\n \"aria-controls\": `tab-${tab.id}`,\n selected: $data.activeTab === tab.id,\n tab,\n \"onUpdate:selected\": ($event) => $options.setActive(tab.id)\n }, null, 8, [\"id\", \"aria-controls\", \"selected\", \"tab\", \"onUpdate:selected\"]);\n }), 128))\n ], 32)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-sidebar-tabs__content\", { \"app-sidebar-tabs__content--multiple\": $options.hasMultipleTabs }])\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ], 2)\n ]);\n}\nconst NcAppSidebarTabs = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-1e2d5bfb\"]]);\nregister(t15);\nconst _sfc_main = {\n name: \"NcAppSidebar\",\n components: {\n NcActions,\n NcAppSidebarHeader: _sfc_main$7,\n NcAppSidebarTabs,\n NcButton,\n NcLoadingIcon,\n NcEmptyContent,\n IconArrowRight,\n IconClose,\n IconDockRight,\n IconStar,\n IconStarOutline\n },\n directives: {\n Focus: directive,\n /** @type {import('vue').ObjectDirective} */\n ClickOutside: vOnClickOutside\n },\n inject: {\n ncContentSelector: {\n from: CONTENT_SELECTOR_KEY,\n default: void 0\n }\n },\n props: {\n /**\n * The active tab\n */\n active: {\n type: String,\n default: \"\"\n },\n /**\n * Main text of the sidebar\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Allow to edit the sidebar name.\n */\n nameEditable: {\n type: Boolean,\n default: false\n },\n /**\n * Placeholder in the edit field if the name is editable.\n */\n namePlaceholder: {\n type: String,\n default: \"\"\n },\n /**\n * Secondary name of the sidebar (subline)\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Title to display for the subname.\n */\n subtitle: {\n type: String,\n default: \"\"\n },\n /**\n * Url to the top header background image\n * Applied with css\n */\n background: {\n type: String,\n default: \"\"\n },\n /**\n * Enable the favourite icon if not null\n * See fired events\n */\n starred: {\n type: Boolean,\n default: null\n },\n /**\n * Show loading spinner instead of the star icon\n */\n starLoading: {\n type: Boolean,\n default: false\n },\n /**\n * Show loading spinner instead of tabs\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * Display the sidebar in compact mode\n */\n compact: {\n type: Boolean,\n default: false\n },\n /**\n * Only display close button and default slot content.\n * Don't display other header content and primary and secondary actions.\n * Useful when showing the EmptyContent component as content.\n */\n empty: {\n type: Boolean,\n default: false\n },\n /**\n * Force the actions to display in a three dot menu\n */\n forceMenu: {\n type: Boolean,\n default: false\n },\n /**\n * Force the tab navigation to display even if there is only one tab\n */\n forceTabs: {\n type: Boolean,\n default: false\n },\n /**\n * Linkify the name\n */\n linkifyName: {\n type: Boolean,\n default: false\n },\n /**\n * Title to display for the name.\n * Can be set to the same text in case it's too long.\n */\n title: {\n type: String,\n default: \"\"\n },\n /**\n * Allow to conditionally show the sidebar\n * You can also use `v-if` on the sidebar, but using the open prop allow to keep\n * the sidebar inside the DOM for performance if it is opened and closed multiple times.\n *\n * When using the `open` property to close the sidebar a built-in toggle button will be shown to reopen it,\n * similar to the app navigation. You can remove this button with the `no-toggle` prop.\n */\n open: {\n type: Boolean,\n default: true\n },\n /**\n * Custom classes to assign to the sidebar toggle button.\n * If needed this can be used to assign styles to the button using `:deep()` selector.\n */\n toggleClasses: {\n type: [String, Array, Object],\n default: \"\"\n },\n /**\n * Custom attrs to assign to the sidebar toggle button.\n */\n toggleAttrs: {\n type: Object,\n default: void 0\n },\n /**\n * Do not add the built-in toggle button with `open` prop.\n */\n noToggle: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"close\",\n \"closed\",\n \"opened\",\n // 'figureClick', not emitted on purpose to make \"hasFigureClickListener\" work\n \"update:active\",\n \"update:name\",\n \"update:nameEditable\",\n \"update:open\",\n \"update:starred\",\n \"submitName\",\n \"dismissEditing\"\n ],\n setup() {\n const headerRef = ref(null);\n provide(\"NcAppSidebar:header:ref\", headerRef);\n return {\n uid: createElementId(),\n isMobile: useIsSmallMobile(),\n headerRef\n };\n },\n data() {\n return {\n changeNameTranslated: t(\"Change name\"),\n closeTranslated: t(\"Close sidebar\"),\n favoriteTranslated: t(\"Favorite\"),\n isStarred: this.starred,\n focusTrap: null,\n elementToReturnFocus: null\n };\n },\n computed: {\n canStar() {\n return this.isStarred !== null;\n },\n hasFigureClickListener() {\n return !!this.$attrs.onFigureClick;\n }\n },\n watch: {\n starred() {\n this.isStarred = this.starred;\n },\n isMobile() {\n this.toggleFocusTrap();\n },\n open() {\n this.checkToggleButtonContainerAvailability();\n }\n },\n created() {\n this.preserveElementToReturnFocus();\n this.checkToggleButtonContainerAvailability();\n },\n beforeUnmount() {\n this.$emit(\"closed\");\n this.focusTrap?.deactivate();\n },\n methods: {\n isSlotPopulated,\n t,\n preserveElementToReturnFocus() {\n if (document.activeElement && document.activeElement !== document.body) {\n this.elementToReturnFocus = document.activeElement;\n if (this.elementToReturnFocus.getAttribute(\"role\") === \"menuitem\") {\n const menu = this.elementToReturnFocus.closest('[role=\"menu\"]');\n if (menu) {\n const menuTrigger = document.querySelector(`[aria-controls=\"${menu.id}\"]`);\n this.elementToReturnFocus = menuTrigger;\n }\n }\n }\n },\n initFocusTrap() {\n if (this.focusTrap) {\n return;\n }\n this.focusTrap = createFocusTrap([\n // The sidebar itself\n this.$refs.sidebar,\n // Nextcloud Server header navigation\n document.querySelector(\"#header\")\n ], {\n allowOutsideClick: true,\n fallbackFocus: this.$refs.closeButton.$el,\n trapStack: getTrapStack(),\n escapeDeactivates: false\n });\n },\n /**\n * Activate focus trap if it is currently needed, otherwise deactivate\n */\n toggleFocusTrap() {\n if (this.open && this.isMobile) {\n this.initFocusTrap();\n this.focusTrap.activate();\n } else {\n this.focusTrap?.deactivate();\n }\n },\n /**\n * Close the sidebar on pressing the escape key on mobile\n *\n * @param {KeyboardEvent} event key down event\n */\n onKeydownEsc(event) {\n if (this.isMobile) {\n event.stopPropagation();\n this.closeSidebar();\n }\n },\n onAfterEnter(element) {\n if (this.elementToReturnFocus) {\n this.focus();\n }\n this.toggleFocusTrap();\n this.$emit(\"opened\", element);\n },\n onAfterLeave(element) {\n this.$emit(\"closed\", element);\n this.toggleFocusTrap();\n this.elementToReturnFocus?.focus({ focusVisible: true });\n this.elementToReturnFocus = null;\n },\n /**\n * Used to tell parent component the user asked to close the sidebar\n *\n * @param {Event} e close icon click event\n */\n closeSidebar(e) {\n this.$emit(\"close\", e);\n this.$emit(\"update:open\", false);\n },\n /**\n * Emit figure click event to parent component\n *\n * @param {Event} e click event\n */\n onFigureClick(e) {\n this.$emit(\"figureClick\", e);\n },\n /**\n * Toggle the favourite state\n * and emit to the parent component\n */\n toggleStarred() {\n this.isStarred = !this.isStarred;\n this.$emit(\"update:starred\", this.isStarred);\n },\n async editName() {\n this.$emit(\"update:nameEditable\", true);\n if (this.nameEditable) {\n await this.$nextTick();\n this.$refs.nameInput.focus();\n }\n },\n /**\n * Focus the sidebar\n *\n * @public\n */\n focus() {\n if (!this.open && !this.noToggle) {\n this.$refs.toggle.$el.focus();\n return;\n }\n try {\n this.headerRef.focus();\n } catch {\n warn(\"NcAppSidebar should have focusable header for accessibility reasons. Use NcAppSidebarHeader component.\");\n }\n },\n /**\n * Focus the active tab\n *\n * @public\n */\n focusActiveTabContent() {\n this.preserveElementToReturnFocus();\n this.$refs.tabs.focusActiveTabContent();\n },\n /**\n * Check if the toggle button container is available\n */\n checkToggleButtonContainerAvailability() {\n if (this.open === false && !this.noToggle && !this.ncContentSelector) {\n logger.warn(\"[NcAppSidebar] It looks like you want to use NcAppSidebar with the built-in toggle button. This feature is only available when NcAppSidebar is used in NcContent.\");\n }\n },\n /**\n * Emit name change event to parent component\n *\n * @param {Event} event input event\n */\n onNameInput(event) {\n this.$emit(\"update:name\", event.target.value);\n },\n /**\n * Emit when the name form edit confirm button is pressed in order\n * to change the name.\n *\n * @param {Event} event submit event\n */\n onSubmitName(event) {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"submitName\", event);\n },\n onDismissEditing() {\n this.$emit(\"update:nameEditable\", false);\n this.$emit(\"dismissEditing\");\n },\n onUpdateActive(activeTab) {\n this.$emit(\"update:active\", activeTab);\n }\n }\n};\nconst _hoisted_1 = [\"aria-labelledby\"];\nconst _hoisted_2 = { class: \"app-sidebar-header__info\" };\nconst _hoisted_3 = {\n key: 0,\n class: \"app-sidebar-header__tertiary-actions\"\n};\nconst _hoisted_4 = { class: \"app-sidebar-header__name-container\" };\nconst _hoisted_5 = { class: \"app-sidebar-header__mainname-container\" };\nconst _hoisted_6 = [\"placeholder\", \"value\"];\nconst _hoisted_7 = [\"title\"];\nconst _hoisted_8 = {\n key: 2,\n class: \"app-sidebar-header__description\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_IconDockRight = resolveComponent(\"IconDockRight\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_NcLoadingIcon = resolveComponent(\"NcLoadingIcon\");\n const _component_IconStar = resolveComponent(\"IconStar\");\n const _component_IconStarOutline = resolveComponent(\"IconStarOutline\");\n const _component_NcAppSidebarHeader = resolveComponent(\"NcAppSidebarHeader\");\n const _component_IconArrowRight = resolveComponent(\"IconArrowRight\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n const _component_IconClose = resolveComponent(\"IconClose\");\n const _component_NcAppSidebarTabs = resolveComponent(\"NcAppSidebarTabs\");\n const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n const _directive_focus = resolveDirective(\"focus\");\n const _directive_click_outside = resolveDirective(\"click-outside\");\n return openBlock(), createBlock(Transition, {\n appear: \"\",\n name: \"slide-right\",\n onAfterEnter: $options.onAfterEnter,\n onAfterLeave: $options.onAfterLeave\n }, {\n default: withCtx(() => [\n withDirectives(createElementVNode(\"aside\", {\n id: \"app-sidebar-vue\",\n ref: \"sidebar\",\n class: \"app-sidebar\",\n \"aria-labelledby\": `app-sidebar-vue-${$setup.uid}__header`,\n onKeydown: _cache[6] || (_cache[6] = withKeys((...args) => $options.onKeydownEsc && $options.onKeydownEsc(...args), [\"esc\"]))\n }, [\n $options.ncContentSelector && !$props.open && !$props.noToggle ? (openBlock(), createBlock(Teleport, {\n key: 0,\n to: $options.ncContentSelector\n }, [\n createVNode(_component_NcButton, mergeProps({\n ref: \"toggle\",\n \"aria-label\": $options.t(\"Open sidebar\"),\n class: [\"app-sidebar__toggle\", $props.toggleClasses],\n variant: \"tertiary\"\n }, $props.toggleAttrs, {\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"update:open\", true))\n }), {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"toggle-icon\", {}, () => [\n createVNode(_component_IconDockRight, { size: 20 })\n ], true)\n ]),\n _: 3\n }, 16, [\"aria-label\", \"class\"])\n ], 8, [\"to\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"header\", {\n class: normalizeClass([\"app-sidebar-header\", {\n \"app-sidebar-header--with-figure\": $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background,\n \"app-sidebar-header--compact\": $props.compact\n }])\n }, [\n !$props.empty ? renderSlot(_ctx.$slots, \"info\", { key: 0 }, () => [\n createElementVNode(\"div\", _hoisted_2, [\n $options.isSlotPopulated(_ctx.$slots.header?.()) || $props.background ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n class: normalizeClass([\"app-sidebar-header__figure\", {\n \"app-sidebar-header__figure--with-action\": $options.hasFigureClickListener\n }]),\n style: normalizeStyle({\n backgroundImage: `url(${$props.background})`\n }),\n tabindex: \"0\",\n onClick: _cache[1] || (_cache[1] = (...args) => $options.onFigureClick && $options.onFigureClick(...args)),\n onKeydown: _cache[2] || (_cache[2] = withKeys((...args) => $options.onFigureClick && $options.onFigureClick(...args), [\"enter\"]))\n }, [\n renderSlot(_ctx.$slots, \"header\", { class: \"app-sidebar-header__background\" }, void 0, true)\n ], 38)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([\"app-sidebar-header__desc\", {\n \"app-sidebar-header__desc--with-tertiary-action\": $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()),\n \"app-sidebar-header__desc--editable\": $props.nameEditable && !$props.subname,\n \"app-sidebar-header__desc--with-subname--editable\": $props.nameEditable && $props.subname,\n \"app-sidebar-header__desc--without-actions\": !$options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.())\n }])\n }, [\n $options.canStar || $options.isSlotPopulated(_ctx.$slots[\"tertiary-actions\"]?.()) ? (openBlock(), createElementBlock(\"div\", _hoisted_3, [\n renderSlot(_ctx.$slots, \"tertiary-actions\", {}, () => [\n $options.canStar ? (openBlock(), createBlock(_component_NcButton, {\n key: 0,\n \"aria-label\": $data.favoriteTranslated,\n pressed: $data.isStarred,\n class: \"app-sidebar-header__star\",\n variant: \"secondary\",\n onClick: withModifiers($options.toggleStarred, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n $props.starLoading ? (openBlock(), createBlock(_component_NcLoadingIcon, { key: 0 })) : $data.isStarred ? (openBlock(), createBlock(_component_IconStar, {\n key: 1,\n size: 20\n })) : (openBlock(), createBlock(_component_IconStarOutline, {\n key: 2,\n size: 20\n }))\n ]),\n _: 1\n }, 8, [\"aria-label\", \"pressed\", \"onClick\"])) : createCommentVNode(\"\", true)\n ], true)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", _hoisted_4, [\n createElementVNode(\"div\", _hoisted_5, [\n withDirectives(createVNode(_component_NcAppSidebarHeader, {\n class: \"app-sidebar-header__mainname\",\n name: $props.name,\n linkify: $props.linkifyName,\n title: $props.title,\n tabindex: $props.nameEditable ? 0 : -1,\n onClick: withModifiers($options.editName, [\"self\"])\n }, null, 8, [\"name\", \"linkify\", \"title\", \"tabindex\", \"onClick\"]), [\n [vShow, !$props.nameEditable]\n ]),\n $props.nameEditable ? withDirectives((openBlock(), createElementBlock(\"form\", {\n key: 0,\n class: \"app-sidebar-header__mainname-form\",\n onSubmit: _cache[5] || (_cache[5] = withModifiers((...args) => $options.onSubmitName && $options.onSubmitName(...args), [\"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n ref: \"nameInput\",\n class: \"app-sidebar-header__mainname-input\",\n type: \"text\",\n placeholder: $props.namePlaceholder,\n value: $props.name,\n onKeydown: _cache[3] || (_cache[3] = withKeys(withModifiers((...args) => $options.onDismissEditing && $options.onDismissEditing(...args), [\"stop\"]), [\"esc\"])),\n onInput: _cache[4] || (_cache[4] = (...args) => $options.onNameInput && $options.onNameInput(...args))\n }, null, 40, _hoisted_6), [\n [_directive_focus]\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $data.changeNameTranslated,\n type: \"submit\",\n variant: \"tertiary-no-background\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconArrowRight, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\"])\n ], 32)), [\n [_directive_click_outside, () => $options.onSubmitName()]\n ]) : createCommentVNode(\"\", true),\n $options.isSlotPopulated(_ctx.$slots[\"secondary-actions\"]?.()) ? (openBlock(), createBlock(_component_NcActions, {\n key: 1,\n class: \"app-sidebar-header__menu\",\n forceMenu: $props.forceMenu\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"secondary-actions\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"forceMenu\"])) : createCommentVNode(\"\", true)\n ]),\n $props.subname.trim() !== \"\" || _ctx.$slots[\"subname\"] ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n title: $props.subtitle || void 0,\n class: \"app-sidebar-header__subname\"\n }, [\n renderSlot(_ctx.$slots, \"subname\", {}, () => [\n createTextVNode(toDisplayString($props.subname), 1)\n ], true)\n ], 8, _hoisted_7)) : createCommentVNode(\"\", true)\n ])\n ], 2)\n ])\n ], true) : (openBlock(), createBlock(_component_NcAppSidebarHeader, {\n key: 1,\n class: \"app-sidebar-header__mainname--hidden\",\n name: $props.name,\n tabindex: \"-1\"\n }, null, 8, [\"name\"])),\n createVNode(_component_NcButton, {\n ref: \"closeButton\",\n \"aria-label\": $data.closeTranslated,\n title: $data.closeTranslated,\n class: \"app-sidebar__close\",\n variant: \"tertiary\",\n onClick: withModifiers($options.closeSidebar, [\"prevent\"])\n }, {\n icon: withCtx(() => [\n createVNode(_component_IconClose, { size: 20 })\n ]),\n _: 1\n }, 8, [\"aria-label\", \"title\", \"onClick\"]),\n $options.isSlotPopulated(_ctx.$slots.description?.()) && !$props.empty ? (openBlock(), createElementBlock(\"div\", _hoisted_8, [\n renderSlot(_ctx.$slots, \"description\", {}, void 0, true)\n ])) : createCommentVNode(\"\", true)\n ], 2),\n withDirectives(createVNode(_component_NcAppSidebarTabs, {\n ref: \"tabs\",\n active: $props.active,\n forceTabs: $props.forceTabs,\n \"onUpdate:active\": $options.onUpdateActive\n }, {\n default: withCtx(() => [\n renderSlot(_ctx.$slots, \"default\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"active\", \"forceTabs\", \"onUpdate:active\"]), [\n [vShow, !$props.loading]\n ]),\n $props.loading ? (openBlock(), createBlock(_component_NcEmptyContent, { key: 1 }, {\n icon: withCtx(() => [\n createVNode(_component_NcLoadingIcon, { size: 64 })\n ]),\n _: 1\n })) : createCommentVNode(\"\", true)\n ], 40, _hoisted_1), [\n [vShow, $props.open]\n ])\n ]),\n _: 3\n }, 8, [\"onAfterEnter\", \"onAfterLeave\"]);\n}\nconst NcAppSidebar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-d66d2f51\"]]);\nexport {\n NcAppSidebar as N\n};\n//# sourceMappingURL=NcAppSidebar-KwLsRcZO.mjs.map\n","import PQueue from \"p-queue\";\nconst queue = new PQueue({ concurrency: 5 });\nfunction preloadImage(url) {\n const { resolve, promise } = Promise.withResolvers();\n queue.add(() => {\n const image = new Image();\n image.onerror = () => resolve(false);\n image.onload = () => resolve(true);\n image.src = url;\n return promise;\n });\n return promise;\n}\nexport {\n preloadImage\n};\n//# sourceMappingURL=index.mjs.map\n","import '../assets/NcCollectionList-e5JFvzqX.css';\nimport debounce from \"debounce\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, toDisplayString, withModifiers, normalizeClass, withDirectives, createElementVNode, vModelText, Fragment, renderList, createBlock, resolveDynamicComponent, withCtx, createCommentVNode, createTextVNode, Transition, ref } from \"vue\";\nimport { r as register, L as t28, a as t, M as t6 } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BuRnYpJX.mjs\";\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-ruClKRzS.mjs\";\nimport { g as getRoute } from \"./autolink-U5pBzLgI.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { N as NcSelect } from \"./NcSelect-B1uITk_3.mjs\";\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nregister(t28);\nconst _sfc_main$1 = {\n name: \"NcCollectionListItem\",\n components: {\n NcAvatar,\n NcActions,\n NcActionButton\n },\n props: {\n /**\n * The collection\n */\n collection: {\n type: Object,\n default: null\n },\n /**\n * Current error if any\n */\n error: {\n type: String,\n default: void 0\n }\n },\n emits: [\n \"removeResource\",\n \"renameCollection\"\n ],\n data() {\n return {\n detailsOpen: false,\n newName: null\n };\n },\n computed: {\n getIcon() {\n return (resource) => [resource.iconClass];\n },\n typeClass() {\n return (resource) => \"resource-type-\" + resource.type;\n },\n resources() {\n return this.collection.resources?.filter((resource) => !Array.isArray(resource)) ?? [];\n },\n getComponent() {\n return (resource) => {\n const route = getRoute(this.$router, resource.link);\n return route ? { component: \"router-link\", to: route, href: void 0 } : { component: \"a\", to: void 0, href: resource.link };\n };\n },\n iconUrl() {\n return (resource) => {\n if (resource.mimetype) {\n return OC.MimeType.getIconUrl(resource.mimetype);\n }\n if (resource.iconUrl) {\n return resource.iconUrl;\n }\n return \"\";\n };\n }\n },\n methods: {\n t,\n toggleDetails() {\n this.detailsOpen = !this.detailsOpen;\n },\n showDetails() {\n this.detailsOpen = true;\n },\n removeResource(collection, resource) {\n this.$emit(\"removeResource\", {\n collectionId: collection.id,\n resourceType: resource.type,\n resourceId: resource.id\n });\n },\n openRename() {\n this.newName = this.collection.name;\n },\n renameCollection() {\n if (this.newName) {\n this.$emit(\"renameCollection\", {\n collectionId: this.collection.id,\n name: this.newName\n });\n }\n this.newName = null;\n }\n }\n};\nconst _hoisted_1$1 = { class: \"collection-list-item\" };\nconst _hoisted_2$1 = {\n key: 2,\n class: \"linked-icons\"\n};\nconst _hoisted_3$1 = [\"src\", \"alt\"];\nconst _hoisted_4$1 = {\n key: 3,\n class: \"sharingOptionsGroup\"\n};\nconst _hoisted_5$1 = {\n key: 0,\n class: \"error\"\n};\nconst _hoisted_6$1 = {\n key: 0,\n class: \"resource-list-details\"\n};\nconst _hoisted_7$1 = [\"src\", \"alt\"];\nconst _hoisted_8$1 = { class: \"resource-name\" };\nconst _hoisted_9 = [\"onClick\"];\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcActionButton = resolveComponent(\"NcActionButton\");\n const _component_NcActions = resolveComponent(\"NcActions\");\n return openBlock(), createElementBlock(\"li\", _hoisted_1$1, [\n createVNode(_component_NcAvatar, {\n displayName: $props.collection.name,\n allowPlaceholder: \"\",\n class: \"collection-avatar\"\n }, null, 8, [\"displayName\"]),\n $data.newName === null ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: \"collection-item-name\",\n title: \"\",\n onClick: _cache[0] || (_cache[0] = (...args) => $options.showDetails && $options.showDetails(...args))\n }, toDisplayString($props.collection.name), 1)) : (openBlock(), createElementBlock(\"form\", {\n key: 1,\n class: normalizeClass({ \"should-shake\": $props.error }),\n onSubmit: _cache[2] || (_cache[2] = withModifiers((...args) => $options.renameCollection && $options.renameCollection(...args), [\"prevent\"]))\n }, [\n withDirectives(createElementVNode(\"input\", {\n \"onUpdate:modelValue\": _cache[1] || (_cache[1] = ($event) => $data.newName = $event),\n type: \"text\",\n autocomplete: \"off\",\n autocapitalize: \"off\"\n }, null, 512), [\n [vModelText, $data.newName]\n ]),\n _cache[3] || (_cache[3] = createElementVNode(\"input\", {\n type: \"submit\",\n value: \"\",\n class: \"icon-confirm\"\n }, null, -1))\n ], 34)),\n !$data.detailsOpen && $data.newName === null ? (openBlock(), createElementBlock(\"div\", _hoisted_2$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources.slice(0, 2), (resource) => {\n return openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n key: resource.type + \"|\" + resource.id,\n title: resource.name,\n to: $options.getComponent(resource).to,\n href: $options.getComponent(resource).href,\n class: normalizeClass($options.typeClass(resource))\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: $options.iconUrl(resource),\n alt: resource.name\n }, null, 8, _hoisted_3$1)\n ]),\n _: 2\n }, 1032, [\"title\", \"to\", \"href\", \"class\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true),\n $data.newName === null ? (openBlock(), createElementBlock(\"span\", _hoisted_4$1, [\n createVNode(_component_NcActions, null, {\n default: withCtx(() => [\n createVNode(_component_NcActionButton, {\n icon: \"icon-info\",\n onClick: withModifiers($options.toggleDetails, [\"prevent\"])\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($data.detailsOpen ? $options.t(\"Hide details\") : $options.t(\"Show details\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"]),\n createVNode(_component_NcActionButton, {\n icon: \"icon-rename\",\n onClick: withModifiers($options.openRename, [\"prevent\"])\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString($options.t(\"Rename project\")), 1)\n ]),\n _: 1\n }, 8, [\"onClick\"])\n ]),\n _: 1\n })\n ])) : createCommentVNode(\"\", true),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $props.error ? (openBlock(), createElementBlock(\"div\", _hoisted_5$1, toDisplayString($props.error), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $data.detailsOpen ? (openBlock(), createElementBlock(\"ul\", _hoisted_6$1, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.resources, (resource) => {\n return openBlock(), createElementBlock(\"li\", {\n key: resource.type + \"|\" + resource.id,\n class: normalizeClass($options.typeClass(resource))\n }, [\n (openBlock(), createBlock(resolveDynamicComponent($options.getComponent(resource).component), {\n to: $options.getComponent(resource).to,\n href: $options.getComponent(resource).href\n }, {\n default: withCtx(() => [\n createElementVNode(\"img\", {\n src: $options.iconUrl(resource),\n alt: resource.name\n }, null, 8, _hoisted_7$1),\n createElementVNode(\"span\", _hoisted_8$1, toDisplayString(resource.name || \"\"), 1)\n ]),\n _: 2\n }, 1032, [\"to\", \"href\"])),\n createElementVNode(\"span\", {\n class: \"icon-close\",\n onClick: ($event) => $options.removeResource($props.collection, resource)\n }, null, 8, _hoisted_9)\n ], 2);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]),\n _: 1\n })\n ]);\n}\nconst NcCollectionListItem = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-8ebb9fc1\"]]);\nregister(t6);\nfunction extractOcsData(response) {\n return response.data.ocs.data;\n}\nfunction renameCollectionService(collectionId, collectionName) {\n return axios.put(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { collectionName }).then(extractOcsData);\n}\nfunction getCollectionsByResourceService(resourceType, resourceId) {\n return axios.get(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId })).then(extractOcsData);\n}\nfunction createCollectionService(resourceType, resourceId, name) {\n return axios.post(generateOcsUrl(\"collaboration/resources/{resourceType}/{resourceId}\", { resourceType, resourceId }), { name }).then(extractOcsData);\n}\nfunction addResourceService(collectionId, resourceType, resourceId) {\n return axios.post(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { resourceType, resourceId }).then(extractOcsData);\n}\nfunction removeResourceService(collectionId, resourceType, resourceId) {\n return axios.delete(generateOcsUrl(\"collaboration/resources/collections/{collectionId}\", { collectionId }), { params: { resourceType, resourceId } }).then(extractOcsData);\n}\nfunction searchService(query) {\n return axios.get(generateOcsUrl(\"collaboration/resources/collections/search/{query}\", { query })).then(extractOcsData);\n}\nfunction useCollections() {\n const storedCollections = ref([]);\n const addCollections = (collections) => {\n storedCollections.value = collections;\n };\n const addCollection = (collection) => {\n storedCollections.value.push(collection);\n };\n const removeCollection = (collectionId) => {\n storedCollections.value = storedCollections.value.filter((item) => item.id !== collectionId);\n };\n const updateCollection = (collection) => {\n const index = storedCollections.value.findIndex((item) => item.id === collection.id);\n if (index !== -1) {\n storedCollections.value[index] = collection;\n } else {\n addCollection(collection);\n }\n };\n const fetchCollectionsByResource = async ({ resourceType, resourceId }) => {\n const collections = await getCollectionsByResourceService(resourceType, resourceId);\n addCollections(collections);\n };\n const createCollection = async ({ baseResourceType, baseResourceId, resourceType, resourceId, name }) => {\n const collection = await createCollectionService(baseResourceType, baseResourceId, name);\n addCollection(collection);\n await addResourceToCollection({\n collectionId: collection.id,\n resourceType,\n resourceId\n });\n };\n const renameCollection = async ({ collectionId, name }) => {\n const collection = await renameCollectionService(collectionId, name);\n updateCollection(collection);\n };\n async function addResourceToCollection({ collectionId, resourceType, resourceId }) {\n const collection = await addResourceService(collectionId, resourceType, String(resourceId));\n updateCollection(collection);\n }\n const removeResourceFromCollection = async ({ collectionId, resourceType, resourceId }) => {\n const collection = await removeResourceService(collectionId, resourceType, String(resourceId));\n if (collection.resources.length > 0) {\n updateCollection(collection);\n } else {\n removeCollection(collectionId);\n }\n };\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n renameCollection,\n addResourceToCollection,\n removeResourceFromCollection\n };\n}\nconst METHOD_CREATE_COLLECTION = 0;\nconst METHOD_ADD_TO_COLLECTION = 1;\nconst _sfc_main = {\n name: \"NcCollectionList\",\n components: {\n NcCollectionListItem,\n NcAvatar,\n NcSelect\n },\n props: {\n /**\n * Resource type identifier\n */\n type: {\n type: String,\n default: null\n },\n /**\n * Unique id of the resource\n */\n id: {\n type: String,\n default: null\n },\n /**\n * Name of the resource\n */\n name: {\n type: String,\n default: \"\"\n },\n /**\n * Whether the component is active (to start fetch resources)\n */\n isActive: {\n type: Boolean,\n default: true\n }\n },\n setup() {\n const {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection\n } = useCollections();\n const searchCollections = ref([]);\n const search = debounce(function(query, loading) {\n if (query !== \"\") {\n loading(true);\n searchService(query).then((collections) => {\n searchCollections.value = collections;\n }).catch((error) => {\n logger.error(\"Failed to search for collections\", { error });\n }).finally(() => {\n loading(false);\n });\n }\n }, 500);\n return {\n storedCollections,\n fetchCollectionsByResource,\n createCollection,\n addResourceToCollection,\n removeResourceFromCollection,\n renameCollection,\n searchCollections,\n search\n };\n },\n data() {\n return {\n selectIsOpen: false,\n generatingCodes: false,\n codes: void 0,\n value: null,\n model: {},\n collectionsError: {},\n error: null,\n isSelectOpen: false\n };\n },\n computed: {\n collections() {\n return this.storedCollections.filter((collection) => collection.resources.some((resource) => resource && resource.id === String(this.id) && resource.type === this.type));\n },\n placeholder() {\n return this.isSelectOpen ? t(\"Type to search for existing projects\") : t(\"Add to a project\");\n },\n options() {\n const options = [];\n window.OCP.Collaboration.getTypes().sort().forEach((type) => {\n options.push({\n method: METHOD_CREATE_COLLECTION,\n type,\n title: window.OCP.Collaboration.getLabel(type),\n class: window.OCP.Collaboration.getIcon(type),\n action: () => window.OCP.Collaboration.trigger(type)\n });\n });\n for (const index in this.searchCollections) {\n if (!this.collections.find((collection) => collection.id === this.searchCollections[index].id)) {\n options.push({\n method: METHOD_ADD_TO_COLLECTION,\n title: this.searchCollections[index].name,\n collectionId: this.searchCollections[index].id\n });\n }\n }\n return options;\n },\n resourceIdentifier() {\n return {\n resourceType: this.type,\n resourceId: this.id,\n isActive: this.isActive\n };\n }\n },\n watch: {\n resourceIdentifier: {\n deep: true,\n immediate: true,\n handler(resourceIdentifier) {\n if (!resourceIdentifier.isActive || !resourceIdentifier.resourceId || !resourceIdentifier.resourceType) {\n return;\n }\n this.fetchCollectionsByResource(resourceIdentifier);\n }\n }\n },\n methods: {\n t,\n select(selectedOption) {\n if (selectedOption.method === METHOD_CREATE_COLLECTION) {\n selectedOption.action().then((resourceId) => {\n this.createCollection({\n baseResourceType: this.type,\n baseResourceId: this.id,\n resourceType: selectedOption.type,\n resourceId,\n name: this.name\n }).catch((e) => {\n this.setError(t(\"Failed to create a project\"), e);\n });\n }).catch((e) => {\n logger.error(\"[NcCollectionList] No resource selected\", e);\n });\n }\n if (selectedOption.method === METHOD_ADD_TO_COLLECTION) {\n this.addResourceToCollection({\n collectionId: selectedOption.collectionId,\n resourceType: this.type,\n resourceId: this.id\n }).catch((e) => {\n this.setError(t(\"Failed to add the item to the project\"), e);\n });\n }\n this.value = null;\n },\n showSelect() {\n this.selectIsOpen = true;\n this.$refs.select.$el.focus();\n },\n setError(error, e) {\n logger.error(error, { error: e });\n this.error = error;\n setTimeout(() => {\n this.error = null;\n }, 5e3);\n },\n renameCollectionFromItem({ collectionId, name }) {\n this.renameCollection({ collectionId, name }).catch((e) => {\n logger.error(t(\"Failed to rename the project\"), { error: e });\n this.collectionsError[collectionId] = t(\"Failed to rename the project\");\n setTimeout(() => {\n this.collectionsError[collectionId] = null;\n }, 5e3);\n });\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n id: \"collection-list\",\n class: \"collection-list\"\n};\nconst _hoisted_2 = { id: \"collection-select-container\" };\nconst _hoisted_3 = { class: \"option__desc\" };\nconst _hoisted_4 = { class: \"option__title\" };\nconst _hoisted_5 = { class: \"option__wrapper\" };\nconst _hoisted_6 = { class: \"option__title\" };\nconst _hoisted_7 = { class: \"hint\" };\nconst _hoisted_8 = {\n key: 0,\n class: \"error\"\n};\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n const _component_NcCollectionListItem = resolveComponent(\"NcCollectionListItem\");\n return $options.collections && $props.type && $props.id ? (openBlock(), createElementBlock(\"ul\", _hoisted_1, [\n createElementVNode(\"li\", {\n onClick: _cache[3] || (_cache[3] = (...args) => $options.showSelect && $options.showSelect(...args))\n }, [\n _cache[4] || (_cache[4] = createElementVNode(\"div\", { class: \"avatar\" }, [\n createElementVNode(\"span\", { class: \"icon-projects\" })\n ], -1)),\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcSelect, {\n ref: \"select\",\n modelValue: $data.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => $data.value = $event),\n \"aria-label-combobox\": $options.t(\"Add to a project\"),\n options: $options.options,\n placeholder: $options.placeholder,\n label: \"title\",\n limit: 5,\n onClose: _cache[1] || (_cache[1] = ($event) => $data.isSelectOpen = false),\n onOpen: _cache[2] || (_cache[2] = ($event) => $data.isSelectOpen = true),\n \"onOption:selected\": $options.select,\n onSearch: $setup.search\n }, {\n \"selected-option\": withCtx((option) => [\n createElementVNode(\"span\", _hoisted_3, [\n createElementVNode(\"span\", _hoisted_4, toDisplayString(option.title), 1)\n ])\n ]),\n option: withCtx((option) => [\n createElementVNode(\"span\", _hoisted_5, [\n option.class ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n class: normalizeClass([option.class, \"avatar\"])\n }, null, 2)) : option.method !== 2 ? (openBlock(), createBlock(_component_NcAvatar, {\n key: 1,\n allowPlaceholder: \"\",\n displayName: option.title\n }, null, 8, [\"displayName\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_6, toDisplayString(option.title), 1)\n ])\n ]),\n default: withCtx(() => [\n createElementVNode(\"p\", _hoisted_7, toDisplayString($options.t(\"Connect items to a project to make them easier to find\")), 1)\n ]),\n _: 1\n }, 8, [\"modelValue\", \"aria-label-combobox\", \"options\", \"placeholder\", \"onOption:selected\", \"onSearch\"])\n ])\n ]),\n createVNode(Transition, { name: \"fade\" }, {\n default: withCtx(() => [\n $data.error ? (openBlock(), createElementBlock(\"li\", _hoisted_8, toDisplayString($data.error), 1)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }),\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.collections, (collection) => {\n return openBlock(), createBlock(_component_NcCollectionListItem, {\n key: collection.id,\n collection,\n error: $data.collectionsError[collection.id],\n onRenameCollection: $options.renameCollectionFromItem,\n onRemoveResource: $setup.removeResourceFromCollection\n }, null, 8, [\"collection\", \"error\", \"onRenameCollection\", \"onRemoveResource\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true);\n}\nconst NcCollectionList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0e169eff\"]]);\nexport {\n NcCollectionList as N\n};\n//# sourceMappingURL=NcCollectionList-pWG42SU1.mjs.map\n","import '../assets/NcDashboardWidget-nZuIL1UN.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, resolveComponent, createBlock, withCtx, renderSlot, createVNode, Fragment, renderList, toHandlers } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { r as register, z as t35, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcAvatar } from \"./NcAvatar-ruClKRzS.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./NcDashboardWidgetItem-ZKImQn7Y.mjs\";\nimport { N as NcEmptyContent } from \"./NcEmptyContent-CDgWCt_m.mjs\";\nconst _sfc_main$1 = {\n name: \"CheckIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon check-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$1);\n}\nconst Check = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1]]);\nregister(t35);\nconst _sfc_main = {\n name: \"NcDashboardWidget\",\n components: {\n NcAvatar,\n NcDashboardWidgetItem,\n NcEmptyContent,\n Check\n },\n props: {\n /**\n * An array containing the items to show (specific structure must be respected,\n * except if you override item rendering in the default slot).\n */\n items: {\n type: Array,\n default: () => {\n return [];\n }\n },\n /**\n * If this is set, a \"show more\" text is displayed on the widget's bottom.\n * It's a link pointing to this URL.\n */\n showMoreUrl: {\n type: String,\n default: \"\"\n },\n /**\n * The text of show more button.\n *\n * Expected to be in the form \"More {itemName} …\"\n */\n showMoreLabel: {\n type: String,\n default: t(\"More items …\")\n },\n /**\n * A boolean to put the widget in a loading state.\n */\n loading: {\n type: Boolean,\n default: false\n },\n /**\n * An object containing context menu entries that will be displayed for each item.\n */\n itemMenu: {\n type: Object,\n default: () => {\n return {};\n }\n },\n /**\n * Whether both the items and the empty content message are shown.\n * Usefull for e.g. showing \"No mentions\" and a list of elements.\n */\n showItemsAndEmptyContent: {\n type: Boolean,\n default: false\n },\n /**\n * The text to show in the empty content area.\n */\n emptyContentMessage: {\n type: String,\n default: \"\"\n },\n /**\n * The text to show in the half empty content area.\n */\n halfEmptyContentMessage: {\n type: String,\n default: \"\"\n }\n },\n computed: {\n // forward menu events to my parent\n handlers() {\n const h = {};\n for (const evName in this.itemMenu) {\n h[evName] = (it) => {\n this.$emit(evName, it);\n };\n }\n return h;\n },\n displayedItems() {\n const nbItems = this.showMoreUrl && this.items.length >= this.maxItemNumber ? this.maxItemNumber - 1 : this.maxItemNumber;\n return this.items.slice(0, nbItems);\n },\n showHalfEmptyContentArea() {\n return this.showItemsAndEmptyContent && this.halfEmptyContentString && this.items.length !== 0;\n },\n halfEmptyContentString() {\n return this.halfEmptyContentMessage || this.emptyContentMessage;\n },\n maxItemNumber() {\n return this.showItemsAndEmptyContent ? 5 : 7;\n },\n showMore() {\n return this.showMoreUrl && this.items.length >= this.maxItemNumber;\n }\n }\n};\nconst _hoisted_1 = { class: \"dashboard-widget\" };\nconst _hoisted_2 = { key: 1 };\nconst _hoisted_3 = [\"href\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_Check = resolveComponent(\"Check\");\n const _component_NcEmptyContent = resolveComponent(\"NcEmptyContent\");\n const _component_NcDashboardWidgetItem = resolveComponent(\"NcDashboardWidgetItem\");\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n $options.showHalfEmptyContentArea ? (openBlock(), createBlock(_component_NcEmptyContent, {\n key: 0,\n description: $options.halfEmptyContentString,\n class: \"half-screen\"\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"halfEmptyContentIcon\", {}, () => [\n createVNode(_component_Check)\n ], true)\n ]),\n _: 3\n }, 8, [\"description\"])) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.displayedItems, (item) => {\n return openBlock(), createElementBlock(\"li\", {\n key: item.id\n }, [\n renderSlot(_ctx.$slots, \"default\", { item }, () => [\n createVNode(_component_NcDashboardWidgetItem, mergeProps({ ref_for: true }, item, { itemMenu: $props.itemMenu }, toHandlers($options.handlers)), null, 16, [\"itemMenu\"])\n ], true)\n ]);\n }), 128))\n ]),\n $props.loading ? (openBlock(), createElementBlock(\"div\", _hoisted_2, [\n (openBlock(), createElementBlock(Fragment, null, renderList(7, (i) => {\n return createElementVNode(\"div\", {\n key: i,\n class: \"item-list__entry\"\n }, [\n createVNode(_component_NcAvatar, {\n class: \"item-avatar\",\n size: 44\n }),\n _cache[0] || (_cache[0] = createElementVNode(\"div\", { class: \"item__details\" }, [\n createElementVNode(\"h3\", null, \" \"),\n createElementVNode(\"p\", { class: \"message\" }, \"   \")\n ], -1))\n ]);\n }), 64))\n ])) : $props.items.length === 0 ? renderSlot(_ctx.$slots, \"empty-content\", { key: 2 }, () => [\n $props.emptyContentMessage ? (openBlock(), createBlock(_component_NcEmptyContent, {\n key: 0,\n description: $props.emptyContentMessage\n }, {\n icon: withCtx(() => [\n renderSlot(_ctx.$slots, \"emptyContentIcon\", {}, void 0, true)\n ]),\n _: 3\n }, 8, [\"description\"])) : createCommentVNode(\"\", true)\n ], true) : $options.showMore ? (openBlock(), createElementBlock(\"a\", {\n key: 3,\n href: $props.showMoreUrl,\n target: \"_blank\",\n class: \"more\",\n tabindex: \"0\"\n }, toDisplayString($props.showMoreLabel), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ]);\n}\nconst NcDashboardWidget = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-8dabc003\"]]);\nexport {\n NcDashboardWidget as N\n};\n//# sourceMappingURL=NcDashboardWidget-CvpYMKur.mjs.map\n","/**\n * @module constants\n * @summary Useful constants\n * @description\n * Collection of useful date constants.\n *\n * The constants could be imported from `date-fns/constants`:\n *\n * ```ts\n * import { maxTime, minTime } from \"./constants/date-fns/constants\";\n *\n * function isAllowedTime(time) {\n * return time <= maxTime && time >= minTime;\n * }\n * ```\n */\n\n/**\n * @constant\n * @name daysInWeek\n * @summary Days in 1 week.\n */\nexport const daysInWeek = 7;\n\n/**\n * @constant\n * @name daysInYear\n * @summary Days in 1 year.\n *\n * @description\n * How many days in a year.\n *\n * One years equals 365.2425 days according to the formula:\n *\n * > Leap year occurs every 4 years, except for years that are divisible by 100 and not divisible by 400.\n * > 1 mean year = (365+1/4-1/100+1/400) days = 365.2425 days\n */\nexport const daysInYear = 365.2425;\n\n/**\n * @constant\n * @name maxTime\n * @summary Maximum allowed time.\n *\n * @example\n * import { maxTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = 8640000000000001 <= maxTime;\n * //=> false\n *\n * new Date(8640000000000001);\n * //=> Invalid Date\n */\nexport const maxTime = Math.pow(10, 8) * 24 * 60 * 60 * 1000;\n\n/**\n * @constant\n * @name minTime\n * @summary Minimum allowed time.\n *\n * @example\n * import { minTime } from \"./constants/date-fns/constants\";\n *\n * const isValid = -8640000000000001 >= minTime;\n * //=> false\n *\n * new Date(-8640000000000001)\n * //=> Invalid Date\n */\nexport const minTime = -maxTime;\n\n/**\n * @constant\n * @name millisecondsInWeek\n * @summary Milliseconds in 1 week.\n */\nexport const millisecondsInWeek = 604800000;\n\n/**\n * @constant\n * @name millisecondsInDay\n * @summary Milliseconds in 1 day.\n */\nexport const millisecondsInDay = 86400000;\n\n/**\n * @constant\n * @name millisecondsInMinute\n * @summary Milliseconds in 1 minute\n */\nexport const millisecondsInMinute = 60000;\n\n/**\n * @constant\n * @name millisecondsInHour\n * @summary Milliseconds in 1 hour\n */\nexport const millisecondsInHour = 3600000;\n\n/**\n * @constant\n * @name millisecondsInSecond\n * @summary Milliseconds in 1 second\n */\nexport const millisecondsInSecond = 1000;\n\n/**\n * @constant\n * @name minutesInYear\n * @summary Minutes in 1 year.\n */\nexport const minutesInYear = 525600;\n\n/**\n * @constant\n * @name minutesInMonth\n * @summary Minutes in 1 month.\n */\nexport const minutesInMonth = 43200;\n\n/**\n * @constant\n * @name minutesInDay\n * @summary Minutes in 1 day.\n */\nexport const minutesInDay = 1440;\n\n/**\n * @constant\n * @name minutesInHour\n * @summary Minutes in 1 hour.\n */\nexport const minutesInHour = 60;\n\n/**\n * @constant\n * @name monthsInQuarter\n * @summary Months in 1 quarter.\n */\nexport const monthsInQuarter = 3;\n\n/**\n * @constant\n * @name monthsInYear\n * @summary Months in 1 year.\n */\nexport const monthsInYear = 12;\n\n/**\n * @constant\n * @name quartersInYear\n * @summary Quarters in 1 year\n */\nexport const quartersInYear = 4;\n\n/**\n * @constant\n * @name secondsInHour\n * @summary Seconds in 1 hour.\n */\nexport const secondsInHour = 3600;\n\n/**\n * @constant\n * @name secondsInMinute\n * @summary Seconds in 1 minute.\n */\nexport const secondsInMinute = 60;\n\n/**\n * @constant\n * @name secondsInDay\n * @summary Seconds in 1 day.\n */\nexport const secondsInDay = secondsInHour * 24;\n\n/**\n * @constant\n * @name secondsInWeek\n * @summary Seconds in 1 week.\n */\nexport const secondsInWeek = secondsInDay * 7;\n\n/**\n * @constant\n * @name secondsInYear\n * @summary Seconds in 1 year.\n */\nexport const secondsInYear = secondsInDay * daysInYear;\n\n/**\n * @constant\n * @name secondsInMonth\n * @summary Seconds in 1 month\n */\nexport const secondsInMonth = secondsInYear / 12;\n\n/**\n * @constant\n * @name secondsInQuarter\n * @summary Seconds in 1 quarter.\n */\nexport const secondsInQuarter = secondsInMonth * 3;\n\n/**\n * @constant\n * @name constructFromSymbol\n * @summary Symbol enabling Date extensions to inherit properties from the reference date.\n *\n * The symbol is used to enable the `constructFrom` function to construct a date\n * using a reference date and a value. It allows to transfer extra properties\n * from the reference date to the new date. It's useful for extensions like\n * [`TZDate`](https://github.com/date-fns/tz) that accept a time zone as\n * a constructor argument.\n */\nexport const constructFromSymbol = Symbol.for(\"constructDateFrom\");\n","import { constructFromSymbol } from \"./constants.js\";\n\n/**\n * @name constructFrom\n * @category Generic Helpers\n * @summary Constructs a date using the reference date and the value\n *\n * @description\n * The function constructs a new date using the constructor from the reference\n * date and the given value. It helps to build generic functions that accept\n * date extensions.\n *\n * It defaults to `Date` if the passed reference date is a number or a string.\n *\n * Starting from v3.7.0, it allows to construct a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n *\n * @param date - The reference date to take constructor from\n * @param value - The value to create the date\n *\n * @returns Date initialized using the given date and value\n *\n * @example\n * import { constructFrom } from \"./constructFrom/date-fns\";\n *\n * // A function that clones a date preserving the original type\n * function cloneDate(date: DateType): DateType {\n * return constructFrom(\n * date, // Use constructor from the given date\n * date.getTime() // Use the date value to create a new date\n * );\n * }\n */\nexport function constructFrom(date, value) {\n if (typeof date === \"function\") return date(value);\n\n if (date && typeof date === \"object\" && constructFromSymbol in date)\n return date[constructFromSymbol](value);\n\n if (date instanceof Date) return new date.constructor(value);\n\n return new Date(value);\n}\n\n// Fallback for modularized imports:\nexport default constructFrom;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * Starting from v3.7.0, it clones a date using `[Symbol.for(\"constructDateFrom\")]`\n * enabling to transfer extra properties from the reference date to the new date.\n * It's useful for extensions like [`TZDate`](https://github.com/date-fns/tz)\n * that accept a time zone as a constructor argument.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param argument - The value to convert\n *\n * @returns The parsed date in the local time zone\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nexport function toDate(argument, context) {\n // [TODO] Get rid of `toDate` or `constructFrom`?\n return constructFrom(context || argument, argument);\n}\n\n// Fallback for modularized imports:\nexport default toDate;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addDays} function options.\n */\n\n/**\n * @name addDays\n * @category Day Helpers\n * @summary Add the specified number of days to the given date.\n *\n * @description\n * Add the specified number of days to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be added.\n * @param options - An object with options\n *\n * @returns The new date with the days added\n *\n * @example\n * // Add 10 days to 1 September 2014:\n * const result = addDays(new Date(2014, 8, 1), 10)\n * //=> Thu Sep 11 2014 00:00:00\n */\nexport function addDays(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n\n // If 0 days, no-op to avoid changing times in the hour before end of DST\n if (!amount) return _date;\n\n _date.setDate(_date.getDate() + amount);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default addDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMonths} function options.\n */\n\n/**\n * @name addMonths\n * @category Month Helpers\n * @summary Add the specified number of months to the given date.\n *\n * @description\n * Add the specified number of months to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be added.\n * @param options - The options object\n *\n * @returns The new date with the months added\n *\n * @example\n * // Add 5 months to 1 September 2014:\n * const result = addMonths(new Date(2014, 8, 1), 5)\n * //=> Sun Feb 01 2015 00:00:00\n *\n * // Add one month to 30 January 2023:\n * const result = addMonths(new Date(2023, 0, 30), 1)\n * //=> Tue Feb 28 2023 00:00:00\n */\nexport function addMonths(date, amount, options) {\n const _date = toDate(date, options?.in);\n if (isNaN(amount)) return constructFrom(options?.in || date, NaN);\n if (!amount) {\n // If 0 months, no-op to avoid changing times in the hour before end of DST\n return _date;\n }\n const dayOfMonth = _date.getDate();\n\n // The JS Date object supports date math by accepting out-of-bounds values for\n // month, day, etc. For example, new Date(2020, 0, 0) returns 31 Dec 2019 and\n // new Date(2020, 13, 1) returns 1 Feb 2021. This is *almost* the behavior we\n // want except that dates will wrap around the end of a month, meaning that\n // new Date(2020, 13, 31) will return 3 Mar 2021 not 28 Feb 2021 as desired. So\n // we'll default to the end of the desired month by adding 1 to the desired\n // month and using a date of 0 to back up one day to the end of the desired\n // month.\n const endOfDesiredMonth = constructFrom(options?.in || date, _date.getTime());\n endOfDesiredMonth.setMonth(_date.getMonth() + amount + 1, 0);\n const daysInMonth = endOfDesiredMonth.getDate();\n if (dayOfMonth >= daysInMonth) {\n // If we're already at the end of the month, then this is the correct date\n // and we're done.\n return endOfDesiredMonth;\n } else {\n // Otherwise, we now know that setting the original day-of-month value won't\n // cause an overflow, so set the desired day-of-month. Note that we can't\n // just set the date of `endOfDesiredMonth` because that object may have had\n // its time changed in the unusual case where where a DST transition was on\n // the last day of the month and its local time was in the hour skipped or\n // repeated next to a DST transition. So we use `date` instead which is\n // guaranteed to still have the original time.\n _date.setFullYear(\n endOfDesiredMonth.getFullYear(),\n endOfDesiredMonth.getMonth(),\n dayOfMonth,\n );\n return _date;\n }\n}\n\n// Fallback for modularized imports:\nexport default addMonths;\n","import { addDays } from \"./addDays.js\";\nimport { addMonths } from \"./addMonths.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link add} function options.\n */\n\n/**\n * @name add\n * @category Common Helpers\n * @summary Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date.\n *\n * @description\n * Add the specified years, months, weeks, days, hours, minutes, and seconds to the given date.\n *\n * @typeParam DateType - The `Date` type the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes, and seconds to be added.\n * @param options - An object with options\n *\n * @returns The new date with the seconds added\n *\n * @example\n * // Add the following duration to 1 September 2014, 10:19:50\n * const result = add(new Date(2014, 8, 1, 10, 19, 50), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30,\n * })\n * //=> Thu Jun 15 2017 15:29:20\n */\nexport function add(date, duration, options) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n // Add years and months\n const _date = toDate(date, options?.in);\n const dateWithMonths =\n months || years ? addMonths(_date, months + years * 12) : _date;\n\n // Add weeks and days\n const dateWithDays =\n days || weeks ? addDays(dateWithMonths, days + weeks * 7) : dateWithMonths;\n\n // Add days, hours, minutes, and seconds\n const minutesToAdd = minutes + hours * 60;\n const secondsToAdd = seconds + minutesToAdd * 60;\n const msToAdd = secondsToAdd * 1000;\n\n return constructFrom(options?.in || date, +dateWithDays + msToAdd);\n}\n\n// Fallback for modularized imports:\nexport default add;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link addMilliseconds} function options.\n */\n\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of milliseconds to be added.\n * @param options - The options object\n *\n * @returns The new date with the milliseconds added\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nexport function addMilliseconds(date, amount, options) {\n return constructFrom(options?.in || date, +toDate(date) + amount);\n}\n\n// Fallback for modularized imports:\nexport default addMilliseconds;\n","import { addMilliseconds } from \"./addMilliseconds.js\";\nimport { millisecondsInHour } from \"./constants.js\";\n\n/**\n * The {@link addHours} function options.\n */\n\n/**\n * @name addHours\n * @category Hour Helpers\n * @summary Add the specified number of hours to the given date.\n *\n * @description\n * Add the specified number of hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of hours to be added\n * @param options - An object with options\n *\n * @returns The new date with the hours added\n *\n * @example\n * // Add 2 hours to 10 July 2014 23:00:00:\n * const result = addHours(new Date(2014, 6, 10, 23, 0), 2)\n * //=> Fri Jul 11 2014 01:00:00\n */\nexport function addHours(date, amount, options) {\n return addMilliseconds(date, amount * millisecondsInHour, options);\n}\n\n// Fallback for modularized imports:\nexport default addHours;\n","let defaultOptions = {};\n\nexport function getDefaultOptions() {\n return defaultOptions;\n}\n\nexport function setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfWeek} function options.\n */\n\n/**\n * @name startOfWeek\n * @category Week Helpers\n * @summary Return the start of a week for the given date.\n *\n * @description\n * Return the start of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week\n *\n * @example\n * // The start of a week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // If the week starts on Monday, the start of the week for 2 September 2014 11:55:00:\n * const result = startOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n\n _date.setDate(_date.getDate() - diff);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeek;\n","import { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfISOWeek} function options.\n */\n\n/**\n * @name startOfISOWeek\n * @category ISO Week Helpers\n * @summary Return the start of an ISO week for the given date.\n *\n * @description\n * Return the start of an ISO week for the given date.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week\n *\n * @example\n * // The start of an ISO week for 2 September 2014 11:55:00:\n * const result = startOfISOWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfISOWeek(date, options) {\n return startOfWeek(date, { ...options, weekStartsOn: 1 });\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeek;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeekYear} function options.\n */\n\n/**\n * @name getISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Get the ISO week-numbering year of the given date.\n *\n * @description\n * Get the ISO week-numbering year of the given date,\n * which always starts 3 days before the year's first Thursday.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n *\n * @returns The ISO week-numbering year\n *\n * @example\n * // Which ISO-week numbering year is 2 January 2005?\n * const result = getISOWeekYear(new Date(2005, 0, 2))\n * //=> 2004\n */\nexport function getISOWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const fourthOfJanuaryOfNextYear = constructFrom(_date, 0);\n fourthOfJanuaryOfNextYear.setFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfISOWeek(fourthOfJanuaryOfNextYear);\n\n const fourthOfJanuaryOfThisYear = constructFrom(_date, 0);\n fourthOfJanuaryOfThisYear.setFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfISOWeek(fourthOfJanuaryOfThisYear);\n\n if (_date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (_date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getISOWeekYear;\n","import { toDate } from \"../toDate.js\";\n\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nexport function getTimezoneOffsetInMilliseconds(date) {\n const _date = toDate(date);\n const utcDate = new Date(\n Date.UTC(\n _date.getFullYear(),\n _date.getMonth(),\n _date.getDate(),\n _date.getHours(),\n _date.getMinutes(),\n _date.getSeconds(),\n _date.getMilliseconds(),\n ),\n );\n utcDate.setUTCFullYear(_date.getFullYear());\n return +date - +utcDate;\n}\n","import { constructFrom } from \"../constructFrom.js\";\n\nexport function normalizeDates(context, ...dates) {\n const normalize = constructFrom.bind(\n null,\n context || dates.find((date) => typeof date === \"object\"),\n );\n return dates.map(normalize);\n}\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfDay} function options.\n */\n\n/**\n * @name startOfDay\n * @category Day Helpers\n * @summary Return the start of a day for the given date.\n *\n * @description\n * Return the start of a day for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a day\n *\n * @example\n * // The start of a day for 2 September 2014 11:55:00:\n * const result = startOfDay(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 02 2014 00:00:00\n */\nexport function startOfDay(date, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfDay;\n","import { getTimezoneOffsetInMilliseconds } from \"./_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { millisecondsInDay } from \"./constants.js\";\nimport { startOfDay } from \"./startOfDay.js\";\n\n/**\n * The {@link differenceInCalendarDays} function options.\n */\n\n/**\n * @name differenceInCalendarDays\n * @category Day Helpers\n * @summary Get the number of calendar days between the given dates.\n *\n * @description\n * Get the number of calendar days between the given dates. This means that the times are removed\n * from the dates and then the difference in days is calculated.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - The options object\n *\n * @returns The number of calendar days\n *\n * @example\n * // How many calendar days are between\n * // 2 July 2011 23:00:00 and 2 July 2012 00:00:00?\n * const result = differenceInCalendarDays(\n * new Date(2012, 6, 2, 0, 0),\n * new Date(2011, 6, 2, 23, 0)\n * )\n * //=> 366\n * // How many calendar days are between\n * // 2 July 2011 23:59:00 and 3 July 2011 00:01:00?\n * const result = differenceInCalendarDays(\n * new Date(2011, 6, 3, 0, 1),\n * new Date(2011, 6, 2, 23, 59)\n * )\n * //=> 1\n */\nexport function differenceInCalendarDays(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n const laterStartOfDay = startOfDay(laterDate_);\n const earlierStartOfDay = startOfDay(earlierDate_);\n\n const laterTimestamp =\n +laterStartOfDay - getTimezoneOffsetInMilliseconds(laterStartOfDay);\n const earlierTimestamp =\n +earlierStartOfDay - getTimezoneOffsetInMilliseconds(earlierStartOfDay);\n\n // Round the number of days to the nearest integer because the number of\n // milliseconds in a day is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round((laterTimestamp - earlierTimestamp) / millisecondsInDay);\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getISOWeekYear } from \"./getISOWeekYear.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\n\n/**\n * The {@link startOfISOWeekYear} function options.\n */\n\n/**\n * @name startOfISOWeekYear\n * @category ISO Week-Numbering Year Helpers\n * @summary Return the start of an ISO week-numbering year for the given date.\n *\n * @description\n * Return the start of an ISO week-numbering year,\n * which always starts 3 days before the year's first Thursday.\n * The result will be in the local timezone.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of an ISO week-numbering year\n *\n * @example\n * // The start of an ISO week-numbering year for 2 July 2005:\n * const result = startOfISOWeekYear(new Date(2005, 6, 2))\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfISOWeekYear(date, options) {\n const year = getISOWeekYear(date, options);\n const fourthOfJanuary = constructFrom(options?.in || date, 0);\n fourthOfJanuary.setFullYear(year, 0, 4);\n fourthOfJanuary.setHours(0, 0, 0, 0);\n return startOfISOWeek(fourthOfJanuary);\n}\n\n// Fallback for modularized imports:\nexport default startOfISOWeekYear;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addQuarters} function options.\n */\n\n/**\n * @name addQuarters\n * @category Quarter Helpers\n * @summary Add the specified number of year quarters to the given date.\n *\n * @description\n * Add the specified number of year quarters to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of quarters to be added.\n * @param options - An object with options\n *\n * @returns The new date with the quarters added\n *\n * @example\n * // Add 1 quarter to 1 September 2014:\n * const result = addQuarters(new Date(2014, 8, 1), 1)\n * //=; Mon Dec 01 2014 00:00:00\n */\nexport function addQuarters(date, amount, options) {\n return addMonths(date, amount * 3, options);\n}\n\n// Fallback for modularized imports:\nexport default addQuarters;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The {@link addYears} function options.\n */\n\n/**\n * @name addYears\n * @category Year Helpers\n * @summary Add the specified number of years to the given date.\n *\n * @description\n * Add the specified number of years to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be added.\n * @param options - The options\n *\n * @returns The new date with the years added\n *\n * @example\n * // Add 5 years to 1 September 2014:\n * const result = addYears(new Date(2014, 8, 1), 5)\n * //=> Sun Sep 01 2019 00:00:00\n */\nexport function addYears(date, amount, options) {\n return addMonths(date, amount * 12, options);\n}\n\n// Fallback for modularized imports:\nexport default addYears;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name compareAsc\n * @category Common Helpers\n * @summary Compare the two dates and return -1, 0 or 1.\n *\n * @description\n * Compare the two dates and return 1 if the first date is after the second,\n * -1 if the first date is before the second or 0 if dates are equal.\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The result of the comparison\n *\n * @example\n * // Compare 11 February 1987 and 10 July 1989:\n * const result = compareAsc(new Date(1987, 1, 11), new Date(1989, 6, 10))\n * //=> -1\n *\n * @example\n * // Sort the array of dates:\n * const result = [\n * new Date(1995, 6, 2),\n * new Date(1987, 1, 11),\n * new Date(1989, 6, 10)\n * ].sort(compareAsc)\n * //=> [\n * // Wed Feb 11 1987 00:00:00,\n * // Mon Jul 10 1989 00:00:00,\n * // Sun Jul 02 1995 00:00:00\n * // ]\n */\nexport function compareAsc(dateLeft, dateRight) {\n const diff = +toDate(dateLeft) - +toDate(dateRight);\n\n if (diff < 0) return -1;\n else if (diff > 0) return 1;\n\n // Return 0 if diff is 0; return NaN if diff is NaN\n return diff;\n}\n\n// Fallback for modularized imports:\nexport default compareAsc;\n","/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param value - The value to check\n *\n * @returns True if the given value is a date\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nexport function isDate(value) {\n return (\n value instanceof Date ||\n (typeof value === \"object\" &&\n Object.prototype.toString.call(value) === \"[object Date]\")\n );\n}\n\n// Fallback for modularized imports:\nexport default isDate;\n","import { isDate } from \"./isDate.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate](https://date-fns.org/docs/toDate)\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param date - The date to check\n *\n * @returns The date is valid\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertible into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nexport function isValid(date) {\n return !((!isDate(date) && typeof date !== \"number\") || isNaN(+toDate(date)));\n}\n\n// Fallback for modularized imports:\nexport default isValid;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getQuarter} function options.\n */\n\n/**\n * @name getQuarter\n * @category Quarter Helpers\n * @summary Get the year quarter of the given date.\n *\n * @description\n * Get the year quarter of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The quarter\n *\n * @example\n * // Which quarter is 2 July 2014?\n * const result = getQuarter(new Date(2014, 6, 2));\n * //=> 3\n */\nexport function getQuarter(date, options) {\n const _date = toDate(date, options?.in);\n const quarter = Math.trunc(_date.getMonth() / 3) + 1;\n return quarter;\n}\n\n// Fallback for modularized imports:\nexport default getQuarter;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\n\n/**\n * The {@link differenceInCalendarYears} function options.\n */\n\n/**\n * @name differenceInCalendarYears\n * @category Year Helpers\n * @summary Get the number of calendar years between the given dates.\n *\n * @description\n * Get the number of calendar years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n\n * @returns The number of calendar years\n *\n * @example\n * // How many calendar years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInCalendarYears(\n * new Date(2015, 1, 11),\n * new Date(2013, 11, 31)\n * );\n * //=> 2\n */\nexport function differenceInCalendarYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return laterDate_.getFullYear() - earlierDate_.getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default differenceInCalendarYears;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { compareAsc } from \"./compareAsc.js\";\nimport { differenceInCalendarYears } from \"./differenceInCalendarYears.js\";\n\n/**\n * The {@link differenceInYears} function options.\n */\n\n/**\n * @name differenceInYears\n * @category Year Helpers\n * @summary Get the number of full years between the given dates.\n *\n * @description\n * Get the number of full years between the given dates.\n *\n * @param laterDate - The later date\n * @param earlierDate - The earlier date\n * @param options - An object with options\n *\n * @returns The number of full years\n *\n * @example\n * // How many full years are between 31 December 2013 and 11 February 2015?\n * const result = differenceInYears(new Date(2015, 1, 11), new Date(2013, 11, 31))\n * //=> 1\n */\nexport function differenceInYears(laterDate, earlierDate, options) {\n const [laterDate_, earlierDate_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n\n // -1 if the left date is earlier than the right date\n // 2023-12-31 - 2024-01-01 = -1\n const sign = compareAsc(laterDate_, earlierDate_);\n\n // First calculate the difference in calendar years\n // 2024-01-01 - 2023-12-31 = 1 year\n const diff = Math.abs(differenceInCalendarYears(laterDate_, earlierDate_));\n\n // Now we need to calculate if the difference is full. To do that we set\n // both dates to the same year and check if the both date's month and day\n // form a full year.\n laterDate_.setFullYear(1584);\n earlierDate_.setFullYear(1584);\n\n // For it to be true, when the later date is indeed later than the earlier date\n // (2026-02-01 - 2023-12-10 = 3 years), the difference is full if\n // the normalized later date is also later than the normalized earlier date.\n // In our example, 1584-02-01 is earlier than 1584-12-10, so the difference\n // is partial, hence we need to subtract 1 from the difference 3 - 1 = 2.\n const partial = compareAsc(laterDate_, earlierDate_) === -sign;\n\n const result = sign * (diff - +partial);\n\n // Prevent negative zero\n return result === 0 ? 0 : result;\n}\n\n// Fallback for modularized imports:\nexport default differenceInYears;\n","import { normalizeDates } from \"./normalizeDates.js\";\n\nexport function normalizeInterval(context, interval) {\n const [start, end] = normalizeDates(context, interval.start, interval.end);\n return { start, end };\n}\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { constructFrom } from \"./constructFrom.js\";\n\n/**\n * The {@link eachDayOfInterval} function options.\n */\n\n/**\n * The {@link eachDayOfInterval} function result type. It resolves the proper data type.\n * It uses the first argument date object type, starting from the date argument,\n * then the start interval date, and finally the end interval date. If\n * a context function is passed, it uses the context function return type.\n */\n\n/**\n * @name eachDayOfInterval\n * @category Interval Helpers\n * @summary Return the array of dates within the specified time interval.\n *\n * @description\n * Return the array of dates within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval.\n * @param options - An object with options.\n *\n * @returns The array with starts of days from the day of the interval start to the day of the interval end\n *\n * @example\n * // Each day between 6 October 2014 and 10 October 2014:\n * const result = eachDayOfInterval({\n * start: new Date(2014, 9, 6),\n * end: new Date(2014, 9, 10)\n * })\n * //=> [\n * // Mon Oct 06 2014 00:00:00,\n * // Tue Oct 07 2014 00:00:00,\n * // Wed Oct 08 2014 00:00:00,\n * // Thu Oct 09 2014 00:00:00,\n * // Fri Oct 10 2014 00:00:00\n * // ]\n */\nexport function eachDayOfInterval(interval, options) {\n const { start, end } = normalizeInterval(options?.in, interval);\n\n let reversed = +start > +end;\n const endTime = reversed ? +start : +end;\n const date = reversed ? end : start;\n date.setHours(0, 0, 0, 0);\n\n let step = options?.step ?? 1;\n if (!step) return [];\n if (step < 0) {\n step = -step;\n reversed = !reversed;\n }\n\n const dates = [];\n\n while (+date <= endTime) {\n dates.push(constructFrom(start, date));\n date.setDate(date.getDate() + step);\n date.setHours(0, 0, 0, 0);\n }\n\n return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachDayOfInterval;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfQuarter} function options.\n */\n\n/**\n * @name startOfQuarter\n * @category Quarter Helpers\n * @summary Return the start of a year quarter for the given date.\n *\n * @description\n * Return the start of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a quarter\n *\n * @example\n * // The start of a quarter for 2 September 2014 11:55:00:\n * const result = startOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Jul 01 2014 00:00:00\n */\nexport function startOfQuarter(date, options) {\n const _date = toDate(date, options?.in);\n const currentMonth = _date.getMonth();\n const month = currentMonth - (currentMonth % 3);\n _date.setMonth(month, 1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfQuarter;\n","import { normalizeInterval } from \"./_lib/normalizeInterval.js\";\nimport { addQuarters } from \"./addQuarters.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfQuarter } from \"./startOfQuarter.js\";\n\n/**\n * The {@link eachQuarterOfInterval} function options.\n */\n\n/**\n * The {@link eachQuarterOfInterval} function result type. It resolves the proper data type.\n * It uses the first argument date object type, starting from the date argument,\n * then the start interval date, and finally the end interval date. If\n * a context function is passed, it uses the context function return type.\n */\n\n/**\n * @name eachQuarterOfInterval\n * @category Interval Helpers\n * @summary Return the array of quarters within the specified time interval.\n *\n * @description\n * Return the array of quarters within the specified time interval.\n *\n * @typeParam IntervalType - Interval type.\n * @typeParam Options - Options type.\n *\n * @param interval - The interval\n * @param options - An object with options\n *\n * @returns The array with starts of quarters from the quarter of the interval start to the quarter of the interval end\n *\n * @example\n * // Each quarter within interval 6 February 2014 - 10 August 2014:\n * const result = eachQuarterOfInterval({\n * start: new Date(2014, 1, 6),\n * end: new Date(2014, 7, 10),\n * })\n * //=> [\n * // Wed Jan 01 2014 00:00:00,\n * // Tue Apr 01 2014 00:00:00,\n * // Tue Jul 01 2014 00:00:00,\n * // ]\n */\nexport function eachQuarterOfInterval(interval, options) {\n const { start, end } = normalizeInterval(options?.in, interval);\n\n let reversed = +start > +end;\n const endTime = reversed ? +startOfQuarter(start) : +startOfQuarter(end);\n let date = reversed ? startOfQuarter(end) : startOfQuarter(start);\n\n let step = options?.step ?? 1;\n if (!step) return [];\n if (step < 0) {\n step = -step;\n reversed = !reversed;\n }\n\n const dates = [];\n\n while (+date <= endTime) {\n dates.push(constructFrom(start, date));\n date = addQuarters(date, step);\n }\n\n return reversed ? dates.reverse() : dates;\n}\n\n// Fallback for modularized imports:\nexport default eachQuarterOfInterval;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfMonth} function options.\n */\n\n/**\n * @name startOfMonth\n * @category Month Helpers\n * @summary Return the start of a month for the given date.\n *\n * @description\n * Return the start of a month for the given date. The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments.\n * Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed,\n * or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a month\n *\n * @example\n * // The start of a month for 2 September 2014 11:55:00:\n * const result = startOfMonth(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function startOfMonth(date, options) {\n const _date = toDate(date, options?.in);\n _date.setDate(1);\n _date.setHours(0, 0, 0, 0);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfYear} function options.\n */\n\n/**\n * @name endOfYear\n * @category Year Helpers\n * @summary Return the end of a year for the given date.\n *\n * @description\n * Return the end of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The end of a year\n *\n * @example\n * // The end of a year for 2 September 2014 11:55:00:\n * const result = endOfYear(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Wed Dec 31 2014 23:59:59.999\n */\nexport function endOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n _date.setFullYear(year + 1, 0, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link startOfYear} function options.\n */\n\n/**\n * @name startOfYear\n * @category Year Helpers\n * @summary Return the start of a year for the given date.\n *\n * @description\n * Return the start of a year for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - The options\n *\n * @returns The start of a year\n *\n * @example\n * // The start of a year for 2 September 2014 11:55:00:\n * const result = startOfYear(new Date(2014, 8, 2, 11, 55, 00))\n * //=> Wed Jan 01 2014 00:00:00\n */\nexport function startOfYear(date, options) {\n const date_ = toDate(date, options?.in);\n date_.setFullYear(date_.getFullYear(), 0, 1);\n date_.setHours(0, 0, 0, 0);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default startOfYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfWeek} function options.\n */\n\n/**\n * @name endOfWeek\n * @category Week Helpers\n * @summary Return the end of a week for the given date.\n *\n * @description\n * Return the end of a week for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a week\n *\n * @example\n * // The end of a week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Sat Sep 06 2014 23:59:59.999\n *\n * @example\n * // If the week starts on Monday, the end of the week for 2 September 2014 11:55:00:\n * const result = endOfWeek(new Date(2014, 8, 2, 11, 55, 0), { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 23:59:59.999\n */\nexport function endOfWeek(date, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const _date = toDate(date, options?.in);\n const day = _date.getDay();\n const diff = (day < weekStartsOn ? -7 : 0) + 6 - (day - weekStartsOn);\n\n _date.setDate(_date.getDate() + diff);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfWeek;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link endOfQuarter} function options.\n */\n\n/**\n * @name endOfQuarter\n * @category Quarter Helpers\n * @summary Return the end of a year quarter for the given date.\n *\n * @description\n * Return the end of a year quarter for the given date.\n * The result will be in the local timezone.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The end of a quarter\n *\n * @example\n * // The end of a quarter for 2 September 2014 11:55:00:\n * const result = endOfQuarter(new Date(2014, 8, 2, 11, 55, 0))\n * //=> Tue Sep 30 2014 23:59:59.999\n */\nexport function endOfQuarter(date, options) {\n const _date = toDate(date, options?.in);\n const currentMonth = _date.getMonth();\n const month = currentMonth - (currentMonth % 3) + 3;\n _date.setMonth(month, 0);\n _date.setHours(23, 59, 59, 999);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default endOfQuarter;\n","const formatDistanceLocale = {\n lessThanXSeconds: {\n one: \"less than a second\",\n other: \"less than {{count}} seconds\",\n },\n\n xSeconds: {\n one: \"1 second\",\n other: \"{{count}} seconds\",\n },\n\n halfAMinute: \"half a minute\",\n\n lessThanXMinutes: {\n one: \"less than a minute\",\n other: \"less than {{count}} minutes\",\n },\n\n xMinutes: {\n one: \"1 minute\",\n other: \"{{count}} minutes\",\n },\n\n aboutXHours: {\n one: \"about 1 hour\",\n other: \"about {{count}} hours\",\n },\n\n xHours: {\n one: \"1 hour\",\n other: \"{{count}} hours\",\n },\n\n xDays: {\n one: \"1 day\",\n other: \"{{count}} days\",\n },\n\n aboutXWeeks: {\n one: \"about 1 week\",\n other: \"about {{count}} weeks\",\n },\n\n xWeeks: {\n one: \"1 week\",\n other: \"{{count}} weeks\",\n },\n\n aboutXMonths: {\n one: \"about 1 month\",\n other: \"about {{count}} months\",\n },\n\n xMonths: {\n one: \"1 month\",\n other: \"{{count}} months\",\n },\n\n aboutXYears: {\n one: \"about 1 year\",\n other: \"about {{count}} years\",\n },\n\n xYears: {\n one: \"1 year\",\n other: \"{{count}} years\",\n },\n\n overXYears: {\n one: \"over 1 year\",\n other: \"over {{count}} years\",\n },\n\n almostXYears: {\n one: \"almost 1 year\",\n other: \"almost {{count}} years\",\n },\n};\n\nexport const formatDistance = (token, count, options) => {\n let result;\n\n const tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === \"string\") {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace(\"{{count}}\", count.toString());\n }\n\n if (options?.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return \"in \" + result;\n } else {\n return result + \" ago\";\n }\n }\n\n return result;\n};\n","export function buildFormatLongFn(args) {\n return (options = {}) => {\n // TODO: Remove String()\n const width = options.width ? String(options.width) : args.defaultWidth;\n const format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\n","import { buildFormatLongFn } from \"../../_lib/buildFormatLongFn.js\";\n\nconst dateFormats = {\n full: \"EEEE, MMMM do, y\",\n long: \"MMMM do, y\",\n medium: \"MMM d, y\",\n short: \"MM/dd/yyyy\",\n};\n\nconst timeFormats = {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\",\n};\n\nconst dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: \"{{date}}, {{time}}\",\n short: \"{{date}}, {{time}}\",\n};\n\nexport const formatLong = {\n date: buildFormatLongFn({\n formats: dateFormats,\n defaultWidth: \"full\",\n }),\n\n time: buildFormatLongFn({\n formats: timeFormats,\n defaultWidth: \"full\",\n }),\n\n dateTime: buildFormatLongFn({\n formats: dateTimeFormats,\n defaultWidth: \"full\",\n }),\n};\n","const formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: \"P\",\n};\n\nexport const formatRelative = (token, _date, _baseDate, _options) =>\n formatRelativeLocale[token];\n","/**\n * The localize function argument callback which allows to convert raw value to\n * the actual type.\n *\n * @param value - The value to convert\n *\n * @returns The converted value\n */\n\n/**\n * The map of localized values for each width.\n */\n\n/**\n * The index type of the locale unit value. It types conversion of units of\n * values that don't start at 0 (i.e. quarters).\n */\n\n/**\n * Converts the unit value to the tuple of values.\n */\n\n/**\n * The tuple of localized era values. The first element represents BC,\n * the second element represents AD.\n */\n\n/**\n * The tuple of localized quarter values. The first element represents Q1.\n */\n\n/**\n * The tuple of localized day values. The first element represents Sunday.\n */\n\n/**\n * The tuple of localized month values. The first element represents January.\n */\n\nexport function buildLocalizeFn(args) {\n return (value, options) => {\n const context = options?.context ? String(options.context) : \"standalone\";\n\n let valuesArray;\n if (context === \"formatting\" && args.formattingValues) {\n const defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n const width = options?.width ? String(options.width) : defaultWidth;\n\n valuesArray =\n args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n const defaultWidth = args.defaultWidth;\n const width = options?.width ? String(options.width) : args.defaultWidth;\n\n valuesArray = args.values[width] || args.values[defaultWidth];\n }\n const index = args.argumentCallback ? args.argumentCallback(value) : value;\n\n // @ts-expect-error - For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\n","import { buildLocalizeFn } from \"../../_lib/buildLocalizeFn.js\";\n\nconst eraValues = {\n narrow: [\"B\", \"A\"],\n abbreviated: [\"BC\", \"AD\"],\n wide: [\"Before Christ\", \"Anno Domini\"],\n};\n\nconst quarterValues = {\n narrow: [\"1\", \"2\", \"3\", \"4\"],\n abbreviated: [\"Q1\", \"Q2\", \"Q3\", \"Q4\"],\n wide: [\"1st quarter\", \"2nd quarter\", \"3rd quarter\", \"4th quarter\"],\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nconst monthValues = {\n narrow: [\"J\", \"F\", \"M\", \"A\", \"M\", \"J\", \"J\", \"A\", \"S\", \"O\", \"N\", \"D\"],\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\",\n ],\n\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\",\n ],\n};\n\nconst dayValues = {\n narrow: [\"S\", \"M\", \"T\", \"W\", \"T\", \"F\", \"S\"],\n short: [\"Su\", \"Mo\", \"Tu\", \"We\", \"Th\", \"Fr\", \"Sa\"],\n abbreviated: [\"Sun\", \"Mon\", \"Tue\", \"Wed\", \"Thu\", \"Fri\", \"Sat\"],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\",\n ],\n};\n\nconst dayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n },\n};\n\nconst formattingDayPeriodValues = {\n narrow: {\n am: \"a\",\n pm: \"p\",\n midnight: \"mi\",\n noon: \"n\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n abbreviated: {\n am: \"AM\",\n pm: \"PM\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n wide: {\n am: \"a.m.\",\n pm: \"p.m.\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"in the morning\",\n afternoon: \"in the afternoon\",\n evening: \"in the evening\",\n night: \"at night\",\n },\n};\n\nconst ordinalNumber = (dirtyNumber, _options) => {\n const number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n const rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + \"st\";\n case 2:\n return number + \"nd\";\n case 3:\n return number + \"rd\";\n }\n }\n return number + \"th\";\n};\n\nexport const localize = {\n ordinalNumber,\n\n era: buildLocalizeFn({\n values: eraValues,\n defaultWidth: \"wide\",\n }),\n\n quarter: buildLocalizeFn({\n values: quarterValues,\n defaultWidth: \"wide\",\n argumentCallback: (quarter) => quarter - 1,\n }),\n\n month: buildLocalizeFn({\n values: monthValues,\n defaultWidth: \"wide\",\n }),\n\n day: buildLocalizeFn({\n values: dayValues,\n defaultWidth: \"wide\",\n }),\n\n dayPeriod: buildLocalizeFn({\n values: dayPeriodValues,\n defaultWidth: \"wide\",\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: \"wide\",\n }),\n};\n","export function buildMatchFn(args) {\n return (string, options = {}) => {\n const width = options.width;\n\n const matchPattern =\n (width && args.matchPatterns[width]) ||\n args.matchPatterns[args.defaultMatchWidth];\n const matchResult = string.match(matchPattern);\n\n if (!matchResult) {\n return null;\n }\n const matchedString = matchResult[0];\n\n const parsePatterns =\n (width && args.parsePatterns[width]) ||\n args.parsePatterns[args.defaultParseWidth];\n\n const key = Array.isArray(parsePatterns)\n ? findIndex(parsePatterns, (pattern) => pattern.test(matchedString))\n : // [TODO] -- I challenge you to fix the type\n findKey(parsePatterns, (pattern) => pattern.test(matchedString));\n\n let value;\n\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback\n ? // [TODO] -- I challenge you to fix the type\n options.valueCallback(value)\n : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n\nfunction findKey(object, predicate) {\n for (const key in object) {\n if (\n Object.prototype.hasOwnProperty.call(object, key) &&\n predicate(object[key])\n ) {\n return key;\n }\n }\n return undefined;\n}\n\nfunction findIndex(array, predicate) {\n for (let key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\n","export function buildMatchPatternFn(args) {\n return (string, options = {}) => {\n const matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n const matchedString = matchResult[0];\n\n const parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n let value = args.valueCallback\n ? args.valueCallback(parseResult[0])\n : parseResult[0];\n\n // [TODO] I challenge you to fix the type\n value = options.valueCallback ? options.valueCallback(value) : value;\n\n const rest = string.slice(matchedString.length);\n\n return { value, rest };\n };\n}\n","import { buildMatchFn } from \"../../_lib/buildMatchFn.js\";\nimport { buildMatchPatternFn } from \"../../_lib/buildMatchPatternFn.js\";\n\nconst matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nconst parseOrdinalNumberPattern = /\\d+/i;\n\nconst matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i,\n};\nconst parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i],\n};\n\nconst matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i,\n};\nconst parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i],\n};\n\nconst matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i,\n};\nconst parseMonthPatterns = {\n narrow: [\n /^j/i,\n /^f/i,\n /^m/i,\n /^a/i,\n /^m/i,\n /^j/i,\n /^j/i,\n /^a/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n\n any: [\n /^ja/i,\n /^f/i,\n /^mar/i,\n /^ap/i,\n /^may/i,\n /^jun/i,\n /^jul/i,\n /^au/i,\n /^s/i,\n /^o/i,\n /^n/i,\n /^d/i,\n ],\n};\n\nconst matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i,\n};\nconst parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i],\n};\n\nconst matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i,\n};\nconst parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i,\n },\n};\n\nexport const match = {\n ordinalNumber: buildMatchPatternFn({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: (value) => parseInt(value, 10),\n }),\n\n era: buildMatchFn({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseEraPatterns,\n defaultParseWidth: \"any\",\n }),\n\n quarter: buildMatchFn({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: \"any\",\n valueCallback: (index) => index + 1,\n }),\n\n month: buildMatchFn({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: \"any\",\n }),\n\n day: buildMatchFn({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: \"wide\",\n parsePatterns: parseDayPatterns,\n defaultParseWidth: \"any\",\n }),\n\n dayPeriod: buildMatchFn({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: \"any\",\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: \"any\",\n }),\n};\n","import { formatDistance } from \"./en-US/_lib/formatDistance.js\";\nimport { formatLong } from \"./en-US/_lib/formatLong.js\";\nimport { formatRelative } from \"./en-US/_lib/formatRelative.js\";\nimport { localize } from \"./en-US/_lib/localize.js\";\nimport { match } from \"./en-US/_lib/match.js\";\n\n/**\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp](https://github.com/kossnocorp)\n * @author Lesha Koss [@leshakoss](https://github.com/leshakoss)\n */\nexport const enUS = {\n code: \"en-US\",\n formatDistance: formatDistance,\n formatLong: formatLong,\n formatRelative: formatRelative,\n localize: localize,\n match: match,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1,\n },\n};\n\n// Fallback for modularized imports:\nexport default enUS;\n","import { differenceInCalendarDays } from \"./differenceInCalendarDays.js\";\nimport { startOfYear } from \"./startOfYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDayOfYear} function options.\n */\n\n/**\n * @name getDayOfYear\n * @category Day Helpers\n * @summary Get the day of the year of the given date.\n *\n * @description\n * Get the day of the year of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of year\n *\n * @example\n * // Which day of the year is 2 July 2014?\n * const result = getDayOfYear(new Date(2014, 6, 2))\n * //=> 183\n */\nexport function getDayOfYear(date, options) {\n const _date = toDate(date, options?.in);\n const diff = differenceInCalendarDays(_date, startOfYear(_date));\n const dayOfYear = diff + 1;\n return dayOfYear;\n}\n\n// Fallback for modularized imports:\nexport default getDayOfYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfISOWeek } from \"./startOfISOWeek.js\";\nimport { startOfISOWeekYear } from \"./startOfISOWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISOWeek} function options.\n */\n\n/**\n * @name getISOWeek\n * @category ISO Week Helpers\n * @summary Get the ISO week of the given date.\n *\n * @description\n * Get the ISO week of the given date.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The ISO week\n *\n * @example\n * // Which week of the ISO-week numbering year is 2 January 2005?\n * const result = getISOWeek(new Date(2005, 0, 2))\n * //=> 53\n */\nexport function getISOWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfISOWeek(_date) - +startOfISOWeekYear(_date);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getISOWeek;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeekYear} function options.\n */\n\n/**\n * @name getWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Get the local week-numbering year of the given date.\n *\n * @description\n * Get the local week-numbering year of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options.\n *\n * @returns The local week-numbering year\n *\n * @example\n * // Which week numbering year is 26 December 2004 with the default settings?\n * const result = getWeekYear(new Date(2004, 11, 26))\n * //=> 2005\n *\n * @example\n * // Which week numbering year is 26 December 2004 if week starts on Saturday?\n * const result = getWeekYear(new Date(2004, 11, 26), { weekStartsOn: 6 })\n * //=> 2004\n *\n * @example\n * // Which week numbering year is 26 December 2004 if the first week contains 4 January?\n * const result = getWeekYear(new Date(2004, 11, 26), { firstWeekContainsDate: 4 })\n * //=> 2004\n */\nexport function getWeekYear(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const firstWeekOfNextYear = constructFrom(options?.in || date, 0);\n firstWeekOfNextYear.setFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setHours(0, 0, 0, 0);\n const startOfNextYear = startOfWeek(firstWeekOfNextYear, options);\n\n const firstWeekOfThisYear = constructFrom(options?.in || date, 0);\n firstWeekOfThisYear.setFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setHours(0, 0, 0, 0);\n const startOfThisYear = startOfWeek(firstWeekOfThisYear, options);\n\n if (+_date >= +startOfNextYear) {\n return year + 1;\n } else if (+_date >= +startOfThisYear) {\n return year;\n } else {\n return year - 1;\n }\n}\n\n// Fallback for modularized imports:\nexport default getWeekYear;\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getWeekYear } from \"./getWeekYear.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\n\n/**\n * The {@link startOfWeekYear} function options.\n */\n\n/**\n * @name startOfWeekYear\n * @category Week-Numbering Year Helpers\n * @summary Return the start of a local week-numbering year for the given date.\n *\n * @description\n * Return the start of a local week-numbering year.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type.\n *\n * @param date - The original date\n * @param options - An object with options\n *\n * @returns The start of a week-numbering year\n *\n * @example\n * // The start of an a week-numbering year for 2 July 2005 with default settings:\n * const result = startOfWeekYear(new Date(2005, 6, 2))\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // The start of a week-numbering year for 2 July 2005\n * // if Monday is the first day of week\n * // and 4 January is always in the first week of the year:\n * const result = startOfWeekYear(new Date(2005, 6, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Mon Jan 03 2005 00:00:00\n */\nexport function startOfWeekYear(date, options) {\n const defaultOptions = getDefaultOptions();\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const year = getWeekYear(date, options);\n const firstWeek = constructFrom(options?.in || date, 0);\n firstWeek.setFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setHours(0, 0, 0, 0);\n const _date = startOfWeek(firstWeek, options);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default startOfWeekYear;\n","import { millisecondsInWeek } from \"./constants.js\";\nimport { startOfWeek } from \"./startOfWeek.js\";\nimport { startOfWeekYear } from \"./startOfWeekYear.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getWeek} function options.\n */\n\n/**\n * @name getWeek\n * @category Week Helpers\n * @summary Get the local week index of the given date.\n *\n * @description\n * Get the local week index of the given date.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The week\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005 with default options?\n * const result = getWeek(new Date(2005, 0, 2))\n * //=> 2\n *\n * @example\n * // Which week of the local week numbering year is 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January?\n * const result = getWeek(new Date(2005, 0, 2), {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> 53\n */\nexport function getWeek(date, options) {\n const _date = toDate(date, options?.in);\n const diff = +startOfWeek(_date, options) - +startOfWeekYear(_date, options);\n\n // Round the number of weeks to the nearest integer because the number of\n // milliseconds in a week is not constant (e.g. it's different in the week of\n // the daylight saving time clock shift).\n return Math.round(diff / millisecondsInWeek) + 1;\n}\n\n// Fallback for modularized imports:\nexport default getWeek;\n","export function addLeadingZeros(number, targetLength) {\n const sign = number < 0 ? \"-\" : \"\";\n const output = Math.abs(number).toString().padStart(targetLength, \"0\");\n return sign + output;\n}\n","import { addLeadingZeros } from \"../addLeadingZeros.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nexport const lightFormatters = {\n // Year\n y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return addLeadingZeros(token === \"yy\" ? year % 100 : year, token.length);\n },\n\n // Month\n M(date, token) {\n const month = date.getMonth();\n return token === \"M\" ? String(month + 1) : addLeadingZeros(month + 1, 2);\n },\n\n // Day of the month\n d(date, token) {\n return addLeadingZeros(date.getDate(), token.length);\n },\n\n // AM or PM\n a(date, token) {\n const dayPeriodEnumValue = date.getHours() / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return dayPeriodEnumValue.toUpperCase();\n case \"aaa\":\n return dayPeriodEnumValue;\n case \"aaaaa\":\n return dayPeriodEnumValue[0];\n case \"aaaa\":\n default:\n return dayPeriodEnumValue === \"am\" ? \"a.m.\" : \"p.m.\";\n }\n },\n\n // Hour [1-12]\n h(date, token) {\n return addLeadingZeros(date.getHours() % 12 || 12, token.length);\n },\n\n // Hour [0-23]\n H(date, token) {\n return addLeadingZeros(date.getHours(), token.length);\n },\n\n // Minute\n m(date, token) {\n return addLeadingZeros(date.getMinutes(), token.length);\n },\n\n // Second\n s(date, token) {\n return addLeadingZeros(date.getSeconds(), token.length);\n },\n\n // Fraction of second\n S(date, token) {\n const numberOfDigits = token.length;\n const milliseconds = date.getMilliseconds();\n const fractionalSeconds = Math.trunc(\n milliseconds * Math.pow(10, numberOfDigits - 3),\n );\n return addLeadingZeros(fractionalSeconds, token.length);\n },\n};\n","import { getDayOfYear } from \"../../getDayOfYear.js\";\nimport { getISOWeek } from \"../../getISOWeek.js\";\nimport { getISOWeekYear } from \"../../getISOWeekYear.js\";\nimport { getWeek } from \"../../getWeek.js\";\nimport { getWeekYear } from \"../../getWeekYear.js\";\n\nimport { addLeadingZeros } from \"../addLeadingZeros.js\";\nimport { lightFormatters } from \"./lightFormatters.js\";\n\nconst dayPeriodEnum = {\n am: \"am\",\n pm: \"pm\",\n midnight: \"midnight\",\n noon: \"noon\",\n morning: \"morning\",\n afternoon: \"afternoon\",\n evening: \"evening\",\n night: \"night\",\n};\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nexport const formatters = {\n // Era\n G: function (date, token, localize) {\n const era = date.getFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return localize.era(era, { width: \"abbreviated\" });\n // A, B\n case \"GGGGG\":\n return localize.era(era, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return localize.era(era, { width: \"wide\" });\n }\n },\n\n // Year\n y: function (date, token, localize) {\n // Ordinal number\n if (token === \"yo\") {\n const signedYear = date.getFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, { unit: \"year\" });\n }\n\n return lightFormatters.y(date, token);\n },\n\n // Local week-numbering year\n Y: function (date, token, localize, options) {\n const signedWeekYear = getWeekYear(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n const weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === \"YY\") {\n const twoDigitYear = weekYear % 100;\n return addLeadingZeros(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === \"Yo\") {\n return localize.ordinalNumber(weekYear, { unit: \"year\" });\n }\n\n // Padding\n return addLeadingZeros(weekYear, token.length);\n },\n\n // ISO week-numbering year\n R: function (date, token) {\n const isoWeekYear = getISOWeekYear(date);\n\n // Padding\n return addLeadingZeros(isoWeekYear, token.length);\n },\n\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function (date, token) {\n const year = date.getFullYear();\n return addLeadingZeros(year, token.length);\n },\n\n // Quarter\n Q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"QQ\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone quarter\n q: function (date, token, localize) {\n const quarter = Math.ceil((date.getMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n return String(quarter);\n // 01, 02, 03, 04\n case \"qq\":\n return addLeadingZeros(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return localize.ordinalNumber(quarter, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return localize.quarter(quarter, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return localize.quarter(quarter, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return localize.quarter(quarter, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // Month\n M: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n case \"M\":\n case \"MM\":\n return lightFormatters.M(date, token);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // J, F, ..., D\n case \"MMMMM\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return localize.month(month, { width: \"wide\", context: \"formatting\" });\n }\n },\n\n // Stand-alone month\n L: function (date, token, localize) {\n const month = date.getMonth();\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return String(month + 1);\n // 01, 02, ..., 12\n case \"LL\":\n return addLeadingZeros(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return localize.ordinalNumber(month + 1, { unit: \"month\" });\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return localize.month(month, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // J, F, ..., D\n case \"LLLLL\":\n return localize.month(month, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return localize.month(month, { width: \"wide\", context: \"standalone\" });\n }\n },\n\n // Local week of year\n w: function (date, token, localize, options) {\n const week = getWeek(date, options);\n\n if (token === \"wo\") {\n return localize.ordinalNumber(week, { unit: \"week\" });\n }\n\n return addLeadingZeros(week, token.length);\n },\n\n // ISO week of year\n I: function (date, token, localize) {\n const isoWeek = getISOWeek(date);\n\n if (token === \"Io\") {\n return localize.ordinalNumber(isoWeek, { unit: \"week\" });\n }\n\n return addLeadingZeros(isoWeek, token.length);\n },\n\n // Day of the month\n d: function (date, token, localize) {\n if (token === \"do\") {\n return localize.ordinalNumber(date.getDate(), { unit: \"date\" });\n }\n\n return lightFormatters.d(date, token);\n },\n\n // Day of year\n D: function (date, token, localize) {\n const dayOfYear = getDayOfYear(date);\n\n if (token === \"Do\") {\n return localize.ordinalNumber(dayOfYear, { unit: \"dayOfYear\" });\n }\n\n return addLeadingZeros(dayOfYear, token.length);\n },\n\n // Day of week\n E: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"EEEEE\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"EEEE\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Local day of week\n e: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case \"e\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"ee\":\n return addLeadingZeros(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case \"eo\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"eee\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"eeeee\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"eeee\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Stand-alone local day of week\n c: function (date, token, localize, options) {\n const dayOfWeek = date.getDay();\n const localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case \"c\":\n return String(localDayOfWeek);\n // Padded numerical value\n case \"cc\":\n return addLeadingZeros(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case \"co\":\n return localize.ordinalNumber(localDayOfWeek, { unit: \"day\" });\n case \"ccc\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"standalone\",\n });\n // T\n case \"ccccc\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"standalone\",\n });\n // Tuesday\n case \"cccc\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"standalone\",\n });\n }\n },\n\n // ISO day of week\n i: function (date, token, localize) {\n const dayOfWeek = date.getDay();\n const isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case \"i\":\n return String(isoDayOfWeek);\n // 02\n case \"ii\":\n return addLeadingZeros(isoDayOfWeek, token.length);\n // 2nd\n case \"io\":\n return localize.ordinalNumber(isoDayOfWeek, { unit: \"day\" });\n // Tue\n case \"iii\":\n return localize.day(dayOfWeek, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n // T\n case \"iiiii\":\n return localize.day(dayOfWeek, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"iiiiii\":\n return localize.day(dayOfWeek, {\n width: \"short\",\n context: \"formatting\",\n });\n // Tuesday\n case \"iiii\":\n default:\n return localize.day(dayOfWeek, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM or PM\n a: function (date, token, localize) {\n const hours = date.getHours();\n const dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n\n switch (token) {\n case \"a\":\n case \"aa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"aaa\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"aaaaa\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // AM, PM, midnight, noon\n b: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? \"pm\" : \"am\";\n }\n\n switch (token) {\n case \"b\":\n case \"bb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"bbb\":\n return localize\n .dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n })\n .toLowerCase();\n case \"bbbbb\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // in the morning, in the afternoon, in the evening, at night\n B: function (date, token, localize) {\n const hours = date.getHours();\n let dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"abbreviated\",\n context: \"formatting\",\n });\n case \"BBBBB\":\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: \"wide\",\n context: \"formatting\",\n });\n }\n },\n\n // Hour [1-12]\n h: function (date, token, localize) {\n if (token === \"ho\") {\n let hours = date.getHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return lightFormatters.h(date, token);\n },\n\n // Hour [0-23]\n H: function (date, token, localize) {\n if (token === \"Ho\") {\n return localize.ordinalNumber(date.getHours(), { unit: \"hour\" });\n }\n\n return lightFormatters.H(date, token);\n },\n\n // Hour [0-11]\n K: function (date, token, localize) {\n const hours = date.getHours() % 12;\n\n if (token === \"Ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Hour [1-24]\n k: function (date, token, localize) {\n let hours = date.getHours();\n if (hours === 0) hours = 24;\n\n if (token === \"ko\") {\n return localize.ordinalNumber(hours, { unit: \"hour\" });\n }\n\n return addLeadingZeros(hours, token.length);\n },\n\n // Minute\n m: function (date, token, localize) {\n if (token === \"mo\") {\n return localize.ordinalNumber(date.getMinutes(), { unit: \"minute\" });\n }\n\n return lightFormatters.m(date, token);\n },\n\n // Second\n s: function (date, token, localize) {\n if (token === \"so\") {\n return localize.ordinalNumber(date.getSeconds(), { unit: \"second\" });\n }\n\n return lightFormatters.s(date, token);\n },\n\n // Fraction of second\n S: function (date, token) {\n return lightFormatters.S(date, token);\n },\n\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n if (timezoneOffset === 0) {\n return \"Z\";\n }\n\n switch (token) {\n // Hours and optional minutes\n case \"X\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case \"XXXX\":\n case \"XX\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case \"XXXXX\":\n case \"XXX\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Hours and optional minutes\n case \"x\":\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case \"xxxx\":\n case \"xx\": // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case \"xxxxx\":\n case \"xxx\": // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"O\":\n case \"OO\":\n case \"OOO\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"OOOO\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, _localize) {\n const timezoneOffset = date.getTimezoneOffset();\n\n switch (token) {\n // Short\n case \"z\":\n case \"zz\":\n case \"zzz\":\n return \"GMT\" + formatTimezoneShort(timezoneOffset, \":\");\n // Long\n case \"zzzz\":\n default:\n return \"GMT\" + formatTimezone(timezoneOffset, \":\");\n }\n },\n\n // Seconds timestamp\n t: function (date, token, _localize) {\n const timestamp = Math.trunc(+date / 1000);\n return addLeadingZeros(timestamp, token.length);\n },\n\n // Milliseconds timestamp\n T: function (date, token, _localize) {\n return addLeadingZeros(+date, token.length);\n },\n};\n\nfunction formatTimezoneShort(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = Math.trunc(absOffset / 60);\n const minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n return sign + String(hours) + delimiter + addLeadingZeros(minutes, 2);\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, delimiter) {\n if (offset % 60 === 0) {\n const sign = offset > 0 ? \"-\" : \"+\";\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, delimiter);\n}\n\nfunction formatTimezone(offset, delimiter = \"\") {\n const sign = offset > 0 ? \"-\" : \"+\";\n const absOffset = Math.abs(offset);\n const hours = addLeadingZeros(Math.trunc(absOffset / 60), 2);\n const minutes = addLeadingZeros(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\n","const dateLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"P\":\n return formatLong.date({ width: \"short\" });\n case \"PP\":\n return formatLong.date({ width: \"medium\" });\n case \"PPP\":\n return formatLong.date({ width: \"long\" });\n case \"PPPP\":\n default:\n return formatLong.date({ width: \"full\" });\n }\n};\n\nconst timeLongFormatter = (pattern, formatLong) => {\n switch (pattern) {\n case \"p\":\n return formatLong.time({ width: \"short\" });\n case \"pp\":\n return formatLong.time({ width: \"medium\" });\n case \"ppp\":\n return formatLong.time({ width: \"long\" });\n case \"pppp\":\n default:\n return formatLong.time({ width: \"full\" });\n }\n};\n\nconst dateTimeLongFormatter = (pattern, formatLong) => {\n const matchResult = pattern.match(/(P+)(p+)?/) || [];\n const datePattern = matchResult[1];\n const timePattern = matchResult[2];\n\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n\n let dateTimeFormat;\n\n switch (datePattern) {\n case \"P\":\n dateTimeFormat = formatLong.dateTime({ width: \"short\" });\n break;\n case \"PP\":\n dateTimeFormat = formatLong.dateTime({ width: \"medium\" });\n break;\n case \"PPP\":\n dateTimeFormat = formatLong.dateTime({ width: \"long\" });\n break;\n case \"PPPP\":\n default:\n dateTimeFormat = formatLong.dateTime({ width: \"full\" });\n break;\n }\n\n return dateTimeFormat\n .replace(\"{{date}}\", dateLongFormatter(datePattern, formatLong))\n .replace(\"{{time}}\", timeLongFormatter(timePattern, formatLong));\n};\n\nexport const longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter,\n};\n","const dayOfYearTokenRE = /^D+$/;\nconst weekYearTokenRE = /^Y+$/;\n\nconst throwTokens = [\"D\", \"DD\", \"YY\", \"YYYY\"];\n\nexport function isProtectedDayOfYearToken(token) {\n return dayOfYearTokenRE.test(token);\n}\n\nexport function isProtectedWeekYearToken(token) {\n return weekYearTokenRE.test(token);\n}\n\nexport function warnOrThrowProtectedError(token, format, input) {\n const _message = message(token, format, input);\n console.warn(_message);\n if (throwTokens.includes(token)) throw new RangeError(_message);\n}\n\nfunction message(token, format, input) {\n const subject = token[0] === \"Y\" ? \"years\" : \"days of the month\";\n return `Use \\`${token.toLowerCase()}\\` instead of \\`${token}\\` (in \\`${format}\\`) for formatting ${subject} to the input \\`${input}\\`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md`;\n}\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { formatters } from \"./_lib/format/formatters.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { isValid } from \"./isValid.js\";\nimport { toDate } from \"./toDate.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { formatters, longFormatters };\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\nexport { format as formatDate };\n\n/**\n * The {@link format} function options.\n */\n\n/**\n * @name format\n * @alias formatDate\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear](https://date-fns.org/docs/getISOWeekYear)\n * and [getWeekYear](https://date-fns.org/docs/getWeekYear)).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param date - The original date\n * @param format - The string of tokens\n * @param options - An object with options\n *\n * @returns The formatted date string\n *\n * @throws `date` must not be Invalid Date\n * @throws `options.locale` must contain `localize` property\n * @throws `options.locale` must contain `formatLong` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport function format(date, formatStr, options) {\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const originalDate = toDate(date, options?.in);\n\n if (!isValid(originalDate)) {\n throw new RangeError(\"Invalid time value\");\n }\n\n let parts = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter === \"p\" || firstCharacter === \"P\") {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp)\n .map((substring) => {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return { isToken: false, value: \"'\" };\n }\n\n const firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return { isToken: false, value: cleanEscapedString(substring) };\n }\n\n if (formatters[firstCharacter]) {\n return { isToken: true, value: substring };\n }\n\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n return { isToken: false, value: substring };\n });\n\n // invoke localize preprocessor (only for french locales at the moment)\n if (locale.localize.preprocessor) {\n parts = locale.localize.preprocessor(originalDate, parts);\n }\n\n const formatterOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n return parts\n .map((part) => {\n if (!part.isToken) return part.value;\n\n const token = part.value;\n\n if (\n (!options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)) ||\n (!options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token))\n ) {\n warnOrThrowProtectedError(token, formatStr, String(date));\n }\n\n const formatter = formatters[token[0]];\n return formatter(originalDate, token, locale.localize, formatterOptions);\n })\n .join(\"\");\n}\n\nfunction cleanEscapedString(input) {\n const matched = input.match(escapedStringRegExp);\n\n if (!matched) {\n return input;\n }\n\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default format;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDay} function options.\n */\n\n/**\n * @name getDay\n * @category Weekday Helpers\n * @summary Get the day of the week of the given date.\n *\n * @description\n * Get the day of the week of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The day of week, 0 represents Sunday\n *\n * @example\n * // Which day of the week is 29 February 2012?\n * const result = getDay(new Date(2012, 1, 29))\n * //=> 3\n */\nexport function getDay(date, options) {\n return toDate(date, options?.in).getDay();\n}\n\n// Fallback for modularized imports:\nexport default getDay;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getDaysInMonth} function options.\n */\n\n/**\n * @name getDaysInMonth\n * @category Month Helpers\n * @summary Get the number of days in a month of the given date.\n *\n * @description\n * Get the number of days in a month of the given date, considering the context if provided.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The number of days in a month\n *\n * @example\n * // How many days are in February 2000?\n * const result = getDaysInMonth(new Date(2000, 1))\n * //=> 29\n */\nexport function getDaysInMonth(date, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n const monthIndex = _date.getMonth();\n const lastDayOfMonth = constructFrom(_date, 0);\n lastDayOfMonth.setFullYear(year, monthIndex + 1, 0);\n lastDayOfMonth.setHours(0, 0, 0, 0);\n return lastDayOfMonth.getDate();\n}\n\n// Fallback for modularized imports:\nexport default getDaysInMonth;\n","import { getDefaultOptions as getInternalDefaultOptions } from \"./_lib/defaultOptions.js\";\n\n/**\n * @name getDefaultOptions\n * @category Common Helpers\n * @summary Get default options.\n * @pure false\n *\n * @description\n * Returns an object that contains defaults for\n * `options.locale`, `options.weekStartsOn` and `options.firstWeekContainsDate`\n * arguments for all functions.\n *\n * You can change these with [setDefaultOptions](https://date-fns.org/docs/setDefaultOptions).\n *\n * @returns The default options\n *\n * @example\n * const result = getDefaultOptions()\n * //=> {}\n *\n * @example\n * setDefaultOptions({ weekStarsOn: 1, firstWeekContainsDate: 4 })\n * const result = getDefaultOptions()\n * //=> { weekStarsOn: 1, firstWeekContainsDate: 4 }\n */\nexport function getDefaultOptions() {\n return Object.assign({}, getInternalDefaultOptions());\n}\n\n// Fallback for modularized imports:\nexport default getDefaultOptions;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getHours} function options.\n */\n\n/**\n * @name getHours\n * @category Hour Helpers\n * @summary Get the hours of the given date.\n *\n * @description\n * Get the hours of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The hours\n *\n * @example\n * // Get the hours of 29 February 2012 11:45:00:\n * const result = getHours(new Date(2012, 1, 29, 11, 45))\n * //=> 11\n */\nexport function getHours(date, options) {\n return toDate(date, options?.in).getHours();\n}\n\n// Fallback for modularized imports:\nexport default getHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getISODay} function options.\n */\n\n/**\n * @name getISODay\n * @category Weekday Helpers\n * @summary Get the day of the ISO week of the given date.\n *\n * @description\n * Get the day of the ISO week of the given date,\n * which is 7 for Sunday, 1 for Monday etc.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The day of ISO week\n *\n * @example\n * // Which day of the ISO week is 26 February 2012?\n * const result = getISODay(new Date(2012, 1, 26))\n * //=> 7\n */\nexport function getISODay(date, options) {\n const day = toDate(date, options?.in).getDay();\n return day === 0 ? 7 : day;\n}\n\n// Fallback for modularized imports:\nexport default getISODay;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getMinutes} function options.\n */\n\n/**\n * @name getMinutes\n * @category Minute Helpers\n * @summary Get the minutes of the given date.\n *\n * @description\n * Get the minutes of the given date.\n *\n * @param date - The given date\n * @param options - The options\n *\n * @returns The minutes\n *\n * @example\n * // Get the minutes of 29 February 2012 11:45:05:\n * const result = getMinutes(new Date(2012, 1, 29, 11, 45, 5))\n * //=> 45\n */\nexport function getMinutes(date, options) {\n return toDate(date, options?.in).getMinutes();\n}\n\n// Fallback for modularized imports:\nexport default getMinutes;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getMonth} function options.\n */\n\n/**\n * @name getMonth\n * @category Month Helpers\n * @summary Get the month of the given date.\n *\n * @description\n * Get the month of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The month index (0-11)\n *\n * @example\n * // Which month is 29 February 2012?\n * const result = getMonth(new Date(2012, 1, 29))\n * //=> 1\n */\nexport function getMonth(date, options) {\n return toDate(date, options?.in).getMonth();\n}\n\n// Fallback for modularized imports:\nexport default getMonth;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name getSeconds\n * @category Second Helpers\n * @summary Get the seconds of the given date.\n *\n * @description\n * Get the seconds of the given date.\n *\n * @param date - The given date\n *\n * @returns The seconds\n *\n * @example\n * // Get the seconds of 29 February 2012 11:45:05.123:\n * const result = getSeconds(new Date(2012, 1, 29, 11, 45, 5, 123))\n * //=> 5\n */\nexport function getSeconds(date) {\n return toDate(date).getSeconds();\n}\n\n// Fallback for modularized imports:\nexport default getSeconds;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link getYear} function options.\n */\n\n/**\n * @name getYear\n * @category Year Helpers\n * @summary Get the year of the given date.\n *\n * @description\n * Get the year of the given date.\n *\n * @param date - The given date\n * @param options - An object with options\n *\n * @returns The year\n *\n * @example\n * // Which year is 2 July 2014?\n * const result = getYear(new Date(2014, 6, 2))\n * //=> 2014\n */\nexport function getYear(date, options) {\n return toDate(date, options?.in).getFullYear();\n}\n\n// Fallback for modularized imports:\nexport default getYear;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isAfter\n * @category Common Helpers\n * @summary Is the first date after the second one?\n *\n * @description\n * Is the first date after the second one?\n *\n * @param date - The date that should be after the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is after the second date\n *\n * @example\n * // Is 10 July 1989 after 11 February 1987?\n * const result = isAfter(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> true\n */\nexport function isAfter(date, dateToCompare) {\n return +toDate(date) > +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isAfter;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isBefore\n * @category Common Helpers\n * @summary Is the first date before the second one?\n *\n * @description\n * Is the first date before the second one?\n *\n * @param date - The date that should be before the other one to return true\n * @param dateToCompare - The date to compare with\n *\n * @returns The first date is before the second date\n *\n * @example\n * // Is 10 July 1989 before 11 February 1987?\n * const result = isBefore(new Date(1989, 6, 10), new Date(1987, 1, 11))\n * //=> false\n */\nexport function isBefore(date, dateToCompare) {\n return +toDate(date) < +toDate(dateToCompare);\n}\n\n// Fallback for modularized imports:\nexport default isBefore;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * @name isEqual\n * @category Common Helpers\n * @summary Are the given dates equal?\n *\n * @description\n * Are the given dates equal?\n *\n * @param dateLeft - The first date to compare\n * @param dateRight - The second date to compare\n *\n * @returns The dates are equal\n *\n * @example\n * // Are 2 July 2014 06:30:45.000 and 2 July 2014 06:30:45.500 equal?\n * const result = isEqual(\n * new Date(2014, 6, 2, 6, 30, 45, 0),\n * new Date(2014, 6, 2, 6, 30, 45, 500)\n * )\n * //=> false\n */\nexport function isEqual(leftDate, rightDate) {\n return +toDate(leftDate) === +toDate(rightDate);\n}\n\n// Fallback for modularized imports:\nexport default isEqual;\n","import { constructFrom } from \"./constructFrom.js\";\n\n/**\n * @name transpose\n * @category Generic Helpers\n * @summary Transpose the date to the given constructor.\n *\n * @description\n * The function transposes the date to the given constructor. It helps you\n * to transpose the date in the system time zone to say `UTCDate` or any other\n * date extension.\n *\n * @typeParam InputDate - The input `Date` type derived from the passed argument.\n * @typeParam ResultDate - The result `Date` type derived from the passed constructor.\n *\n * @param date - The date to use values from\n * @param constructor - The date constructor to use\n *\n * @returns Date transposed to the given constructor\n *\n * @example\n * // Create July 10, 2022 00:00 in locale time zone\n * const date = new Date(2022, 6, 10)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0800 (Singapore Standard Time)'\n *\n * @example\n * // Transpose the date to July 10, 2022 00:00 in UTC\n * transpose(date, UTCDate)\n * //=> 'Sun Jul 10 2022 00:00:00 GMT+0000 (Coordinated Universal Time)'\n */\nexport function transpose(date, constructor) {\n const date_ = isConstructor(constructor)\n ? new constructor(0)\n : constructFrom(constructor, 0);\n date_.setFullYear(date.getFullYear(), date.getMonth(), date.getDate());\n date_.setHours(\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds(),\n );\n return date_;\n}\n\nfunction isConstructor(constructor) {\n return (\n typeof constructor === \"function\" &&\n constructor.prototype?.constructor === constructor\n );\n}\n\n// Fallback for modularized imports:\nexport default transpose;\n","import { constructFrom } from \"../../constructFrom.js\";\nimport { transpose } from \"../../transpose.js\";\n\nconst TIMEZONE_UNIT_PRIORITY = 10;\n\nexport class Setter {\n subPriority = 0;\n\n validate(_utcDate, _options) {\n return true;\n }\n}\n\nexport class ValueSetter extends Setter {\n constructor(\n value,\n\n validateValue,\n\n setValue,\n\n priority,\n subPriority,\n ) {\n super();\n this.value = value;\n this.validateValue = validateValue;\n this.setValue = setValue;\n this.priority = priority;\n if (subPriority) {\n this.subPriority = subPriority;\n }\n }\n\n validate(date, options) {\n return this.validateValue(date, this.value, options);\n }\n\n set(date, flags, options) {\n return this.setValue(date, flags, this.value, options);\n }\n}\n\nexport class DateTimezoneSetter extends Setter {\n priority = TIMEZONE_UNIT_PRIORITY;\n subPriority = -1;\n\n constructor(context, reference) {\n super();\n this.context = context || ((date) => constructFrom(reference, date));\n }\n\n set(date, flags) {\n if (flags.timestampIsSet) return date;\n return constructFrom(date, transpose(date, this.context));\n }\n}\n","import { ValueSetter } from \"./Setter.js\";\n\nexport class Parser {\n run(dateString, token, match, options) {\n const result = this.parse(dateString, token, match, options);\n if (!result) {\n return null;\n }\n\n return {\n setter: new ValueSetter(\n result.value,\n this.validate,\n this.set,\n this.priority,\n this.subPriority,\n ),\n rest: result.rest,\n };\n }\n\n validate(_utcDate, _value, _options) {\n return true;\n }\n}\n","import { Parser } from \"../Parser.js\";\n\nexport class EraParser extends Parser {\n priority = 140;\n\n parse(dateString, token, match) {\n switch (token) {\n // AD, BC\n case \"G\":\n case \"GG\":\n case \"GGG\":\n return (\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n\n // A, B\n case \"GGGGG\":\n return match.era(dateString, { width: \"narrow\" });\n // Anno Domini, Before Christ\n case \"GGGG\":\n default:\n return (\n match.era(dateString, { width: \"wide\" }) ||\n match.era(dateString, { width: \"abbreviated\" }) ||\n match.era(dateString, { width: \"narrow\" })\n );\n }\n }\n\n set(date, flags, value) {\n flags.era = value;\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"R\", \"u\", \"t\", \"T\"];\n}\n","export const numericPatterns = {\n month: /^(1[0-2]|0?\\d)/, // 0 to 12\n date: /^(3[0-1]|[0-2]?\\d)/, // 0 to 31\n dayOfYear: /^(36[0-6]|3[0-5]\\d|[0-2]?\\d?\\d)/, // 0 to 366\n week: /^(5[0-3]|[0-4]?\\d)/, // 0 to 53\n hour23h: /^(2[0-3]|[0-1]?\\d)/, // 0 to 23\n hour24h: /^(2[0-4]|[0-1]?\\d)/, // 0 to 24\n hour11h: /^(1[0-1]|0?\\d)/, // 0 to 11\n hour12h: /^(1[0-2]|0?\\d)/, // 0 to 12\n minute: /^[0-5]?\\d/, // 0 to 59\n second: /^[0-5]?\\d/, // 0 to 59\n\n singleDigit: /^\\d/, // 0 to 9\n twoDigits: /^\\d{1,2}/, // 0 to 99\n threeDigits: /^\\d{1,3}/, // 0 to 999\n fourDigits: /^\\d{1,4}/, // 0 to 9999\n\n anyDigitsSigned: /^-?\\d+/,\n singleDigitSigned: /^-?\\d/, // 0 to 9, -0 to -9\n twoDigitsSigned: /^-?\\d{1,2}/, // 0 to 99, -0 to -99\n threeDigitsSigned: /^-?\\d{1,3}/, // 0 to 999, -0 to -999\n fourDigitsSigned: /^-?\\d{1,4}/, // 0 to 9999, -0 to -9999\n};\n\nexport const timezonePatterns = {\n basicOptionalMinutes: /^([+-])(\\d{2})(\\d{2})?|Z/,\n basic: /^([+-])(\\d{2})(\\d{2})|Z/,\n basicOptionalSeconds: /^([+-])(\\d{2})(\\d{2})((\\d{2}))?|Z/,\n extended: /^([+-])(\\d{2}):(\\d{2})|Z/,\n extendedOptionalSeconds: /^([+-])(\\d{2}):(\\d{2})(:(\\d{2}))?|Z/,\n};\n","import {\n millisecondsInHour,\n millisecondsInMinute,\n millisecondsInSecond,\n} from \"../../constants.js\";\n\nimport { numericPatterns } from \"./constants.js\";\n\nexport function mapValue(parseFnResult, mapFn) {\n if (!parseFnResult) {\n return parseFnResult;\n }\n\n return {\n value: mapFn(parseFnResult.value),\n rest: parseFnResult.rest,\n };\n}\n\nexport function parseNumericPattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n return {\n value: parseInt(matchResult[0], 10),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseTimezonePattern(pattern, dateString) {\n const matchResult = dateString.match(pattern);\n\n if (!matchResult) {\n return null;\n }\n\n // Input is 'Z'\n if (matchResult[0] === \"Z\") {\n return {\n value: 0,\n rest: dateString.slice(1),\n };\n }\n\n const sign = matchResult[1] === \"+\" ? 1 : -1;\n const hours = matchResult[2] ? parseInt(matchResult[2], 10) : 0;\n const minutes = matchResult[3] ? parseInt(matchResult[3], 10) : 0;\n const seconds = matchResult[5] ? parseInt(matchResult[5], 10) : 0;\n\n return {\n value:\n sign *\n (hours * millisecondsInHour +\n minutes * millisecondsInMinute +\n seconds * millisecondsInSecond),\n rest: dateString.slice(matchResult[0].length),\n };\n}\n\nexport function parseAnyDigitsSigned(dateString) {\n return parseNumericPattern(numericPatterns.anyDigitsSigned, dateString);\n}\n\nexport function parseNDigits(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigit, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigits, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigits, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigits, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function parseNDigitsSigned(n, dateString) {\n switch (n) {\n case 1:\n return parseNumericPattern(numericPatterns.singleDigitSigned, dateString);\n case 2:\n return parseNumericPattern(numericPatterns.twoDigitsSigned, dateString);\n case 3:\n return parseNumericPattern(numericPatterns.threeDigitsSigned, dateString);\n case 4:\n return parseNumericPattern(numericPatterns.fourDigitsSigned, dateString);\n default:\n return parseNumericPattern(new RegExp(\"^-?\\\\d{1,\" + n + \"}\"), dateString);\n }\n}\n\nexport function dayPeriodEnumToHours(dayPeriod) {\n switch (dayPeriod) {\n case \"morning\":\n return 4;\n case \"evening\":\n return 17;\n case \"pm\":\n case \"noon\":\n case \"afternoon\":\n return 12;\n case \"am\":\n case \"midnight\":\n case \"night\":\n default:\n return 0;\n }\n}\n\nexport function normalizeTwoDigitYear(twoDigitYear, currentYear) {\n const isCommonEra = currentYear > 0;\n // Absolute number of the current year:\n // 1 -> 1 AC\n // 0 -> 1 BC\n // -1 -> 2 BC\n const absCurrentYear = isCommonEra ? currentYear : 1 - currentYear;\n\n let result;\n if (absCurrentYear <= 50) {\n result = twoDigitYear || 100;\n } else {\n const rangeEnd = absCurrentYear + 50;\n const rangeEndCentury = Math.trunc(rangeEnd / 100) * 100;\n const isPreviousCentury = twoDigitYear >= rangeEnd % 100;\n result = twoDigitYear + rangeEndCentury - (isPreviousCentury ? 100 : 0);\n }\n\n return isCommonEra ? result : 1 - result;\n}\n\nexport function isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0);\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_Patterns\n// | Year | y | yy | yyy | yyyy | yyyyy |\n// |----------|-------|----|-------|-------|-------|\n// | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n// | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n// | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n// | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n// | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\nexport class YearParser extends Parser {\n priority = 130;\n incompatibleTokens = [\"Y\", \"R\", \"u\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"yy\",\n });\n\n switch (token) {\n case \"y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value) {\n const currentYear = date.getFullYear();\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(normalizedTwoDigitYear, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { getWeekYear } from \"../../../getWeekYear.js\";\n\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, normalizeTwoDigitYear, parseNDigits } from \"../utils.js\";\n\n// Local week-numbering year\nexport class LocalWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token, match) {\n const valueCallback = (year) => ({\n year,\n isTwoDigitYear: token === \"YY\",\n });\n\n switch (token) {\n case \"Y\":\n return mapValue(parseNDigits(4, dateString), valueCallback);\n case \"Yo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"year\",\n }),\n valueCallback,\n );\n default:\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n }\n\n validate(_date, value) {\n return value.isTwoDigitYear || value.year > 0;\n }\n\n set(date, flags, value, options) {\n const currentYear = getWeekYear(date, options);\n\n if (value.isTwoDigitYear) {\n const normalizedTwoDigitYear = normalizeTwoDigitYear(\n value.year,\n currentYear,\n );\n date.setFullYear(\n normalizedTwoDigitYear,\n 0,\n options.firstWeekContainsDate,\n );\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n const year =\n !(\"era\" in flags) || flags.era === 1 ? value.year : 1 - value.year;\n date.setFullYear(year, 0, options.firstWeekContainsDate);\n date.setHours(0, 0, 0, 0);\n return startOfWeek(date, options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\n// ISO week-numbering year\nexport class ISOWeekYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"R\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n const firstWeekOfYear = constructFrom(date, 0);\n firstWeekOfYear.setFullYear(value, 0, 4);\n firstWeekOfYear.setHours(0, 0, 0, 0);\n return startOfISOWeek(firstWeekOfYear);\n }\n\n incompatibleTokens = [\n \"G\",\n \"y\",\n \"Y\",\n \"u\",\n \"Q\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigitsSigned } from \"../utils.js\";\n\nexport class ExtendedYearParser extends Parser {\n priority = 130;\n\n parse(dateString, token) {\n if (token === \"u\") {\n return parseNDigitsSigned(4, dateString);\n }\n\n return parseNDigitsSigned(token.length, dateString);\n }\n\n set(date, _flags, value) {\n date.setFullYear(value, 0, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"G\", \"y\", \"Y\", \"R\", \"w\", \"I\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class QuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"Q\":\n case \"QQ\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"Qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"QQQ\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"QQQQQ\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"QQQQ\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { parseNDigits } from \"../utils.js\";\n\nexport class StandAloneQuarterParser extends Parser {\n priority = 120;\n\n parse(dateString, token, match) {\n switch (token) {\n // 1, 2, 3, 4\n case \"q\":\n case \"qq\": // 01, 02, 03, 04\n return parseNDigits(token.length, dateString);\n // 1st, 2nd, 3rd, 4th\n case \"qo\":\n return match.ordinalNumber(dateString, { unit: \"quarter\" });\n // Q1, Q2, Q3, Q4\n case \"qqq\":\n return (\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case \"qqqqq\":\n return match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // 1st quarter, 2nd quarter, ...\n case \"qqqq\":\n default:\n return (\n match.quarter(dateString, {\n width: \"wide\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.quarter(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 4;\n }\n\n set(date, _flags, value) {\n date.setMonth((value - 1) * 3, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MonthParser extends Parser {\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"L\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"M\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"MM\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Mo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"MMM\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // J, F, ..., D\n case \"MMMMM\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // January, February, ..., December\n case \"MMMM\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class StandAloneMonthParser extends Parser {\n priority = 110;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => value - 1;\n\n switch (token) {\n // 1, 2, ..., 12\n case \"L\":\n return mapValue(\n parseNumericPattern(numericPatterns.month, dateString),\n valueCallback,\n );\n // 01, 02, ..., 12\n case \"LL\":\n return mapValue(parseNDigits(2, dateString), valueCallback);\n // 1st, 2nd, ..., 12th\n case \"Lo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"month\",\n }),\n valueCallback,\n );\n // Jan, Feb, ..., Dec\n case \"LLL\":\n return (\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // J, F, ..., D\n case \"LLLLL\":\n return match.month(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // January, February, ..., December\n case \"LLLL\":\n default:\n return (\n match.month(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.month(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.month(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n date.setMonth(value, 1);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { getWeek } from \"./getWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setWeek} function options.\n */\n\n/**\n * @name setWeek\n * @category Week Helpers\n * @summary Set the local week to the given date.\n *\n * @description\n * Set the local week to the given date, saving the weekday number.\n * The exact calculation depends on the values of\n * `options.weekStartsOn` (which is the index of the first day of the week)\n * and `options.firstWeekContainsDate` (which is the day of January, which is always in\n * the first week of the week-numbering year)\n *\n * Week numbering: https://en.wikipedia.org/wiki/Week#The_ISO_week_date_system\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param week - The week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the local week set\n *\n * @example\n * // Set the 1st week to 2 January 2005 with default options:\n * const result = setWeek(new Date(2005, 0, 2), 1)\n * //=> Sun Dec 26 2004 00:00:00\n *\n * @example\n * // Set the 1st week to 2 January 2005,\n * // if Monday is the first day of the week,\n * // and the first week of the year always contains 4 January:\n * const result = setWeek(new Date(2005, 0, 2), 1, {\n * weekStartsOn: 1,\n * firstWeekContainsDate: 4\n * })\n * //=> Sun Jan 4 2004 00:00:00\n */\nexport function setWeek(date, week, options) {\n const date_ = toDate(date, options?.in);\n const diff = getWeek(date_, options) - week;\n date_.setDate(date_.getDate() - diff * 7);\n return toDate(date_, options?.in);\n}\n\n// Fallback for modularized imports:\nexport default setWeek;\n","import { setWeek } from \"../../../setWeek.js\";\nimport { startOfWeek } from \"../../../startOfWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// Local week of year\nexport class LocalWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"w\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"wo\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value, options) {\n return startOfWeek(setWeek(date, value, options), options);\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"i\",\n \"t\",\n \"T\",\n ];\n}\n","import { getISOWeek } from \"./getISOWeek.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISOWeek} function options.\n */\n\n/**\n * @name setISOWeek\n * @category ISO Week Helpers\n * @summary Set the ISO week to the given date.\n *\n * @description\n * Set the ISO week to the given date, saving the weekday number.\n *\n * ISO week-numbering year: http://en.wikipedia.org/wiki/ISO_week_date\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The `Date` type of the context function.\n *\n * @param date - The date to be changed\n * @param week - The ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the ISO week set\n *\n * @example\n * // Set the 53rd ISO week to 7 August 2004:\n * const result = setISOWeek(new Date(2004, 7, 7), 53)\n * //=> Sat Jan 01 2005 00:00:00\n */\nexport function setISOWeek(date, week, options) {\n const _date = toDate(date, options?.in);\n const diff = getISOWeek(_date, options) - week;\n _date.setDate(_date.getDate() - diff * 7);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setISOWeek;\n","import { setISOWeek } from \"../../../setISOWeek.js\";\nimport { startOfISOWeek } from \"../../../startOfISOWeek.js\";\nimport { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\n// ISO week of year\nexport class ISOWeekParser extends Parser {\n priority = 100;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"I\":\n return parseNumericPattern(numericPatterns.week, dateString);\n case \"Io\":\n return match.ordinalNumber(dateString, { unit: \"week\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 53;\n }\n\n set(date, _flags, value) {\n return startOfISOWeek(setISOWeek(date, value));\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.js\";\n\nconst DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];\nconst DAYS_IN_MONTH_LEAP_YEAR = [\n 31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31,\n];\n\n// Day of the month\nexport class DateParser extends Parser {\n priority = 90;\n subPriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"d\":\n return parseNumericPattern(numericPatterns.date, dateString);\n case \"do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n const month = date.getMonth();\n if (isLeapYear) {\n return value >= 1 && value <= DAYS_IN_MONTH_LEAP_YEAR[month];\n } else {\n return value >= 1 && value <= DAYS_IN_MONTH[month];\n }\n }\n\n set(date, _flags, value) {\n date.setDate(value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"w\",\n \"I\",\n \"D\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport {\n isLeapYearIndex,\n parseNDigits,\n parseNumericPattern,\n} from \"../utils.js\";\n\nexport class DayOfYearParser extends Parser {\n priority = 90;\n\n subpriority = 1;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"D\":\n case \"DD\":\n return parseNumericPattern(numericPatterns.dayOfYear, dateString);\n case \"Do\":\n return match.ordinalNumber(dateString, { unit: \"date\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(date, value) {\n const year = date.getFullYear();\n const isLeapYear = isLeapYearIndex(year);\n if (isLeapYear) {\n return value >= 1 && value <= 366;\n } else {\n return value >= 1 && value <= 365;\n }\n }\n\n set(date, _flags, value) {\n date.setMonth(0, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"Y\",\n \"R\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"I\",\n \"d\",\n \"E\",\n \"i\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { getDefaultOptions } from \"./_lib/defaultOptions.js\";\nimport { addDays } from \"./addDays.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setDay} function options.\n */\n\n/**\n * @name setDay\n * @category Weekday Helpers\n * @summary Set the day of the week to the given date.\n *\n * @description\n * Set the day of the week to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the week of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the day of the week set\n *\n * @example\n * // Set week day to Sunday, with the default weekStartsOn of Sunday:\n * const result = setDay(new Date(2014, 8, 1), 0)\n * //=> Sun Aug 31 2014 00:00:00\n *\n * @example\n * // Set week day to Sunday, with a weekStartsOn of Monday:\n * const result = setDay(new Date(2014, 8, 1), 0, { weekStartsOn: 1 })\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setDay(date, day, options) {\n const defaultOptions = getDefaultOptions();\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n const date_ = toDate(date, options?.in);\n const currentDay = date_.getDay();\n\n const remainder = day % 7;\n const dayIndex = (remainder + 7) % 7;\n\n const delta = 7 - weekStartsOn;\n const diff =\n day < 0 || day > 6\n ? day - ((currentDay + delta) % 7)\n : ((dayIndex + delta) % 7) - ((currentDay + delta) % 7);\n return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setDay;\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\n// Day of week\nexport class DayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n switch (token) {\n // Tue\n case \"E\":\n case \"EE\":\n case \"EEE\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"EEEEE\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"EEEEEE\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"EEEE\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"D\", \"i\", \"e\", \"c\", \"t\", \"T\"];\n}\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Local day of week\nexport class LocalDayParser extends Parser {\n priority = 90;\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"e\":\n case \"ee\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"eo\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"eee\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // T\n case \"eeeee\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n // Tu\n case \"eeeeee\":\n return (\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n\n // Tuesday\n case \"eeee\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"formatting\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"formatting\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"formatting\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { setDay } from \"../../../setDay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// Stand-alone local day of week\nexport class StandAloneLocalDayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match, options) {\n const valueCallback = (value) => {\n // We want here floor instead of trunc, so we get -7 for value 0 instead of 0\n const wholeWeekDays = Math.floor((value - 1) / 7) * 7;\n return ((value + options.weekStartsOn + 6) % 7) + wholeWeekDays;\n };\n\n switch (token) {\n // 3\n case \"c\":\n case \"cc\": // 03\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n // 3rd\n case \"co\":\n return mapValue(\n match.ordinalNumber(dateString, {\n unit: \"day\",\n }),\n valueCallback,\n );\n // Tue\n case \"ccc\":\n return (\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // T\n case \"ccccc\":\n return match.day(dateString, {\n width: \"narrow\",\n context: \"standalone\",\n });\n // Tu\n case \"cccccc\":\n return (\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n\n // Tuesday\n case \"cccc\":\n default:\n return (\n match.day(dateString, { width: \"wide\", context: \"standalone\" }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"standalone\",\n }) ||\n match.day(dateString, { width: \"short\", context: \"standalone\" }) ||\n match.day(dateString, { width: \"narrow\", context: \"standalone\" })\n );\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 6;\n }\n\n set(date, _flags, value, options) {\n date = setDay(date, value, options);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"R\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"I\",\n \"d\",\n \"D\",\n \"E\",\n \"i\",\n \"e\",\n \"t\",\n \"T\",\n ];\n}\n","import { addDays } from \"./addDays.js\";\nimport { getISODay } from \"./getISODay.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setISODay} function options.\n */\n\n/**\n * @name setISODay\n * @category Weekday Helpers\n * @summary Set the day of the ISO week to the given date.\n *\n * @description\n * Set the day of the ISO week to the given date.\n * ISO week starts with Monday.\n * 7 is the index of Sunday, 1 is the index of Monday, etc.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param day - The day of the ISO week of the new date\n * @param options - An object with options\n *\n * @returns The new date with the day of the ISO week set\n *\n * @example\n * // Set Sunday to 1 September 2014:\n * const result = setISODay(new Date(2014, 8, 1), 7)\n * //=> Sun Sep 07 2014 00:00:00\n */\nexport function setISODay(date, day, options) {\n const date_ = toDate(date, options?.in);\n const currentDay = getISODay(date_, options);\n const diff = day - currentDay;\n return addDays(date_, diff, options);\n}\n\n// Fallback for modularized imports:\nexport default setISODay;\n","import { setISODay } from \"../../../setISODay.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\n// ISO day of week\nexport class ISODayParser extends Parser {\n priority = 90;\n\n parse(dateString, token, match) {\n const valueCallback = (value) => {\n if (value === 0) {\n return 7;\n }\n return value;\n };\n\n switch (token) {\n // 2\n case \"i\":\n case \"ii\": // 02\n return parseNDigits(token.length, dateString);\n // 2nd\n case \"io\":\n return match.ordinalNumber(dateString, { unit: \"day\" });\n // Tue\n case \"iii\":\n return mapValue(\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // T\n case \"iiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tu\n case \"iiiiii\":\n return mapValue(\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n // Tuesday\n case \"iiii\":\n default:\n return mapValue(\n match.day(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"short\",\n context: \"formatting\",\n }) ||\n match.day(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n }),\n valueCallback,\n );\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 7;\n }\n\n set(date, _flags, value) {\n date = setISODay(date, value);\n date.setHours(0, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\n \"y\",\n \"Y\",\n \"u\",\n \"q\",\n \"Q\",\n \"M\",\n \"L\",\n \"w\",\n \"d\",\n \"D\",\n \"E\",\n \"e\",\n \"c\",\n \"t\",\n \"T\",\n ];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"a\":\n case \"aa\":\n case \"aaa\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"aaaaa\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"aaaa\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"b\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\nexport class AMPMMidnightParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"b\":\n case \"bb\":\n case \"bbb\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"bbbbb\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"bbbb\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"B\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { dayPeriodEnumToHours } from \"../utils.js\";\n\n// in the morning, in the afternoon, in the evening, at night\nexport class DayPeriodParser extends Parser {\n priority = 80;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"B\":\n case \"BB\":\n case \"BBB\":\n return (\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n\n case \"BBBBB\":\n return match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n });\n case \"BBBB\":\n default:\n return (\n match.dayPeriod(dateString, {\n width: \"wide\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"abbreviated\",\n context: \"formatting\",\n }) ||\n match.dayPeriod(dateString, {\n width: \"narrow\",\n context: \"formatting\",\n })\n );\n }\n }\n\n set(date, _flags, value) {\n date.setHours(dayPeriodEnumToHours(value), 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1to12Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"h\":\n return parseNumericPattern(numericPatterns.hour12h, dateString);\n case \"ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 12;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else if (!isPM && value === 12) {\n date.setHours(0, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"H\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0to23Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"H\":\n return parseNumericPattern(numericPatterns.hour23h, dateString);\n case \"Ho\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 23;\n }\n\n set(date, _flags, value) {\n date.setHours(value, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"K\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour0To11Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"K\":\n return parseNumericPattern(numericPatterns.hour11h, dateString);\n case \"Ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 11;\n }\n\n set(date, _flags, value) {\n const isPM = date.getHours() >= 12;\n if (isPM && value < 12) {\n date.setHours(value + 12, 0, 0, 0);\n } else {\n date.setHours(value, 0, 0, 0);\n }\n return date;\n }\n\n incompatibleTokens = [\"h\", \"H\", \"k\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class Hour1To24Parser extends Parser {\n priority = 70;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"k\":\n return parseNumericPattern(numericPatterns.hour24h, dateString);\n case \"ko\":\n return match.ordinalNumber(dateString, { unit: \"hour\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 1 && value <= 24;\n }\n\n set(date, _flags, value) {\n const hours = value <= 24 ? value % 24 : value;\n date.setHours(hours, 0, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"a\", \"b\", \"h\", \"H\", \"K\", \"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class MinuteParser extends Parser {\n priority = 60;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"m\":\n return parseNumericPattern(numericPatterns.minute, dateString);\n case \"mo\":\n return match.ordinalNumber(dateString, { unit: \"minute\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setMinutes(value, 0, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { numericPatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseNDigits, parseNumericPattern } from \"../utils.js\";\n\nexport class SecondParser extends Parser {\n priority = 50;\n\n parse(dateString, token, match) {\n switch (token) {\n case \"s\":\n return parseNumericPattern(numericPatterns.second, dateString);\n case \"so\":\n return match.ordinalNumber(dateString, { unit: \"second\" });\n default:\n return parseNDigits(token.length, dateString);\n }\n }\n\n validate(_date, value) {\n return value >= 0 && value <= 59;\n }\n\n set(date, _flags, value) {\n date.setSeconds(value, 0);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { Parser } from \"../Parser.js\";\n\nimport { mapValue, parseNDigits } from \"../utils.js\";\n\nexport class FractionOfSecondParser extends Parser {\n priority = 30;\n\n parse(dateString, token) {\n const valueCallback = (value) =>\n Math.trunc(value * Math.pow(10, -token.length + 3));\n return mapValue(parseNDigits(token.length, dateString), valueCallback);\n }\n\n set(date, _flags, value) {\n date.setMilliseconds(value);\n return date;\n }\n\n incompatibleTokens = [\"t\", \"T\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601. +00:00 is `'Z'`)\nexport class ISOTimezoneWithZParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"X\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"XX\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"XXXX\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"XXXXX\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"XXX\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"x\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { getTimezoneOffsetInMilliseconds } from \"../../../_lib/getTimezoneOffsetInMilliseconds.js\";\nimport { timezonePatterns } from \"../constants.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseTimezonePattern } from \"../utils.js\";\n\n// Timezone (ISO-8601)\nexport class ISOTimezoneParser extends Parser {\n priority = 10;\n\n parse(dateString, token) {\n switch (token) {\n case \"x\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalMinutes,\n dateString,\n );\n case \"xx\":\n return parseTimezonePattern(timezonePatterns.basic, dateString);\n case \"xxxx\":\n return parseTimezonePattern(\n timezonePatterns.basicOptionalSeconds,\n dateString,\n );\n case \"xxxxx\":\n return parseTimezonePattern(\n timezonePatterns.extendedOptionalSeconds,\n dateString,\n );\n case \"xxx\":\n default:\n return parseTimezonePattern(timezonePatterns.extended, dateString);\n }\n }\n\n set(date, flags, value) {\n if (flags.timestampIsSet) return date;\n return constructFrom(\n date,\n date.getTime() - getTimezoneOffsetInMilliseconds(date) - value,\n );\n }\n\n incompatibleTokens = [\"t\", \"T\", \"X\"];\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampSecondsParser extends Parser {\n priority = 40;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value * 1000), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { constructFrom } from \"../../../constructFrom.js\";\nimport { Parser } from \"../Parser.js\";\n\nimport { parseAnyDigitsSigned } from \"../utils.js\";\n\nexport class TimestampMillisecondsParser extends Parser {\n priority = 20;\n\n parse(dateString) {\n return parseAnyDigitsSigned(dateString);\n }\n\n set(date, _flags, value) {\n return [constructFrom(date, value), { timestampIsSet: true }];\n }\n\n incompatibleTokens = \"*\";\n}\n","import { EraParser } from \"./parsers/EraParser.js\";\nimport { YearParser } from \"./parsers/YearParser.js\";\nimport { LocalWeekYearParser } from \"./parsers/LocalWeekYearParser.js\";\nimport { ISOWeekYearParser } from \"./parsers/ISOWeekYearParser.js\";\nimport { ExtendedYearParser } from \"./parsers/ExtendedYearParser.js\";\nimport { QuarterParser } from \"./parsers/QuarterParser.js\";\nimport { StandAloneQuarterParser } from \"./parsers/StandAloneQuarterParser.js\";\nimport { MonthParser } from \"./parsers/MonthParser.js\";\nimport { StandAloneMonthParser } from \"./parsers/StandAloneMonthParser.js\";\nimport { LocalWeekParser } from \"./parsers/LocalWeekParser.js\";\nimport { ISOWeekParser } from \"./parsers/ISOWeekParser.js\";\nimport { DateParser } from \"./parsers/DateParser.js\";\nimport { DayOfYearParser } from \"./parsers/DayOfYearParser.js\";\nimport { DayParser } from \"./parsers/DayParser.js\";\nimport { LocalDayParser } from \"./parsers/LocalDayParser.js\";\nimport { StandAloneLocalDayParser } from \"./parsers/StandAloneLocalDayParser.js\";\nimport { ISODayParser } from \"./parsers/ISODayParser.js\";\nimport { AMPMParser } from \"./parsers/AMPMParser.js\";\nimport { AMPMMidnightParser } from \"./parsers/AMPMMidnightParser.js\";\nimport { DayPeriodParser } from \"./parsers/DayPeriodParser.js\";\nimport { Hour1to12Parser } from \"./parsers/Hour1to12Parser.js\";\nimport { Hour0to23Parser } from \"./parsers/Hour0to23Parser.js\";\nimport { Hour0To11Parser } from \"./parsers/Hour0To11Parser.js\";\nimport { Hour1To24Parser } from \"./parsers/Hour1To24Parser.js\";\nimport { MinuteParser } from \"./parsers/MinuteParser.js\";\nimport { SecondParser } from \"./parsers/SecondParser.js\";\nimport { FractionOfSecondParser } from \"./parsers/FractionOfSecondParser.js\";\nimport { ISOTimezoneWithZParser } from \"./parsers/ISOTimezoneWithZParser.js\";\nimport { ISOTimezoneParser } from \"./parsers/ISOTimezoneParser.js\";\nimport { TimestampSecondsParser } from \"./parsers/TimestampSecondsParser.js\";\nimport { TimestampMillisecondsParser } from \"./parsers/TimestampMillisecondsParser.js\";\n\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O* | Timezone (GMT) |\n * | p | | P | |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z* | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `parse` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n */\nexport const parsers = {\n G: new EraParser(),\n y: new YearParser(),\n Y: new LocalWeekYearParser(),\n R: new ISOWeekYearParser(),\n u: new ExtendedYearParser(),\n Q: new QuarterParser(),\n q: new StandAloneQuarterParser(),\n M: new MonthParser(),\n L: new StandAloneMonthParser(),\n w: new LocalWeekParser(),\n I: new ISOWeekParser(),\n d: new DateParser(),\n D: new DayOfYearParser(),\n E: new DayParser(),\n e: new LocalDayParser(),\n c: new StandAloneLocalDayParser(),\n i: new ISODayParser(),\n a: new AMPMParser(),\n b: new AMPMMidnightParser(),\n B: new DayPeriodParser(),\n h: new Hour1to12Parser(),\n H: new Hour0to23Parser(),\n K: new Hour0To11Parser(),\n k: new Hour1To24Parser(),\n m: new MinuteParser(),\n s: new SecondParser(),\n S: new FractionOfSecondParser(),\n X: new ISOTimezoneWithZParser(),\n x: new ISOTimezoneParser(),\n t: new TimestampSecondsParser(),\n T: new TimestampMillisecondsParser(),\n};\n","import { defaultLocale } from \"./_lib/defaultLocale.js\";\nimport { longFormatters } from \"./_lib/format/longFormatters.js\";\nimport {\n isProtectedDayOfYearToken,\n isProtectedWeekYearToken,\n warnOrThrowProtectedError,\n} from \"./_lib/protectedTokens.js\";\nimport { constructFrom } from \"./constructFrom.js\";\nimport { getDefaultOptions } from \"./getDefaultOptions.js\";\nimport { toDate } from \"./toDate.js\";\n\nimport { DateTimezoneSetter } from \"./parse/_lib/Setter.js\";\nimport { parsers } from \"./parse/_lib/parsers.js\";\n\n// Rexports of internal for libraries to use.\n// See: https://github.com/date-fns/date-fns/issues/3638#issuecomment-1877082874\nexport { longFormatters, parsers };\n\n/**\n * The {@link parse} function options.\n */\n\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nconst formattingTokensRegExp =\n /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nconst longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\n\nconst escapedStringRegExp = /^'([^]*?)'?$/;\nconst doubleQuoteRegExp = /''/g;\n\nconst notWhitespaceRegExp = /\\S/;\nconst unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name parse\n * @category Common Helpers\n * @summary Parse the date.\n *\n * @description\n * Return the date parsed from string using the given format string.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters in the format string wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n *\n * Format of the format string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 5 below the table).\n *\n * Not all tokens are compatible. Combinations that don't make sense or could lead to bugs are prohibited\n * and will throw `RangeError`. For example usage of 24-hour format token with AM/PM token will throw an exception:\n *\n * ```javascript\n * parse('23 AM', 'HH a', new Date())\n * //=> RangeError: The format string mustn't contain `HH` and `a` at the same time\n * ```\n *\n * See the compatibility table: https://docs.google.com/spreadsheets/d/e/2PACX-1vQOPU3xUhplll6dyoMmVUXHKl_8CRDs6_ueLmex3SoqwhuolkuN3O05l4rqx5h1dKX8eb46Ul-CCSrq/pubhtml?gid=0&single=true\n *\n * Accepted format string patterns:\n * | Unit |Prior| Pattern | Result examples | Notes |\n * |---------------------------------|-----|---------|-----------------------------------|-------|\n * | Era | 140 | G..GGG | AD, BC | |\n * | | | GGGG | Anno Domini, Before Christ | 2 |\n * | | | GGGGG | A, B | |\n * | Calendar year | 130 | y | 44, 1, 1900, 2017, 9999 | 4 |\n * | | | yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | yy | 44, 01, 00, 17 | 4 |\n * | | | yyy | 044, 001, 123, 999 | 4 |\n * | | | yyyy | 0044, 0001, 1900, 2017 | 4 |\n * | | | yyyyy | ... | 2,4 |\n * | Local week-numbering year | 130 | Y | 44, 1, 1900, 2017, 9000 | 4 |\n * | | | Yo | 44th, 1st, 1900th, 9999999th | 4,5 |\n * | | | YY | 44, 01, 00, 17 | 4,6 |\n * | | | YYY | 044, 001, 123, 999 | 4 |\n * | | | YYYY | 0044, 0001, 1900, 2017 | 4,6 |\n * | | | YYYYY | ... | 2,4 |\n * | ISO week-numbering year | 130 | R | -43, 1, 1900, 2017, 9999, -9999 | 4,5 |\n * | | | RR | -43, 01, 00, 17 | 4,5 |\n * | | | RRR | -043, 001, 123, 999, -999 | 4,5 |\n * | | | RRRR | -0043, 0001, 2017, 9999, -9999 | 4,5 |\n * | | | RRRRR | ... | 2,4,5 |\n * | Extended year | 130 | u | -43, 1, 1900, 2017, 9999, -999 | 4 |\n * | | | uu | -43, 01, 99, -99 | 4 |\n * | | | uuu | -043, 001, 123, 999, -999 | 4 |\n * | | | uuuu | -0043, 0001, 2017, 9999, -9999 | 4 |\n * | | | uuuuu | ... | 2,4 |\n * | Quarter (formatting) | 120 | Q | 1, 2, 3, 4 | |\n * | | | Qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | QQ | 01, 02, 03, 04 | |\n * | | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | 120 | q | 1, 2, 3, 4 | |\n * | | | qo | 1st, 2nd, 3rd, 4th | 5 |\n * | | | qq | 01, 02, 03, 04 | |\n * | | | qqq | Q1, Q2, Q3, Q4 | |\n * | | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | | qqqqq | 1, 2, 3, 4 | 3 |\n * | Month (formatting) | 110 | M | 1, 2, ..., 12 | |\n * | | | Mo | 1st, 2nd, ..., 12th | 5 |\n * | | | MM | 01, 02, ..., 12 | |\n * | | | MMM | Jan, Feb, ..., Dec | |\n * | | | MMMM | January, February, ..., December | 2 |\n * | | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | 110 | L | 1, 2, ..., 12 | |\n * | | | Lo | 1st, 2nd, ..., 12th | 5 |\n * | | | LL | 01, 02, ..., 12 | |\n * | | | LLL | Jan, Feb, ..., Dec | |\n * | | | LLLL | January, February, ..., December | 2 |\n * | | | LLLLL | J, F, ..., D | |\n * | Local week of year | 100 | w | 1, 2, ..., 53 | |\n * | | | wo | 1st, 2nd, ..., 53th | 5 |\n * | | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | 100 | I | 1, 2, ..., 53 | 5 |\n * | | | Io | 1st, 2nd, ..., 53th | 5 |\n * | | | II | 01, 02, ..., 53 | 5 |\n * | Day of month | 90 | d | 1, 2, ..., 31 | |\n * | | | do | 1st, 2nd, ..., 31st | 5 |\n * | | | dd | 01, 02, ..., 31 | |\n * | Day of year | 90 | D | 1, 2, ..., 365, 366 | 7 |\n * | | | Do | 1st, 2nd, ..., 365th, 366th | 5 |\n * | | | DD | 01, 02, ..., 365, 366 | 7 |\n * | | | DDD | 001, 002, ..., 365, 366 | |\n * | | | DDDD | ... | 2 |\n * | Day of week (formatting) | 90 | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | | EEEEE | M, T, W, T, F, S, S | |\n * | | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | 90 | i | 1, 2, 3, ..., 7 | 5 |\n * | | | io | 1st, 2nd, ..., 7th | 5 |\n * | | | ii | 01, 02, ..., 07 | 5 |\n * | | | iii | Mon, Tue, Wed, ..., Sun | 5 |\n * | | | iiii | Monday, Tuesday, ..., Sunday | 2,5 |\n * | | | iiiii | M, T, W, T, F, S, S | 5 |\n * | | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 5 |\n * | Local day of week (formatting) | 90 | e | 2, 3, 4, ..., 1 | |\n * | | | eo | 2nd, 3rd, ..., 1st | 5 |\n * | | | ee | 02, 03, ..., 01 | |\n * | | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | | eeeee | M, T, W, T, F, S, S | |\n * | | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | 90 | c | 2, 3, 4, ..., 1 | |\n * | | | co | 2nd, 3rd, ..., 1st | 5 |\n * | | | cc | 02, 03, ..., 01 | |\n * | | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | | ccccc | M, T, W, T, F, S, S | |\n * | | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | 80 | a..aaa | AM, PM | |\n * | | | aaaa | a.m., p.m. | 2 |\n * | | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | 80 | b..bbb | AM, PM, noon, midnight | |\n * | | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | | bbbbb | a, p, n, mi | |\n * | Flexible day period | 80 | B..BBB | at night, in the morning, ... | |\n * | | | BBBB | at night, in the morning, ... | 2 |\n * | | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | 70 | h | 1, 2, ..., 11, 12 | |\n * | | | ho | 1st, 2nd, ..., 11th, 12th | 5 |\n * | | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | 70 | H | 0, 1, 2, ..., 23 | |\n * | | | Ho | 0th, 1st, 2nd, ..., 23rd | 5 |\n * | | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | 70 | K | 1, 2, ..., 11, 0 | |\n * | | | Ko | 1st, 2nd, ..., 11th, 0th | 5 |\n * | | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | 70 | k | 24, 1, 2, ..., 23 | |\n * | | | ko | 24th, 1st, 2nd, ..., 23rd | 5 |\n * | | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | 60 | m | 0, 1, ..., 59 | |\n * | | | mo | 0th, 1st, ..., 59th | 5 |\n * | | | mm | 00, 01, ..., 59 | |\n * | Second | 50 | s | 0, 1, ..., 59 | |\n * | | | so | 0th, 1st, ..., 59th | 5 |\n * | | | ss | 00, 01, ..., 59 | |\n * | Seconds timestamp | 40 | t | 512969520 | |\n * | | | tt | ... | 2 |\n * | Fraction of second | 30 | S | 0, 1, ..., 9 | |\n * | | | SS | 00, 01, ..., 99 | |\n * | | | SSS | 000, 001, ..., 999 | |\n * | | | SSSS | ... | 2 |\n * | Milliseconds timestamp | 20 | T | 512969520900 | |\n * | | | TT | ... | 2 |\n * | Timezone (ISO-8601 w/ Z) | 10 | X | -08, +0530, Z | |\n * | | | XX | -0800, +0530, Z | |\n * | | | XXX | -08:00, +05:30, Z | |\n * | | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | 10 | x | -08, +0530, +00 | |\n * | | | xx | -0800, +0530, +0000 | |\n * | | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Long localized date | NA | P | 05/29/1453 | 5,8 |\n * | | | PP | May 29, 1453 | |\n * | | | PPP | May 29th, 1453 | |\n * | | | PPPP | Sunday, May 29th, 1453 | 2,5,8 |\n * | Long localized time | NA | p | 12:00 AM | 5,8 |\n * | | | pp | 12:00:00 AM | |\n * | Combination of date and time | NA | Pp | 05/29/1453, 12:00 AM | |\n * | | | PPpp | May 29, 1453, 12:00:00 AM | |\n * | | | PPPpp | May 29th, 1453 at ... | |\n * | | | PPPPpp | Sunday, May 29th, 1453 at ... | 2,5,8 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular.\n * In `format` function, they will produce different result:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * `parse` will try to match both formatting and stand-alone units interchangeably.\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table:\n * - for numerical units (`yyyyyyyy`) `parse` will try to match a number\n * as wide as the sequence\n * - for text units (`MMMMMMMM`) `parse` will try to match the widest variation of the unit.\n * These variations are marked with \"2\" in the last column of the table.\n *\n * 3. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 4. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` will try to guess the century of two digit year by proximity with `referenceDate`:\n *\n * `parse('50', 'yy', new Date(2018, 0, 1)) //=> Sat Jan 01 2050 00:00:00`\n *\n * `parse('75', 'yy', new Date(2018, 0, 1)) //=> Wed Jan 01 1975 00:00:00`\n *\n * while `uu` will just assign the year as is:\n *\n * `parse('50', 'uu', new Date(2018, 0, 1)) //=> Sat Jan 01 0050 00:00:00`\n *\n * `parse('75', 'uu', new Date(2018, 0, 1)) //=> Tue Jan 01 0075 00:00:00`\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [setISOWeekYear](https://date-fns.org/docs/setISOWeekYear)\n * and [setWeekYear](https://date-fns.org/docs/setWeekYear)).\n *\n * 5. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 6. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 7. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 8. `P+` tokens do not have a defined priority since they are merely aliases to other tokens based\n * on the given locale.\n *\n * using `en-US` locale: `P` => `MM/dd/yyyy`\n * using `en-US` locale: `p` => `hh:mm a`\n * using `pt-BR` locale: `P` => `dd/MM/yyyy`\n * using `pt-BR` locale: `p` => `HH:mm`\n *\n * Values will be assigned to the date in the descending order of its unit's priority.\n * Units of an equal priority overwrite each other in the order of appearance.\n *\n * If no values of higher priority are parsed (e.g. when parsing string 'January 1st' without a year),\n * the values will be taken from 3rd argument `referenceDate` which works as a context of parsing.\n *\n * `referenceDate` must be passed for correct work of the function.\n * If you're not sure which `referenceDate` to supply, create a new instance of Date:\n * `parse('02/11/2014', 'MM/dd/yyyy', new Date())`\n * In this case parsing will be done in the context of the current date.\n * If `referenceDate` is `Invalid Date` or a value not convertible to valid `Date`,\n * then `Invalid Date` will be returned.\n *\n * The result may vary by locale.\n *\n * If `formatString` matches with `dateString` but does not provides tokens, `referenceDate` will be returned.\n *\n * If parsing failed, `Invalid Date` will be returned.\n * Invalid Date is a Date, whose time value is NaN.\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param dateStr - The string to parse\n * @param formatStr - The string of tokens\n * @param referenceDate - defines values missing from the parsed dateString\n * @param options - An object with options.\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @returns The parsed date\n *\n * @throws `options.locale` must contain `match` property\n * @throws use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws format string contains an unescaped latin alphabet character\n *\n * @example\n * // Parse 11 February 2014 from middle-endian format:\n * var result = parse('02/11/2014', 'MM/dd/yyyy', new Date())\n * //=> Tue Feb 11 2014 00:00:00\n *\n * @example\n * // Parse 28th of February in Esperanto locale in the context of 2010 year:\n * import eo from 'date-fns/locale/eo'\n * var result = parse('28-a de februaro', \"do 'de' MMMM\", new Date(2010, 0, 1), {\n * locale: eo\n * })\n * //=> Sun Feb 28 2010 00:00:00\n */\nexport function parse(dateStr, formatStr, referenceDate, options) {\n const invalidDate = () => constructFrom(options?.in || referenceDate, NaN);\n const defaultOptions = getDefaultOptions();\n const locale = options?.locale ?? defaultOptions.locale ?? defaultLocale;\n\n const firstWeekContainsDate =\n options?.firstWeekContainsDate ??\n options?.locale?.options?.firstWeekContainsDate ??\n defaultOptions.firstWeekContainsDate ??\n defaultOptions.locale?.options?.firstWeekContainsDate ??\n 1;\n\n const weekStartsOn =\n options?.weekStartsOn ??\n options?.locale?.options?.weekStartsOn ??\n defaultOptions.weekStartsOn ??\n defaultOptions.locale?.options?.weekStartsOn ??\n 0;\n\n if (!formatStr)\n return dateStr ? invalidDate() : toDate(referenceDate, options?.in);\n\n const subFnOptions = {\n firstWeekContainsDate,\n weekStartsOn,\n locale,\n };\n\n // If timezone isn't specified, it will try to use the context or\n // the reference date and fallback to the system time zone.\n const setters = [new DateTimezoneSetter(options?.in, referenceDate)];\n\n const tokens = formatStr\n .match(longFormattingTokensRegExp)\n .map((substring) => {\n const firstCharacter = substring[0];\n if (firstCharacter in longFormatters) {\n const longFormatter = longFormatters[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n })\n .join(\"\")\n .match(formattingTokensRegExp);\n\n const usedTokens = [];\n\n for (let token of tokens) {\n if (\n !options?.useAdditionalWeekYearTokens &&\n isProtectedWeekYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n if (\n !options?.useAdditionalDayOfYearTokens &&\n isProtectedDayOfYearToken(token)\n ) {\n warnOrThrowProtectedError(token, formatStr, dateStr);\n }\n\n const firstCharacter = token[0];\n const parser = parsers[firstCharacter];\n if (parser) {\n const { incompatibleTokens } = parser;\n if (Array.isArray(incompatibleTokens)) {\n const incompatibleToken = usedTokens.find(\n (usedToken) =>\n incompatibleTokens.includes(usedToken.token) ||\n usedToken.token === firstCharacter,\n );\n if (incompatibleToken) {\n throw new RangeError(\n `The format string mustn't contain \\`${incompatibleToken.fullToken}\\` and \\`${token}\\` at the same time`,\n );\n }\n } else if (parser.incompatibleTokens === \"*\" && usedTokens.length > 0) {\n throw new RangeError(\n `The format string mustn't contain \\`${token}\\` and any other token at the same time`,\n );\n }\n\n usedTokens.push({ token: firstCharacter, fullToken: token });\n\n const parseResult = parser.run(\n dateStr,\n token,\n locale.match,\n subFnOptions,\n );\n\n if (!parseResult) {\n return invalidDate();\n }\n\n setters.push(parseResult.setter);\n\n dateStr = parseResult.rest;\n } else {\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError(\n \"Format string contains an unescaped latin alphabet character `\" +\n firstCharacter +\n \"`\",\n );\n }\n\n // Replace two single quote characters with one single quote character\n if (token === \"''\") {\n token = \"'\";\n } else if (firstCharacter === \"'\") {\n token = cleanEscapedString(token);\n }\n\n // Cut token from string, or, if string doesn't match the token, return Invalid Date\n if (dateStr.indexOf(token) === 0) {\n dateStr = dateStr.slice(token.length);\n } else {\n return invalidDate();\n }\n }\n }\n\n // Check if the remaining input contains something other than whitespace\n if (dateStr.length > 0 && notWhitespaceRegExp.test(dateStr)) {\n return invalidDate();\n }\n\n const uniquePrioritySetters = setters\n .map((setter) => setter.priority)\n .sort((a, b) => b - a)\n .filter((priority, index, array) => array.indexOf(priority) === index)\n .map((priority) =>\n setters\n .filter((setter) => setter.priority === priority)\n .sort((a, b) => b.subPriority - a.subPriority),\n )\n .map((setterArray) => setterArray[0]);\n\n let date = toDate(referenceDate, options?.in);\n\n if (isNaN(+date)) return invalidDate();\n\n const flags = {};\n for (const setter of uniquePrioritySetters) {\n if (!setter.validate(date, subFnOptions)) {\n return invalidDate();\n }\n\n const result = setter.set(date, flags, subFnOptions);\n // Result is tuple (date, flags)\n if (Array.isArray(result)) {\n date = result[0];\n Object.assign(flags, result[1]);\n // Result is date\n } else {\n date = result;\n }\n }\n\n return date;\n}\n\nfunction cleanEscapedString(input) {\n return input.match(escapedStringRegExp)[1].replace(doubleQuoteRegExp, \"'\");\n}\n\n// Fallback for modularized imports:\nexport default parse;\n","import { normalizeDates } from \"./_lib/normalizeDates.js\";\nimport { startOfQuarter } from \"./startOfQuarter.js\";\n\n/**\n * The {@link isSameQuarter} function options.\n */\n\n/**\n * @name isSameQuarter\n * @category Quarter Helpers\n * @summary Are the given dates in the same quarter (and year)?\n *\n * @description\n * Are the given dates in the same quarter (and year)?\n *\n * @param laterDate - The first date to check\n * @param earlierDate - The second date to check\n * @param options - An object with options\n *\n * @returns The dates are in the same quarter (and year)\n *\n * @example\n * // Are 1 January 2014 and 8 March 2014 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2014, 2, 8))\n * //=> true\n *\n * @example\n * // Are 1 January 2014 and 1 January 2015 in the same quarter?\n * const result = isSameQuarter(new Date(2014, 0, 1), new Date(2015, 0, 1))\n * //=> false\n */\nexport function isSameQuarter(laterDate, earlierDate, options) {\n const [dateLeft_, dateRight_] = normalizeDates(\n options?.in,\n laterDate,\n earlierDate,\n );\n return +startOfQuarter(dateLeft_) === +startOfQuarter(dateRight_);\n}\n\n// Fallback for modularized imports:\nexport default isSameQuarter;\n","import { addDays } from \"./addDays.js\";\n\n/**\n * The {@link subDays} function options.\n */\n\n/**\n * @name subDays\n * @category Day Helpers\n * @summary Subtract the specified number of days from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of days to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the days subtracted\n *\n * @example\n * // Subtract 10 days from 1 September 2014:\n * const result = subDays(new Date(2014, 8, 1), 10)\n * //=> Fri Aug 22 2014 00:00:00\n */\nexport function subDays(date, amount, options) {\n return addDays(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subDays;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { getDaysInMonth } from \"./getDaysInMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMonth} function options.\n */\n\n/**\n * @name setMonth\n * @category Month Helpers\n * @summary Set the month to the given date.\n *\n * @description\n * Set the month to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param month - The month index to set (0-11)\n * @param options - The options\n *\n * @returns The new date with the month set\n *\n * @example\n * // Set February to 1 September 2014:\n * const result = setMonth(new Date(2014, 8, 1), 1)\n * //=> Sat Feb 01 2014 00:00:00\n */\nexport function setMonth(date, month, options) {\n const _date = toDate(date, options?.in);\n const year = _date.getFullYear();\n const day = _date.getDate();\n\n const midMonth = constructFrom(options?.in || date, 0);\n midMonth.setFullYear(year, month, 15);\n midMonth.setHours(0, 0, 0, 0);\n const daysInMonth = getDaysInMonth(midMonth);\n\n // Set the earlier date, allows to wrap Jan 31 to Feb 28\n _date.setMonth(month, Math.min(day, daysInMonth));\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setMonth;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { setMonth } from \"./setMonth.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link set} function options.\n */\n\n/**\n * @name set\n * @category Common Helpers\n * @summary Set date values to a given date.\n *\n * @description\n * Set date values to a given date.\n *\n * Sets time values to date from object `values`.\n * A value is not set if it is undefined or null or doesn't exist in `values`.\n *\n * Note about bundle size: `set` does not internally use `setX` functions from date-fns but instead opts\n * to use native `Date#setX` methods. If you use this function, you may not want to include the\n * other `setX` functions that date-fns provides if you are concerned about the bundle size.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param values - The date values to be set\n * @param options - The options\n *\n * @returns The new date with options set\n *\n * @example\n * // Transform 1 September 2014 into 20 October 2015 in a single line:\n * const result = set(new Date(2014, 8, 20), { year: 2015, month: 9, date: 20 })\n * //=> Tue Oct 20 2015 00:00:00\n *\n * @example\n * // Set 12 PM to 1 September 2014 01:23:45 to 1 September 2014 12:00:00:\n * const result = set(new Date(2014, 8, 1, 1, 23, 45), { hours: 12 })\n * //=> Mon Sep 01 2014 12:23:45\n */\nexport function set(date, values, options) {\n let _date = toDate(date, options?.in);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(+_date)) return constructFrom(options?.in || date, NaN);\n\n if (values.year != null) _date.setFullYear(values.year);\n if (values.month != null) _date = setMonth(_date, values.month);\n if (values.date != null) _date.setDate(values.date);\n if (values.hours != null) _date.setHours(values.hours);\n if (values.minutes != null) _date.setMinutes(values.minutes);\n if (values.seconds != null) _date.setSeconds(values.seconds);\n if (values.milliseconds != null) _date.setMilliseconds(values.milliseconds);\n\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default set;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setHours} function options.\n */\n\n/**\n * @name setHours\n * @category Hour Helpers\n * @summary Set the hours to the given date.\n *\n * @description\n * Set the hours to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param hours - The hours of the new date\n * @param options - An object with options\n *\n * @returns The new date with the hours set\n *\n * @example\n * // Set 4 hours to 1 September 2014 11:30:00:\n * const result = setHours(new Date(2014, 8, 1, 11, 30), 4)\n * //=> Mon Sep 01 2014 04:30:00\n */\nexport function setHours(date, hours, options) {\n const _date = toDate(date, options?.in);\n _date.setHours(hours);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setHours;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMilliseconds} function options.\n */\n\n/**\n * @name setMilliseconds\n * @category Millisecond Helpers\n * @summary Set the milliseconds to the given date.\n *\n * @description\n * Set the milliseconds to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param milliseconds - The milliseconds of the new date\n * @param options - The options\n *\n * @returns The new date with the milliseconds set\n *\n * @example\n * // Set 300 milliseconds to 1 September 2014 11:30:40.500:\n * const result = setMilliseconds(new Date(2014, 8, 1, 11, 30, 40, 500), 300)\n * //=> Mon Sep 01 2014 11:30:40.300\n */\nexport function setMilliseconds(date, milliseconds, options) {\n const _date = toDate(date, options?.in);\n _date.setMilliseconds(milliseconds);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setMilliseconds;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setMinutes} function options.\n */\n\n/**\n * @name setMinutes\n * @category Minute Helpers\n * @summary Set the minutes to the given date.\n *\n * @description\n * Set the minutes to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows using extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, returned from the context function, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param minutes - The minutes of the new date\n * @param options - An object with options\n *\n * @returns The new date with the minutes set\n *\n * @example\n * // Set 45 minutes to 1 September 2014 11:30:40:\n * const result = setMinutes(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:45:40\n */\nexport function setMinutes(date, minutes, options) {\n const date_ = toDate(date, options?.in);\n date_.setMinutes(minutes);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default setMinutes;\n","import { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setSeconds} function options.\n */\n\n/**\n * @name setSeconds\n * @category Second Helpers\n * @summary Set the seconds to the given date, with context support.\n *\n * @description\n * Set the seconds to the given date, with an optional context for time zone specification.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param seconds - The seconds of the new date\n * @param options - An object with options\n *\n * @returns The new date with the seconds set\n *\n * @example\n * // Set 45 seconds to 1 September 2014 11:30:40:\n * const result = setSeconds(new Date(2014, 8, 1, 11, 30, 40), 45)\n * //=> Mon Sep 01 2014 11:30:45\n */\nexport function setSeconds(date, seconds, options) {\n const _date = toDate(date, options?.in);\n _date.setSeconds(seconds);\n return _date;\n}\n\n// Fallback for modularized imports:\nexport default setSeconds;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { toDate } from \"./toDate.js\";\n\n/**\n * The {@link setYear} function options.\n */\n\n/**\n * @name setYear\n * @category Year Helpers\n * @summary Set the year to the given date.\n *\n * @description\n * Set the year to the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param year - The year of the new date\n * @param options - An object with options.\n *\n * @returns The new date with the year set\n *\n * @example\n * // Set year 2013 to 1 September 2014:\n * const result = setYear(new Date(2014, 8, 1), 2013)\n * //=> Sun Sep 01 2013 00:00:00\n */\nexport function setYear(date, year, options) {\n const date_ = toDate(date, options?.in);\n\n // Check if date is Invalid Date because Date.prototype.setFullYear ignores the value of Invalid Date\n if (isNaN(+date_)) return constructFrom(options?.in || date, NaN);\n\n date_.setFullYear(year);\n return date_;\n}\n\n// Fallback for modularized imports:\nexport default setYear;\n","import { addMonths } from \"./addMonths.js\";\n\n/**\n * The subMonths function options.\n */\n\n/**\n * @name subMonths\n * @category Month Helpers\n * @summary Subtract the specified number of months from the given date.\n *\n * @description\n * Subtract the specified number of months from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of months to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the months subtracted\n *\n * @example\n * // Subtract 5 months from 1 February 2015:\n * const result = subMonths(new Date(2015, 1, 1), 5)\n * //=> Mon Sep 01 2014 00:00:00\n */\nexport function subMonths(date, amount, options) {\n return addMonths(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subMonths;\n","import { constructFrom } from \"./constructFrom.js\";\nimport { subDays } from \"./subDays.js\";\nimport { subMonths } from \"./subMonths.js\";\n\n/**\n * The {@link sub} function options.\n */\n\n/**\n * @name sub\n * @category Common Helpers\n * @summary Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @description\n * Subtract the specified years, months, weeks, days, hours, minutes and seconds from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param duration - The object with years, months, weeks, days, hours, minutes and seconds to be subtracted\n * @param options - An object with options\n *\n * | Key | Description |\n * |---------|------------------------------------|\n * | years | Amount of years to be subtracted |\n * | months | Amount of months to be subtracted |\n * | weeks | Amount of weeks to be subtracted |\n * | days | Amount of days to be subtracted |\n * | hours | Amount of hours to be subtracted |\n * | minutes | Amount of minutes to be subtracted |\n * | seconds | Amount of seconds to be subtracted |\n *\n * All values default to 0\n *\n * @returns The new date with the seconds subtracted\n *\n * @example\n * // Subtract the following duration from 15 June 2017 15:29:20\n * const result = sub(new Date(2017, 5, 15, 15, 29, 20), {\n * years: 2,\n * months: 9,\n * weeks: 1,\n * days: 7,\n * hours: 5,\n * minutes: 9,\n * seconds: 30\n * })\n * //=> Mon Sep 1 2014 10:19:50\n */\nexport function sub(date, duration, options) {\n const {\n years = 0,\n months = 0,\n weeks = 0,\n days = 0,\n hours = 0,\n minutes = 0,\n seconds = 0,\n } = duration;\n\n const withoutMonths = subMonths(date, months + years * 12, options);\n const withoutDays = subDays(withoutMonths, days + weeks * 7, options);\n\n const minutesToSub = minutes + hours * 60;\n const secondsToSub = seconds + minutesToSub * 60;\n const msToSub = secondsToSub * 1000;\n\n return constructFrom(options?.in || date, +withoutDays - msToSub);\n}\n\n// Fallback for modularized imports:\nexport default sub;\n","import { addYears } from \"./addYears.js\";\n\n/**\n * The {@link subYears} function options.\n */\n\n/**\n * @name subYears\n * @category Year Helpers\n * @summary Subtract the specified number of years from the given date.\n *\n * @description\n * Subtract the specified number of years from the given date.\n *\n * @typeParam DateType - The `Date` type, the function operates on. Gets inferred from passed arguments. Allows to use extensions like [`UTCDate`](https://github.com/date-fns/utc).\n * @typeParam ResultDate - The result `Date` type, it is the type returned from the context function if it is passed, or inferred from the arguments.\n *\n * @param date - The date to be changed\n * @param amount - The amount of years to be subtracted.\n * @param options - An object with options\n *\n * @returns The new date with the years subtracted\n *\n * @example\n * // Subtract 5 years from 1 September 2014:\n * const result = subYears(new Date(2014, 8, 1), 5)\n * //=> Tue Sep 01 2009 00:00:00\n */\nexport function subYears(date, amount, options) {\n return addYears(date, -amount, options);\n}\n\n// Fallback for modularized imports:\nexport default subYears;\n","import { useAttrs as Jn, createElementBlock as W, openBlock as w, createElementVNode as he, unref as s, reactive as ea, computed as j, ref as Z, toRef as qt, watch as rt, defineComponent as We, onMounted as Ue, onUnmounted as Ut, renderSlot as ie, normalizeProps as ze, mergeProps as He, Fragment as ke, createCommentVNode as Q, normalizeStyle as lt, createTextVNode as gt, toDisplayString as Ke, onBeforeUpdate as Zn, nextTick as at, withModifiers as Xt, normalizeClass as De, withDirectives as ua, renderList as Ce, vShow as ia, createVNode as tt, createBlock as Te, withCtx as we, withKeys as xn, Transition as Vt, createSlots as Ge, useSlots as Yt, guardReactiveProps as Je, resolveDynamicComponent as fa, toValue as el, h as tl, render as nn, getCurrentScope as al, onScopeDispose as nl, getCurrentInstance as ll, isRef as ln, Teleport as rl } from \"vue\";\nimport { format as ft, isEqual as Nt, isValid as da, addMonths as Ct, subMonths as Jt, getMonth as Me, getYear as ye, set as Se, startOfMonth as ol, setMonth as sl, setYear as ut, isAfter as _t, isBefore as Ft, eachDayOfInterval as bn, getSeconds as zt, getMinutes as $t, getHours as yt, startOfWeek as Wa, endOfWeek as kn, setHours as ul, setMinutes as il, setSeconds as wn, setMilliseconds as Dn, parse as Na, isDate as dl, subDays as cl, addDays as kt, addHours as fl, addYears as Mn, subYears as $n, endOfYear as An, startOfYear as Gt, differenceInYears as vl, add as Tn, sub as ml, getWeek as pl, getISOWeek as gl, isSameQuarter as rn, eachQuarterOfInterval as yl, startOfQuarter as hl, endOfQuarter as on, getQuarter as sn, differenceInCalendarDays as bl, getDay as kl } from \"date-fns\";\nfunction jt() {\n const e = Jn();\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\",\n ...e\n },\n [\n he(\"path\", {\n d: \"M29.333 8c0-2.208-1.792-4-4-4h-18.667c-2.208 0-4 1.792-4 4v18.667c0 2.208 1.792 4 4 4h18.667c2.208 0 4-1.792 4-4v-18.667zM26.667 8v18.667c0 0.736-0.597 1.333-1.333 1.333 0 0-18.667 0-18.667 0-0.736 0-1.333-0.597-1.333-1.333 0 0 0-18.667 0-18.667 0-0.736 0.597-1.333 1.333-1.333 0 0 18.667 0 18.667 0 0.736 0 1.333 0.597 1.333 1.333z\"\n }),\n he(\"path\", {\n d: \"M20 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n }),\n he(\"path\", {\n d: \"M9.333 2.667v5.333c0 0.736 0.597 1.333 1.333 1.333s1.333-0.597 1.333-1.333v-5.333c0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n }),\n he(\"path\", {\n d: \"M4 14.667h24c0.736 0 1.333-0.597 1.333-1.333s-0.597-1.333-1.333-1.333h-24c-0.736 0-1.333 0.597-1.333 1.333s0.597 1.333 1.333 1.333z\"\n })\n ]\n );\n}\njt.compatConfig = {\n MODE: 3\n};\nfunction Sn() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M23.057 7.057l-16 16c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l16-16c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0z\"\n }),\n he(\"path\", {\n d: \"M7.057 8.943l16 16c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885l-16-16c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n })\n ]\n );\n}\nSn.compatConfig = {\n MODE: 3\n};\nfunction Ua() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M20.943 23.057l-7.057-7.057c0 0 7.057-7.057 7.057-7.057 0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-8 8c-0.521 0.521-0.521 1.365 0 1.885l8 8c0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z\"\n })\n ]\n );\n}\nUa.compatConfig = {\n MODE: 3\n};\nfunction Va() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M12.943 24.943l8-8c0.521-0.521 0.521-1.365 0-1.885l-8-8c-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885l7.057 7.057c0 0-7.057 7.057-7.057 7.057-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0z\"\n })\n ]\n );\n}\nVa.compatConfig = {\n MODE: 3\n};\nfunction ja() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M16 1.333c-8.095 0-14.667 6.572-14.667 14.667s6.572 14.667 14.667 14.667c8.095 0 14.667-6.572 14.667-14.667s-6.572-14.667-14.667-14.667zM16 4c6.623 0 12 5.377 12 12s-5.377 12-12 12c-6.623 0-12-5.377-12-12s5.377-12 12-12z\"\n }),\n he(\"path\", {\n d: \"M14.667 8v8c0 0.505 0.285 0.967 0.737 1.193l5.333 2.667c0.658 0.329 1.46 0.062 1.789-0.596s0.062-1.46-0.596-1.789l-4.596-2.298c0 0 0-7.176 0-7.176 0-0.736-0.597-1.333-1.333-1.333s-1.333 0.597-1.333 1.333z\"\n })\n ]\n );\n}\nja.compatConfig = {\n MODE: 3\n};\nfunction Ka() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M24.943 19.057l-8-8c-0.521-0.521-1.365-0.521-1.885 0l-8 8c-0.52 0.52-0.52 1.365 0 1.885s1.365 0.52 1.885 0l7.057-7.057c0 0 7.057 7.057 7.057 7.057 0.52 0.52 1.365 0.52 1.885 0s0.52-1.365 0-1.885z\"\n })\n ]\n );\n}\nKa.compatConfig = {\n MODE: 3\n};\nfunction Ga() {\n return w(), W(\n \"svg\",\n {\n xmlns: \"http://www.w3.org/2000/svg\",\n viewBox: \"0 0 32 32\",\n fill: \"currentColor\",\n \"aria-hidden\": \"true\",\n class: \"dp__icon\",\n role: \"img\"\n },\n [\n he(\"path\", {\n d: \"M7.057 12.943l8 8c0.521 0.521 1.365 0.521 1.885 0l8-8c0.52-0.52 0.52-1.365 0-1.885s-1.365-0.52-1.885 0l-7.057 7.057c0 0-7.057-7.057-7.057-7.057-0.52-0.52-1.365-0.52-1.885 0s-0.52 1.365 0 1.885z\"\n })\n ]\n );\n}\nGa.compatConfig = {\n MODE: 3\n};\nconst Ze = (e, t) => t ? new Date(e.toLocaleString(\"en-US\", { timeZone: t })) : new Date(e), Qa = (e, t, l) => {\n const n = La(e, t, l);\n return n || H();\n}, wl = (e, t, l) => {\n const n = t.dateInTz ? Ze(new Date(e), t.dateInTz) : H(e);\n return l ? Fe(n, !0) : n;\n}, La = (e, t, l) => {\n if (!e) return null;\n const n = l ? Fe(H(e), !0) : H(e);\n return t ? t.exactMatch ? wl(e, t, l) : Ze(n, t.timezone) : n;\n}, Dl = (e) => {\n const l = new Date(e.getFullYear(), 0, 1).getTimezoneOffset();\n return e.getTimezoneOffset() < l;\n}, Ml = (e, t) => {\n if (!e) return 0;\n const l = /* @__PURE__ */ new Date(), n = new Date(l.toLocaleString(\"en-US\", { timeZone: \"UTC\" })), a = new Date(l.toLocaleString(\"en-US\", { timeZone: e })), i = (Dl(t ?? a) ? a : t ?? a).getTimezoneOffset() / 60;\n return (+n - +a) / (1e3 * 60 * 60) - i;\n};\nvar ot = /* @__PURE__ */ ((e) => (e.month = \"month\", e.year = \"year\", e))(ot || {}), st = /* @__PURE__ */ ((e) => (e.top = \"top\", e.bottom = \"bottom\", e))(st || {}), Ot = /* @__PURE__ */ ((e) => (e.header = \"header\", e.calendar = \"calendar\", e.timePicker = \"timePicker\", e))(Ot || {}), je = /* @__PURE__ */ ((e) => (e.month = \"month\", e.year = \"year\", e.calendar = \"calendar\", e.time = \"time\", e.minutes = \"minutes\", e.hours = \"hours\", e.seconds = \"seconds\", e))(je || {});\nconst $l = [\"timestamp\", \"date\", \"iso\"];\nvar Qe = /* @__PURE__ */ ((e) => (e.up = \"up\", e.down = \"down\", e.left = \"left\", e.right = \"right\", e))(Qe || {}), Re = /* @__PURE__ */ ((e) => (e.arrowUp = \"ArrowUp\", e.arrowDown = \"ArrowDown\", e.arrowLeft = \"ArrowLeft\", e.arrowRight = \"ArrowRight\", e.enter = \"Enter\", e.space = \" \", e.esc = \"Escape\", e.tab = \"Tab\", e.home = \"Home\", e.end = \"End\", e.pageUp = \"PageUp\", e.pageDown = \"PageDown\", e))(Re || {}), Lt = /* @__PURE__ */ ((e) => (e.MONTH_AND_YEAR = \"MM-yyyy\", e.YEAR = \"yyyy\", e.DATE = \"dd-MM-yyyy\", e))(Lt || {});\nfunction un(e) {\n return (t) => {\n const l = new Intl.DateTimeFormat(e, {\n weekday: \"short\",\n timeZone: \"UTC\"\n }).format(/* @__PURE__ */ new Date(`2017-01-0${t}T00:00:00+00:00`));\n return e === \"ar\" ? l.slice(2, 5) : l.slice(0, 2);\n };\n}\nfunction Al(e) {\n return (t) => ft(Ze(/* @__PURE__ */ new Date(`2017-01-0${t}T00:00:00+00:00`), \"UTC\"), \"EEEEEE\", { locale: e });\n}\nconst Tl = (e, t, l) => {\n const n = [1, 2, 3, 4, 5, 6, 7];\n let a;\n if (e !== null)\n try {\n a = n.map(Al(e));\n } catch {\n a = n.map(un(t));\n }\n else\n a = n.map(un(t));\n const f = a.slice(0, l), i = a.slice(l + 1, a.length);\n return [a[l]].concat(...i).concat(...f);\n}, qa = (e, t, l) => {\n const n = [];\n for (let a = +e[0]; a <= +e[1]; a++)\n n.push({ value: +a, text: Ja(a, t) });\n return l ? n.reverse() : n;\n}, Pn = (e, t, l) => {\n const n = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12].map((f) => {\n const i = f < 10 ? `0${f}` : f;\n return /* @__PURE__ */ new Date(`2017-${i}-01T00:00:00+00:00`);\n });\n if (e !== null)\n try {\n const f = l === \"long\" ? \"LLLL\" : \"LLL\";\n return n.map((i, g) => {\n const d = ft(Ze(i, \"UTC\"), f, { locale: e });\n return {\n text: d.charAt(0).toUpperCase() + d.substring(1),\n value: g\n };\n });\n } catch {\n }\n const a = new Intl.DateTimeFormat(t, { month: l, timeZone: \"UTC\" });\n return n.map((f, i) => {\n const g = a.format(f);\n return {\n text: g.charAt(0).toUpperCase() + g.substring(1),\n value: i\n };\n });\n}, Sl = (e) => [12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11][e], Le = (e) => {\n const t = s(e);\n return t?.$el ? t?.$el : t;\n}, Pl = (e) => ({ type: \"dot\", ...e ?? {} }), Rn = (e) => Array.isArray(e) ? !!e[0] && !!e[1] : !1, Xa = {\n prop: (e) => `\"${e}\" prop must be enabled!`,\n dateArr: (e) => `You need to use array as \"model-value\" binding in order to support \"${e}\"`\n}, Ne = (e) => e, dn = (e) => e === 0 ? e : !e || isNaN(+e) ? null : +e, cn = (e) => e === null, Cn = (e) => {\n if (e)\n return [...e.querySelectorAll(\"input, button, select, textarea, a[href]\")][0];\n}, Rl = (e) => {\n const t = [], l = (n) => n.filter((a) => a);\n for (let n = 0; n < e.length; n += 3) {\n const a = [e[n], e[n + 1], e[n + 2]];\n t.push(l(a));\n }\n return t;\n}, Zt = (e, t, l) => {\n const n = l != null, a = t != null;\n if (!n && !a) return !1;\n const f = +l, i = +t;\n return n && a ? +e > f || +e < i : n ? +e > f : a ? +e < i : !1;\n}, Ht = (e, t) => Rl(e).map((l) => l.map((n) => {\n const { active: a, disabled: f, isBetween: i, highlighted: g } = t(n);\n return {\n ...n,\n active: a,\n disabled: f,\n className: {\n dp__overlay_cell_active: a,\n dp__overlay_cell: !a,\n dp__overlay_cell_disabled: f,\n dp__overlay_cell_pad: !0,\n dp__overlay_cell_active_disabled: f && a,\n dp__cell_in_between: i,\n \"dp--highlighted\": g\n }\n };\n})), Dt = (e, t, l = !1) => {\n e && t.allowStopPropagation && (l && e.stopImmediatePropagation(), e.stopPropagation());\n}, Cl = () => [\n \"a[href]\",\n \"area[href]\",\n \"input:not([disabled]):not([type='hidden'])\",\n \"select:not([disabled])\",\n \"textarea:not([disabled])\",\n \"button:not([disabled])\",\n \"[tabindex]:not([tabindex='-1'])\",\n \"[data-datepicker-instance]\"\n].join(\", \");\nfunction Ol(e, t) {\n let l = [...document.querySelectorAll(Cl())];\n l = l.filter((a) => !e.contains(a) || a.hasAttribute(\"data-datepicker-instance\"));\n const n = l.indexOf(e);\n if (n >= 0 && (t ? n - 1 >= 0 : n + 1 <= l.length))\n return l[n + (t ? -1 : 1)];\n}\nconst Fa = (e, t) => e?.querySelector(`[data-dp-element=\"${t}\"]`), Ja = (e, t) => new Intl.NumberFormat(t, { useGrouping: !1, style: \"decimal\" }).format(e), Za = (e, t) => ft(e, t ?? Lt.DATE), Ta = (e) => Array.isArray(e), ca = (e, t, l) => t.get(Za(e, l)), Bl = (e, t) => e ? t ? t instanceof Map ? !!ca(e, t) : t(H(e)) : !1 : !0, qe = (e, t, l = !1, n) => {\n if (e.key === Re.enter || e.key === Re.space)\n return l && e.preventDefault(), t();\n if (n) return n(e);\n}, _l = () => \"ontouchstart\" in window || navigator.maxTouchPoints > 0, On = (e, t) => e ? Lt.MONTH_AND_YEAR : t ? Lt.YEAR : Lt.DATE, Bn = (e) => e < 10 ? `0${e}` : e, fn = (e, t, l, n, a, f) => {\n const i = Na(e, t.slice(0, e.length), /* @__PURE__ */ new Date(), { locale: f });\n return da(i) && dl(i) ? n || a ? i : Se(i, {\n hours: +l.hours,\n minutes: +l?.minutes,\n seconds: +l?.seconds,\n milliseconds: 0\n }) : null;\n}, Yl = (e, t, l, n, a, f) => {\n const i = Array.isArray(l) ? l[0] : l;\n if (typeof t == \"string\")\n return fn(e, t, i, n, a, f);\n if (Array.isArray(t)) {\n let g = null;\n for (const d of t)\n if (g = fn(e, d, i, n, a, f), g)\n break;\n return g;\n }\n return typeof t == \"function\" ? t(e) : null;\n}, H = (e) => e ? new Date(e) : /* @__PURE__ */ new Date(), Il = (e, t, l) => {\n if (t) {\n const a = (e.getMonth() + 1).toString().padStart(2, \"0\"), f = e.getDate().toString().padStart(2, \"0\"), i = e.getHours().toString().padStart(2, \"0\"), g = e.getMinutes().toString().padStart(2, \"0\"), d = l ? e.getSeconds().toString().padStart(2, \"0\") : \"00\";\n return `${e.getFullYear()}-${a}-${f}T${i}:${g}:${d}.000Z`;\n }\n const n = Date.UTC(\n e.getUTCFullYear(),\n e.getUTCMonth(),\n e.getUTCDate(),\n e.getUTCHours(),\n e.getUTCMinutes(),\n e.getUTCSeconds()\n );\n return new Date(n).toISOString();\n}, Fe = (e, t) => {\n const l = H(JSON.parse(JSON.stringify(e))), n = Se(l, { hours: 0, minutes: 0, seconds: 0, milliseconds: 0 });\n return t ? ol(n) : n;\n}, Mt = (e, t, l, n) => {\n let a = e ? H(e) : H();\n return (t || t === 0) && (a = ul(a, +t)), (l || l === 0) && (a = il(a, +l)), (n || n === 0) && (a = wn(a, +n)), Dn(a, 0);\n}, Be = (e, t) => !e || !t ? !1 : Ft(Fe(e), Fe(t)), $e = (e, t) => !e || !t ? !1 : Nt(Fe(e), Fe(t)), Ee = (e, t) => !e || !t ? !1 : _t(Fe(e), Fe(t)), xt = (e, t, l) => e?.[0] && e?.[1] ? Ee(l, e[0]) && Be(l, e[1]) : e?.[0] && t ? Ee(l, e[0]) && Be(l, t) || Be(l, e[0]) && Ee(l, t) : !1, it = (e) => {\n const t = Se(new Date(e), { date: 1 });\n return Fe(t);\n}, Sa = (e, t, l) => t && (l || l === 0) ? Object.fromEntries(\n [\"hours\", \"minutes\", \"seconds\"].map((n) => n === t ? [n, l] : [n, isNaN(+e[n]) ? void 0 : +e[n]])\n) : {\n hours: isNaN(+e.hours) ? void 0 : +e.hours,\n minutes: isNaN(+e.minutes) ? void 0 : +e.minutes,\n seconds: isNaN(+e.seconds) ? void 0 : +e.seconds\n}, Bt = (e) => ({\n hours: yt(e),\n minutes: $t(e),\n seconds: zt(e)\n}), _n = (e, t) => {\n if (t) {\n const l = ye(H(t));\n if (l > e) return 12;\n if (l === e) return Me(H(t));\n }\n}, Yn = (e, t) => {\n if (t) {\n const l = ye(H(t));\n return l < e ? -1 : l === e ? Me(H(t)) : void 0;\n }\n}, Wt = (e) => {\n if (e) return ye(H(e));\n}, In = (e, t) => {\n const l = Ee(e, t) ? t : e, n = Ee(t, e) ? t : e;\n return bn({ start: l, end: n });\n}, El = (e) => {\n const t = Ct(e, 1);\n return { month: Me(t), year: ye(t) };\n}, mt = (e, t) => {\n const l = Wa(e, { weekStartsOn: +t }), n = kn(e, { weekStartsOn: +t });\n return [l, n];\n}, En = (e, t) => {\n const l = {\n hours: yt(H()),\n minutes: $t(H()),\n seconds: t ? zt(H()) : 0\n };\n return Object.assign(l, e);\n}, wt = (e, t, l) => [Se(H(e), { date: 1 }), Se(H(), { month: t, year: l, date: 1 })], pt = (e, t, l) => {\n let n = e ? H(e) : H();\n return (t || t === 0) && (n = sl(n, t)), l && (n = ut(n, l)), n;\n}, Nn = (e, t, l, n, a) => {\n if (!n || a && !t || !a && !l) return !1;\n const f = a ? Ct(e, 1) : Jt(e, 1), i = [Me(f), ye(f)];\n return a ? !Ll(...i, t) : !Nl(...i, l);\n}, Nl = (e, t, l) => Be(...wt(l, e, t)) || $e(...wt(l, e, t)), Ll = (e, t, l) => Ee(...wt(l, e, t)) || $e(...wt(l, e, t)), Ln = (e, t, l, n, a, f, i) => {\n if (typeof t == \"function\" && !i) return t(e);\n const g = l ? { locale: l } : void 0;\n return Array.isArray(e) ? `${ft(e[0], f, g)}${a && !e[1] ? \"\" : n}${e[1] ? ft(e[1], f, g) : \"\"}` : ft(e, f, g);\n}, It = (e) => {\n if (e) return null;\n throw new Error(Xa.prop(\"partial-range\"));\n}, oa = (e, t) => {\n if (t) return e();\n throw new Error(Xa.prop(\"range\"));\n}, za = (e) => Array.isArray(e) ? da(e[0]) && (e[1] ? da(e[1]) : !0) : e ? da(e) : !1, Fl = (e, t) => Se(t ?? H(), {\n hours: +e.hours || 0,\n minutes: +e.minutes || 0,\n seconds: +e.seconds || 0\n}), Pa = (e, t, l, n) => {\n if (!e) return !0;\n if (n) {\n const a = l === \"max\" ? Ft(e, t) : _t(e, t), f = { seconds: 0, milliseconds: 0 };\n return a || Nt(Se(e, f), Se(t, f));\n }\n return l === \"max\" ? e.getTime() <= t.getTime() : e.getTime() >= t.getTime();\n}, Ra = (e, t, l) => e ? Fl(e, t) : H(l ?? t), vn = (e, t, l, n, a) => {\n if (Array.isArray(n)) {\n const i = Ra(e, n[0], t), g = Ra(e, n[1], t);\n return Pa(n[0], i, l, !!t) && Pa(n[1], g, l, !!t) && a;\n }\n const f = Ra(e, n, t);\n return Pa(n, f, l, !!t) && a;\n}, Ca = (e) => Se(H(), Bt(e)), zl = (e, t, l) => {\n if (e instanceof Map) {\n const n = `${Bn(l + 1)}-${t}`;\n return e.size ? e.has(n) : !1;\n }\n return typeof e == \"function\" ? e(Fe(Se(H(), { month: l, year: t }), !0)) : !1;\n}, Hl = (e, t, l) => {\n if (e instanceof Map) {\n const n = `${Bn(l + 1)}-${t}`;\n return e.size ? e.has(n) : !0;\n }\n return !0;\n}, Fn = (e, t, l) => typeof e == \"function\" ? e({ month: t, year: l }) : !!e.months.find((n) => n.month === t && n.year === l), xa = (e, t) => typeof e == \"function\" ? e(t) : e.years.includes(t), Ha = (e) => `dp-${ft(e, \"yyyy-MM-dd\")}`, mn = (e, t) => {\n const l = cl(Fe(t), e), n = kt(Fe(t), e);\n return { before: l, after: n };\n}, zn = (e, t) => t < +e[0] || t > +e[1], Kt = ea({\n menuFocused: !1,\n shiftKeyInMenu: !1\n}), Hn = () => {\n const e = (n) => {\n Kt.menuFocused = n;\n }, t = (n) => {\n Kt.shiftKeyInMenu !== n && (Kt.shiftKeyInMenu = n);\n };\n return {\n control: j(() => ({ shiftKeyInMenu: Kt.shiftKeyInMenu, menuFocused: Kt.menuFocused })),\n setMenuFocused: e,\n setShiftKey: t\n };\n}, Pe = ea({\n monthYear: [],\n calendar: [],\n time: [],\n actionRow: [],\n selectionGrid: [],\n timePicker: {\n 0: [],\n 1: []\n },\n monthPicker: []\n}), Oa = Z(null), sa = Z(!1), Ba = Z(!1), _a = Z(!1), Ya = Z(!1), Ve = Z(0), Ie = Z(0), At = () => {\n const e = j(() => sa.value ? [...Pe.selectionGrid, Pe.actionRow].filter((M) => M.length) : Ba.value ? [\n ...Pe.timePicker[0],\n ...Pe.timePicker[1],\n Ya.value ? [] : [Oa.value],\n Pe.actionRow\n ].filter((M) => M.length) : _a.value ? [...Pe.monthPicker, Pe.actionRow] : [Pe.monthYear, ...Pe.calendar, Pe.time, Pe.actionRow].filter((M) => M.length)), t = (M) => {\n Ve.value = M ? Ve.value + 1 : Ve.value - 1;\n let A = null;\n e.value[Ie.value] && (A = e.value[Ie.value][Ve.value]), !A && e.value[Ie.value + (M ? 1 : -1)] ? (Ie.value = Ie.value + (M ? 1 : -1), Ve.value = M ? 0 : e.value[Ie.value].length - 1) : A || (Ve.value = M ? Ve.value - 1 : Ve.value + 1);\n }, l = (M) => {\n if (Ie.value === 0 && !M || Ie.value === e.value.length && M) return;\n Ie.value = M ? Ie.value + 1 : Ie.value - 1, e.value[Ie.value] ? e.value[Ie.value] && !e.value[Ie.value][Ve.value] && Ve.value !== 0 && (Ve.value = e.value[Ie.value].length - 1) : Ie.value = M ? Ie.value - 1 : Ie.value + 1;\n }, n = (M) => {\n let A = null;\n e.value[Ie.value] && (A = e.value[Ie.value][Ve.value]), A ? A.focus({ preventScroll: !sa.value }) : Ve.value = M ? Ve.value - 1 : Ve.value + 1;\n }, a = () => {\n t(!0), n(!0);\n }, f = () => {\n t(!1), n(!1);\n }, i = () => {\n l(!1), n(!0);\n }, g = () => {\n l(!0), n(!0);\n }, d = (M, A) => {\n Pe[A] = M;\n }, P = (M, A) => {\n Pe[A] = M;\n }, v = () => {\n Ve.value = 0, Ie.value = 0;\n };\n return {\n buildMatrix: d,\n buildMultiLevelMatrix: P,\n setTimePickerBackRef: (M) => {\n Oa.value = M;\n },\n setSelectionGrid: (M) => {\n sa.value = M, v(), M || (Pe.selectionGrid = []);\n },\n setTimePicker: (M, A = !1) => {\n Ba.value = M, Ya.value = A, v(), M || (Pe.timePicker[0] = [], Pe.timePicker[1] = []);\n },\n setTimePickerElements: (M, A = 0) => {\n Pe.timePicker[A] = M;\n },\n arrowRight: a,\n arrowLeft: f,\n arrowUp: i,\n arrowDown: g,\n clearArrowNav: () => {\n Pe.monthYear = [], Pe.calendar = [], Pe.time = [], Pe.actionRow = [], Pe.selectionGrid = [], Pe.timePicker[0] = [], Pe.timePicker[1] = [], sa.value = !1, Ba.value = !1, Ya.value = !1, _a.value = !1, v(), Oa.value = null;\n },\n setMonthPicker: (M) => {\n _a.value = M, v();\n },\n refSets: Pe\n // exposed for testing\n };\n}, pn = (e) => ({\n menuAppearTop: \"dp-menu-appear-top\",\n menuAppearBottom: \"dp-menu-appear-bottom\",\n open: \"dp-slide-down\",\n close: \"dp-slide-up\",\n next: \"calendar-next\",\n previous: \"calendar-prev\",\n vNext: \"dp-slide-up\",\n vPrevious: \"dp-slide-down\",\n ...e ?? {}\n}), Wl = (e) => ({\n toggleOverlay: \"Toggle overlay\",\n menu: \"Datepicker menu\",\n input: \"Datepicker input\",\n openTimePicker: \"Open time picker\",\n closeTimePicker: \"Close time Picker\",\n incrementValue: (t) => `Increment ${t}`,\n decrementValue: (t) => `Decrement ${t}`,\n openTpOverlay: (t) => `Open ${t} overlay`,\n amPmButton: \"Switch AM/PM mode\",\n openYearsOverlay: \"Open years overlay\",\n openMonthsOverlay: \"Open months overlay\",\n nextMonth: \"Next month\",\n prevMonth: \"Previous month\",\n nextYear: \"Next year\",\n prevYear: \"Previous year\",\n day: void 0,\n weekDay: void 0,\n clearInput: \"Clear value\",\n calendarIcon: \"Calendar icon\",\n timePicker: \"Time picker\",\n monthPicker: (t) => `Month picker${t ? \" overlay\" : \"\"}`,\n yearPicker: (t) => `Year picker${t ? \" overlay\" : \"\"}`,\n timeOverlay: (t) => `${t} overlay`,\n ...e ?? {}\n}), gn = (e) => e ? typeof e == \"boolean\" ? e ? 2 : 0 : +e >= 2 ? +e : 2 : 0, Ul = (e) => {\n const t = typeof e == \"object\" && e, l = {\n static: !0,\n solo: !1\n };\n if (!e) return { ...l, count: gn(!1) };\n const n = t ? e : {}, a = t ? n.count ?? !0 : e, f = gn(a);\n return Object.assign(l, n, { count: f });\n}, Vl = (e, t, l) => e || (typeof l == \"string\" ? l : t), jl = (e) => typeof e == \"boolean\" ? e ? pn({}) : !1 : pn(e), Kl = (e) => {\n const t = {\n enterSubmit: !0,\n tabSubmit: !0,\n openMenu: \"open\",\n selectOnFocus: !1,\n rangeSeparator: \" - \",\n escClose: !0\n };\n return typeof e == \"object\" ? { ...t, ...e ?? {}, enabled: !0 } : { ...t, enabled: e };\n}, Gl = (e) => ({\n months: [],\n years: [],\n times: { hours: [], minutes: [], seconds: [] },\n ...e ?? {}\n}), Ql = (e) => ({\n showSelect: !0,\n showCancel: !0,\n showNow: !1,\n showPreview: !0,\n ...e ?? {}\n}), ql = (e) => {\n const t = { input: !1 };\n return typeof e == \"object\" ? { ...t, ...e ?? {}, enabled: !0 } : {\n enabled: e,\n ...t\n };\n}, Xl = (e) => ({ ...{\n allowStopPropagation: !0,\n closeOnScroll: !1,\n modeHeight: 255,\n allowPreventDefault: !1,\n closeOnClearValue: !0,\n closeOnAutoApply: !0,\n noSwipe: !1,\n keepActionRow: !1,\n onClickOutside: void 0,\n tabOutClosesMenu: !0,\n arrowLeft: void 0,\n keepViewOnOffsetClick: !1,\n timeArrowHoldThreshold: 0,\n shadowDom: !1,\n mobileBreakpoint: 600,\n setDateOnMenuClose: !1\n}, ...e ?? {} }), Jl = (e) => {\n const t = {\n dates: Array.isArray(e) ? e.map((l) => H(l)) : [],\n years: [],\n months: [],\n quarters: [],\n weeks: [],\n weekdays: [],\n options: { highlightDisabled: !1 }\n };\n return typeof e == \"function\" ? e : { ...t, ...e ?? {} };\n}, Zl = (e) => typeof e == \"object\" ? {\n type: e?.type ?? \"local\",\n hideOnOffsetDates: e?.hideOnOffsetDates ?? !1\n} : {\n type: e,\n hideOnOffsetDates: !1\n}, xl = (e) => {\n const t = {\n noDisabledRange: !1,\n showLastInRange: !0,\n minMaxRawRange: !1,\n partialRange: !0,\n disableTimeRangeValidation: !1,\n maxRange: void 0,\n minRange: void 0,\n autoRange: void 0,\n fixedStart: !1,\n fixedEnd: !1\n };\n return typeof e == \"object\" ? { enabled: !0, ...t, ...e } : {\n enabled: e,\n ...t\n };\n}, er = (e) => e ? typeof e == \"string\" ? {\n timezone: e,\n exactMatch: !1,\n dateInTz: void 0,\n emitTimezone: void 0,\n convertModel: !0\n} : {\n timezone: e.timezone,\n exactMatch: e.exactMatch ?? !1,\n dateInTz: e.dateInTz ?? void 0,\n emitTimezone: e.emitTimezone ?? void 0,\n convertModel: e.convertModel ?? !0\n} : { timezone: void 0, exactMatch: !1, emitTimezone: void 0 }, Ia = (e, t, l, n) => new Map(\n e.map((a) => {\n const f = Qa(a, t, n);\n return [Za(f, l), f];\n })\n), tr = (e, t) => e.length ? new Map(\n e.map((l) => {\n const n = Qa(l.date, t);\n return [Za(n, Lt.DATE), l];\n })\n) : null, ar = (e) => {\n const t = On(e.isMonthPicker, e.isYearPicker);\n return {\n minDate: La(e.minDate, e.timezone, e.isSpecific),\n maxDate: La(e.maxDate, e.timezone, e.isSpecific),\n disabledDates: Ta(e.disabledDates) ? Ia(e.disabledDates, e.timezone, t, e.isSpecific) : e.disabledDates,\n allowedDates: Ta(e.allowedDates) ? Ia(e.allowedDates, e.timezone, t, e.isSpecific) : null,\n highlight: typeof e.highlight == \"object\" && Ta(e.highlight?.dates) ? Ia(e.highlight.dates, e.timezone, t) : e.highlight,\n markers: tr(e.markers, e.timezone)\n };\n}, nr = (e) => typeof e == \"boolean\" ? { enabled: e, dragSelect: !0, limit: null } : {\n enabled: !!e,\n limit: e.limit ? +e.limit : null,\n dragSelect: e.dragSelect ?? !0\n}, lr = (e) => ({\n ...Object.fromEntries(\n Object.keys(e).map((l) => {\n const n = l, a = e[n], f = typeof e[n] == \"string\" ? { [a]: !0 } : Object.fromEntries(a.map((i) => [i, !0]));\n return [l, f];\n })\n )\n}), Oe = (e) => {\n const t = () => {\n const U = e.enableSeconds ? \":ss\" : \"\", $ = e.enableMinutes ? \":mm\" : \"\";\n return e.is24 ? `HH${$}${U}` : `hh${$}${U} aa`;\n }, l = () => e.format ? e.format : e.monthPicker ? \"MM/yyyy\" : e.timePicker ? t() : e.weekPicker ? `${C.value?.type === \"iso\" ? \"II\" : \"ww\"}-RR` : e.yearPicker ? \"yyyy\" : e.quarterPicker ? \"QQQ/yyyy\" : e.enableTimePicker ? `MM/dd/yyyy, ${t()}` : \"MM/dd/yyyy\", n = (U) => En(U, e.enableSeconds), a = () => z.value.enabled ? e.startTime && Array.isArray(e.startTime) ? [n(e.startTime[0]), n(e.startTime[1])] : null : e.startTime && !Array.isArray(e.startTime) ? n(e.startTime) : null, f = j(() => Ul(e.multiCalendars)), i = j(() => a()), g = j(() => Wl(e.ariaLabels)), d = j(() => Gl(e.filters)), P = j(() => jl(e.transitions)), v = j(() => Ql(e.actionRow)), R = j(\n () => Vl(e.previewFormat, e.format, l())\n ), h = j(() => Kl(e.textInput)), T = j(() => ql(e.inline)), F = j(() => Xl(e.config)), _ = j(() => Jl(e.highlight)), C = j(() => Zl(e.weekNumbers)), M = j(() => er(e.timezone)), A = j(() => nr(e.multiDates)), m = j(\n () => ar({\n minDate: e.minDate,\n maxDate: e.maxDate,\n disabledDates: e.disabledDates,\n allowedDates: e.allowedDates,\n highlight: _.value,\n markers: e.markers,\n timezone: M.value,\n isSpecific: e.monthPicker || e.yearPicker || e.quarterPicker,\n isMonthPicker: e.monthPicker,\n isYearPicker: e.yearPicker\n })\n ), z = j(() => xl(e.range)), L = j(() => lr(e.ui));\n return {\n defaultedTransitions: P,\n defaultedMultiCalendars: f,\n defaultedStartTime: i,\n defaultedAriaLabels: g,\n defaultedFilters: d,\n defaultedActionRow: v,\n defaultedPreviewFormat: R,\n defaultedTextInput: h,\n defaultedInline: T,\n defaultedConfig: F,\n defaultedHighlight: _,\n defaultedWeekNumbers: C,\n defaultedRange: z,\n propDates: m,\n defaultedTz: M,\n defaultedMultiDates: A,\n defaultedUI: L,\n getDefaultPattern: l,\n getDefaultStartTime: a,\n handleEventPropagation: (U) => {\n F.value.allowStopPropagation && U.stopPropagation(), F.value.allowPreventDefault && U.preventDefault();\n }\n };\n}, rr = (e, t, { isInputFocused: l, isTextInputDate: n }) => {\n const a = Z(), { defaultedTextInput: f, defaultedRange: i, defaultedTz: g, defaultedMultiDates: d, getDefaultPattern: P } = Oe(t), v = Z(\"\"), R = qt(t, \"format\"), h = qt(t, \"formatLocale\");\n rt(\n a,\n () => {\n typeof t.onInternalModelChange == \"function\" && e(\"internal-model-change\", a.value, x(!0));\n },\n { deep: !0 }\n ), rt(i, (o, X) => {\n o.enabled !== X.enabled && (a.value = null);\n }), rt(R, () => {\n S();\n });\n const T = (o) => g.value.timezone && g.value.convertModel ? Ze(o, g.value.timezone) : o, F = (o) => {\n if (g.value.timezone && g.value.convertModel) {\n const X = Ml(g.value.timezone, o);\n return fl(o, X);\n }\n return o;\n }, _ = (o, X, B = !1) => Ln(\n o,\n t.format,\n t.formatLocale,\n f.value.rangeSeparator,\n t.modelAuto,\n X ?? P(),\n B\n ), C = (o) => o ? t.modelType ? k(o) : {\n hours: yt(o),\n minutes: $t(o),\n seconds: t.enableSeconds ? zt(o) : 0\n } : null, M = (o) => t.modelType ? k(o) : { month: Me(o), year: ye(o) }, A = (o) => Array.isArray(o) ? d.value.enabled ? o.map((X) => m(X, ut(H(), X))) : oa(\n () => [\n ut(H(), o[0]),\n o[1] ? ut(H(), o[1]) : It(i.value.partialRange)\n ],\n i.value.enabled\n ) : ut(H(), +o), m = (o, X) => (typeof o == \"string\" || typeof o == \"number\") && t.modelType ? q(o) : X, z = (o) => Array.isArray(o) ? [\n m(\n o[0],\n Mt(null, +o[0].hours, +o[0].minutes, o[0].seconds)\n ),\n m(\n o[1],\n Mt(null, +o[1].hours, +o[1].minutes, o[1].seconds)\n )\n ] : m(o, Mt(null, o.hours, o.minutes, o.seconds)), L = (o) => {\n const X = Se(H(), { date: 1 });\n return Array.isArray(o) ? d.value.enabled ? o.map((B) => m(B, pt(X, +B.month, +B.year))) : oa(\n () => [\n m(o[0], pt(X, +o[0].month, +o[0].year)),\n m(\n o[1],\n o[1] ? pt(X, +o[1].month, +o[1].year) : It(i.value.partialRange)\n )\n ],\n i.value.enabled\n ) : m(o, pt(X, +o.month, +o.year));\n }, le = (o) => {\n if (Array.isArray(o))\n return o.map((X) => q(X));\n throw new Error(Xa.dateArr(\"multi-dates\"));\n }, U = (o) => {\n if (Array.isArray(o) && i.value.enabled) {\n const X = o[0], B = o[1];\n return [\n H(Array.isArray(X) ? X[0] : null),\n Array.isArray(B) && B.length ? H(B[0]) : null\n ];\n }\n return H(o[0]);\n }, $ = (o) => t.modelAuto ? Array.isArray(o) ? [q(o[0]), q(o[1])] : t.autoApply ? [q(o)] : [q(o), null] : Array.isArray(o) ? oa(\n () => o[1] ? [\n q(o[0]),\n o[1] ? q(o[1]) : It(i.value.partialRange)\n ] : [q(o[0])],\n i.value.enabled\n ) : q(o), ee = () => {\n Array.isArray(a.value) && i.value.enabled && a.value.length === 1 && a.value.push(It(i.value.partialRange));\n }, O = () => {\n const o = a.value;\n return [\n k(o[0]),\n o[1] ? k(o[1]) : It(i.value.partialRange)\n ];\n }, J = () => Array.isArray(a.value) ? a.value[1] ? O() : k(Ne(a.value[0])) : [], ce = () => (a.value || []).map((o) => k(o)), pe = (o = !1) => (o || ee(), t.modelAuto ? J() : d.value.enabled ? ce() : Array.isArray(a.value) ? oa(() => O(), i.value.enabled) : k(Ne(a.value))), p = (o) => !o || Array.isArray(o) && !o.length ? null : t.timePicker ? z(Ne(o)) : t.monthPicker ? L(Ne(o)) : t.yearPicker ? A(Ne(o)) : d.value.enabled ? le(Ne(o)) : t.weekPicker ? U(Ne(o)) : $(Ne(o)), Y = (o) => {\n if (n.value) return;\n const X = p(o);\n za(Ne(X)) ? (a.value = Ne(X), S()) : (a.value = null, v.value = \"\");\n }, te = () => {\n const o = (X) => ft(X, f.value.format);\n return `${o(a.value[0])} ${f.value.rangeSeparator} ${a.value[1] ? o(a.value[1]) : \"\"}`;\n }, y = () => l.value && a.value ? Array.isArray(a.value) ? te() : ft(a.value, f.value.format) : _(a.value), V = () => a.value ? d.value.enabled ? a.value.map((o) => _(o)).join(\"; \") : f.value.enabled && typeof f.value.format == \"string\" ? y() : _(a.value) : \"\", S = () => {\n !t.format || typeof t.format == \"string\" || f.value.enabled && typeof f.value.format == \"string\" ? v.value = V() : v.value = t.format(a.value);\n }, q = (o) => {\n if (t.utc) {\n const X = new Date(o);\n return t.utc === \"preserve\" ? new Date(X.getTime() + X.getTimezoneOffset() * 6e4) : X;\n }\n return t.modelType ? $l.includes(t.modelType) ? T(new Date(o)) : t.modelType === \"format\" && (typeof t.format == \"string\" || !t.format) ? T(\n Na(o, P(), /* @__PURE__ */ new Date(), { locale: h.value })\n ) : T(\n Na(o, t.modelType, /* @__PURE__ */ new Date(), { locale: h.value })\n ) : T(new Date(o));\n }, k = (o) => o ? t.utc ? Il(o, t.utc === \"preserve\", t.enableSeconds) : t.modelType ? t.modelType === \"timestamp\" ? +F(o) : t.modelType === \"iso\" ? F(o).toISOString() : t.modelType === \"format\" && (typeof t.format == \"string\" || !t.format) ? _(F(o)) : _(F(o), t.modelType, !0) : F(o) : \"\", se = (o, X = !1, B = !1) => {\n if (B) return o;\n if (e(\"update:model-value\", o), g.value.emitTimezone && X) {\n const be = Array.isArray(o) ? o.map((Ae) => Ze(Ne(Ae), g.value.emitTimezone)) : Ze(Ne(o), g.value.emitTimezone);\n e(\"update:model-timezone-value\", be);\n }\n }, u = (o) => Array.isArray(a.value) ? d.value.enabled ? a.value.map((X) => o(X)) : [\n o(a.value[0]),\n a.value[1] ? o(a.value[1]) : It(i.value.partialRange)\n ] : o(Ne(a.value)), re = () => {\n if (Array.isArray(a.value)) {\n const o = mt(a.value[0], t.weekStart), X = a.value[1] ? mt(a.value[1], t.weekStart) : [];\n return [o.map((B) => H(B)), X.map((B) => H(B))];\n }\n return mt(a.value, t.weekStart).map((o) => H(o));\n }, G = (o, X) => se(Ne(u(o)), !1, X), I = (o) => {\n const X = re();\n return o ? X : e(\"update:model-value\", re());\n }, x = (o = !1) => (o || S(), t.monthPicker ? G(M, o) : t.timePicker ? G(C, o) : t.yearPicker ? G(ye, o) : t.weekPicker ? I(o) : se(pe(o), !0, o));\n return {\n inputValue: v,\n internalModelValue: a,\n checkBeforeEmit: () => a.value ? i.value.enabled ? i.value.partialRange ? a.value.length >= 1 : a.value.length === 2 : !!a.value : !1,\n parseExternalModelValue: Y,\n formatInputValue: S,\n emitModelValue: x\n };\n}, or = (e, t) => {\n const { defaultedFilters: l, propDates: n } = Oe(e), { validateMonthYearInRange: a } = Tt(e), f = (v, R) => {\n let h = v;\n return l.value.months.includes(Me(h)) ? (h = R ? Ct(v, 1) : Jt(v, 1), f(h, R)) : h;\n }, i = (v, R) => {\n let h = v;\n return l.value.years.includes(ye(h)) ? (h = R ? Mn(v, 1) : $n(v, 1), i(h, R)) : h;\n }, g = (v, R = !1) => {\n const h = Se(H(), { month: e.month, year: e.year });\n let T = v ? Ct(h, 1) : Jt(h, 1);\n e.disableYearSelect && (T = ut(T, e.year));\n let F = Me(T), _ = ye(T);\n l.value.months.includes(F) && (T = f(T, v), F = Me(T), _ = ye(T)), l.value.years.includes(_) && (T = i(T, v), _ = ye(T)), a(F, _, v, e.preventMinMaxNavigation) && d(F, _, R);\n }, d = (v, R, h) => {\n t(\"update-month-year\", { month: v, year: R, fromNav: h });\n }, P = j(() => (v) => Nn(\n Se(H(), { month: e.month, year: e.year }),\n n.value.maxDate,\n n.value.minDate,\n e.preventMinMaxNavigation,\n v\n ));\n return { handleMonthYearChange: g, isDisabled: P, updateMonthYear: d };\n}, va = {\n multiCalendars: { type: [Boolean, Number, String, Object], default: void 0 },\n modelValue: { type: [String, Date, Array, Object, Number], default: null },\n modelType: { type: String, default: null },\n position: { type: String, default: \"center\" },\n dark: { type: Boolean, default: !1 },\n format: {\n type: [String, Function],\n default: () => null\n },\n autoPosition: { type: [Boolean, String], default: !0 },\n altPosition: { type: Function, default: null },\n transitions: { type: [Boolean, Object], default: !0 },\n formatLocale: { type: Object, default: null },\n utc: { type: [Boolean, String], default: !1 },\n ariaLabels: { type: Object, default: () => ({}) },\n offset: { type: [Number, String], default: 10 },\n hideNavigation: { type: Array, default: () => [] },\n timezone: { type: [String, Object], default: null },\n vertical: { type: Boolean, default: !1 },\n disableMonthYearSelect: { type: Boolean, default: !1 },\n disableYearSelect: { type: Boolean, default: !1 },\n dayClass: {\n type: Function,\n default: null\n },\n yearRange: { type: Array, default: () => [1900, 2100] },\n enableTimePicker: { type: Boolean, default: !0 },\n autoApply: { type: Boolean, default: !1 },\n disabledDates: { type: [Array, Function], default: () => [] },\n monthNameFormat: { type: String, default: \"short\" },\n startDate: { type: [Date, String], default: null },\n startTime: { type: [Object, Array], default: null },\n hideOffsetDates: { type: Boolean, default: !1 },\n noToday: { type: Boolean, default: !1 },\n disabledWeekDays: { type: Array, default: () => [] },\n allowedDates: { type: Array, default: null },\n nowButtonLabel: { type: String, default: \"Now\" },\n markers: { type: Array, default: () => [] },\n escClose: { type: Boolean, default: !0 },\n spaceConfirm: { type: Boolean, default: !0 },\n monthChangeOnArrows: { type: Boolean, default: !0 },\n presetDates: { type: Array, default: () => [] },\n flow: { type: Array, default: () => [] },\n partialFlow: { type: Boolean, default: !1 },\n preventMinMaxNavigation: { type: Boolean, default: !1 },\n reverseYears: { type: Boolean, default: !1 },\n weekPicker: { type: Boolean, default: !1 },\n filters: { type: Object, default: () => ({}) },\n arrowNavigation: { type: Boolean, default: !1 },\n highlight: {\n type: [Function, Object],\n default: null\n },\n teleport: { type: [Boolean, String, Object], default: null },\n teleportCenter: { type: Boolean, default: !1 },\n locale: { type: String, default: \"en-Us\" },\n weekNumName: { type: String, default: \"W\" },\n weekStart: { type: [Number, String], default: 1 },\n weekNumbers: {\n type: [String, Function, Object],\n default: null\n },\n monthChangeOnScroll: { type: [Boolean, String], default: !0 },\n dayNames: {\n type: [Function, Array],\n default: null\n },\n monthPicker: { type: Boolean, default: !1 },\n customProps: { type: Object, default: null },\n yearPicker: { type: Boolean, default: !1 },\n modelAuto: { type: Boolean, default: !1 },\n selectText: { type: String, default: \"Select\" },\n cancelText: { type: String, default: \"Cancel\" },\n previewFormat: {\n type: [String, Function],\n default: () => \"\"\n },\n multiDates: { type: [Object, Boolean], default: !1 },\n ignoreTimeValidation: { type: Boolean, default: !1 },\n minDate: { type: [Date, String], default: null },\n maxDate: { type: [Date, String], default: null },\n minTime: { type: Object, default: null },\n maxTime: { type: Object, default: null },\n name: { type: String, default: null },\n placeholder: { type: String, default: \"\" },\n hideInputIcon: { type: Boolean, default: !1 },\n clearable: { type: Boolean, default: !0 },\n alwaysClearable: { type: Boolean, default: !1 },\n state: { type: Boolean, default: null },\n required: { type: Boolean, default: !1 },\n autocomplete: { type: String, default: \"off\" },\n timePicker: { type: Boolean, default: !1 },\n enableSeconds: { type: Boolean, default: !1 },\n is24: { type: Boolean, default: !0 },\n noHoursOverlay: { type: Boolean, default: !1 },\n noMinutesOverlay: { type: Boolean, default: !1 },\n noSecondsOverlay: { type: Boolean, default: !1 },\n hoursGridIncrement: { type: [String, Number], default: 1 },\n minutesGridIncrement: { type: [String, Number], default: 5 },\n secondsGridIncrement: { type: [String, Number], default: 5 },\n hoursIncrement: { type: [Number, String], default: 1 },\n minutesIncrement: { type: [Number, String], default: 1 },\n secondsIncrement: { type: [Number, String], default: 1 },\n range: { type: [Boolean, Object], default: !1 },\n uid: { type: String, default: null },\n disabled: { type: Boolean, default: !1 },\n readonly: { type: Boolean, default: !1 },\n inline: { type: [Boolean, Object], default: !1 },\n textInput: { type: [Boolean, Object], default: !1 },\n sixWeeks: { type: [Boolean, String], default: !1 },\n actionRow: { type: Object, default: () => ({}) },\n focusStartDate: { type: Boolean, default: !1 },\n disabledTimes: { type: [Function, Array], default: void 0 },\n timePickerInline: { type: Boolean, default: !1 },\n calendar: { type: Function, default: null },\n config: { type: Object, default: void 0 },\n quarterPicker: { type: Boolean, default: !1 },\n yearFirst: { type: Boolean, default: !1 },\n loading: { type: Boolean, default: !1 },\n onInternalModelChange: { type: [Function, Object], default: null },\n enableMinutes: { type: Boolean, default: !0 },\n ui: { type: Object, default: () => ({}) }\n}, dt = {\n ...va,\n shadow: { type: Boolean, default: !1 },\n flowStep: { type: Number, default: 0 },\n internalModelValue: { type: [Date, Array], default: null },\n noOverlayFocus: { type: Boolean, default: !1 },\n collapse: { type: Boolean, default: !1 },\n menuWrapRef: { type: Object, default: null },\n getInputRect: { type: Function, default: () => ({}) },\n isTextInputDate: { type: Boolean, default: !1 },\n isMobile: { type: Boolean, default: void 0 }\n}, sr = [\"title\"], ur = [\"disabled\"], ir = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"ActionRow\",\n props: {\n menuMount: { type: Boolean, default: !1 },\n calendarWidth: { type: Number, default: 0 },\n ...dt\n },\n emits: [\"close-picker\", \"select-date\", \"select-now\", \"invalid-select\"],\n setup(e, { emit: t }) {\n const l = t, n = e, {\n defaultedActionRow: a,\n defaultedPreviewFormat: f,\n defaultedMultiCalendars: i,\n defaultedTextInput: g,\n defaultedInline: d,\n defaultedRange: P,\n defaultedMultiDates: v\n } = Oe(n), { isTimeValid: R, isMonthValid: h } = Tt(n), { buildMatrix: T } = At(), F = Z(null), _ = Z(null), C = Z(!1), M = Z({}), A = Z(null), m = Z(null);\n Ue(() => {\n n.arrowNavigation && T([Le(F), Le(_)], \"actionRow\"), z(), window.addEventListener(\"resize\", z);\n }), Ut(() => {\n window.removeEventListener(\"resize\", z);\n });\n const z = () => {\n C.value = !1, setTimeout(() => {\n const p = A.value?.getBoundingClientRect(), Y = m.value?.getBoundingClientRect();\n p && Y && (M.value.maxWidth = `${Y.width - p.width - 20}px`), C.value = !0;\n }, 0);\n }, L = j(() => P.value.enabled && !P.value.partialRange && n.internalModelValue ? n.internalModelValue.length === 2 : !0), le = j(\n () => !R.value(n.internalModelValue) || !h.value(n.internalModelValue) || !L.value\n ), U = () => {\n const p = f.value;\n return n.timePicker || n.monthPicker, p(Ne(n.internalModelValue));\n }, $ = () => {\n const p = n.internalModelValue;\n return i.value.count > 0 ? `${ee(p[0])} - ${ee(p[1])}` : [ee(p[0]), ee(p[1])];\n }, ee = (p) => Ln(\n p,\n f.value,\n n.formatLocale,\n g.value.rangeSeparator,\n n.modelAuto,\n f.value\n ), O = j(() => !n.internalModelValue || !n.menuMount ? \"\" : typeof f.value == \"string\" ? Array.isArray(n.internalModelValue) ? n.internalModelValue.length === 2 && n.internalModelValue[1] ? $() : v.value.enabled ? n.internalModelValue.map((p) => `${ee(p)}`) : n.modelAuto ? `${ee(n.internalModelValue[0])}` : `${ee(n.internalModelValue[0])} -` : ee(n.internalModelValue) : U()), J = () => v.value.enabled ? \"; \" : \" - \", ce = j(\n () => Array.isArray(O.value) ? O.value.join(J()) : O.value\n ), pe = () => {\n R.value(n.internalModelValue) && h.value(n.internalModelValue) && L.value ? l(\"select-date\") : l(\"invalid-select\");\n };\n return (p, Y) => (w(), W(\"div\", {\n ref_key: \"actionRowRef\",\n ref: m,\n class: \"dp__action_row\"\n }, [\n p.$slots[\"action-row\"] ? ie(p.$slots, \"action-row\", ze(He({ key: 0 }, {\n internalModelValue: p.internalModelValue,\n disabled: le.value,\n selectDate: () => p.$emit(\"select-date\"),\n closePicker: () => p.$emit(\"close-picker\")\n }))) : (w(), W(ke, { key: 1 }, [\n s(a).showPreview ? (w(), W(\"div\", {\n key: 0,\n class: \"dp__selection_preview\",\n title: ce.value,\n style: lt(M.value)\n }, [\n p.$slots[\"action-preview\"] && C.value ? ie(p.$slots, \"action-preview\", {\n key: 0,\n value: p.internalModelValue\n }) : Q(\"\", !0),\n !p.$slots[\"action-preview\"] && C.value ? (w(), W(ke, { key: 1 }, [\n gt(Ke(ce.value), 1)\n ], 64)) : Q(\"\", !0)\n ], 12, sr)) : Q(\"\", !0),\n he(\"div\", {\n ref_key: \"actionBtnContainer\",\n ref: A,\n class: \"dp__action_buttons\",\n \"data-dp-element\": \"action-row\"\n }, [\n p.$slots[\"action-buttons\"] ? ie(p.$slots, \"action-buttons\", {\n key: 0,\n value: p.internalModelValue\n }) : Q(\"\", !0),\n p.$slots[\"action-buttons\"] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n !s(d).enabled && s(a).showCancel ? (w(), W(\"button\", {\n key: 0,\n ref_key: \"cancelButtonRef\",\n ref: F,\n type: \"button\",\n class: \"dp__action_button dp__action_cancel\",\n onClick: Y[0] || (Y[0] = (te) => p.$emit(\"close-picker\")),\n onKeydown: Y[1] || (Y[1] = (te) => s(qe)(te, () => p.$emit(\"close-picker\")))\n }, Ke(p.cancelText), 545)) : Q(\"\", !0),\n s(a).showNow ? (w(), W(\"button\", {\n key: 1,\n type: \"button\",\n class: \"dp__action_button dp__action_cancel\",\n onClick: Y[2] || (Y[2] = (te) => p.$emit(\"select-now\")),\n onKeydown: Y[3] || (Y[3] = (te) => s(qe)(te, () => p.$emit(\"select-now\")))\n }, Ke(p.nowButtonLabel), 33)) : Q(\"\", !0),\n s(a).showSelect ? (w(), W(\"button\", {\n key: 2,\n ref_key: \"selectButtonRef\",\n ref: _,\n type: \"button\",\n class: \"dp__action_button dp__action_select\",\n disabled: le.value,\n \"data-test-id\": \"select-button\",\n onKeydown: Y[4] || (Y[4] = (te) => s(qe)(te, () => pe())),\n onClick: pe\n }, Ke(p.selectText), 41, ur)) : Q(\"\", !0)\n ], 64))\n ], 512)\n ], 64))\n ], 512));\n }\n}), dr = [\"role\", \"aria-label\", \"tabindex\"], cr = { class: \"dp__selection_grid_header\" }, fr = [\"aria-selected\", \"aria-disabled\", \"data-test-id\", \"onClick\", \"onKeydown\", \"onMouseover\"], vr = [\"aria-label\"], ta = /* @__PURE__ */ We({\n __name: \"SelectionOverlay\",\n props: {\n items: {},\n type: {},\n isLast: { type: Boolean },\n arrowNavigation: { type: Boolean },\n skipButtonRef: { type: Boolean },\n headerRefs: {},\n hideNavigation: {},\n escClose: { type: Boolean },\n useRelative: { type: Boolean },\n height: {},\n textInput: { type: [Boolean, Object] },\n config: {},\n noOverlayFocus: { type: Boolean },\n focusValue: {},\n menuWrapRef: {},\n ariaLabels: {},\n overlayLabel: {}\n },\n emits: [\"selected\", \"toggle\", \"reset-flow\", \"hover-value\"],\n setup(e, { expose: t, emit: l }) {\n const { setSelectionGrid: n, buildMultiLevelMatrix: a, setMonthPicker: f } = At(), i = l, g = e, { defaultedAriaLabels: d, defaultedTextInput: P, defaultedConfig: v, handleEventPropagation: R } = Oe(\n g\n ), { hideNavigationButtons: h } = ga(), T = Z(!1), F = Z(null), _ = Z(null), C = Z([]), M = Z(), A = Z(null), m = Z(0), z = Z(null);\n Zn(() => {\n F.value = null;\n }), Ue(() => {\n at().then(() => ce()), g.noOverlayFocus || le(), L(!0);\n }), Ut(() => L(!1));\n const L = (u) => {\n g.arrowNavigation && (g.headerRefs?.length ? f(u) : n(u));\n }, le = () => {\n const u = Le(_);\n u && (P.value.enabled || (F.value ? F.value?.focus({ preventScroll: !0 }) : u.focus({ preventScroll: !0 })), T.value = u.clientHeight < u.scrollHeight);\n }, U = j(\n () => ({\n dp__overlay: !0,\n \"dp--overlay-absolute\": !g.useRelative,\n \"dp--overlay-relative\": g.useRelative\n })\n ), $ = j(\n () => g.useRelative ? { height: `${g.height}px`, width: \"var(--dp-menu-min-width)\" } : void 0\n ), ee = j(() => ({\n dp__overlay_col: !0\n })), O = j(\n () => ({\n dp__btn: !0,\n dp__button: !0,\n dp__overlay_action: !0,\n dp__over_action_scroll: T.value,\n dp__button_bottom: g.isLast\n })\n ), J = j(() => ({\n dp__overlay_container: !0,\n dp__container_flex: g.items?.length <= 6,\n dp__container_block: g.items?.length > 6\n }));\n rt(\n () => g.items,\n () => ce(!1),\n { deep: !0 }\n );\n const ce = (u = !0) => {\n at().then(() => {\n const re = Le(F), G = Le(_), I = Le(A), x = Le(z), c = I ? I.getBoundingClientRect().height : 0;\n G && (G.getBoundingClientRect().height ? m.value = G.getBoundingClientRect().height - c : m.value = v.value.modeHeight - c), re && x && u && (x.scrollTop = re.offsetTop - x.offsetTop - (m.value / 2 - re.getBoundingClientRect().height) - c);\n });\n }, pe = (u) => {\n u.disabled || i(\"selected\", u.value);\n }, p = () => {\n i(\"toggle\"), i(\"reset-flow\");\n }, Y = (u) => {\n g.escClose && (p(), R(u));\n }, te = (u, re, G, I) => {\n u && ((re.active || re.value === g.focusValue) && (F.value = u), g.arrowNavigation && (Array.isArray(C.value[G]) ? C.value[G][I] = u : C.value[G] = [u], y()));\n }, y = () => {\n const u = g.headerRefs?.length ? [g.headerRefs].concat(C.value) : C.value.concat([g.skipButtonRef ? [] : [A.value]]);\n a(Ne(u), g.headerRefs?.length ? \"monthPicker\" : \"selectionGrid\");\n }, V = (u) => {\n g.arrowNavigation || Dt(u, v.value, !0);\n }, S = (u) => {\n M.value = u, i(\"hover-value\", u);\n }, q = () => {\n if (p(), !g.isLast) {\n const u = Fa(g.menuWrapRef ?? null, \"action-row\");\n u && Cn(u)?.focus();\n }\n }, k = (u) => {\n switch (u.key) {\n case Re.esc:\n return Y(u);\n case Re.arrowLeft:\n return V(u);\n case Re.arrowRight:\n return V(u);\n case Re.arrowUp:\n return V(u);\n case Re.arrowDown:\n return V(u);\n default:\n return;\n }\n }, se = (u) => {\n if (u.key === Re.enter) return p();\n if (u.key === Re.tab) return q();\n };\n return t({ focusGrid: le }), (u, re) => (w(), W(\"div\", {\n ref_key: \"gridWrapRef\",\n ref: _,\n class: De(U.value),\n style: lt($.value),\n role: e.useRelative ? void 0 : \"dialog\",\n \"aria-label\": e.overlayLabel,\n tabindex: e.useRelative ? void 0 : \"0\",\n onKeydown: k,\n onClick: re[0] || (re[0] = Xt(() => {\n }, [\"prevent\"]))\n }, [\n he(\"div\", {\n ref_key: \"containerRef\",\n ref: z,\n class: De(J.value),\n style: lt({ \"--dp-overlay-height\": `${m.value}px` }),\n role: \"grid\"\n }, [\n he(\"div\", cr, [\n ie(u.$slots, \"header\")\n ]),\n u.$slots.overlay ? ie(u.$slots, \"overlay\", { key: 0 }) : (w(!0), W(ke, { key: 1 }, Ce(e.items, (G, I) => (w(), W(\"div\", {\n key: I,\n class: De([\"dp__overlay_row\", { dp__flex_row: e.items.length >= 3 }]),\n role: \"row\"\n }, [\n (w(!0), W(ke, null, Ce(G, (x, c) => (w(), W(\"div\", {\n key: x.value,\n ref_for: !0,\n ref: (o) => te(o, x, I, c),\n role: \"gridcell\",\n class: De(ee.value),\n \"aria-selected\": x.active || void 0,\n \"aria-disabled\": x.disabled || void 0,\n tabindex: \"0\",\n \"data-test-id\": x.text,\n onClick: Xt((o) => pe(x), [\"prevent\"]),\n onKeydown: (o) => s(qe)(o, () => pe(x), !0),\n onMouseover: (o) => S(x.value)\n }, [\n he(\"div\", {\n class: De(x.className)\n }, [\n u.$slots.item ? ie(u.$slots, \"item\", {\n key: 0,\n item: x\n }) : Q(\"\", !0),\n u.$slots.item ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(x.text), 1)\n ], 64))\n ], 2)\n ], 42, fr))), 128))\n ], 2))), 128))\n ], 6),\n u.$slots[\"button-icon\"] ? ua((w(), W(\"button\", {\n key: 0,\n ref_key: \"toggleButton\",\n ref: A,\n type: \"button\",\n \"aria-label\": s(d)?.toggleOverlay,\n class: De(O.value),\n tabindex: \"0\",\n onClick: p,\n onKeydown: se\n }, [\n ie(u.$slots, \"button-icon\")\n ], 42, vr)), [\n [ia, !s(h)(e.hideNavigation, e.type)]\n ]) : Q(\"\", !0)\n ], 46, dr));\n }\n}), mr = [\"data-dp-mobile\"], ma = /* @__PURE__ */ We({\n __name: \"InstanceWrap\",\n props: {\n multiCalendars: {},\n stretch: { type: Boolean },\n collapse: { type: Boolean },\n isMobile: { type: Boolean }\n },\n setup(e) {\n const t = e, l = j(\n () => t.multiCalendars > 0 ? [...Array(t.multiCalendars).keys()] : [0]\n ), n = j(() => ({\n dp__instance_calendar: t.multiCalendars > 0\n }));\n return (a, f) => (w(), W(\"div\", {\n class: De({\n dp__menu_inner: !e.stretch,\n \"dp--menu--inner-stretched\": e.stretch,\n dp__flex_display: e.multiCalendars > 0,\n \"dp--flex-display-collapsed\": e.collapse\n }),\n \"data-dp-mobile\": e.isMobile\n }, [\n (w(!0), W(ke, null, Ce(l.value, (i, g) => (w(), W(\"div\", {\n key: i,\n class: De(n.value)\n }, [\n ie(a.$slots, \"default\", {\n instance: i,\n index: g\n })\n ], 2))), 128))\n ], 10, mr));\n }\n}), pr = [\"data-dp-element\", \"aria-label\", \"aria-disabled\"], Qt = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"ArrowBtn\",\n props: {\n ariaLabel: {},\n elName: {},\n disabled: { type: Boolean }\n },\n emits: [\"activate\", \"set-ref\"],\n setup(e, { emit: t }) {\n const l = t, n = Z(null);\n return Ue(() => l(\"set-ref\", n)), (a, f) => (w(), W(\"button\", {\n ref_key: \"elRef\",\n ref: n,\n type: \"button\",\n \"data-dp-element\": e.elName,\n class: \"dp__btn dp--arrow-btn-nav\",\n tabindex: \"0\",\n \"aria-label\": e.ariaLabel,\n \"aria-disabled\": e.disabled || void 0,\n onClick: f[0] || (f[0] = (i) => l(\"activate\")),\n onKeydown: f[1] || (f[1] = (i) => s(qe)(i, () => l(\"activate\"), !0))\n }, [\n he(\"span\", {\n class: De([\"dp__inner_nav\", { dp__inner_nav_disabled: e.disabled }])\n }, [\n ie(a.$slots, \"default\")\n ], 2)\n ], 40, pr));\n }\n}), gr = [\"aria-label\", \"data-test-id\"], Wn = /* @__PURE__ */ We({\n __name: \"YearModePicker\",\n props: {\n ...dt,\n showYearPicker: { type: Boolean, default: !1 },\n items: { type: Array, default: () => [] },\n instance: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n isDisabled: { type: Function, default: () => !1 }\n },\n emits: [\"toggle-year-picker\", \"year-select\", \"handle-year\"],\n setup(e, { emit: t }) {\n const l = t, n = e, { showRightIcon: a, showLeftIcon: f } = ga(), { defaultedConfig: i, defaultedMultiCalendars: g, defaultedAriaLabels: d, defaultedTransitions: P, defaultedUI: v } = Oe(n), { showTransition: R, transitionName: h } = aa(P), T = Z(!1), F = j(() => Ja(n.year, n.locale)), _ = (A = !1, m) => {\n T.value = !T.value, l(\"toggle-year-picker\", { flow: A, show: m });\n }, C = (A) => {\n T.value = !1, l(\"year-select\", A);\n }, M = (A = !1) => {\n l(\"handle-year\", A);\n };\n return (A, m) => (w(), W(ke, null, [\n he(\"div\", {\n class: De([\"dp--year-mode-picker\", { \"dp--hidden-el\": T.value }])\n }, [\n s(f)(s(g), e.instance) ? (w(), Te(Qt, {\n key: 0,\n ref: \"mpPrevIconRef\",\n \"aria-label\": s(d)?.prevYear,\n disabled: e.isDisabled(!1),\n class: De(s(v)?.navBtnPrev),\n onActivate: m[0] || (m[0] = (z) => M(!1))\n }, {\n default: we(() => [\n A.$slots[\"arrow-left\"] ? ie(A.$slots, \"arrow-left\", { key: 0 }) : Q(\"\", !0),\n A.$slots[\"arrow-left\"] ? Q(\"\", !0) : (w(), Te(s(Ua), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Q(\"\", !0),\n he(\"button\", {\n ref: \"mpYearButtonRef\",\n class: \"dp__btn dp--year-select\",\n type: \"button\",\n \"aria-label\": `${e.year}-${s(d)?.openYearsOverlay}`,\n \"data-test-id\": `year-mode-btn-${e.instance}`,\n onClick: m[1] || (m[1] = () => _(!1)),\n onKeydown: m[2] || (m[2] = xn(() => _(!1), [\"enter\"]))\n }, [\n A.$slots.year ? ie(A.$slots, \"year\", {\n key: 0,\n year: e.year,\n text: F.value,\n value: e.year\n }) : Q(\"\", !0),\n A.$slots.year ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(F.value), 1)\n ], 64))\n ], 40, gr),\n s(a)(s(g), e.instance) ? (w(), Te(Qt, {\n key: 1,\n ref: \"mpNextIconRef\",\n \"aria-label\": s(d)?.nextYear,\n disabled: e.isDisabled(!0),\n class: De(s(v)?.navBtnNext),\n onActivate: m[3] || (m[3] = (z) => M(!0))\n }, {\n default: we(() => [\n A.$slots[\"arrow-right\"] ? ie(A.$slots, \"arrow-right\", { key: 0 }) : Q(\"\", !0),\n A.$slots[\"arrow-right\"] ? Q(\"\", !0) : (w(), Te(s(Va), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Q(\"\", !0)\n ], 2),\n tt(Vt, {\n name: s(h)(e.showYearPicker),\n css: s(R)\n }, {\n default: we(() => [\n e.showYearPicker ? (w(), Te(ta, {\n key: 0,\n items: e.items,\n \"text-input\": A.textInput,\n \"esc-close\": A.escClose,\n config: A.config,\n \"is-last\": A.autoApply && !s(i).keepActionRow,\n \"hide-navigation\": A.hideNavigation,\n \"aria-labels\": A.ariaLabels,\n \"overlay-label\": s(d)?.yearPicker?.(!0),\n type: \"year\",\n onToggle: _,\n onSelected: m[4] || (m[4] = (z) => C(z))\n }, Ge({\n \"button-icon\": we(() => [\n A.$slots[\"calendar-icon\"] ? ie(A.$slots, \"calendar-icon\", { key: 0 }) : Q(\"\", !0),\n A.$slots[\"calendar-icon\"] ? Q(\"\", !0) : (w(), Te(s(jt), { key: 1 }))\n ]),\n _: 2\n }, [\n A.$slots[\"year-overlay-value\"] ? {\n name: \"item\",\n fn: we(({ item: z }) => [\n ie(A.$slots, \"year-overlay-value\", {\n text: z.text,\n value: z.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"text-input\", \"esc-close\", \"config\", \"is-last\", \"hide-navigation\", \"aria-labels\", \"overlay-label\"])) : Q(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 64));\n }\n}), en = (e, t, l) => {\n if (t.value && Array.isArray(t.value))\n if (t.value.some((n) => $e(e, n))) {\n const n = t.value.filter((a) => !$e(a, e));\n t.value = n.length ? n : null;\n } else (l && +l > t.value.length || !l) && t.value.push(e);\n else\n t.value = [e];\n}, tn = (e, t, l) => {\n let n = e.value ? e.value.slice() : [];\n return n.length === 2 && n[1] !== null && (n = []), n.length ? (Be(t, n[0]) ? n.unshift(t) : n[1] = t, l(\"range-end\", t)) : (n = [t], l(\"range-start\", t)), n;\n}, pa = (e, t, l, n) => {\n e && (e[0] && e[1] && l && t(\"auto-apply\"), e[0] && !e[1] && n && l && t(\"auto-apply\"));\n}, Un = (e) => {\n Array.isArray(e.value) && e.value.length <= 2 && e.range ? e.modelValue.value = e.value.map((t) => Ze(H(t), e.timezone)) : Array.isArray(e.value) || (e.modelValue.value = Ze(H(e.value), e.timezone));\n}, Vn = (e, t, l, n) => Array.isArray(t.value) && (t.value.length === 2 || t.value.length === 1 && n.value.partialRange) ? n.value.fixedStart && (Ee(e, t.value[0]) || $e(e, t.value[0])) ? [t.value[0], e] : n.value.fixedEnd && (Be(e, t.value[1]) || $e(e, t.value[1])) ? [e, t.value[1]] : (l(\"invalid-fixed-range\", e), t.value) : [], jn = ({\n multiCalendars: e,\n range: t,\n highlight: l,\n propDates: n,\n calendars: a,\n modelValue: f,\n props: i,\n filters: g,\n year: d,\n month: P,\n emit: v\n}) => {\n const R = j(() => qa(i.yearRange, i.locale, i.reverseYears)), h = Z([!1]), T = j(() => (O, J) => {\n const ce = Se(it(/* @__PURE__ */ new Date()), {\n month: P.value(O),\n year: d.value(O)\n }), pe = J ? An(ce) : Gt(ce);\n return Nn(\n pe,\n n.value.maxDate,\n n.value.minDate,\n i.preventMinMaxNavigation,\n J\n );\n }), F = () => Array.isArray(f.value) && e.value.solo && f.value[1], _ = () => {\n for (let O = 0; O < e.value.count; O++)\n if (O === 0)\n a.value[O] = a.value[0];\n else if (O === e.value.count - 1 && F())\n a.value[O] = {\n month: Me(f.value[1]),\n year: ye(f.value[1])\n };\n else {\n const J = Se(H(), a.value[O - 1]);\n a.value[O] = { month: Me(J), year: ye(Mn(J, 1)) };\n }\n }, C = (O) => {\n if (!O) return _();\n const J = Se(H(), a.value[O]);\n return a.value[0].year = ye($n(J, e.value.count - 1)), _();\n }, M = (O, J) => {\n const ce = vl(J, O);\n return t.value.showLastInRange && ce > 1 ? J : O;\n }, A = (O) => i.focusStartDate || e.value.solo ? O[0] : O[1] ? M(O[0], O[1]) : O[0], m = () => {\n if (f.value) {\n const O = Array.isArray(f.value) ? A(f.value) : f.value;\n a.value[0] = { month: Me(O), year: ye(O) };\n }\n }, z = () => {\n m(), e.value.count && _();\n };\n rt(f, (O, J) => {\n i.isTextInputDate && JSON.stringify(O ?? {}) !== JSON.stringify(J ?? {}) && z();\n }), Ue(() => {\n z();\n });\n const L = (O, J) => {\n a.value[J].year = O, v(\"update-month-year\", { instance: J, year: O, month: a.value[J].month }), e.value.count && !e.value.solo && C(J);\n }, le = j(() => (O) => Ht(R.value, (J) => {\n const ce = d.value(O) === J.value, pe = Zt(\n J.value,\n Wt(n.value.minDate),\n Wt(n.value.maxDate)\n ) || g.value.years?.includes(d.value(O)), p = xa(l.value, J.value);\n return { active: ce, disabled: pe, highlighted: p };\n })), U = (O, J) => {\n L(O, J), ee(J);\n }, $ = (O, J = !1) => {\n if (!T.value(O, J)) {\n const ce = J ? d.value(O) + 1 : d.value(O) - 1;\n L(ce, O);\n }\n }, ee = (O, J = !1, ce) => {\n J || v(\"reset-flow\"), ce !== void 0 ? h.value[O] = ce : h.value[O] = !h.value[O], h.value[O] ? v(\"overlay-toggle\", { open: !0, overlay: je.year }) : (v(\"overlay-closed\"), v(\"overlay-toggle\", { open: !1, overlay: je.year }));\n };\n return {\n isDisabled: T,\n groupedYears: le,\n showYearPicker: h,\n selectYear: L,\n toggleYearPicker: ee,\n handleYearSelect: U,\n handleYear: $\n };\n}, yr = (e, t) => {\n const {\n defaultedMultiCalendars: l,\n defaultedAriaLabels: n,\n defaultedTransitions: a,\n defaultedConfig: f,\n defaultedRange: i,\n defaultedHighlight: g,\n propDates: d,\n defaultedTz: P,\n defaultedFilters: v,\n defaultedMultiDates: R\n } = Oe(e), h = () => {\n e.isTextInputDate && z(ye(H(e.startDate)), 0);\n }, { modelValue: T, year: F, month: _, calendars: C } = na(e, t, h), M = j(() => Pn(e.formatLocale, e.locale, e.monthNameFormat)), A = Z(null), { checkMinMaxRange: m } = Tt(e), {\n selectYear: z,\n groupedYears: L,\n showYearPicker: le,\n toggleYearPicker: U,\n handleYearSelect: $,\n handleYear: ee,\n isDisabled: O\n } = jn({\n modelValue: T,\n multiCalendars: l,\n range: i,\n highlight: g,\n calendars: C,\n year: F,\n propDates: d,\n month: _,\n filters: v,\n props: e,\n emit: t\n });\n Ue(() => {\n e.startDate && (T.value && e.focusStartDate || !T.value) && z(ye(H(e.startDate)), 0);\n });\n const J = (I) => I ? { month: Me(I), year: ye(I) } : { month: null, year: null }, ce = () => T.value ? Array.isArray(T.value) ? T.value.map((I) => J(I)) : J(T.value) : J(), pe = (I, x) => {\n const c = C.value[I], o = ce();\n return Array.isArray(o) ? o.some((X) => X.year === c?.year && X.month === x) : c?.year === o.year && x === o.month;\n }, p = (I, x, c) => {\n const o = ce();\n return Array.isArray(o) ? F.value(x) === o[c]?.year && I === o[c]?.month : !1;\n }, Y = (I, x) => {\n if (i.value.enabled) {\n const c = ce();\n if (Array.isArray(T.value) && Array.isArray(c)) {\n const o = p(I, x, 0) || p(I, x, 1), X = pt(it(H()), I, F.value(x));\n return xt(T.value, A.value, X) && !o;\n }\n return !1;\n }\n return !1;\n }, te = j(() => (I) => Ht(M.value, (x) => {\n const c = pe(I, x.value), o = Zt(\n x.value,\n _n(F.value(I), d.value.minDate),\n Yn(F.value(I), d.value.maxDate)\n ) || zl(d.value.disabledDates, F.value(I), x.value) || v.value.months?.includes(x.value) || !Hl(d.value.allowedDates, F.value(I), x.value) || zn(e.yearRange, F.value(I)), X = Y(x.value, I), B = Fn(g.value, x.value, F.value(I));\n return { active: c, disabled: o, isBetween: X, highlighted: B };\n })), y = (I, x) => pt(it(H()), I, F.value(x)), V = (I, x) => {\n const c = T.value ? T.value : it(/* @__PURE__ */ new Date());\n T.value = pt(c, I, F.value(x)), t(\"auto-apply\"), t(\"update-flow-step\");\n }, S = (I, x) => {\n const c = y(I, x);\n i.value.fixedEnd || i.value.fixedStart ? T.value = Vn(c, T, t, i) : T.value ? m(c, T.value) && (T.value = tn(T, y(I, x), t)) : T.value = [y(I, x)], at().then(() => {\n pa(T.value, t, e.autoApply, e.modelAuto);\n });\n }, q = (I, x) => {\n en(y(I, x), T, R.value.limit), t(\"auto-apply\", !0);\n }, k = (I, x) => (C.value[x].month = I, u(x, C.value[x].year, I), R.value.enabled ? q(I, x) : i.value.enabled ? S(I, x) : V(I, x)), se = (I, x) => {\n z(I, x), u(x, I, null);\n }, u = (I, x, c) => {\n let o = c;\n if (!o && o !== 0) {\n const X = ce();\n o = Array.isArray(X) ? X[I].month : X.month;\n }\n t(\"update-month-year\", { instance: I, year: x, month: o });\n };\n return {\n groupedMonths: te,\n groupedYears: L,\n year: F,\n isDisabled: O,\n defaultedMultiCalendars: l,\n defaultedAriaLabels: n,\n defaultedTransitions: a,\n defaultedConfig: f,\n showYearPicker: le,\n modelValue: T,\n presetDate: (I, x) => {\n Un({\n value: I,\n modelValue: T,\n range: i.value.enabled,\n timezone: x ? void 0 : P.value.timezone\n }), t(\"auto-apply\");\n },\n setHoverDate: (I, x) => {\n A.value = y(I, x);\n },\n selectMonth: k,\n selectYear: se,\n toggleYearPicker: U,\n handleYearSelect: $,\n handleYear: ee,\n getModelMonthYear: ce\n };\n}, hr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"MonthPicker\",\n props: {\n ...dt\n },\n emits: [\n \"update:internal-model-value\",\n \"overlay-closed\",\n \"reset-flow\",\n \"range-start\",\n \"range-end\",\n \"auto-apply\",\n \"update-month-year\",\n \"update-flow-step\",\n \"mount\",\n \"invalid-fixed-range\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = Yt(), f = et(a, \"yearMode\"), i = e;\n Ue(() => {\n i.shadow || n(\"mount\", null);\n });\n const {\n groupedMonths: g,\n groupedYears: d,\n year: P,\n isDisabled: v,\n defaultedMultiCalendars: R,\n defaultedConfig: h,\n showYearPicker: T,\n modelValue: F,\n presetDate: _,\n setHoverDate: C,\n selectMonth: M,\n selectYear: A,\n toggleYearPicker: m,\n handleYearSelect: z,\n handleYear: L,\n getModelMonthYear: le\n } = yr(i, n);\n return t({ getSidebarProps: () => ({\n modelValue: F,\n year: P,\n getModelMonthYear: le,\n selectMonth: M,\n selectYear: A,\n handleYear: L\n }), presetDate: _, toggleYearPicker: ($) => m(0, $) }), ($, ee) => (w(), Te(ma, {\n \"multi-calendars\": s(R).count,\n collapse: $.collapse,\n stretch: \"\",\n \"is-mobile\": $.isMobile\n }, {\n default: we(({ instance: O }) => [\n $.$slots[\"top-extra\"] ? ie($.$slots, \"top-extra\", {\n key: 0,\n value: $.internalModelValue\n }) : Q(\"\", !0),\n $.$slots[\"month-year\"] ? ie($.$slots, \"month-year\", ze(He({ key: 1 }, {\n year: s(P),\n months: s(g)(O),\n years: s(d)(O),\n selectMonth: s(M),\n selectYear: s(A),\n instance: O\n }))) : (w(), Te(ta, {\n key: 2,\n items: s(g)(O),\n \"arrow-navigation\": $.arrowNavigation,\n \"is-last\": $.autoApply && !s(h).keepActionRow,\n \"esc-close\": $.escClose,\n height: s(h).modeHeight,\n config: $.config,\n \"no-overlay-focus\": !!($.noOverlayFocus || $.textInput),\n \"use-relative\": \"\",\n type: \"month\",\n onSelected: (J) => s(M)(J, O),\n onHoverValue: (J) => s(C)(J, O)\n }, Ge({\n header: we(() => [\n tt(Wn, He($.$props, {\n items: s(d)(O),\n instance: O,\n \"show-year-picker\": s(T)[O],\n year: s(P)(O),\n \"is-disabled\": (J) => s(v)(O, J),\n onHandleYear: (J) => s(L)(O, J),\n onYearSelect: (J) => s(z)(J, O),\n onToggleYearPicker: (J) => s(m)(O, J?.flow, J?.show)\n }), Ge({ _: 2 }, [\n Ce(s(f), (J, ce) => ({\n name: J,\n fn: we((pe) => [\n ie($.$slots, J, ze(Je(pe)))\n ])\n }))\n ]), 1040, [\"items\", \"instance\", \"show-year-picker\", \"year\", \"is-disabled\", \"onHandleYear\", \"onYearSelect\", \"onToggleYearPicker\"])\n ]),\n _: 2\n }, [\n $.$slots[\"month-overlay-value\"] ? {\n name: \"item\",\n fn: we(({ item: J }) => [\n ie($.$slots, \"month-overlay-value\", {\n text: J.text,\n value: J.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"arrow-navigation\", \"is-last\", \"esc-close\", \"height\", \"config\", \"no-overlay-focus\", \"onSelected\", \"onHoverValue\"]))\n ]),\n _: 3\n }, 8, [\"multi-calendars\", \"collapse\", \"is-mobile\"]));\n }\n}), br = (e, t) => {\n const l = () => {\n e.isTextInputDate && (v.value = ye(H(e.startDate)));\n }, { modelValue: n } = na(e, t, l), a = Z(null), { defaultedHighlight: f, defaultedMultiDates: i, defaultedFilters: g, defaultedRange: d, propDates: P } = Oe(e), v = Z();\n Ue(() => {\n e.startDate && (n.value && e.focusStartDate || !n.value) && (v.value = ye(H(e.startDate)));\n });\n const R = (m) => Array.isArray(n.value) ? n.value.some((z) => ye(z) === m) : n.value ? ye(n.value) === m : !1, h = (m) => d.value.enabled && Array.isArray(n.value) ? xt(n.value, a.value, C(m)) : !1, T = (m) => P.value.allowedDates instanceof Map ? P.value.allowedDates.size ? P.value.allowedDates.has(`${m}`) : !1 : !0, F = (m) => P.value.disabledDates instanceof Map ? P.value.disabledDates.size ? P.value.disabledDates.has(`${m}`) : !1 : typeof P.value.disabledDates == \"function\" ? P.value.disabledDates(ut(Fe(Gt(H())), m)) : !0, _ = j(() => Ht(qa(e.yearRange, e.locale, e.reverseYears), (m) => {\n const z = R(m.value), L = Zt(\n m.value,\n Wt(P.value.minDate),\n Wt(P.value.maxDate)\n ) || g.value.years.includes(m.value) || !T(m.value) || F(m.value), le = h(m.value) && !z, U = xa(f.value, m.value);\n return { active: z, disabled: L, isBetween: le, highlighted: U };\n })), C = (m) => ut(it(Gt(/* @__PURE__ */ new Date())), m);\n return {\n groupedYears: _,\n modelValue: n,\n focusYear: v,\n setHoverValue: (m) => {\n a.value = ut(it(/* @__PURE__ */ new Date()), m);\n },\n selectYear: (m) => {\n if (t(\"update-month-year\", { instance: 0, year: m }), i.value.enabled)\n return n.value ? Array.isArray(n.value) && ((n.value?.map((L) => ye(L))).includes(m) ? n.value = n.value.filter((L) => ye(L) !== m) : n.value.push(ut(Fe(H()), m))) : n.value = [ut(Fe(Gt(H())), m)], t(\"auto-apply\", !0);\n d.value.enabled ? (n.value = tn(n, C(m), t), at().then(() => {\n pa(n.value, t, e.autoApply, e.modelAuto);\n })) : (n.value = C(m), t(\"auto-apply\"));\n }\n };\n}, kr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"YearPicker\",\n props: {\n ...dt\n },\n emits: [\n \"update:internal-model-value\",\n \"reset-flow\",\n \"range-start\",\n \"range-end\",\n \"auto-apply\",\n \"update-month-year\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, { groupedYears: f, modelValue: i, focusYear: g, selectYear: d, setHoverValue: P } = br(a, n), { defaultedConfig: v } = Oe(a);\n return t({ getSidebarProps: () => ({\n modelValue: i,\n selectYear: d\n }) }), (h, T) => (w(), W(\"div\", null, [\n h.$slots[\"top-extra\"] ? ie(h.$slots, \"top-extra\", {\n key: 0,\n value: h.internalModelValue\n }) : Q(\"\", !0),\n h.$slots[\"month-year\"] ? ie(h.$slots, \"month-year\", ze(He({ key: 1 }, {\n years: s(f),\n selectYear: s(d)\n }))) : (w(), Te(ta, {\n key: 2,\n items: s(f),\n \"is-last\": h.autoApply && !s(v).keepActionRow,\n height: s(v).modeHeight,\n config: h.config,\n \"no-overlay-focus\": !!(h.noOverlayFocus || h.textInput),\n \"focus-value\": s(g),\n type: \"year\",\n \"use-relative\": \"\",\n onSelected: s(d),\n onHoverValue: s(P)\n }, Ge({ _: 2 }, [\n h.$slots[\"year-overlay-value\"] ? {\n name: \"item\",\n fn: we(({ item: F }) => [\n ie(h.$slots, \"year-overlay-value\", {\n text: F.text,\n value: F.value\n })\n ]),\n key: \"0\"\n } : void 0\n ]), 1032, [\"items\", \"is-last\", \"height\", \"config\", \"no-overlay-focus\", \"focus-value\", \"onSelected\", \"onHoverValue\"]))\n ]));\n }\n}), wr = {\n key: 0,\n class: \"dp__time_input\"\n}, Dr = [\"data-compact\", \"data-collapsed\"], Mr = [\"data-test-id\", \"aria-label\", \"onKeydown\", \"onClick\", \"onMousedown\"], $r = [\"aria-label\", \"disabled\", \"data-test-id\", \"onKeydown\", \"onClick\"], Ar = [\"data-test-id\", \"aria-label\", \"onKeydown\", \"onClick\", \"onMousedown\"], Tr = { key: 0 }, Sr = [\"aria-label\", \"data-compact\"], Pr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimeInput\",\n props: {\n hours: { type: Number, default: 0 },\n minutes: { type: Number, default: 0 },\n seconds: { type: Number, default: 0 },\n closeTimePickerBtn: { type: Object, default: null },\n order: { type: Number, default: 0 },\n disabledTimesConfig: { type: Function, default: null },\n validateTime: { type: Function, default: () => !1 },\n ...dt\n },\n emits: [\n \"set-hours\",\n \"set-minutes\",\n \"update:hours\",\n \"update:minutes\",\n \"update:seconds\",\n \"reset-flow\",\n \"mounted\",\n \"overlay-closed\",\n \"overlay-opened\",\n \"am-pm-change\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, { setTimePickerElements: f, setTimePickerBackRef: i } = At(), {\n defaultedAriaLabels: g,\n defaultedTransitions: d,\n defaultedFilters: P,\n defaultedConfig: v,\n defaultedRange: R,\n defaultedMultiCalendars: h\n } = Oe(a), { transitionName: T, showTransition: F } = aa(d), _ = ea({\n hours: !1,\n minutes: !1,\n seconds: !1\n }), C = Z(\"AM\"), M = Z(null), A = Z([]), m = Z(), z = Z(!1);\n Ue(() => {\n n(\"mounted\");\n });\n const L = (r) => Se(/* @__PURE__ */ new Date(), {\n hours: r.hours,\n minutes: r.minutes,\n seconds: a.enableSeconds ? r.seconds : 0,\n milliseconds: 0\n }), le = j(\n () => (r) => S(r, a[r]) || $(r, a[r])\n ), U = j(() => ({ hours: a.hours, minutes: a.minutes, seconds: a.seconds })), $ = (r, E) => R.value.enabled && !R.value.disableTimeRangeValidation ? !a.validateTime(r, E) : !1, ee = (r, E) => {\n if (R.value.enabled && !R.value.disableTimeRangeValidation) {\n const K = E ? +a[`${r}Increment`] : -+a[`${r}Increment`], oe = a[r] + K;\n return !a.validateTime(r, oe);\n }\n return !1;\n }, O = j(() => (r) => !re(+a[r] + +a[`${r}Increment`], r) || ee(r, !0)), J = j(() => (r) => !re(+a[r] - +a[`${r}Increment`], r) || ee(r, !1)), ce = (r, E) => Tn(Se(H(), r), E), pe = (r, E) => ml(Se(H(), r), E), p = j(\n () => ({\n dp__time_col: !0,\n dp__time_col_block: !a.timePickerInline,\n dp__time_col_reg_block: !a.enableSeconds && a.is24 && !a.timePickerInline,\n dp__time_col_reg_inline: !a.enableSeconds && a.is24 && a.timePickerInline,\n dp__time_col_reg_with_button: !a.enableSeconds && !a.is24,\n dp__time_col_sec: a.enableSeconds && a.is24,\n dp__time_col_sec_with_button: a.enableSeconds && !a.is24\n })\n ), Y = j(\n () => a.timePickerInline && R.value.enabled && !h.value.count\n ), te = j(() => {\n const r = [{ type: \"hours\" }];\n return a.enableMinutes && r.push({ type: \"\", separator: !0 }, {\n type: \"minutes\"\n }), a.enableSeconds && r.push({ type: \"\", separator: !0 }, {\n type: \"seconds\"\n }), r;\n }), y = j(() => te.value.filter((r) => !r.separator)), V = j(() => (r) => {\n if (r === \"hours\") {\n const E = X(+a.hours);\n return { text: E < 10 ? `0${E}` : `${E}`, value: E };\n }\n return { text: a[r] < 10 ? `0${a[r]}` : `${a[r]}`, value: a[r] };\n }), S = (r, E) => {\n if (!a.disabledTimesConfig) return !1;\n const K = a.disabledTimesConfig(a.order, r === \"hours\" ? E : void 0);\n return K[r] ? !!K[r]?.includes(E) : !0;\n }, q = (r, E) => E !== \"hours\" || C.value === \"AM\" ? r : r + 12, k = (r) => {\n const E = a.is24 ? 24 : 12, K = r === \"hours\" ? E : 60, oe = +a[`${r}GridIncrement`], ge = r === \"hours\" && !a.is24 ? oe : 0, _e = [];\n for (let Ye = ge; Ye < K; Ye += oe)\n _e.push({ value: a.is24 ? Ye : q(Ye, r), text: Ye < 10 ? `0${Ye}` : `${Ye}` });\n return r === \"hours\" && !a.is24 && _e.unshift({ value: C.value === \"PM\" ? 12 : 0, text: \"12\" }), Ht(_e, (Ye) => ({ active: !1, disabled: P.value.times[r].includes(Ye.value) || !re(Ye.value, r) || S(r, Ye.value) || $(r, Ye.value) }));\n }, se = (r) => r >= 0 ? r : 59, u = (r) => r >= 0 ? r : 23, re = (r, E) => {\n const K = a.minTime ? L(Sa(a.minTime)) : null, oe = a.maxTime ? L(Sa(a.maxTime)) : null, ge = L(\n Sa(\n U.value,\n E,\n E === \"minutes\" || E === \"seconds\" ? se(r) : u(r)\n )\n );\n return K && oe ? (Ft(ge, oe) || Nt(ge, oe)) && (_t(ge, K) || Nt(ge, K)) : K ? _t(ge, K) || Nt(ge, K) : oe ? Ft(ge, oe) || Nt(ge, oe) : !0;\n }, G = (r) => a[`no${r[0].toUpperCase() + r.slice(1)}Overlay`], I = (r) => {\n G(r) || (_[r] = !_[r], _[r] ? (z.value = !0, n(\"overlay-opened\", r)) : (z.value = !1, n(\"overlay-closed\", r)));\n }, x = (r) => r === \"hours\" ? yt : r === \"minutes\" ? $t : zt, c = () => {\n m.value && clearTimeout(m.value);\n }, o = (r, E = !0, K) => {\n const oe = E ? ce : pe, ge = E ? +a[`${r}Increment`] : -+a[`${r}Increment`];\n re(+a[r] + ge, r) && n(\n `update:${r}`,\n x(r)(oe({ [r]: +a[r] }, { [r]: +a[`${r}Increment`] }))\n ), !K?.keyboard && v.value.timeArrowHoldThreshold && (m.value = setTimeout(() => {\n o(r, E);\n }, v.value.timeArrowHoldThreshold));\n }, X = (r) => a.is24 ? r : (r >= 12 ? C.value = \"PM\" : C.value = \"AM\", Sl(r)), B = () => {\n C.value === \"PM\" ? (C.value = \"AM\", n(\"update:hours\", a.hours - 12)) : (C.value = \"PM\", n(\"update:hours\", a.hours + 12)), n(\"am-pm-change\", C.value);\n }, be = (r) => {\n _[r] = !0;\n }, Ae = (r, E, K) => {\n if (r && a.arrowNavigation) {\n Array.isArray(A.value[E]) ? A.value[E][K] = r : A.value[E] = [r];\n const oe = A.value.reduce(\n (ge, _e) => _e.map((Ye, nt) => [...ge[nt] || [], _e[nt]]),\n []\n );\n i(a.closeTimePickerBtn), M.value && (oe[1] = oe[1].concat(M.value)), f(oe, a.order);\n }\n }, ne = (r, E) => (I(r), n(`update:${r}`, E));\n return t({ openChildCmp: be }), (r, E) => r.disabled ? Q(\"\", !0) : (w(), W(\"div\", wr, [\n (w(!0), W(ke, null, Ce(te.value, (K, oe) => (w(), W(\"div\", {\n key: oe,\n class: De(p.value),\n \"data-compact\": Y.value && !r.enableSeconds,\n \"data-collapsed\": Y.value && r.enableSeconds\n }, [\n K.separator ? (w(), W(ke, { key: 0 }, [\n z.value ? Q(\"\", !0) : (w(), W(ke, { key: 0 }, [\n gt(\":\")\n ], 64))\n ], 64)) : (w(), W(ke, { key: 1 }, [\n he(\"button\", {\n ref_for: !0,\n ref: (ge) => Ae(ge, oe, 0),\n type: \"button\",\n class: De({\n dp__btn: !0,\n dp__inc_dec_button: !r.timePickerInline,\n dp__inc_dec_button_inline: r.timePickerInline,\n dp__tp_inline_btn_top: r.timePickerInline,\n dp__inc_dec_button_disabled: O.value(K.type),\n \"dp--hidden-el\": z.value\n }),\n \"data-test-id\": `${K.type}-time-inc-btn-${a.order}`,\n \"aria-label\": s(g)?.incrementValue(K.type),\n tabindex: \"0\",\n onKeydown: (ge) => s(qe)(ge, () => o(K.type, !0, { keyboard: !0 }), !0),\n onClick: (ge) => s(v).timeArrowHoldThreshold ? void 0 : o(K.type, !0),\n onMousedown: (ge) => s(v).timeArrowHoldThreshold ? o(K.type, !0) : void 0,\n onMouseup: c\n }, [\n a.timePickerInline ? (w(), W(ke, { key: 1 }, [\n r.$slots[\"tp-inline-arrow-up\"] ? ie(r.$slots, \"tp-inline-arrow-up\", { key: 0 }) : (w(), W(ke, { key: 1 }, [\n E[2] || (E[2] = he(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_l\" }, null, -1)),\n E[3] || (E[3] = he(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_r\" }, null, -1))\n ], 64))\n ], 64)) : (w(), W(ke, { key: 0 }, [\n r.$slots[\"arrow-up\"] ? ie(r.$slots, \"arrow-up\", { key: 0 }) : Q(\"\", !0),\n r.$slots[\"arrow-up\"] ? Q(\"\", !0) : (w(), Te(s(Ka), { key: 1 }))\n ], 64))\n ], 42, Mr),\n he(\"button\", {\n ref_for: !0,\n ref: (ge) => Ae(ge, oe, 1),\n type: \"button\",\n \"aria-label\": `${V.value(K.type).text}-${s(g)?.openTpOverlay(K.type)}`,\n class: De({\n dp__time_display: !0,\n dp__time_display_block: !r.timePickerInline,\n dp__time_display_inline: r.timePickerInline,\n \"dp--time-invalid\": le.value(K.type),\n \"dp--time-overlay-btn\": !le.value(K.type),\n \"dp--hidden-el\": z.value\n }),\n disabled: G(K.type),\n tabindex: \"0\",\n \"data-test-id\": `${K.type}-toggle-overlay-btn-${a.order}`,\n onKeydown: (ge) => s(qe)(ge, () => I(K.type), !0),\n onClick: (ge) => I(K.type)\n }, [\n r.$slots[K.type] ? ie(r.$slots, K.type, {\n key: 0,\n text: V.value(K.type).text,\n value: V.value(K.type).value\n }) : Q(\"\", !0),\n r.$slots[K.type] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(V.value(K.type).text), 1)\n ], 64))\n ], 42, $r),\n he(\"button\", {\n ref_for: !0,\n ref: (ge) => Ae(ge, oe, 2),\n type: \"button\",\n class: De({\n dp__btn: !0,\n dp__inc_dec_button: !r.timePickerInline,\n dp__inc_dec_button_inline: r.timePickerInline,\n dp__tp_inline_btn_bottom: r.timePickerInline,\n dp__inc_dec_button_disabled: J.value(K.type),\n \"dp--hidden-el\": z.value\n }),\n \"data-test-id\": `${K.type}-time-dec-btn-${a.order}`,\n \"aria-label\": s(g)?.decrementValue(K.type),\n tabindex: \"0\",\n onKeydown: (ge) => s(qe)(ge, () => o(K.type, !1, { keyboard: !0 }), !0),\n onClick: (ge) => s(v).timeArrowHoldThreshold ? void 0 : o(K.type, !1),\n onMousedown: (ge) => s(v).timeArrowHoldThreshold ? o(K.type, !1) : void 0,\n onMouseup: c\n }, [\n a.timePickerInline ? (w(), W(ke, { key: 1 }, [\n r.$slots[\"tp-inline-arrow-down\"] ? ie(r.$slots, \"tp-inline-arrow-down\", { key: 0 }) : (w(), W(ke, { key: 1 }, [\n E[4] || (E[4] = he(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_l\" }, null, -1)),\n E[5] || (E[5] = he(\"span\", { class: \"dp__tp_inline_btn_bar dp__tp_btn_in_r\" }, null, -1))\n ], 64))\n ], 64)) : (w(), W(ke, { key: 0 }, [\n r.$slots[\"arrow-down\"] ? ie(r.$slots, \"arrow-down\", { key: 0 }) : Q(\"\", !0),\n r.$slots[\"arrow-down\"] ? Q(\"\", !0) : (w(), Te(s(Ga), { key: 1 }))\n ], 64))\n ], 42, Ar)\n ], 64))\n ], 10, Dr))), 128)),\n r.is24 ? Q(\"\", !0) : (w(), W(\"div\", Tr, [\n r.$slots[\"am-pm-button\"] ? ie(r.$slots, \"am-pm-button\", {\n key: 0,\n toggle: B,\n value: C.value\n }) : Q(\"\", !0),\n r.$slots[\"am-pm-button\"] ? Q(\"\", !0) : (w(), W(\"button\", {\n key: 1,\n ref_key: \"amPmButton\",\n ref: M,\n type: \"button\",\n class: \"dp__pm_am_button\",\n role: \"button\",\n \"aria-label\": s(g)?.amPmButton,\n tabindex: \"0\",\n \"data-compact\": Y.value,\n onClick: B,\n onKeydown: E[0] || (E[0] = (K) => s(qe)(K, () => B(), !0))\n }, Ke(C.value), 41, Sr))\n ])),\n (w(!0), W(ke, null, Ce(y.value, (K, oe) => (w(), Te(Vt, {\n key: oe,\n name: s(T)(_[K.type]),\n css: s(F)\n }, {\n default: we(() => [\n _[K.type] ? (w(), Te(ta, {\n key: 0,\n items: k(K.type),\n \"is-last\": r.autoApply && !s(v).keepActionRow,\n \"esc-close\": r.escClose,\n type: K.type,\n \"text-input\": r.textInput,\n config: r.config,\n \"arrow-navigation\": r.arrowNavigation,\n \"aria-labels\": r.ariaLabels,\n \"overlay-label\": s(g).timeOverlay?.(K.type),\n onSelected: (ge) => ne(K.type, ge),\n onToggle: (ge) => I(K.type),\n onResetFlow: E[1] || (E[1] = (ge) => r.$emit(\"reset-flow\"))\n }, Ge({\n \"button-icon\": we(() => [\n r.$slots[\"clock-icon\"] ? ie(r.$slots, \"clock-icon\", { key: 0 }) : Q(\"\", !0),\n r.$slots[\"clock-icon\"] ? Q(\"\", !0) : (w(), Te(fa(r.timePickerInline ? s(jt) : s(ja)), { key: 1 }))\n ]),\n _: 2\n }, [\n r.$slots[`${K.type}-overlay-value`] ? {\n name: \"item\",\n fn: we(({ item: ge }) => [\n ie(r.$slots, `${K.type}-overlay-value`, {\n text: ge.text,\n value: ge.value\n })\n ]),\n key: \"0\"\n } : void 0,\n r.$slots[`${K.type}-overlay-header`] ? {\n name: \"header\",\n fn: we(() => [\n ie(r.$slots, `${K.type}-overlay-header`, {\n toggle: () => I(K.type)\n })\n ]),\n key: \"1\"\n } : void 0\n ]), 1032, [\"items\", \"is-last\", \"esc-close\", \"type\", \"text-input\", \"config\", \"arrow-navigation\", \"aria-labels\", \"overlay-label\", \"onSelected\", \"onToggle\"])) : Q(\"\", !0)\n ]),\n _: 2\n }, 1032, [\"name\", \"css\"]))), 128))\n ]));\n }\n}), Rr = [\"data-dp-mobile\"], Cr = [\"aria-label\", \"tabindex\"], Or = [\"role\", \"aria-label\", \"tabindex\"], Br = [\"aria-label\"], Kn = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimePicker\",\n props: {\n hours: { type: [Number, Array], default: 0 },\n minutes: { type: [Number, Array], default: 0 },\n seconds: { type: [Number, Array], default: 0 },\n disabledTimesConfig: { type: Function, default: null },\n validateTime: {\n type: Function,\n default: () => !1\n },\n ...dt\n },\n emits: [\n \"update:hours\",\n \"update:minutes\",\n \"update:seconds\",\n \"mount\",\n \"reset-flow\",\n \"overlay-opened\",\n \"overlay-closed\",\n \"am-pm-change\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, { buildMatrix: f, setTimePicker: i } = At(), g = Yt(), { defaultedTransitions: d, defaultedAriaLabels: P, defaultedTextInput: v, defaultedConfig: R, defaultedRange: h } = Oe(a), { transitionName: T, showTransition: F } = aa(d), { hideNavigationButtons: _ } = ga(), C = Z(null), M = Z(null), A = Z([]), m = Z(null), z = Z(!1);\n Ue(() => {\n n(\"mount\"), !a.timePicker && a.arrowNavigation ? f([Le(C.value)], \"time\") : i(!0, a.timePicker);\n });\n const L = j(() => h.value.enabled && a.modelAuto ? Rn(a.internalModelValue) : !0), le = Z(!1), U = (S) => ({\n hours: Array.isArray(a.hours) ? a.hours[S] : a.hours,\n minutes: Array.isArray(a.minutes) ? a.minutes[S] : a.minutes,\n seconds: Array.isArray(a.seconds) ? a.seconds[S] : a.seconds\n }), $ = j(() => {\n const S = [];\n if (h.value.enabled)\n for (let q = 0; q < 2; q++)\n S.push(U(q));\n else\n S.push(U(0));\n return S;\n }), ee = (S, q = !1, k = \"\") => {\n q || n(\"reset-flow\"), le.value = S, n(S ? \"overlay-opened\" : \"overlay-closed\", je.time), a.arrowNavigation && i(S), at(() => {\n k !== \"\" && A.value[0] && A.value[0].openChildCmp(k);\n });\n }, O = j(() => ({\n dp__btn: !0,\n dp__button: !0,\n dp__button_bottom: a.autoApply && !R.value.keepActionRow\n })), J = et(g, \"timePicker\"), ce = (S, q, k) => h.value.enabled ? q === 0 ? [S, $.value[1][k]] : [$.value[0][k], S] : S, pe = (S) => {\n n(\"update:hours\", S);\n }, p = (S) => {\n n(\"update:minutes\", S);\n }, Y = (S) => {\n n(\"update:seconds\", S);\n }, te = () => {\n if (m.value && !v.value.enabled && !a.noOverlayFocus) {\n const S = Cn(m.value);\n S && S.focus({ preventScroll: !0 });\n }\n }, y = (S) => {\n z.value = !1, n(\"overlay-closed\", S);\n }, V = (S) => {\n z.value = !0, n(\"overlay-opened\", S);\n };\n return t({ toggleTimePicker: ee }), (S, q) => (w(), W(\"div\", {\n class: \"dp--tp-wrap\",\n \"data-dp-mobile\": S.isMobile\n }, [\n !S.timePicker && !S.timePickerInline ? ua((w(), W(\"button\", {\n key: 0,\n ref_key: \"openTimePickerBtn\",\n ref: C,\n type: \"button\",\n class: De({ ...O.value, \"dp--hidden-el\": le.value }),\n \"aria-label\": s(P)?.openTimePicker,\n tabindex: S.noOverlayFocus ? void 0 : 0,\n \"data-test-id\": \"open-time-picker-btn\",\n onKeydown: q[0] || (q[0] = (k) => s(qe)(k, () => ee(!0))),\n onClick: q[1] || (q[1] = (k) => ee(!0))\n }, [\n S.$slots[\"clock-icon\"] ? ie(S.$slots, \"clock-icon\", { key: 0 }) : Q(\"\", !0),\n S.$slots[\"clock-icon\"] ? Q(\"\", !0) : (w(), Te(s(ja), { key: 1 }))\n ], 42, Cr)), [\n [ia, !s(_)(S.hideNavigation, \"time\")]\n ]) : Q(\"\", !0),\n tt(Vt, {\n name: s(T)(le.value),\n css: s(F) && !S.timePickerInline\n }, {\n default: we(() => [\n le.value || S.timePicker || S.timePickerInline ? (w(), W(\"div\", {\n key: 0,\n ref_key: \"overlayRef\",\n ref: m,\n role: S.timePickerInline ? void 0 : \"dialog\",\n class: De({\n dp__overlay: !S.timePickerInline,\n \"dp--overlay-absolute\": !a.timePicker && !S.timePickerInline,\n \"dp--overlay-relative\": a.timePicker\n }),\n style: lt(S.timePicker ? { height: `${s(R).modeHeight}px` } : void 0),\n \"aria-label\": s(P)?.timePicker,\n tabindex: S.timePickerInline ? void 0 : 0\n }, [\n he(\"div\", {\n class: De(\n S.timePickerInline ? \"dp__time_picker_inline_container\" : \"dp__overlay_container dp__container_flex dp__time_picker_overlay_container\"\n ),\n style: { display: \"flex\" }\n }, [\n S.$slots[\"time-picker-overlay\"] ? ie(S.$slots, \"time-picker-overlay\", {\n key: 0,\n hours: e.hours,\n minutes: e.minutes,\n seconds: e.seconds,\n setHours: pe,\n setMinutes: p,\n setSeconds: Y\n }) : Q(\"\", !0),\n S.$slots[\"time-picker-overlay\"] ? Q(\"\", !0) : (w(), W(\"div\", {\n key: 1,\n class: De(S.timePickerInline ? \"dp__flex\" : \"dp__overlay_row dp__flex_row\")\n }, [\n (w(!0), W(ke, null, Ce($.value, (k, se) => ua((w(), Te(Pr, He({ key: se }, { ref_for: !0 }, {\n ...S.$props,\n order: se,\n hours: k.hours,\n minutes: k.minutes,\n seconds: k.seconds,\n closeTimePickerBtn: M.value,\n disabledTimesConfig: e.disabledTimesConfig,\n disabled: se === 0 ? s(h).fixedStart : s(h).fixedEnd\n }, {\n ref_for: !0,\n ref_key: \"timeInputRefs\",\n ref: A,\n \"validate-time\": (u, re) => e.validateTime(u, ce(re, se, u)),\n \"onUpdate:hours\": (u) => pe(ce(u, se, \"hours\")),\n \"onUpdate:minutes\": (u) => p(ce(u, se, \"minutes\")),\n \"onUpdate:seconds\": (u) => Y(ce(u, se, \"seconds\")),\n onMounted: te,\n onOverlayClosed: y,\n onOverlayOpened: V,\n onAmPmChange: q[2] || (q[2] = (u) => S.$emit(\"am-pm-change\", u))\n }), Ge({ _: 2 }, [\n Ce(s(J), (u, re) => ({\n name: u,\n fn: we((G) => [\n ie(S.$slots, u, He({ ref_for: !0 }, G))\n ])\n }))\n ]), 1040, [\"validate-time\", \"onUpdate:hours\", \"onUpdate:minutes\", \"onUpdate:seconds\"])), [\n [ia, se === 0 ? !0 : L.value]\n ])), 128))\n ], 2)),\n !S.timePicker && !S.timePickerInline ? ua((w(), W(\"button\", {\n key: 2,\n ref_key: \"closeTimePickerBtn\",\n ref: M,\n type: \"button\",\n class: De({ ...O.value, \"dp--hidden-el\": z.value }),\n \"aria-label\": s(P)?.closeTimePicker,\n tabindex: \"0\",\n onKeydown: q[3] || (q[3] = (k) => s(qe)(k, () => ee(!1))),\n onClick: q[4] || (q[4] = (k) => ee(!1))\n }, [\n S.$slots[\"calendar-icon\"] ? ie(S.$slots, \"calendar-icon\", { key: 0 }) : Q(\"\", !0),\n S.$slots[\"calendar-icon\"] ? Q(\"\", !0) : (w(), Te(s(jt), { key: 1 }))\n ], 42, Br)), [\n [ia, !s(_)(S.hideNavigation, \"time\")]\n ]) : Q(\"\", !0)\n ], 2)\n ], 14, Or)) : Q(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 8, Rr));\n }\n}), Gn = (e, t, l, n) => {\n const { defaultedRange: a } = Oe(e), f = (m, z) => Array.isArray(t[m]) ? t[m][z] : t[m], i = (m) => e.enableSeconds ? Array.isArray(t.seconds) ? t.seconds[m] : t.seconds : 0, g = (m, z) => m ? z !== void 0 ? Mt(m, f(\"hours\", z), f(\"minutes\", z), i(z)) : Mt(m, t.hours, t.minutes, i()) : wn(H(), i(z)), d = (m, z) => {\n t[m] = z;\n }, P = j(() => e.modelAuto && a.value.enabled ? Array.isArray(l.value) ? l.value.length > 1 : !1 : a.value.enabled), v = (m, z) => {\n const L = Object.fromEntries(\n Object.keys(t).map((le) => le === m ? [le, z] : [le, t[le]].slice())\n );\n if (P.value && !a.value.disableTimeRangeValidation) {\n const le = ($) => l.value ? Mt(\n l.value[$],\n L.hours[$],\n L.minutes[$],\n L.seconds[$]\n ) : null, U = ($) => Dn(l.value[$], 0);\n return !($e(le(0), le(1)) && (_t(le(0), U(1)) || Ft(le(1), U(0))));\n }\n return !0;\n }, R = (m, z) => {\n v(m, z) && (d(m, z), n && n());\n }, h = (m) => {\n R(\"hours\", m);\n }, T = (m) => {\n R(\"minutes\", m);\n }, F = (m) => {\n R(\"seconds\", m);\n }, _ = (m, z, L, le) => {\n z && h(m), !z && !L && T(m), L && F(m), l.value && le(l.value);\n }, C = (m) => {\n if (m) {\n const z = Array.isArray(m), L = z ? [+m[0].hours, +m[1].hours] : +m.hours, le = z ? [+m[0].minutes, +m[1].minutes] : +m.minutes, U = z ? [+m[0].seconds, +m[1].seconds] : +m.seconds;\n d(\"hours\", L), d(\"minutes\", le), e.enableSeconds && d(\"seconds\", U);\n }\n }, M = (m, z) => {\n const L = {\n hours: Array.isArray(t.hours) ? t.hours[m] : t.hours,\n disabledArr: []\n };\n return (z || z === 0) && (L.hours = z), Array.isArray(e.disabledTimes) && (L.disabledArr = a.value.enabled && Array.isArray(e.disabledTimes[m]) ? e.disabledTimes[m] : e.disabledTimes), L;\n }, A = j(() => (m, z) => {\n if (Array.isArray(e.disabledTimes)) {\n const { disabledArr: L, hours: le } = M(m, z), U = L.filter(($) => +$.hours === le);\n return U[0]?.minutes === \"*\" ? { hours: [le], minutes: void 0, seconds: void 0 } : {\n hours: [],\n minutes: U?.map(($) => +$.minutes) ?? [],\n seconds: U?.map(($) => $.seconds ? +$.seconds : void 0) ?? []\n };\n }\n return { hours: [], minutes: [], seconds: [] };\n });\n return {\n setTime: d,\n updateHours: h,\n updateMinutes: T,\n updateSeconds: F,\n getSetDateTime: g,\n updateTimeValues: _,\n getSecondsValue: i,\n assignStartTime: C,\n validateTime: v,\n disabledTimesConfig: A\n };\n}, _r = (e, t) => {\n const l = () => {\n e.isTextInputDate && z();\n }, { modelValue: n, time: a } = na(e, t, l), { defaultedStartTime: f, defaultedRange: i, defaultedTz: g } = Oe(e), { updateTimeValues: d, getSetDateTime: P, setTime: v, assignStartTime: R, disabledTimesConfig: h, validateTime: T } = Gn(e, a, n, F);\n function F() {\n t(\"update-flow-step\");\n }\n const _ = (U) => {\n const { hours: $, minutes: ee, seconds: O } = U;\n return { hours: +$, minutes: +ee, seconds: O ? +O : 0 };\n }, C = () => {\n if (e.startTime) {\n if (Array.isArray(e.startTime)) {\n const $ = _(e.startTime[0]), ee = _(e.startTime[1]);\n return [Se(H(), $), Se(H(), ee)];\n }\n const U = _(e.startTime);\n return Se(H(), U);\n }\n return i.value.enabled ? [null, null] : null;\n }, M = () => {\n if (i.value.enabled) {\n const [U, $] = C();\n n.value = [\n Ze(P(U, 0), g.value.timezone),\n Ze(P($, 1), g.value.timezone)\n ];\n } else\n n.value = Ze(P(C()), g.value.timezone);\n }, A = (U) => Array.isArray(U) ? [Bt(H(U[0])), Bt(H(U[1]))] : [Bt(U ?? H())], m = (U, $, ee) => {\n v(\"hours\", U), v(\"minutes\", $), v(\"seconds\", e.enableSeconds ? ee : 0);\n }, z = () => {\n const [U, $] = A(n.value);\n return i.value.enabled ? m(\n [U.hours, $.hours],\n [U.minutes, $.minutes],\n [U.seconds, $.seconds]\n ) : m(U.hours, U.minutes, U.seconds);\n };\n Ue(() => {\n if (!e.shadow)\n return R(f.value), n.value ? z() : M();\n });\n const L = () => {\n Array.isArray(n.value) ? n.value = n.value.map((U, $) => U && P(U, $)) : n.value = P(n.value), t(\"time-update\");\n };\n return {\n modelValue: n,\n time: a,\n disabledTimesConfig: h,\n updateTime: (U, $ = !0, ee = !1) => {\n d(U, $, ee, L);\n },\n validateTime: T\n };\n}, Yr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"TimePickerSolo\",\n props: {\n ...dt\n },\n emits: [\n \"update:internal-model-value\",\n \"time-update\",\n \"am-pm-change\",\n \"mount\",\n \"reset-flow\",\n \"update-flow-step\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, f = Yt(), i = et(f, \"timePicker\"), g = Z(null), { time: d, modelValue: P, disabledTimesConfig: v, updateTime: R, validateTime: h } = _r(a, n);\n return Ue(() => {\n a.shadow || n(\"mount\", null);\n }), t({ getSidebarProps: () => ({\n modelValue: P,\n time: d,\n updateTime: R\n }), toggleTimePicker: (_, C = !1, M = \"\") => {\n g.value?.toggleTimePicker(_, C, M);\n } }), (_, C) => (w(), Te(ma, {\n \"multi-calendars\": 0,\n stretch: \"\",\n \"is-mobile\": _.isMobile\n }, {\n default: we(() => [\n tt(Kn, He({\n ref_key: \"tpRef\",\n ref: g\n }, _.$props, {\n hours: s(d).hours,\n minutes: s(d).minutes,\n seconds: s(d).seconds,\n \"internal-model-value\": _.internalModelValue,\n \"disabled-times-config\": s(v),\n \"validate-time\": s(h),\n \"onUpdate:hours\": C[0] || (C[0] = (M) => s(R)(M)),\n \"onUpdate:minutes\": C[1] || (C[1] = (M) => s(R)(M, !1)),\n \"onUpdate:seconds\": C[2] || (C[2] = (M) => s(R)(M, !1, !0)),\n onAmPmChange: C[3] || (C[3] = (M) => _.$emit(\"am-pm-change\", M)),\n onResetFlow: C[4] || (C[4] = (M) => _.$emit(\"reset-flow\")),\n onOverlayClosed: C[5] || (C[5] = (M) => _.$emit(\"overlay-toggle\", { open: !1, overlay: M })),\n onOverlayOpened: C[6] || (C[6] = (M) => _.$emit(\"overlay-toggle\", { open: !0, overlay: M }))\n }), Ge({ _: 2 }, [\n Ce(s(i), (M, A) => ({\n name: M,\n fn: we((m) => [\n ie(_.$slots, M, ze(Je(m)))\n ])\n }))\n ]), 1040, [\"hours\", \"minutes\", \"seconds\", \"internal-model-value\", \"disabled-times-config\", \"validate-time\"])\n ]),\n _: 3\n }, 8, [\"is-mobile\"]));\n }\n}), Ir = { class: \"dp--header-wrap\" }, Er = {\n key: 0,\n class: \"dp__month_year_wrap\"\n}, Nr = { key: 0 }, Lr = { class: \"dp__month_year_wrap\" }, Fr = [\"data-dp-element\", \"aria-label\", \"data-test-id\", \"onClick\", \"onKeydown\"], zr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"DpHeader\",\n props: {\n month: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n instance: { type: Number, default: 0 },\n years: { type: Array, default: () => [] },\n months: { type: Array, default: () => [] },\n ...dt\n },\n emits: [\"update-month-year\", \"mount\", \"reset-flow\", \"overlay-closed\", \"overlay-opened\"],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, {\n defaultedTransitions: f,\n defaultedAriaLabels: i,\n defaultedMultiCalendars: g,\n defaultedFilters: d,\n defaultedConfig: P,\n defaultedHighlight: v,\n propDates: R,\n defaultedUI: h\n } = Oe(a), { transitionName: T, showTransition: F } = aa(f), { buildMatrix: _ } = At(), { handleMonthYearChange: C, isDisabled: M, updateMonthYear: A } = or(a, n), { showLeftIcon: m, showRightIcon: z } = ga(), L = Z(!1), le = Z(!1), U = Z(!1), $ = Z([null, null, null, null]);\n Ue(() => {\n n(\"mount\");\n });\n const ee = (u) => ({\n get: () => a[u],\n set: (re) => {\n const G = u === ot.month ? ot.year : ot.month;\n n(\"update-month-year\", { [u]: re, [G]: a[G] }), u === ot.month ? y(!0) : V(!0);\n }\n }), O = j(ee(ot.month)), J = j(ee(ot.year)), ce = j(() => (u) => ({\n month: a.month,\n year: a.year,\n items: u === ot.month ? a.months : a.years,\n instance: a.instance,\n updateMonthYear: A,\n toggle: u === ot.month ? y : V\n })), pe = j(() => {\n const u = a.months.find((re) => re.value === a.month);\n return u || { text: \"\", value: 0 };\n }), p = j(() => Ht(a.months, (u) => {\n const re = a.month === u.value, G = Zt(\n u.value,\n _n(a.year, R.value.minDate),\n Yn(a.year, R.value.maxDate)\n ) || d.value.months.includes(u.value), I = Fn(v.value, u.value, a.year);\n return { active: re, disabled: G, highlighted: I };\n })), Y = j(() => Ht(a.years, (u) => {\n const re = a.year === u.value, G = Zt(\n u.value,\n Wt(R.value.minDate),\n Wt(R.value.maxDate)\n ) || d.value.years.includes(u.value), I = xa(v.value, u.value);\n return { active: re, disabled: G, highlighted: I };\n })), te = (u, re, G) => {\n G !== void 0 ? u.value = G : u.value = !u.value, u.value ? (U.value = !0, n(\"overlay-opened\", re)) : (U.value = !1, n(\"overlay-closed\", re));\n }, y = (u = !1, re) => {\n S(u), te(L, je.month, re);\n }, V = (u = !1, re) => {\n S(u), te(le, je.year, re);\n }, S = (u) => {\n u || n(\"reset-flow\");\n }, q = (u, re) => {\n a.arrowNavigation && ($.value[re] = Le(u), _($.value, \"monthYear\"));\n }, k = j(() => [\n {\n type: ot.month,\n index: 1,\n toggle: y,\n modelValue: O.value,\n updateModelValue: (u) => O.value = u,\n text: pe.value.text,\n showSelectionGrid: L.value,\n items: p.value,\n ariaLabel: i.value?.openMonthsOverlay,\n overlayLabel: i.value.monthPicker?.(!0) ?? void 0\n },\n {\n type: ot.year,\n index: 2,\n toggle: V,\n modelValue: J.value,\n updateModelValue: (u) => J.value = u,\n text: Ja(a.year, a.locale),\n showSelectionGrid: le.value,\n items: Y.value,\n ariaLabel: i.value?.openYearsOverlay,\n overlayLabel: i.value.yearPicker?.(!0) ?? void 0\n }\n ]), se = j(() => a.disableYearSelect ? [k.value[0]] : a.yearFirst ? [...k.value].reverse() : k.value);\n return t({\n toggleMonthPicker: y,\n toggleYearPicker: V,\n handleMonthYearChange: C\n }), (u, re) => (w(), W(\"div\", Ir, [\n u.$slots[\"month-year\"] ? (w(), W(\"div\", Er, [\n ie(u.$slots, \"month-year\", ze(Je({\n month: e.month,\n year: e.year,\n months: e.months,\n years: e.years,\n updateMonthYear: s(A),\n handleMonthYearChange: s(C),\n instance: e.instance,\n isDisabled: s(M)\n })))\n ])) : (w(), W(ke, { key: 1 }, [\n u.$slots[\"top-extra\"] ? (w(), W(\"div\", Nr, [\n ie(u.$slots, \"top-extra\", { value: u.internalModelValue })\n ])) : Q(\"\", !0),\n he(\"div\", Lr, [\n s(m)(s(g), e.instance) && !u.vertical ? (w(), Te(Qt, {\n key: 0,\n \"aria-label\": s(i)?.prevMonth,\n disabled: s(M)(!1),\n class: De(s(h)?.navBtnPrev),\n \"el-name\": \"action-prev\",\n onActivate: re[0] || (re[0] = (G) => s(C)(!1, !0)),\n onSetRef: re[1] || (re[1] = (G) => q(G, 0))\n }, {\n default: we(() => [\n u.$slots[\"arrow-left\"] ? ie(u.$slots, \"arrow-left\", { key: 0 }) : Q(\"\", !0),\n u.$slots[\"arrow-left\"] ? Q(\"\", !0) : (w(), Te(s(Ua), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Q(\"\", !0),\n he(\"div\", {\n class: De([\"dp__month_year_wrap\", {\n dp__year_disable_select: u.disableYearSelect\n }])\n }, [\n (w(!0), W(ke, null, Ce(se.value, (G, I) => (w(), W(ke, {\n key: G.type\n }, [\n he(\"button\", {\n ref_for: !0,\n ref: (x) => q(x, I + 1),\n type: \"button\",\n \"data-dp-element\": `overlay-${G.type}`,\n class: De([\"dp__btn dp__month_year_select\", { \"dp--hidden-el\": U.value }]),\n \"aria-label\": `${G.text}-${G.ariaLabel}`,\n \"data-test-id\": `${G.type}-toggle-overlay-${e.instance}`,\n onClick: G.toggle,\n onKeydown: (x) => s(qe)(x, () => G.toggle(), !0)\n }, [\n u.$slots[G.type] ? ie(u.$slots, G.type, {\n key: 0,\n text: G.text,\n value: a[G.type]\n }) : Q(\"\", !0),\n u.$slots[G.type] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(G.text), 1)\n ], 64))\n ], 42, Fr),\n tt(Vt, {\n name: s(T)(G.showSelectionGrid),\n css: s(F)\n }, {\n default: we(() => [\n G.showSelectionGrid ? (w(), Te(ta, {\n key: 0,\n items: G.items,\n \"arrow-navigation\": u.arrowNavigation,\n \"hide-navigation\": u.hideNavigation,\n \"is-last\": u.autoApply && !s(P).keepActionRow,\n \"skip-button-ref\": !1,\n config: u.config,\n type: G.type,\n \"header-refs\": [],\n \"esc-close\": u.escClose,\n \"menu-wrap-ref\": u.menuWrapRef,\n \"text-input\": u.textInput,\n \"aria-labels\": u.ariaLabels,\n \"overlay-label\": G.overlayLabel,\n onSelected: G.updateModelValue,\n onToggle: G.toggle\n }, Ge({\n \"button-icon\": we(() => [\n u.$slots[\"calendar-icon\"] ? ie(u.$slots, \"calendar-icon\", { key: 0 }) : Q(\"\", !0),\n u.$slots[\"calendar-icon\"] ? Q(\"\", !0) : (w(), Te(s(jt), { key: 1 }))\n ]),\n _: 2\n }, [\n u.$slots[`${G.type}-overlay-value`] ? {\n name: \"item\",\n fn: we(({ item: x }) => [\n ie(u.$slots, `${G.type}-overlay-value`, {\n text: x.text,\n value: x.value\n })\n ]),\n key: \"0\"\n } : void 0,\n u.$slots[`${G.type}-overlay`] ? {\n name: \"overlay\",\n fn: we(() => [\n ie(u.$slots, `${G.type}-overlay`, He({ ref_for: !0 }, ce.value(G.type)))\n ]),\n key: \"1\"\n } : void 0,\n u.$slots[`${G.type}-overlay-header`] ? {\n name: \"header\",\n fn: we(() => [\n ie(u.$slots, `${G.type}-overlay-header`, {\n toggle: G.toggle\n })\n ]),\n key: \"2\"\n } : void 0\n ]), 1032, [\"items\", \"arrow-navigation\", \"hide-navigation\", \"is-last\", \"config\", \"type\", \"esc-close\", \"menu-wrap-ref\", \"text-input\", \"aria-labels\", \"overlay-label\", \"onSelected\", \"onToggle\"])) : Q(\"\", !0)\n ]),\n _: 2\n }, 1032, [\"name\", \"css\"])\n ], 64))), 128))\n ], 2),\n s(m)(s(g), e.instance) && u.vertical ? (w(), Te(Qt, {\n key: 1,\n \"aria-label\": s(i)?.prevMonth,\n \"el-name\": \"action-prev\",\n disabled: s(M)(!1),\n class: De(s(h)?.navBtnPrev),\n onActivate: re[2] || (re[2] = (G) => s(C)(!1, !0))\n }, {\n default: we(() => [\n u.$slots[\"arrow-up\"] ? ie(u.$slots, \"arrow-up\", { key: 0 }) : Q(\"\", !0),\n u.$slots[\"arrow-up\"] ? Q(\"\", !0) : (w(), Te(s(Ka), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"class\"])) : Q(\"\", !0),\n s(z)(s(g), e.instance) ? (w(), Te(Qt, {\n key: 2,\n ref: \"rightIcon\",\n \"el-name\": \"action-next\",\n disabled: s(M)(!0),\n \"aria-label\": s(i)?.nextMonth,\n class: De(s(h)?.navBtnNext),\n onActivate: re[3] || (re[3] = (G) => s(C)(!0, !0)),\n onSetRef: re[4] || (re[4] = (G) => q(G, u.disableYearSelect ? 2 : 3))\n }, {\n default: we(() => [\n u.$slots[u.vertical ? \"arrow-down\" : \"arrow-right\"] ? ie(u.$slots, u.vertical ? \"arrow-down\" : \"arrow-right\", { key: 0 }) : Q(\"\", !0),\n u.$slots[u.vertical ? \"arrow-down\" : \"arrow-right\"] ? Q(\"\", !0) : (w(), Te(fa(u.vertical ? s(Ga) : s(Va)), { key: 1 }))\n ]),\n _: 3\n }, 8, [\"disabled\", \"aria-label\", \"class\"])) : Q(\"\", !0)\n ])\n ], 64))\n ]));\n }\n}), Hr = {\n class: \"dp__calendar_header\",\n role: \"row\"\n}, Wr = {\n key: 0,\n class: \"dp__calendar_header_item\",\n role: \"gridcell\"\n}, Ur = [\"aria-label\"], Vr = {\n key: 0,\n class: \"dp__calendar_item dp__week_num\",\n role: \"gridcell\"\n}, jr = { class: \"dp__cell_inner\" }, Kr = [\"id\", \"aria-selected\", \"aria-disabled\", \"aria-label\", \"tabindex\", \"data-test-id\", \"onClick\", \"onTouchend\", \"onKeydown\", \"onMouseenter\", \"onMouseleave\", \"onMousedown\"], Gr = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"DpCalendar\",\n props: {\n mappedDates: { type: Array, default: () => [] },\n instance: { type: Number, default: 0 },\n month: { type: Number, default: 0 },\n year: { type: Number, default: 0 },\n ...dt\n },\n emits: [\n \"select-date\",\n \"set-hover-date\",\n \"handle-scroll\",\n \"mount\",\n \"handle-swipe\",\n \"handle-space\",\n \"tooltip-open\",\n \"tooltip-close\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, { buildMultiLevelMatrix: f } = At(), {\n defaultedTransitions: i,\n defaultedConfig: g,\n defaultedAriaLabels: d,\n defaultedMultiCalendars: P,\n defaultedWeekNumbers: v,\n defaultedMultiDates: R,\n defaultedUI: h\n } = Oe(a), T = Z(null), F = Z({\n bottom: \"\",\n left: \"\",\n transform: \"\"\n }), _ = Z([]), C = Z(null), M = Z(!0), A = Z(\"\"), m = Z({ startX: 0, endX: 0, startY: 0, endY: 0 }), z = Z([]), L = Z({ left: \"50%\" }), le = Z(!1), U = j(() => a.calendar ? a.calendar(a.mappedDates) : a.mappedDates), $ = j(() => a.dayNames ? Array.isArray(a.dayNames) ? a.dayNames : a.dayNames(a.locale, +a.weekStart) : Tl(a.formatLocale, a.locale, +a.weekStart));\n Ue(() => {\n n(\"mount\", { cmp: \"calendar\", refs: _ }), g.value.noSwipe || C.value && (C.value.addEventListener(\"touchstart\", q, { passive: !1 }), C.value.addEventListener(\"touchend\", k, { passive: !1 }), C.value.addEventListener(\"touchmove\", se, { passive: !1 })), a.monthChangeOnScroll && C.value && C.value.addEventListener(\"wheel\", G, { passive: !1 });\n }), Ut(() => {\n g.value.noSwipe || C.value && (C.value.removeEventListener(\"touchstart\", q), C.value.removeEventListener(\"touchend\", k), C.value.removeEventListener(\"touchmove\", se)), a.monthChangeOnScroll && C.value && C.value.removeEventListener(\"wheel\", G);\n });\n const ee = (B) => B ? a.vertical ? \"vNext\" : \"next\" : a.vertical ? \"vPrevious\" : \"previous\", O = (B, be) => {\n if (a.transitions) {\n const Ae = Fe(pt(H(), a.month, a.year));\n A.value = Ee(Fe(pt(H(), B, be)), Ae) ? i.value[ee(!0)] : i.value[ee(!1)], M.value = !1, at(() => {\n M.value = !0;\n });\n }\n }, J = j(\n () => ({\n ...h.value.calendar ?? {}\n })\n ), ce = j(() => (B) => {\n const be = Pl(B);\n return {\n dp__marker_dot: be.type === \"dot\",\n dp__marker_line: be.type === \"line\"\n };\n }), pe = j(() => (B) => $e(B, T.value)), p = j(() => ({\n dp__calendar: !0,\n dp__calendar_next: P.value.count > 0 && a.instance !== 0\n })), Y = j(() => (B) => a.hideOffsetDates ? B.current : !0), te = async (B, be) => {\n const { width: Ae, height: ne } = B.getBoundingClientRect();\n T.value = be.value;\n let r = { left: `${Ae / 2}px` }, E = -50;\n if (await at(), z.value[0]) {\n const { left: K, width: oe } = z.value[0].getBoundingClientRect();\n K < 0 && (r = { left: \"0\" }, E = 0, L.value.left = `${Ae / 2}px`), window.innerWidth < K + oe && (r = { right: \"0\" }, E = 0, L.value.left = `${oe - Ae / 2}px`);\n }\n F.value = {\n bottom: `${ne}px`,\n ...r,\n transform: `translateX(${E}%)`\n };\n }, y = async (B, be, Ae) => {\n const ne = Le(_.value[be][Ae]);\n ne && (B.marker?.customPosition && B.marker?.tooltip?.length ? F.value = B.marker.customPosition(ne) : await te(ne, B), n(\"tooltip-open\", B.marker));\n }, V = async (B, be, Ae) => {\n if (le.value && R.value.enabled && R.value.dragSelect)\n return n(\"select-date\", B);\n if (n(\"set-hover-date\", B), B.marker?.tooltip?.length) {\n if (a.hideOffsetDates && !B.current) return;\n await y(B, be, Ae);\n }\n }, S = (B) => {\n T.value && (T.value = null, F.value = JSON.parse(JSON.stringify({ bottom: \"\", left: \"\", transform: \"\" })), n(\"tooltip-close\", B.marker));\n }, q = (B) => {\n m.value.startX = B.changedTouches[0].screenX, m.value.startY = B.changedTouches[0].screenY;\n }, k = (B) => {\n m.value.endX = B.changedTouches[0].screenX, m.value.endY = B.changedTouches[0].screenY, u();\n }, se = (B) => {\n a.vertical && !a.inline && B.preventDefault();\n }, u = () => {\n const B = a.vertical ? \"Y\" : \"X\";\n Math.abs(m.value[`start${B}`] - m.value[`end${B}`]) > 10 && n(\"handle-swipe\", m.value[`start${B}`] > m.value[`end${B}`] ? \"right\" : \"left\");\n }, re = (B, be, Ae) => {\n B && (Array.isArray(_.value[be]) ? _.value[be][Ae] = B : _.value[be] = [B]), a.arrowNavigation && f(_.value, \"calendar\");\n }, G = (B) => {\n a.monthChangeOnScroll && (B.preventDefault(), n(\"handle-scroll\", B));\n }, I = (B) => v.value.type === \"local\" ? pl(B.value, { weekStartsOn: +a.weekStart }) : v.value.type === \"iso\" ? gl(B.value) : typeof v.value.type == \"function\" ? v.value.type(B.value) : \"\", x = (B) => {\n const be = B[0];\n return v.value.hideOnOffsetDates ? B.some((Ae) => Ae.current) ? I(be) : \"\" : I(be);\n }, c = (B, be, Ae = !0) => {\n !Ae && _l() || (!R.value.enabled || g.value.allowPreventDefault) && (Dt(B, g.value), n(\"select-date\", be));\n }, o = (B) => {\n Dt(B, g.value);\n }, X = (B) => {\n R.value.enabled && R.value.dragSelect ? (le.value = !0, n(\"select-date\", B)) : R.value.enabled && n(\"select-date\", B);\n };\n return t({ triggerTransition: O }), (B, be) => (w(), W(\"div\", {\n class: De(p.value)\n }, [\n he(\"div\", {\n ref_key: \"calendarWrapRef\",\n ref: C,\n class: De(J.value),\n role: \"grid\"\n }, [\n he(\"div\", Hr, [\n B.weekNumbers ? (w(), W(\"div\", Wr, Ke(B.weekNumName), 1)) : Q(\"\", !0),\n (w(!0), W(ke, null, Ce($.value, (Ae, ne) => (w(), W(\"div\", {\n key: ne,\n class: \"dp__calendar_header_item\",\n role: \"gridcell\",\n \"data-test-id\": \"calendar-header\",\n \"aria-label\": s(d)?.weekDay?.(ne)\n }, [\n B.$slots[\"calendar-header\"] ? ie(B.$slots, \"calendar-header\", {\n key: 0,\n day: Ae,\n index: ne\n }) : Q(\"\", !0),\n B.$slots[\"calendar-header\"] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(Ae), 1)\n ], 64))\n ], 8, Ur))), 128))\n ]),\n be[2] || (be[2] = he(\"div\", { class: \"dp__calendar_header_separator\" }, null, -1)),\n tt(Vt, {\n name: A.value,\n css: !!B.transitions\n }, {\n default: we(() => [\n M.value ? (w(), W(\"div\", {\n key: 0,\n class: \"dp__calendar\",\n role: \"rowgroup\",\n onMouseleave: be[1] || (be[1] = (Ae) => le.value = !1)\n }, [\n (w(!0), W(ke, null, Ce(U.value, (Ae, ne) => (w(), W(\"div\", {\n key: ne,\n class: \"dp__calendar_row\",\n role: \"row\"\n }, [\n B.weekNumbers ? (w(), W(\"div\", Vr, [\n he(\"div\", jr, Ke(x(Ae.days)), 1)\n ])) : Q(\"\", !0),\n (w(!0), W(ke, null, Ce(Ae.days, (r, E) => (w(), W(\"div\", {\n id: s(Ha)(r.value),\n ref_for: !0,\n ref: (K) => re(K, ne, E),\n key: E + ne,\n role: \"gridcell\",\n class: \"dp__calendar_item\",\n \"aria-selected\": (r.classData.dp__active_date || r.classData.dp__range_start || r.classData.dp__range_end) ?? void 0,\n \"aria-disabled\": r.classData.dp__cell_disabled || void 0,\n \"aria-label\": s(d)?.day?.(r),\n tabindex: !r.current && B.hideOffsetDates ? void 0 : 0,\n \"data-test-id\": s(Ha)(r.value),\n onClick: Xt((K) => c(K, r), [\"prevent\"]),\n onTouchend: (K) => c(K, r, !1),\n onKeydown: (K) => s(qe)(K, () => B.$emit(\"select-date\", r)),\n onMouseenter: (K) => V(r, ne, E),\n onMouseleave: (K) => S(r),\n onMousedown: (K) => X(r),\n onMouseup: be[0] || (be[0] = (K) => le.value = !1)\n }, [\n he(\"div\", {\n class: De([\"dp__cell_inner\", r.classData])\n }, [\n B.$slots.day && Y.value(r) ? ie(B.$slots, \"day\", {\n key: 0,\n day: +r.text,\n date: r.value\n }) : Q(\"\", !0),\n B.$slots.day ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n gt(Ke(r.text), 1)\n ], 64)),\n r.marker && Y.value(r) ? (w(), W(ke, { key: 2 }, [\n B.$slots.marker ? ie(B.$slots, \"marker\", {\n key: 0,\n marker: r.marker,\n day: +r.text,\n date: r.value\n }) : (w(), W(\"div\", {\n key: 1,\n class: De(ce.value(r.marker)),\n style: lt(r.marker.color ? { backgroundColor: r.marker.color } : {})\n }, null, 6))\n ], 64)) : Q(\"\", !0),\n pe.value(r.value) ? (w(), W(\"div\", {\n key: 3,\n ref_for: !0,\n ref_key: \"activeTooltip\",\n ref: z,\n class: \"dp__marker_tooltip\",\n style: lt(F.value)\n }, [\n r.marker?.tooltip ? (w(), W(\"div\", {\n key: 0,\n class: \"dp__tooltip_content\",\n onClick: o\n }, [\n (w(!0), W(ke, null, Ce(r.marker.tooltip, (K, oe) => (w(), W(\"div\", {\n key: oe,\n class: \"dp__tooltip_text\"\n }, [\n B.$slots[\"marker-tooltip\"] ? ie(B.$slots, \"marker-tooltip\", {\n key: 0,\n tooltip: K,\n day: r.value\n }) : Q(\"\", !0),\n B.$slots[\"marker-tooltip\"] ? Q(\"\", !0) : (w(), W(ke, { key: 1 }, [\n he(\"div\", {\n class: \"dp__tooltip_mark\",\n style: lt(K.color ? { backgroundColor: K.color } : {})\n }, null, 4),\n he(\"div\", null, Ke(K.text), 1)\n ], 64))\n ]))), 128)),\n he(\"div\", {\n class: \"dp__arrow_bottom_tp\",\n style: lt(L.value)\n }, null, 4)\n ])) : Q(\"\", !0)\n ], 4)) : Q(\"\", !0)\n ], 2)\n ], 40, Kr))), 128))\n ]))), 128))\n ], 32)) : Q(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ], 2)\n ], 2));\n }\n}), yn = (e) => Array.isArray(e), Qr = (e, t, l, n) => {\n const a = Z([]), f = Z(/* @__PURE__ */ new Date()), i = Z(), g = () => k(e.isTextInputDate), { modelValue: d, calendars: P, time: v, today: R } = na(e, t, g), {\n defaultedMultiCalendars: h,\n defaultedStartTime: T,\n defaultedRange: F,\n defaultedConfig: _,\n defaultedTz: C,\n propDates: M,\n defaultedMultiDates: A\n } = Oe(e), { validateMonthYearInRange: m, isDisabled: z, isDateRangeAllowed: L, checkMinMaxRange: le } = Tt(e), { updateTimeValues: U, getSetDateTime: $, setTime: ee, assignStartTime: O, validateTime: J, disabledTimesConfig: ce } = Gn(e, v, d, n), pe = j(\n () => (b) => P.value[b] ? P.value[b].month : 0\n ), p = j(\n () => (b) => P.value[b] ? P.value[b].year : 0\n ), Y = (b) => !_.value.keepViewOnOffsetClick || b ? !0 : !i.value, te = (b, ae, ve, N = !1) => {\n Y(N) && (P.value[b] || (P.value[b] = { month: 0, year: 0 }), P.value[b].month = cn(ae) ? P.value[b]?.month : ae, P.value[b].year = cn(ve) ? P.value[b]?.year : ve);\n }, y = () => {\n e.autoApply && t(\"select-date\");\n }, V = () => {\n T.value && O(T.value);\n };\n Ue(() => {\n e.shadow || (d.value || (be(), V()), k(!0), e.focusStartDate && e.startDate && be());\n });\n const S = j(() => e.flow?.length && !e.partialFlow ? e.flowStep === e.flow.length : !0), q = () => {\n e.autoApply && S.value && t(\"auto-apply\", e.partialFlow ? e.flowStep !== e.flow.length : !1);\n }, k = (b = !1) => {\n if (d.value)\n return Array.isArray(d.value) ? (a.value = d.value, c(b)) : re(d.value, b);\n if (h.value.count && b && !e.startDate)\n return u(H(), b);\n }, se = () => Array.isArray(d.value) && F.value.enabled ? Me(d.value[0]) === Me(d.value[1] ?? d.value[0]) : !1, u = (b = /* @__PURE__ */ new Date(), ae = !1) => {\n if ((!h.value.count || !h.value.static || ae) && te(0, Me(b), ye(b)), h.value.count && (!d.value || se() || !h.value.solo) && (!h.value.solo || ae))\n for (let ve = 1; ve < h.value.count; ve++) {\n const N = Se(H(), { month: pe.value(ve - 1), year: p.value(ve - 1) }), ue = Tn(N, { months: 1 });\n P.value[ve] = { month: Me(ue), year: ye(ue) };\n }\n }, re = (b, ae) => {\n u(b), ee(\"hours\", yt(b)), ee(\"minutes\", $t(b)), ee(\"seconds\", zt(b)), h.value.count && ae && B();\n }, G = (b) => {\n if (h.value.count) {\n if (h.value.solo) return 0;\n const ae = Me(b[0]), ve = Me(b[1]);\n return Math.abs(ve - ae) < h.value.count ? 0 : 1;\n }\n return 1;\n }, I = (b, ae) => {\n b[1] && F.value.showLastInRange ? u(b[G(b)], ae) : u(b[0], ae);\n const ve = (N, ue) => [\n N(b[0]),\n b[1] ? N(b[1]) : v[ue][1]\n ];\n ee(\"hours\", ve(yt, \"hours\")), ee(\"minutes\", ve($t, \"minutes\")), ee(\"seconds\", ve(zt, \"seconds\"));\n }, x = (b, ae) => {\n if ((F.value.enabled || e.weekPicker) && !A.value.enabled)\n return I(b, ae);\n if (A.value.enabled && ae) {\n const ve = b[b.length - 1];\n return re(ve, ae);\n }\n }, c = (b) => {\n const ae = d.value;\n x(ae, b), h.value.count && h.value.solo && B();\n }, o = (b, ae) => {\n const ve = Se(H(), { month: pe.value(ae), year: p.value(ae) }), N = b < 0 ? Ct(ve, 1) : Jt(ve, 1);\n m(Me(N), ye(N), b < 0, e.preventMinMaxNavigation) && (te(ae, Me(N), ye(N)), t(\"update-month-year\", { instance: ae, month: Me(N), year: ye(N) }), h.value.count && !h.value.solo && X(ae), l());\n }, X = (b) => {\n for (let ae = b - 1; ae >= 0; ae--) {\n const ve = Jt(Se(H(), { month: pe.value(ae + 1), year: p.value(ae + 1) }), 1);\n te(ae, Me(ve), ye(ve));\n }\n for (let ae = b + 1; ae <= h.value.count - 1; ae++) {\n const ve = Ct(Se(H(), { month: pe.value(ae - 1), year: p.value(ae - 1) }), 1);\n te(ae, Me(ve), ye(ve));\n }\n }, B = () => {\n if (Array.isArray(d.value) && d.value.length === 2) {\n const b = H(\n H(d.value[1] ? d.value[1] : Ct(d.value[0], 1))\n ), [ae, ve] = [Me(d.value[0]), ye(d.value[0])], [N, ue] = [Me(d.value[1]), ye(d.value[1])];\n (ae !== N || ae === N && ve !== ue) && h.value.solo && te(1, Me(b), ye(b));\n } else d.value && !Array.isArray(d.value) && (te(0, Me(d.value), ye(d.value)), u(H()));\n }, be = () => {\n e.startDate && (te(0, Me(H(e.startDate)), ye(H(e.startDate))), h.value.count && X(0));\n }, Ae = (b, ae) => {\n if (e.monthChangeOnScroll) {\n const ve = (/* @__PURE__ */ new Date()).getTime() - f.value.getTime(), N = Math.abs(b.deltaY);\n let ue = 500;\n N > 1 && (ue = 100), N > 100 && (ue = 0), ve > ue && (f.value = /* @__PURE__ */ new Date(), o(e.monthChangeOnScroll !== \"inverse\" ? -b.deltaY : b.deltaY, ae));\n }\n }, ne = (b, ae, ve = !1) => {\n e.monthChangeOnArrows && e.vertical === ve && r(b, ae);\n }, r = (b, ae) => {\n o(b === \"right\" ? -1 : 1, ae);\n }, E = (b) => {\n if (M.value.markers)\n return ca(b.value, M.value.markers);\n }, K = (b, ae) => {\n switch (e.sixWeeks === !0 ? \"append\" : e.sixWeeks) {\n case \"prepend\":\n return [!0, !1];\n case \"center\":\n return [b == 0, !0];\n case \"fair\":\n return [b == 0 || ae > b, !0];\n case \"append\":\n return [!1, !1];\n default:\n return [!1, !1];\n }\n }, oe = (b, ae, ve, N) => {\n if (e.sixWeeks && b.length < 6) {\n const ue = 6 - b.length, me = (ae.getDay() + 7 - N) % 7, ct = 6 - (ve.getDay() + 7 - N) % 7, [Pt, $a] = K(me, ct);\n for (let Rt = 1; Rt <= ue; Rt++)\n if ($a ? !!(Rt % 2) == Pt : Pt) {\n const ra = b[0].days[0], Aa = ge(kt(ra.value, -7), Me(ae));\n b.unshift({ days: Aa });\n } else {\n const ra = b[b.length - 1], Aa = ra.days[ra.days.length - 1], Xn = ge(kt(Aa.value, 1), Me(ae));\n b.push({ days: Xn });\n }\n }\n return b;\n }, ge = (b, ae) => {\n const ve = H(b), N = [];\n for (let ue = 0; ue < 7; ue++) {\n const me = kt(ve, ue), vt = Me(me) !== ae;\n N.push({\n text: e.hideOffsetDates && vt ? \"\" : me.getDate(),\n value: me,\n current: !vt,\n classData: {}\n });\n }\n return N;\n }, _e = (b, ae) => {\n const ve = [], N = new Date(ae, b), ue = new Date(ae, b + 1, 0), me = e.weekStart, vt = Wa(N, { weekStartsOn: me }), ct = (Pt) => {\n const $a = ge(Pt, b);\n if (ve.push({ days: $a }), !ve[ve.length - 1].days.some(\n (Rt) => $e(Fe(Rt.value), Fe(ue))\n )) {\n const Rt = kt(Pt, 7);\n ct(Rt);\n }\n };\n return ct(vt), oe(ve, N, ue, me);\n }, Ye = (b) => {\n const ae = Mt(H(b.value), v.hours, v.minutes, xe());\n t(\"date-update\", ae), A.value.enabled ? en(ae, d, A.value.limit) : d.value = ae, n(), at().then(() => {\n q();\n });\n }, nt = (b) => F.value.noDisabledRange ? In(a.value[0], b).some((ve) => z(ve)) : !1, St = () => {\n a.value = d.value ? d.value.slice() : [], a.value.length === 2 && !(F.value.fixedStart || F.value.fixedEnd) && (a.value = []);\n }, D = (b, ae) => {\n const ve = [\n H(b.value),\n kt(H(b.value), +F.value.autoRange)\n ];\n L(ve) ? (ae && de(b.value), a.value = ve) : t(\"invalid-date\", b.value);\n }, de = (b) => {\n const ae = Me(H(b)), ve = ye(H(b));\n if (te(0, ae, ve), h.value.count > 0)\n for (let N = 1; N < h.value.count; N++) {\n const ue = El(\n Se(H(b), { year: p.value(N - 1), month: pe.value(N - 1) })\n );\n te(N, ue.month, ue.year);\n }\n }, fe = (b) => {\n if (nt(b.value) || !le(b.value, d.value, F.value.fixedStart ? 0 : 1))\n return t(\"invalid-date\", b.value);\n a.value = Vn(H(b.value), d, t, F);\n }, ht = (b, ae) => {\n if (St(), F.value.autoRange) return D(b, ae);\n if (F.value.fixedStart || F.value.fixedEnd) return fe(b);\n a.value[0] ? le(H(b.value), d.value) && !nt(b.value) ? Be(H(b.value), H(a.value[0])) ? (a.value.unshift(H(b.value)), t(\"range-end\", a.value[0])) : (a.value[1] = H(b.value), t(\"range-end\", a.value[1])) : (e.autoApply && t(\"auto-apply-invalid\", b.value), t(\"invalid-date\", b.value)) : (a.value[0] = H(b.value), t(\"range-start\", a.value[0]));\n }, xe = (b = !0) => e.enableSeconds ? Array.isArray(v.seconds) ? b ? v.seconds[0] : v.seconds[1] : v.seconds : 0, Xe = (b) => {\n a.value[b] = Mt(\n a.value[b],\n v.hours[b],\n v.minutes[b],\n xe(b !== 1)\n );\n }, ya = () => {\n a.value[0] && a.value[1] && +a.value?.[0] > +a.value?.[1] && (a.value.reverse(), t(\"range-start\", a.value[0]), t(\"range-end\", a.value[1]));\n }, ha = () => {\n a.value.length && (a.value[0] && !a.value[1] ? Xe(0) : (Xe(0), Xe(1), n()), ya(), d.value = a.value.slice(), pa(a.value, t, e.autoApply, e.modelAuto));\n }, la = (b, ae = !1) => {\n if (z(b.value) || !b.current && e.hideOffsetDates) return t(\"invalid-date\", b.value);\n if (i.value = JSON.parse(JSON.stringify(b)), !F.value.enabled) return Ye(b);\n yn(v.hours) && yn(v.minutes) && !A.value.enabled && (ht(b, ae), ha());\n }, ba = (b, ae) => {\n te(b, ae.month, ae.year, !0), h.value.count && !h.value.solo && X(b), t(\"update-month-year\", { instance: b, month: ae.month, year: ae.year }), l(h.value.solo ? b : void 0);\n const ve = e.flow?.length ? e.flow[e.flowStep] : void 0;\n !ae.fromNav && (ve === je.month || ve === je.year) && n();\n }, ka = (b, ae) => {\n Un({\n value: b,\n modelValue: d,\n range: F.value.enabled,\n timezone: ae ? void 0 : C.value.timezone\n }), y(), e.multiCalendars && at().then(() => k(!0));\n }, wa = () => {\n const b = Qa(H(), C.value);\n !F.value.enabled && !A.value.enabled ? d.value = b : d.value && Array.isArray(d.value) && d.value[0] ? A.value.enabled ? d.value = [...d.value, b] : d.value = Be(b, d.value[0]) ? [b, d.value[0]] : [d.value[0], b] : d.value = [b], y();\n }, Da = () => {\n if (Array.isArray(d.value))\n if (A.value.enabled) {\n const b = Ma();\n d.value[d.value.length - 1] = $(b);\n } else\n d.value = d.value.map((b, ae) => b && $(b, ae));\n else\n d.value = $(d.value);\n t(\"time-update\");\n }, Ma = () => Array.isArray(d.value) && d.value.length ? d.value[d.value.length - 1] : null;\n return {\n calendars: P,\n modelValue: d,\n month: pe,\n year: p,\n time: v,\n disabledTimesConfig: ce,\n today: R,\n validateTime: J,\n getCalendarDays: _e,\n getMarker: E,\n handleScroll: Ae,\n handleSwipe: r,\n handleArrow: ne,\n selectDate: la,\n updateMonthYear: ba,\n presetDate: ka,\n selectCurrentDate: wa,\n updateTime: (b, ae = !0, ve = !1) => {\n U(b, ae, ve, Da);\n },\n assignMonthAndYear: u,\n setStartTime: V\n };\n}, qr = { key: 0 }, Xr = /* @__PURE__ */ We({\n __name: \"DatePicker\",\n props: {\n ...dt\n },\n emits: [\n \"tooltip-open\",\n \"tooltip-close\",\n \"mount\",\n \"update:internal-model-value\",\n \"update-flow-step\",\n \"reset-flow\",\n \"auto-apply\",\n \"focus-menu\",\n \"select-date\",\n \"range-start\",\n \"range-end\",\n \"invalid-fixed-range\",\n \"time-update\",\n \"am-pm-change\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"recalculate-position\",\n \"update-month-year\",\n \"auto-apply-invalid\",\n \"date-update\",\n \"invalid-date\",\n \"overlay-toggle\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, {\n calendars: f,\n month: i,\n year: g,\n modelValue: d,\n time: P,\n disabledTimesConfig: v,\n today: R,\n validateTime: h,\n getCalendarDays: T,\n getMarker: F,\n handleArrow: _,\n handleScroll: C,\n handleSwipe: M,\n selectDate: A,\n updateMonthYear: m,\n presetDate: z,\n selectCurrentDate: L,\n updateTime: le,\n assignMonthAndYear: U,\n setStartTime: $\n } = Qr(a, n, se, u), ee = Yt(), { setHoverDate: O, getDayClassData: J, clearHoverDate: ce } = mo(d, a), { defaultedMultiCalendars: pe } = Oe(a), p = Z([]), Y = Z([]), te = Z(null), y = et(ee, \"calendar\"), V = et(ee, \"monthYear\"), S = et(ee, \"timePicker\"), q = (ne) => {\n a.shadow || n(\"mount\", ne);\n };\n rt(\n f,\n () => {\n a.shadow || setTimeout(() => {\n n(\"recalculate-position\");\n }, 0);\n },\n { deep: !0 }\n ), rt(\n pe,\n (ne, r) => {\n ne.count - r.count > 0 && U();\n },\n { deep: !0 }\n );\n const k = j(() => (ne) => T(i.value(ne), g.value(ne)).map((r) => ({\n ...r,\n days: r.days.map((E) => (E.marker = F(E), E.classData = J(E), E))\n })));\n function se(ne) {\n ne || ne === 0 ? Y.value[ne]?.triggerTransition(i.value(ne), g.value(ne)) : Y.value.forEach((r, E) => r.triggerTransition(i.value(E), g.value(E)));\n }\n function u() {\n n(\"update-flow-step\");\n }\n const re = (ne, r = !1) => {\n A(ne, r), a.spaceConfirm && n(\"select-date\");\n }, G = (ne, r, E = 0) => {\n p.value[E]?.toggleMonthPicker(ne, r);\n }, I = (ne, r, E = 0) => {\n p.value[E]?.toggleYearPicker(ne, r);\n }, x = (ne, r, E) => {\n te.value?.toggleTimePicker(ne, r, E);\n }, c = (ne, r) => {\n if (!a.range) {\n const E = d.value ? d.value : R, K = r ? new Date(r) : E, oe = ne ? Wa(K, { weekStartsOn: 1 }) : kn(K, { weekStartsOn: 1 });\n A({\n value: oe,\n current: Me(K) === i.value(0),\n text: \"\",\n classData: {}\n }), document.getElementById(Ha(oe))?.focus();\n }\n }, o = (ne) => {\n p.value[0]?.handleMonthYearChange(ne, !0);\n }, X = (ne) => {\n m(0, { month: i.value(0), year: g.value(0) + (ne ? 1 : -1), fromNav: !0 });\n }, B = (ne, r) => {\n ne === je.time && n(`time-picker-${r ? \"open\" : \"close\"}`), n(\"overlay-toggle\", { open: r, overlay: ne });\n }, be = (ne) => {\n n(\"overlay-toggle\", { open: !1, overlay: ne }), n(\"focus-menu\");\n };\n return t({\n clearHoverDate: ce,\n presetDate: z,\n selectCurrentDate: L,\n toggleMonthPicker: G,\n toggleYearPicker: I,\n toggleTimePicker: x,\n handleArrow: _,\n updateMonthYear: m,\n getSidebarProps: () => ({\n modelValue: d,\n month: i,\n year: g,\n time: P,\n updateTime: le,\n updateMonthYear: m,\n selectDate: A,\n presetDate: z\n }),\n changeMonth: o,\n changeYear: X,\n selectWeekDate: c,\n setStartTime: $\n }), (ne, r) => (w(), W(ke, null, [\n tt(ma, {\n \"multi-calendars\": s(pe).count,\n collapse: ne.collapse,\n \"is-mobile\": ne.isMobile\n }, {\n default: we(({ instance: E, index: K }) => [\n ne.disableMonthYearSelect ? Q(\"\", !0) : (w(), Te(zr, He({\n key: 0,\n ref: (oe) => {\n oe && (p.value[K] = oe);\n },\n months: s(Pn)(ne.formatLocale, ne.locale, ne.monthNameFormat),\n years: s(qa)(ne.yearRange, ne.locale, ne.reverseYears),\n month: s(i)(E),\n year: s(g)(E),\n instance: E\n }, ne.$props, {\n onMount: r[0] || (r[0] = (oe) => q(s(Ot).header)),\n onResetFlow: r[1] || (r[1] = (oe) => ne.$emit(\"reset-flow\")),\n onUpdateMonthYear: (oe) => s(m)(E, oe),\n onOverlayClosed: be,\n onOverlayOpened: r[2] || (r[2] = (oe) => ne.$emit(\"overlay-toggle\", { open: !0, overlay: oe }))\n }), Ge({ _: 2 }, [\n Ce(s(V), (oe, ge) => ({\n name: oe,\n fn: we((_e) => [\n ie(ne.$slots, oe, ze(Je(_e)))\n ])\n }))\n ]), 1040, [\"months\", \"years\", \"month\", \"year\", \"instance\", \"onUpdateMonthYear\"])),\n tt(Gr, He({\n ref: (oe) => {\n oe && (Y.value[K] = oe);\n },\n \"mapped-dates\": k.value(E),\n month: s(i)(E),\n year: s(g)(E),\n instance: E\n }, ne.$props, {\n onSelectDate: (oe) => s(A)(oe, E !== 1),\n onHandleSpace: (oe) => re(oe, E !== 1),\n onSetHoverDate: r[3] || (r[3] = (oe) => s(O)(oe)),\n onHandleScroll: (oe) => s(C)(oe, E),\n onHandleSwipe: (oe) => s(M)(oe, E),\n onMount: r[4] || (r[4] = (oe) => q(s(Ot).calendar)),\n onResetFlow: r[5] || (r[5] = (oe) => ne.$emit(\"reset-flow\")),\n onTooltipOpen: r[6] || (r[6] = (oe) => ne.$emit(\"tooltip-open\", oe)),\n onTooltipClose: r[7] || (r[7] = (oe) => ne.$emit(\"tooltip-close\", oe))\n }), Ge({ _: 2 }, [\n Ce(s(y), (oe, ge) => ({\n name: oe,\n fn: we((_e) => [\n ie(ne.$slots, oe, ze(Je({ ..._e })))\n ])\n }))\n ]), 1040, [\"mapped-dates\", \"month\", \"year\", \"instance\", \"onSelectDate\", \"onHandleSpace\", \"onHandleScroll\", \"onHandleSwipe\"])\n ]),\n _: 3\n }, 8, [\"multi-calendars\", \"collapse\", \"is-mobile\"]),\n ne.enableTimePicker ? (w(), W(\"div\", qr, [\n ne.$slots[\"time-picker\"] ? ie(ne.$slots, \"time-picker\", ze(He({ key: 0 }, { time: s(P), updateTime: s(le) }))) : (w(), Te(Kn, He({\n key: 1,\n ref_key: \"timePickerRef\",\n ref: te\n }, ne.$props, {\n hours: s(P).hours,\n minutes: s(P).minutes,\n seconds: s(P).seconds,\n \"internal-model-value\": ne.internalModelValue,\n \"disabled-times-config\": s(v),\n \"validate-time\": s(h),\n onMount: r[8] || (r[8] = (E) => q(s(Ot).timePicker)),\n \"onUpdate:hours\": r[9] || (r[9] = (E) => s(le)(E)),\n \"onUpdate:minutes\": r[10] || (r[10] = (E) => s(le)(E, !1)),\n \"onUpdate:seconds\": r[11] || (r[11] = (E) => s(le)(E, !1, !0)),\n onResetFlow: r[12] || (r[12] = (E) => ne.$emit(\"reset-flow\")),\n onOverlayClosed: r[13] || (r[13] = (E) => B(E, !1)),\n onOverlayOpened: r[14] || (r[14] = (E) => B(E, !0)),\n onAmPmChange: r[15] || (r[15] = (E) => ne.$emit(\"am-pm-change\", E))\n }), Ge({ _: 2 }, [\n Ce(s(S), (E, K) => ({\n name: E,\n fn: we((oe) => [\n ie(ne.$slots, E, ze(Je(oe)))\n ])\n }))\n ]), 1040, [\"hours\", \"minutes\", \"seconds\", \"internal-model-value\", \"disabled-times-config\", \"validate-time\"]))\n ])) : Q(\"\", !0)\n ], 64));\n }\n}), Jr = (e, t) => {\n const l = Z(), {\n defaultedMultiCalendars: n,\n defaultedConfig: a,\n defaultedHighlight: f,\n defaultedRange: i,\n propDates: g,\n defaultedFilters: d,\n defaultedMultiDates: P\n } = Oe(e), { modelValue: v, year: R, month: h, calendars: T } = na(e, t), { isDisabled: F } = Tt(e), { selectYear: _, groupedYears: C, showYearPicker: M, isDisabled: A, toggleYearPicker: m, handleYearSelect: z, handleYear: L } = jn({\n modelValue: v,\n multiCalendars: n,\n range: i,\n highlight: f,\n calendars: T,\n propDates: g,\n month: h,\n year: R,\n filters: d,\n props: e,\n emit: t\n }), le = (y, V) => [y, V].map((S) => ft(S, \"MMMM\", { locale: e.formatLocale })).join(\"-\"), U = j(() => (y) => v.value ? Array.isArray(v.value) ? v.value.some((V) => rn(y, V)) : rn(v.value, y) : !1), $ = (y) => {\n if (i.value.enabled) {\n if (Array.isArray(v.value)) {\n const V = $e(y, v.value[0]) || $e(y, v.value[1]);\n return xt(v.value, l.value, y) && !V;\n }\n return !1;\n }\n return !1;\n }, ee = (y, V) => y.quarter === sn(V) && y.year === ye(V), O = (y) => typeof f.value == \"function\" ? f.value({ quarter: sn(y), year: ye(y) }) : !!f.value.quarters.find((V) => ee(V, y)), J = j(() => (y) => {\n const V = Se(/* @__PURE__ */ new Date(), { year: R.value(y) });\n return yl({\n start: Gt(V),\n end: An(V)\n }).map((S) => {\n const q = hl(S), k = on(S), se = F(S), u = $(q), re = O(q);\n return {\n text: le(q, k),\n value: q,\n active: U.value(q),\n highlighted: re,\n disabled: se,\n isBetween: u\n };\n });\n }), ce = (y) => {\n en(y, v, P.value.limit), t(\"auto-apply\", !0);\n }, pe = (y) => {\n v.value = tn(v, y, t), pa(v.value, t, e.autoApply, e.modelAuto);\n }, p = (y) => {\n v.value = y, t(\"auto-apply\");\n };\n return {\n defaultedConfig: a,\n defaultedMultiCalendars: n,\n groupedYears: C,\n year: R,\n isDisabled: A,\n quarters: J,\n showYearPicker: M,\n modelValue: v,\n setHoverDate: (y) => {\n l.value = y;\n },\n selectYear: _,\n selectQuarter: (y, V, S) => {\n if (!S)\n return T.value[V].month = Me(on(y)), P.value.enabled ? ce(y) : i.value.enabled ? pe(y) : p(y);\n },\n toggleYearPicker: m,\n handleYearSelect: z,\n handleYear: L\n };\n}, Zr = { class: \"dp--quarter-items\" }, xr = [\"data-test-id\", \"disabled\", \"onClick\", \"onMouseover\"], eo = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"QuarterPicker\",\n props: {\n ...dt\n },\n emits: [\n \"update:internal-model-value\",\n \"reset-flow\",\n \"overlay-closed\",\n \"auto-apply\",\n \"range-start\",\n \"range-end\",\n \"overlay-toggle\",\n \"update-month-year\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, f = Yt(), i = et(f, \"yearMode\"), {\n defaultedMultiCalendars: g,\n defaultedConfig: d,\n groupedYears: P,\n year: v,\n isDisabled: R,\n quarters: h,\n modelValue: T,\n showYearPicker: F,\n setHoverDate: _,\n selectQuarter: C,\n toggleYearPicker: M,\n handleYearSelect: A,\n handleYear: m\n } = Jr(a, n);\n return t({ getSidebarProps: () => ({\n modelValue: T,\n year: v,\n selectQuarter: C,\n handleYearSelect: A,\n handleYear: m\n }) }), (L, le) => (w(), Te(ma, {\n \"multi-calendars\": s(g).count,\n collapse: L.collapse,\n stretch: \"\",\n \"is-mobile\": L.isMobile\n }, {\n default: we(({ instance: U }) => [\n he(\"div\", {\n class: \"dp-quarter-picker-wrap\",\n style: lt({ minHeight: `${s(d).modeHeight}px` })\n }, [\n L.$slots[\"top-extra\"] ? ie(L.$slots, \"top-extra\", {\n key: 0,\n value: L.internalModelValue\n }) : Q(\"\", !0),\n he(\"div\", null, [\n tt(Wn, He(L.$props, {\n items: s(P)(U),\n instance: U,\n \"show-year-picker\": s(F)[U],\n year: s(v)(U),\n \"is-disabled\": ($) => s(R)(U, $),\n onHandleYear: ($) => s(m)(U, $),\n onYearSelect: ($) => s(A)($, U),\n onToggleYearPicker: ($) => s(M)(U, $?.flow, $?.show)\n }), Ge({ _: 2 }, [\n Ce(s(i), ($, ee) => ({\n name: $,\n fn: we((O) => [\n ie(L.$slots, $, ze(Je(O)))\n ])\n }))\n ]), 1040, [\"items\", \"instance\", \"show-year-picker\", \"year\", \"is-disabled\", \"onHandleYear\", \"onYearSelect\", \"onToggleYearPicker\"])\n ]),\n he(\"div\", Zr, [\n (w(!0), W(ke, null, Ce(s(h)(U), ($, ee) => (w(), W(\"div\", { key: ee }, [\n he(\"button\", {\n type: \"button\",\n class: De([\"dp--qr-btn\", {\n \"dp--qr-btn-active\": $.active,\n \"dp--qr-btn-between\": $.isBetween,\n \"dp--qr-btn-disabled\": $.disabled,\n \"dp--highlighted\": $.highlighted\n }]),\n \"data-test-id\": $.value,\n disabled: $.disabled,\n onClick: (O) => s(C)($.value, U, $.disabled),\n onMouseover: (O) => s(_)($.value)\n }, [\n L.$slots.quarter ? ie(L.$slots, \"quarter\", {\n key: 0,\n value: $.value,\n text: $.text\n }) : (w(), W(ke, { key: 1 }, [\n gt(Ke($.text), 1)\n ], 64))\n ], 42, xr)\n ]))), 128))\n ])\n ], 4)\n ]),\n _: 3\n }, 8, [\"multi-calendars\", \"collapse\", \"is-mobile\"]));\n }\n}), Qn = (e, t) => {\n const l = Z(0);\n Ue(() => {\n n(), window.addEventListener(\"resize\", n, { passive: !0 });\n }), Ut(() => {\n window.removeEventListener(\"resize\", n);\n });\n const n = () => {\n l.value = window.document.documentElement.clientWidth;\n };\n return {\n isMobile: j(\n () => l.value <= e.value.mobileBreakpoint && !t ? !0 : void 0\n )\n };\n}, to = [\"id\", \"tabindex\", \"role\", \"aria-label\"], ao = {\n key: 0,\n class: \"dp--menu-load-container\"\n}, no = {\n key: 1,\n class: \"dp--menu-header\"\n}, lo = [\"data-dp-mobile\"], ro = {\n key: 0,\n class: \"dp__sidebar_left\"\n}, oo = [\"data-dp-mobile\"], so = [\"data-test-id\", \"data-dp-mobile\", \"onClick\", \"onKeydown\"], uo = {\n key: 2,\n class: \"dp__sidebar_right\"\n}, io = {\n key: 3,\n class: \"dp__action_extra\"\n}, hn = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"DatepickerMenu\",\n props: {\n ...va,\n shadow: { type: Boolean, default: !1 },\n openOnTop: { type: Boolean, default: !1 },\n internalModelValue: { type: [Date, Array], default: null },\n noOverlayFocus: { type: Boolean, default: !1 },\n collapse: { type: Boolean, default: !1 },\n getInputRect: { type: Function, default: () => ({}) },\n isTextInputDate: { type: Boolean, default: !1 }\n },\n emits: [\n \"close-picker\",\n \"select-date\",\n \"auto-apply\",\n \"time-update\",\n \"flow-step\",\n \"update-month-year\",\n \"invalid-select\",\n \"update:internal-model-value\",\n \"recalculate-position\",\n \"invalid-fixed-range\",\n \"tooltip-open\",\n \"tooltip-close\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"am-pm-change\",\n \"range-start\",\n \"range-end\",\n \"auto-apply-invalid\",\n \"date-update\",\n \"invalid-date\",\n \"overlay-toggle\",\n \"menu-blur\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, f = Z(null), i = j(() => {\n const { openOnTop: D, ...de } = a;\n return {\n ...de,\n isMobile: C.value,\n flowStep: pe.value,\n menuWrapRef: f.value\n };\n }), { setMenuFocused: g, setShiftKey: d, control: P } = Hn(), v = Yt(), { defaultedTextInput: R, defaultedInline: h, defaultedConfig: T, defaultedUI: F, handleEventPropagation: _ } = Oe(a), { isMobile: C } = Qn(T, a.shadow), M = Z(null), A = Z(0), m = Z(null), z = Z(!1), L = Z(null), le = Z(!1), U = (D) => {\n le.value = !0, T.value.allowPreventDefault && D.preventDefault(), Dt(D, T.value, !0);\n };\n Ue(() => {\n if (!a.shadow) {\n z.value = !0, $(), window.addEventListener(\"resize\", $);\n const D = Le(f);\n D && !R.value.enabled && !h.value.enabled && (g(!0), q()), D && (D.addEventListener(\"pointerdown\", U), D.addEventListener(\"mousedown\", U));\n }\n document.addEventListener(\"mousedown\", nt);\n }), Ut(() => {\n window.removeEventListener(\"resize\", $), document.removeEventListener(\"mousedown\", nt);\n const D = Le(f);\n D && (D.removeEventListener(\"pointerdown\", U), D.removeEventListener(\"mousedown\", U));\n });\n const $ = () => {\n const D = Le(m);\n D && (A.value = D.getBoundingClientRect().width);\n }, { arrowRight: ee, arrowLeft: O, arrowDown: J, arrowUp: ce } = At(), { flowStep: pe, updateFlowStep: p, childMount: Y, resetFlow: te, handleFlow: y } = po(a, n, L), V = j(() => a.monthPicker ? hr : a.yearPicker ? kr : a.timePicker ? Yr : a.quarterPicker ? eo : Xr), S = j(() => {\n if (T.value.arrowLeft) return T.value.arrowLeft;\n const D = f.value?.getBoundingClientRect(), de = a.getInputRect();\n return de?.width < A?.value && de?.left <= (D?.left ?? 0) ? `${de?.width / 2}px` : de?.right >= (D?.right ?? 0) && de?.width < A?.value ? `${A?.value - de?.width / 2}px` : \"50%\";\n }), q = () => {\n const D = Le(f);\n D && D.focus({ preventScroll: !0 });\n }, k = j(() => L.value?.getSidebarProps() || {}), se = () => {\n a.openOnTop && n(\"recalculate-position\");\n }, u = et(v, \"action\"), re = j(() => a.monthPicker || a.yearPicker ? et(v, \"monthYear\") : a.timePicker ? et(v, \"timePicker\") : et(v, \"shared\")), G = j(() => a.openOnTop ? \"dp__arrow_bottom\" : \"dp__arrow_top\"), I = j(() => ({\n dp__menu_disabled: a.disabled,\n dp__menu_readonly: a.readonly,\n \"dp-menu-loading\": a.loading\n })), x = j(\n () => ({\n dp__menu: !0,\n dp__menu_index: !h.value.enabled,\n dp__relative: h.value.enabled,\n ...F.value.menu ?? {}\n })\n ), c = (D) => {\n Dt(D, T.value, !0);\n }, o = (D) => {\n a.escClose && (n(\"close-picker\"), _(D));\n }, X = (D) => {\n if (a.arrowNavigation) {\n if (D === Qe.up) return ce();\n if (D === Qe.down) return J();\n if (D === Qe.left) return O();\n if (D === Qe.right) return ee();\n } else D === Qe.left || D === Qe.up ? r(\"handleArrow\", Qe.left, 0, D === Qe.up) : r(\"handleArrow\", Qe.right, 0, D === Qe.down);\n }, B = (D) => {\n d(D.shiftKey), !a.disableMonthYearSelect && D.code === Re.tab && D.target.classList.contains(\"dp__menu\") && P.value.shiftKeyInMenu && (D.preventDefault(), Dt(D, T.value, !0), n(\"close-picker\"));\n }, be = () => {\n q(), n(\"time-picker-close\");\n }, Ae = (D) => {\n L.value?.toggleTimePicker(!1, !1), L.value?.toggleMonthPicker(!1, !1, D), L.value?.toggleYearPicker(!1, !1, D);\n }, ne = (D, de = 0) => D === \"month\" ? L.value?.toggleMonthPicker(!1, !0, de) : D === \"year\" ? L.value?.toggleYearPicker(!1, !0, de) : D === \"time\" ? L.value?.toggleTimePicker(!0, !1) : Ae(de), r = (D, ...de) => {\n L.value?.[D] && L.value?.[D](...de);\n }, E = () => {\n r(\"selectCurrentDate\");\n }, K = (D, de) => {\n r(\"presetDate\", el(D), de);\n }, oe = () => {\n r(\"clearHoverDate\");\n }, ge = (D, de) => {\n r(\"updateMonthYear\", D, de);\n }, _e = (D, de) => {\n D.preventDefault(), X(de);\n }, Ye = (D) => {\n if (B(D), D.key === Re.home || D.key === Re.end)\n return r(\n \"selectWeekDate\",\n D.key === Re.home,\n D.target.getAttribute(\"id\")\n );\n switch ((D.key === Re.pageUp || D.key === Re.pageDown) && (D.shiftKey ? (r(\"changeYear\", D.key === Re.pageUp), Fa(f.value, \"overlay-year\")?.focus()) : (r(\"changeMonth\", D.key === Re.pageUp), Fa(f.value, D.key === Re.pageUp ? \"action-prev\" : \"action-next\")?.focus()), D.target.getAttribute(\"id\") && f.value?.focus({ preventScroll: !0 })), D.key) {\n case Re.esc:\n return o(D);\n case Re.arrowLeft:\n return _e(D, Qe.left);\n case Re.arrowRight:\n return _e(D, Qe.right);\n case Re.arrowUp:\n return _e(D, Qe.up);\n case Re.arrowDown:\n return _e(D, Qe.down);\n default:\n return;\n }\n }, nt = (D) => {\n h.value.enabled && !h.value.input && !f.value?.contains(D.target) && le.value && (le.value = !1, n(\"menu-blur\"));\n };\n return t({\n updateMonthYear: ge,\n switchView: ne,\n handleFlow: y,\n onValueCleared: () => {\n L.value?.setStartTime?.();\n }\n }), (D, de) => (w(), W(\"div\", {\n id: D.uid ? `dp-menu-${D.uid}` : void 0,\n ref_key: \"dpMenuRef\",\n ref: f,\n tabindex: s(h).enabled ? void 0 : \"0\",\n role: s(h).enabled ? void 0 : \"dialog\",\n \"aria-label\": D.ariaLabels?.menu,\n class: De(x.value),\n style: lt({ \"--dp-arrow-left\": S.value }),\n onMouseleave: oe,\n onClick: c,\n onKeydown: Ye\n }, [\n (D.disabled || D.readonly) && s(h).enabled || D.loading ? (w(), W(\"div\", {\n key: 0,\n class: De(I.value)\n }, [\n D.loading ? (w(), W(\"div\", ao, [...de[19] || (de[19] = [\n he(\"span\", { class: \"dp--menu-loader\" }, null, -1)\n ])])) : Q(\"\", !0)\n ], 2)) : Q(\"\", !0),\n D.$slots[\"menu-header\"] ? (w(), W(\"div\", no, [\n ie(D.$slots, \"menu-header\")\n ])) : Q(\"\", !0),\n !s(h).enabled && !D.teleportCenter ? (w(), W(\"div\", {\n key: 2,\n class: De(G.value)\n }, null, 2)) : Q(\"\", !0),\n he(\"div\", {\n ref_key: \"innerMenuRef\",\n ref: m,\n class: De({\n dp__menu_content_wrapper: D.presetDates?.length || !!D.$slots[\"left-sidebar\"] || !!D.$slots[\"right-sidebar\"],\n \"dp--menu-content-wrapper-collapsed\": e.collapse && (D.presetDates?.length || !!D.$slots[\"left-sidebar\"] || !!D.$slots[\"right-sidebar\"])\n }),\n \"data-dp-mobile\": s(C),\n style: lt({ \"--dp-menu-width\": `${A.value}px` })\n }, [\n D.$slots[\"left-sidebar\"] ? (w(), W(\"div\", ro, [\n ie(D.$slots, \"left-sidebar\", ze(Je(k.value)))\n ])) : Q(\"\", !0),\n D.presetDates.length ? (w(), W(\"div\", {\n key: 1,\n class: De({ \"dp--preset-dates-collapsed\": e.collapse, \"dp--preset-dates\": !0 }),\n \"data-dp-mobile\": s(C)\n }, [\n (w(!0), W(ke, null, Ce(D.presetDates, (fe, ht) => (w(), W(ke, { key: ht }, [\n fe.slot ? ie(D.$slots, fe.slot, {\n key: 0,\n presetDate: K,\n label: fe.label,\n value: fe.value\n }) : (w(), W(\"button\", {\n key: 1,\n type: \"button\",\n style: lt(fe.style || {}),\n class: De([\"dp__btn dp--preset-range\", { \"dp--preset-range-collapsed\": e.collapse }]),\n \"data-test-id\": fe.testId ?? void 0,\n \"data-dp-mobile\": s(C),\n onClick: Xt((xe) => K(fe.value, fe.noTz), [\"prevent\"]),\n onKeydown: (xe) => s(qe)(xe, () => K(fe.value, fe.noTz), !0)\n }, Ke(fe.label), 47, so))\n ], 64))), 128))\n ], 10, oo)) : Q(\"\", !0),\n he(\"div\", {\n ref_key: \"calendarWrapperRef\",\n ref: M,\n class: \"dp__instance_calendar\",\n role: \"document\"\n }, [\n (w(), Te(fa(V.value), He({\n ref_key: \"dynCmpRef\",\n ref: L\n }, i.value, {\n \"flow-step\": s(pe),\n onMount: s(Y),\n onUpdateFlowStep: s(p),\n onResetFlow: s(te),\n onFocusMenu: q,\n onSelectDate: de[0] || (de[0] = (fe) => D.$emit(\"select-date\")),\n onDateUpdate: de[1] || (de[1] = (fe) => D.$emit(\"date-update\", fe)),\n onTooltipOpen: de[2] || (de[2] = (fe) => D.$emit(\"tooltip-open\", fe)),\n onTooltipClose: de[3] || (de[3] = (fe) => D.$emit(\"tooltip-close\", fe)),\n onAutoApply: de[4] || (de[4] = (fe) => D.$emit(\"auto-apply\", fe)),\n onRangeStart: de[5] || (de[5] = (fe) => D.$emit(\"range-start\", fe)),\n onRangeEnd: de[6] || (de[6] = (fe) => D.$emit(\"range-end\", fe)),\n onInvalidFixedRange: de[7] || (de[7] = (fe) => D.$emit(\"invalid-fixed-range\", fe)),\n onTimeUpdate: de[8] || (de[8] = (fe) => D.$emit(\"time-update\")),\n onAmPmChange: de[9] || (de[9] = (fe) => D.$emit(\"am-pm-change\", fe)),\n onTimePickerOpen: de[10] || (de[10] = (fe) => D.$emit(\"time-picker-open\", fe)),\n onTimePickerClose: be,\n onRecalculatePosition: se,\n onUpdateMonthYear: de[11] || (de[11] = (fe) => D.$emit(\"update-month-year\", fe)),\n onAutoApplyInvalid: de[12] || (de[12] = (fe) => D.$emit(\"auto-apply-invalid\", fe)),\n onInvalidDate: de[13] || (de[13] = (fe) => D.$emit(\"invalid-date\", fe)),\n onOverlayToggle: de[14] || (de[14] = (fe) => D.$emit(\"overlay-toggle\", fe)),\n \"onUpdate:internalModelValue\": de[15] || (de[15] = (fe) => D.$emit(\"update:internal-model-value\", fe))\n }), Ge({ _: 2 }, [\n Ce(re.value, (fe, ht) => ({\n name: fe,\n fn: we((xe) => [\n ie(D.$slots, fe, ze(Je({ ...xe })))\n ])\n }))\n ]), 1040, [\"flow-step\", \"onMount\", \"onUpdateFlowStep\", \"onResetFlow\"]))\n ], 512),\n D.$slots[\"right-sidebar\"] ? (w(), W(\"div\", uo, [\n ie(D.$slots, \"right-sidebar\", ze(Je(k.value)))\n ])) : Q(\"\", !0),\n D.$slots[\"action-extra\"] ? (w(), W(\"div\", io, [\n D.$slots[\"action-extra\"] ? ie(D.$slots, \"action-extra\", {\n key: 0,\n selectCurrentDate: E\n }) : Q(\"\", !0)\n ])) : Q(\"\", !0)\n ], 14, lo),\n !D.autoApply || s(T).keepActionRow ? (w(), Te(ir, He({\n key: 3,\n \"menu-mount\": z.value\n }, i.value, {\n \"calendar-width\": A.value,\n onClosePicker: de[16] || (de[16] = (fe) => D.$emit(\"close-picker\")),\n onSelectDate: de[17] || (de[17] = (fe) => D.$emit(\"select-date\")),\n onInvalidSelect: de[18] || (de[18] = (fe) => D.$emit(\"invalid-select\")),\n onSelectNow: E\n }), Ge({ _: 2 }, [\n Ce(s(u), (fe, ht) => ({\n name: fe,\n fn: we((xe) => [\n ie(D.$slots, fe, ze(Je({ ...xe })))\n ])\n }))\n ]), 1040, [\"menu-mount\", \"calendar-width\"])) : Q(\"\", !0)\n ], 46, to));\n }\n});\nvar Et = /* @__PURE__ */ ((e) => (e.center = \"center\", e.left = \"left\", e.right = \"right\", e))(Et || {});\nconst co = ({\n menuRef: e,\n menuRefInner: t,\n inputRef: l,\n pickerWrapperRef: n,\n inline: a,\n emit: f,\n props: i,\n slots: g\n}) => {\n const { defaultedConfig: d } = Oe(i), P = Z({}), v = Z(!1), R = Z({\n top: \"0\",\n left: \"0\"\n }), h = Z(!1), T = qt(i, \"teleportCenter\");\n rt(T, () => {\n R.value = JSON.parse(JSON.stringify({})), L();\n });\n const F = (y) => {\n if (i.teleport) {\n const V = y.getBoundingClientRect();\n return {\n left: V.left + window.scrollX,\n top: V.top + window.scrollY\n };\n }\n return { top: 0, left: 0 };\n }, _ = (y, V) => {\n R.value.left = `${y + V - P.value.width}px`;\n }, C = (y) => {\n R.value.left = `${y}px`;\n }, M = (y, V) => {\n i.position === Et.left && C(y), i.position === Et.right && _(y, V), i.position === Et.center && (R.value.left = `${y + V / 2 - P.value.width / 2}px`);\n }, A = (y) => {\n const { width: V, height: S } = y.getBoundingClientRect(), { top: q, left: k } = F(y);\n return { top: +q, left: +k, width: V, height: S };\n }, m = () => {\n R.value.left = \"50%\", R.value.top = \"50%\", R.value.transform = \"translate(-50%, -50%)\", R.value.position = \"fixed\", delete R.value.opacity;\n }, z = () => {\n const y = Le(l);\n R.value = i.altPosition(y);\n }, L = (y = !0) => {\n if (!a.value.enabled) {\n if (T.value) return m();\n if (i.altPosition !== null) return z();\n if (y) {\n const V = i.teleport ? t.value?.$el : e.value;\n V && (P.value = V.getBoundingClientRect()), f(\"recalculate-position\");\n }\n return ce();\n }\n }, le = ({ inputEl: y, left: V, width: S }) => {\n window.screen.width > 768 && !v.value && M(V, S), ee(y);\n }, U = (y) => {\n const { top: V, left: S, height: q, width: k } = A(y);\n R.value.top = `${q + V + +i.offset}px`, h.value = !1, v.value || (R.value.left = `${S + k / 2 - P.value.width / 2}px`), le({ inputEl: y, left: S, width: k });\n }, $ = (y) => {\n const { top: V, left: S, width: q } = A(y);\n R.value.top = `${V - +i.offset - P.value.height}px`, h.value = !0, le({ inputEl: y, left: S, width: q });\n }, ee = (y) => {\n if (i.autoPosition) {\n const { left: V, width: S } = A(y), { left: q, right: k } = P.value;\n if (!v.value) {\n if (Math.abs(q) !== Math.abs(k)) {\n if (q <= 0)\n return v.value = !0, C(V);\n if (k >= document.documentElement.clientWidth)\n return v.value = !0, _(V, S);\n }\n return M(V, S);\n }\n }\n }, O = () => {\n const y = Le(l);\n if (y) {\n if (i.autoPosition === st.top) return st.top;\n if (i.autoPosition === st.bottom) return st.bottom;\n const { height: V } = P.value, { top: S, height: q } = y.getBoundingClientRect(), se = window.innerHeight - S - q, u = S;\n return V <= se ? st.bottom : V > se && V <= u ? st.top : se >= u ? st.bottom : st.top;\n }\n return st.bottom;\n }, J = (y) => O() === st.bottom ? U(y) : $(y), ce = () => {\n const y = Le(l);\n if (y)\n return i.autoPosition ? J(y) : U(y);\n }, pe = function(y) {\n if (y) {\n const V = y.scrollHeight > y.clientHeight, q = window.getComputedStyle(y).overflowY.indexOf(\"hidden\") !== -1;\n return V && !q;\n }\n return !0;\n }, p = function(y) {\n return !y || y === document.body || y.nodeType === Node.DOCUMENT_FRAGMENT_NODE ? window : pe(y) ? y : p(\n y.assignedSlot && d.value.shadowDom ? y.assignedSlot.parentNode : y.parentNode\n );\n }, Y = (y) => {\n if (y)\n switch (i.position) {\n case Et.left:\n return { left: 0, transform: \"translateX(0)\" };\n case Et.right:\n return { left: `${y.width}px`, transform: \"translateX(-100%)\" };\n default:\n return { left: `${y.width / 2}px`, transform: \"translateX(-50%)\" };\n }\n return {};\n };\n return {\n openOnTop: h,\n menuStyle: R,\n xCorrect: v,\n setMenuPosition: L,\n getScrollableParent: p,\n shadowRender: (y, V, S) => {\n const q = document.createElement(\"div\"), k = Le(l)?.getBoundingClientRect();\n q.setAttribute(\"id\", \"dp--temp-container\");\n const se = n.value?.clientWidth ? n.value : document.body;\n se.append(q);\n const u = Y(k), re = d.value.shadowDom ? Object.keys(g).filter(\n (I) => [\"right-sidebar\", \"left-sidebar\", \"top-extra\", \"action-extra\"].includes(I)\n ) : Object.keys(g), G = tl(\n V,\n {\n ...S,\n shadow: !0,\n style: { opacity: 0, position: \"absolute\", ...u }\n },\n Object.fromEntries(re.map((I) => [I, g[I]]))\n );\n y != null && (G.appContext = y.appContext), nn(G, q), P.value = G.el?.getBoundingClientRect(), nn(null, q), se.removeChild(q);\n }\n };\n}, bt = [\n { name: \"clock-icon\", use: [\"time\", \"calendar\", \"shared\"] },\n { name: \"arrow-left\", use: [\"month-year\", \"calendar\", \"shared\", \"year-mode\"] },\n { name: \"arrow-right\", use: [\"month-year\", \"calendar\", \"shared\", \"year-mode\"] },\n { name: \"arrow-up\", use: [\"time\", \"calendar\", \"month-year\", \"shared\"] },\n { name: \"arrow-down\", use: [\"time\", \"calendar\", \"month-year\", \"shared\"] },\n { name: \"calendar-icon\", use: [\"month-year\", \"time\", \"calendar\", \"shared\", \"year-mode\"] },\n { name: \"day\", use: [\"calendar\", \"shared\"] },\n { name: \"month-overlay-value\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"year-overlay-value\", use: [\"calendar\", \"month-year\", \"shared\", \"year-mode\"] },\n { name: \"year-overlay\", use: [\"month-year\", \"shared\"] },\n { name: \"month-overlay\", use: [\"month-year\", \"shared\"] },\n { name: \"month-overlay-header\", use: [\"month-year\", \"shared\"] },\n { name: \"year-overlay-header\", use: [\"month-year\", \"shared\"] },\n { name: \"hours-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"hours-overlay-header\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes-overlay-header\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"seconds-overlay-value\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"seconds-overlay-header\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"hours\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"minutes\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"month\", use: [\"calendar\", \"month-year\", \"shared\"] },\n { name: \"year\", use: [\"calendar\", \"month-year\", \"shared\", \"year-mode\"] },\n { name: \"action-buttons\", use: [\"action\"] },\n { name: \"action-preview\", use: [\"action\"] },\n { name: \"calendar-header\", use: [\"calendar\", \"shared\"] },\n { name: \"marker-tooltip\", use: [\"calendar\", \"shared\"] },\n { name: \"action-extra\", use: [\"menu\"] },\n { name: \"time-picker-overlay\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"am-pm-button\", use: [\"calendar\", \"time\", \"shared\"] },\n { name: \"left-sidebar\", use: [\"menu\"] },\n { name: \"right-sidebar\", use: [\"menu\"] },\n { name: \"month-year\", use: [\"month-year\", \"shared\"] },\n { name: \"time-picker\", use: [\"menu\", \"shared\"] },\n { name: \"action-row\", use: [\"action\"] },\n { name: \"marker\", use: [\"calendar\", \"shared\"] },\n { name: \"quarter\", use: [\"shared\"] },\n { name: \"top-extra\", use: [\"shared\", \"month-year\"] },\n { name: \"tp-inline-arrow-up\", use: [\"shared\", \"time\"] },\n { name: \"tp-inline-arrow-down\", use: [\"shared\", \"time\"] },\n { name: \"menu-header\", use: [\"menu\"] }\n], fo = [{ name: \"trigger\" }, { name: \"input-icon\" }, { name: \"clear-icon\" }, { name: \"dp-input\" }], vo = {\n all: () => bt,\n monthYear: () => bt.filter((e) => e.use.includes(\"month-year\")),\n input: () => fo,\n timePicker: () => bt.filter((e) => e.use.includes(\"time\")),\n action: () => bt.filter((e) => e.use.includes(\"action\")),\n calendar: () => bt.filter((e) => e.use.includes(\"calendar\")),\n menu: () => bt.filter((e) => e.use.includes(\"menu\")),\n shared: () => bt.filter((e) => e.use.includes(\"shared\")),\n yearMode: () => bt.filter((e) => e.use.includes(\"year-mode\"))\n}, et = (e, t, l) => {\n const n = [];\n return vo[t]().forEach((a) => {\n e[a.name] && n.push(a.name);\n }), l?.length && l.forEach((a) => {\n a.slot && n.push(a.slot);\n }), n;\n}, aa = (e) => {\n const t = j(() => (n) => e.value ? n ? e.value.open : e.value.close : \"\"), l = j(() => (n) => e.value ? n ? e.value.menuAppearTop : e.value.menuAppearBottom : \"\");\n return { transitionName: t, showTransition: !!e.value, menuTransition: l };\n}, na = (e, t, l) => {\n const { defaultedRange: n, defaultedTz: a } = Oe(e), f = H(Ze(H(), a.value.timezone)), i = Z([{ month: Me(f), year: ye(f) }]), g = (h) => {\n const T = {\n hours: yt(f),\n minutes: $t(f),\n seconds: 0\n };\n return n.value.enabled ? [T[h], T[h]] : T[h];\n }, d = ea({\n hours: g(\"hours\"),\n minutes: g(\"minutes\"),\n seconds: g(\"seconds\")\n });\n rt(\n n,\n (h, T) => {\n h.enabled !== T.enabled && (d.hours = g(\"hours\"), d.minutes = g(\"minutes\"), d.seconds = g(\"seconds\"));\n },\n { deep: !0 }\n );\n const P = j({\n get: () => e.internalModelValue,\n set: (h) => {\n !e.readonly && !e.disabled && t(\"update:internal-model-value\", h);\n }\n }), v = j(\n () => (h) => i.value[h] ? i.value[h].month : 0\n ), R = j(\n () => (h) => i.value[h] ? i.value[h].year : 0\n );\n return rt(\n P,\n (h, T) => {\n l && JSON.stringify(h ?? {}) !== JSON.stringify(T ?? {}) && l();\n },\n { deep: !0 }\n ), {\n calendars: i,\n time: d,\n modelValue: P,\n month: v,\n year: R,\n today: f\n };\n}, mo = (e, t) => {\n const {\n defaultedMultiCalendars: l,\n defaultedMultiDates: n,\n defaultedUI: a,\n defaultedHighlight: f,\n defaultedTz: i,\n propDates: g,\n defaultedRange: d\n } = Oe(t), { isDisabled: P } = Tt(t), v = Z(null), R = Z(Ze(/* @__PURE__ */ new Date(), i.value.timezone)), h = (c) => {\n !c.current && t.hideOffsetDates || (v.value = c.value);\n }, T = () => {\n v.value = null;\n }, F = (c) => Array.isArray(e.value) && d.value.enabled && e.value[0] && v.value ? c ? Ee(v.value, e.value[0]) : Be(v.value, e.value[0]) : !0, _ = (c, o) => {\n const X = () => e.value ? o ? e.value[0] || null : e.value[1] : null, B = e.value && Array.isArray(e.value) ? X() : null;\n return $e(H(c.value), B);\n }, C = (c) => {\n const o = Array.isArray(e.value) ? e.value[0] : null;\n return c ? !Be(v.value ?? null, o) : !0;\n }, M = (c, o = !0) => (d.value.enabled || t.weekPicker) && Array.isArray(e.value) && e.value.length === 2 ? t.hideOffsetDates && !c.current ? !1 : $e(H(c.value), e.value[o ? 0 : 1]) : d.value.enabled ? _(c, o) && C(o) || $e(c.value, Array.isArray(e.value) ? e.value[0] : null) && F(o) : !1, A = (c, o) => {\n if (Array.isArray(e.value) && e.value[0] && e.value.length === 1) {\n const X = $e(c.value, v.value);\n return o ? Ee(e.value[0], c.value) && X : Be(e.value[0], c.value) && X;\n }\n return !1;\n }, m = (c) => !e.value || t.hideOffsetDates && !c.current ? !1 : d.value.enabled ? t.modelAuto && Array.isArray(e.value) ? $e(c.value, e.value[0] ? e.value[0] : R.value) : !1 : n.value.enabled && Array.isArray(e.value) ? e.value.some((o) => $e(o, c.value)) : $e(c.value, e.value ? e.value : R.value), z = (c) => {\n if (d.value.autoRange || t.weekPicker) {\n if (v.value) {\n if (t.hideOffsetDates && !c.current) return !1;\n const o = kt(v.value, +d.value.autoRange), X = mt(H(v.value), t.weekStart);\n return t.weekPicker ? $e(X[1], H(c.value)) : $e(o, H(c.value));\n }\n return !1;\n }\n return !1;\n }, L = (c) => {\n if (d.value.autoRange || t.weekPicker) {\n if (v.value) {\n const o = kt(v.value, +d.value.autoRange);\n if (t.hideOffsetDates && !c.current) return !1;\n const X = mt(H(v.value), t.weekStart);\n return t.weekPicker ? Ee(c.value, X[0]) && Be(c.value, X[1]) : Ee(c.value, v.value) && Be(c.value, o);\n }\n return !1;\n }\n return !1;\n }, le = (c) => {\n if (d.value.autoRange || t.weekPicker) {\n if (v.value) {\n if (t.hideOffsetDates && !c.current) return !1;\n const o = mt(H(v.value), t.weekStart);\n return t.weekPicker ? $e(o[0], c.value) : $e(v.value, c.value);\n }\n return !1;\n }\n return !1;\n }, U = (c) => xt(e.value, v.value, c.value), $ = () => t.modelAuto && Array.isArray(t.internalModelValue) ? !!t.internalModelValue[0] : !1, ee = () => t.modelAuto ? Rn(t.internalModelValue) : !0, O = (c) => {\n if (t.weekPicker) return !1;\n const o = d.value.enabled ? !M(c) && !M(c, !1) : !0;\n return !P(c.value) && !m(c) && !(!c.current && t.hideOffsetDates) && o;\n }, J = (c) => d.value.enabled ? t.modelAuto ? $() && m(c) : !1 : m(c), ce = (c) => f.value ? Bl(c.value, g.value.highlight) : !1, pe = (c) => {\n const o = P(c.value);\n return o && (typeof f.value == \"function\" ? !f.value(c.value, o) : !f.value.options.highlightDisabled);\n }, p = (c) => typeof f.value == \"function\" ? f.value(c.value) : f.value.weekdays?.includes(c.value.getDay()), Y = (c) => (d.value.enabled || t.weekPicker) && (!(l.value.count > 0) || c.current) && ee() && !(!c.current && t.hideOffsetDates) && !m(c) ? U(c) : !1, te = (c) => {\n if (Array.isArray(e.value) && e.value.length === 1) {\n const { before: o, after: X } = mn(+d.value.maxRange, e.value[0]);\n return Ft(c.value, o) || _t(c.value, X);\n }\n return !1;\n }, y = (c) => {\n if (Array.isArray(e.value) && e.value.length === 1) {\n const { before: o, after: X } = mn(+d.value.minRange, e.value[0]);\n return xt([o, X], e.value[0], c.value);\n }\n return !1;\n }, V = (c) => d.value.enabled && (d.value.maxRange || d.value.minRange) ? d.value.maxRange && d.value.minRange ? te(c) || y(c) : d.value.maxRange ? te(c) : y(c) : !1, S = (c) => {\n const { isRangeStart: o, isRangeEnd: X } = u(c), B = d.value.enabled ? o || X : !1;\n return {\n dp__cell_offset: !c.current,\n dp__pointer: !t.disabled && !(!c.current && t.hideOffsetDates) && !P(c.value) && !V(c),\n dp__cell_disabled: P(c.value) || V(c),\n dp__cell_highlight: !pe(c) && (ce(c) || p(c)) && !J(c) && !B && !le(c) && !(Y(c) && t.weekPicker) && !X,\n dp__cell_highlight_active: !pe(c) && (ce(c) || p(c)) && J(c),\n dp__today: !t.noToday && $e(c.value, R.value) && c.current,\n \"dp--past\": Be(c.value, R.value),\n \"dp--future\": Ee(c.value, R.value)\n };\n }, q = (c) => ({\n dp__active_date: J(c),\n dp__date_hover: O(c)\n }), k = (c) => {\n if (e.value && !Array.isArray(e.value)) {\n const o = mt(e.value, t.weekStart);\n return {\n ...G(c),\n dp__range_start: $e(o[0], c.value),\n dp__range_end: $e(o[1], c.value),\n dp__range_between_week: Ee(c.value, o[0]) && Be(c.value, o[1])\n };\n }\n return {\n ...G(c)\n };\n }, se = (c) => {\n if (e.value && Array.isArray(e.value)) {\n const o = mt(e.value[0], t.weekStart), X = e.value[1] ? mt(e.value[1], t.weekStart) : [];\n return {\n ...G(c),\n dp__range_start: $e(o[0], c.value) || $e(X[0], c.value),\n dp__range_end: $e(o[1], c.value) || $e(X[1], c.value),\n dp__range_between_week: Ee(c.value, o[0]) && Be(c.value, o[1]) || Ee(c.value, X[0]) && Be(c.value, X[1]),\n dp__range_between: Ee(c.value, o[1]) && Be(c.value, X[0])\n };\n }\n return {\n ...G(c)\n };\n }, u = (c) => {\n const o = l.value.count > 0 ? c.current && M(c) && ee() : M(c) && ee(), X = l.value.count > 0 ? c.current && M(c, !1) && ee() : M(c, !1) && ee();\n return { isRangeStart: o, isRangeEnd: X };\n }, re = (c) => {\n const { isRangeStart: o, isRangeEnd: X } = u(c);\n return {\n dp__range_start: o,\n dp__range_end: X,\n dp__range_between: Y(c),\n dp__date_hover: $e(c.value, v.value) && !o && !X && !t.weekPicker,\n dp__date_hover_start: A(c, !0),\n dp__date_hover_end: A(c, !1)\n };\n }, G = (c) => ({\n ...re(c),\n dp__cell_auto_range: L(c),\n dp__cell_auto_range_start: le(c),\n dp__cell_auto_range_end: z(c)\n }), I = (c) => d.value.enabled ? d.value.autoRange ? G(c) : t.modelAuto ? { ...q(c), ...re(c) } : t.weekPicker ? se(c) : re(c) : t.weekPicker ? k(c) : q(c);\n return {\n setHoverDate: h,\n clearHoverDate: T,\n getDayClassData: (c) => t.hideOffsetDates && !c.current ? {} : {\n ...S(c),\n ...I(c),\n [t.dayClass ? t.dayClass(c.value, t.internalModelValue) : \"\"]: !0,\n ...a.value.calendarCell ?? {}\n }\n };\n}, Tt = (e) => {\n const { defaultedFilters: t, defaultedRange: l, propDates: n, defaultedMultiDates: a } = Oe(e), f = (p) => n.value.disabledDates ? typeof n.value.disabledDates == \"function\" ? n.value.disabledDates(H(p)) : !!ca(p, n.value.disabledDates) : !1, i = (p) => n.value.maxDate ? e.yearPicker ? ye(p) > ye(n.value.maxDate) : Ee(p, n.value.maxDate) : !1, g = (p) => n.value.minDate ? e.yearPicker ? ye(p) < ye(n.value.minDate) : Be(p, n.value.minDate) : !1, d = (p) => {\n const Y = i(p), te = g(p), y = f(p), S = t.value.months.map((re) => +re).includes(Me(p)), q = e.disabledWeekDays.length ? e.disabledWeekDays.some((re) => +re === kl(p)) : !1, k = T(p), se = ye(p), u = zn(e.yearRange, se);\n return !(Y || te || y || S || u || q || k);\n }, P = (p, Y) => Be(...wt(n.value.minDate, p, Y)) || $e(...wt(n.value.minDate, p, Y)), v = (p, Y) => Ee(...wt(n.value.maxDate, p, Y)) || $e(...wt(n.value.maxDate, p, Y)), R = (p, Y, te) => {\n let y = !1;\n return n.value.maxDate && te && v(p, Y) && (y = !0), n.value.minDate && !te && P(p, Y) && (y = !0), y;\n }, h = (p, Y, te, y) => {\n let V = !1;\n return y && (n.value.minDate || n.value.maxDate) ? n.value.minDate && n.value.maxDate ? V = R(p, Y, te) : (n.value.minDate && P(p, Y) || n.value.maxDate && v(p, Y)) && (V = !0) : V = !0, V;\n }, T = (p) => Array.isArray(n.value.allowedDates) && !n.value.allowedDates.length ? !0 : n.value.allowedDates ? !ca(p, n.value.allowedDates, On(e.monthPicker, e.yearPicker)) : !1, F = (p) => !d(p), _ = (p) => l.value.noDisabledRange ? !bn({ start: p[0], end: p[1] }).some((te) => F(te)) : !0, C = (p) => {\n if (p) {\n const Y = ye(p);\n return Y >= +e.yearRange[0] && Y <= e.yearRange[1];\n }\n return !0;\n }, M = (p, Y) => !!(Array.isArray(p) && p[Y] && (l.value.maxRange || l.value.minRange) && C(p[Y])), A = (p, Y, te = 0) => {\n if (M(Y, te) && C(p)) {\n const y = bl(p, Y[te]), V = In(Y[te], p), S = V.length === 1 ? 0 : V.filter((k) => F(k)).length, q = Math.abs(y) - (l.value.minMaxRawRange ? 0 : S);\n if (l.value.minRange && l.value.maxRange)\n return q >= +l.value.minRange && q <= +l.value.maxRange;\n if (l.value.minRange) return q >= +l.value.minRange;\n if (l.value.maxRange) return q <= +l.value.maxRange;\n }\n return !0;\n }, m = () => !e.enableTimePicker || e.monthPicker || e.yearPicker || e.ignoreTimeValidation, z = (p) => Array.isArray(p) ? [p[0] ? Ca(p[0]) : null, p[1] ? Ca(p[1]) : null] : Ca(p), L = (p, Y, te) => p.find(\n (y) => +y.hours === yt(Y) && y.minutes === \"*\" ? !0 : +y.minutes === $t(Y) && +y.hours === yt(Y)\n ) && te, le = (p, Y, te) => {\n const [y, V] = p, [S, q] = Y;\n return !L(y, S, te) && !L(V, q, te) && te;\n }, U = (p, Y) => {\n const te = Array.isArray(Y) ? Y : [Y];\n return Array.isArray(e.disabledTimes) ? Array.isArray(e.disabledTimes[0]) ? le(e.disabledTimes, te, p) : !te.some((y) => L(e.disabledTimes, y, p)) : p;\n }, $ = (p, Y) => {\n const te = Array.isArray(Y) ? [Bt(Y[0]), Y[1] ? Bt(Y[1]) : void 0] : Bt(Y), y = !e.disabledTimes(te);\n return p && y;\n }, ee = (p, Y) => e.disabledTimes ? Array.isArray(e.disabledTimes) ? U(Y, p) : $(Y, p) : Y, O = (p) => {\n let Y = !0;\n if (!p || m()) return !0;\n const te = !n.value.minDate && !n.value.maxDate ? z(p) : p;\n return (e.maxTime || n.value.maxDate) && (Y = vn(\n e.maxTime,\n n.value.maxDate,\n \"max\",\n Ne(te),\n Y\n )), (e.minTime || n.value.minDate) && (Y = vn(\n e.minTime,\n n.value.minDate,\n \"min\",\n Ne(te),\n Y\n )), ee(p, Y);\n }, J = (p) => {\n if (!e.monthPicker) return !0;\n let Y = !0;\n const te = H(it(p));\n if (n.value.minDate && n.value.maxDate) {\n const y = H(it(n.value.minDate)), V = H(it(n.value.maxDate));\n return Ee(te, y) && Be(te, V) || $e(te, y) || $e(te, V);\n }\n if (n.value.minDate) {\n const y = H(it(n.value.minDate));\n Y = Ee(te, y) || $e(te, y);\n }\n if (n.value.maxDate) {\n const y = H(it(n.value.maxDate));\n Y = Be(te, y) || $e(te, y);\n }\n return Y;\n }, ce = j(() => (p) => !e.enableTimePicker || e.ignoreTimeValidation ? !0 : O(p)), pe = j(() => (p) => e.monthPicker ? Array.isArray(p) && (l.value.enabled || a.value.enabled) ? !p.filter((te) => !J(te)).length : J(p) : !0);\n return {\n isDisabled: F,\n validateDate: d,\n validateMonthYearInRange: h,\n isDateRangeAllowed: _,\n checkMinMaxRange: A,\n isValidTime: O,\n isTimeValid: ce,\n isMonthValid: pe\n };\n}, ga = () => {\n const e = j(() => (n, a) => n?.includes(a)), t = j(() => (n, a) => n.count ? n.solo ? !0 : a === 0 : !0), l = j(() => (n, a) => n.count ? n.solo ? !0 : a === n.count - 1 : !0);\n return { hideNavigationButtons: e, showLeftIcon: t, showRightIcon: l };\n}, po = (e, t, l) => {\n const n = Z(0), a = ea({\n [Ot.timePicker]: !e.enableTimePicker || e.timePicker || e.monthPicker,\n [Ot.calendar]: !1,\n [Ot.header]: !1\n }), f = j(() => e.monthPicker || e.timePicker), i = (R) => {\n if (e.flow?.length) {\n if (!R && f.value) return v();\n a[R] = !0, Object.keys(a).filter((h) => !a[h]).length || v();\n }\n }, g = () => {\n e.flow?.length && n.value !== -1 && (n.value += 1, t(\"flow-step\", n.value), v()), e.flow?.length === n.value && at().then(() => d());\n }, d = () => {\n n.value = -1;\n }, P = (R, h, ...T) => {\n e.flow[n.value] === R && l.value && l.value[h]?.(...T);\n }, v = (R = 0) => {\n R && (n.value += R), P(je.month, \"toggleMonthPicker\", !0), P(je.year, \"toggleYearPicker\", !0), P(je.calendar, \"toggleTimePicker\", !1, !0), P(je.time, \"toggleTimePicker\", !0, !0);\n const h = e.flow[n.value];\n (h === je.hours || h === je.minutes || h === je.seconds) && P(h, \"toggleTimePicker\", !0, !0, h);\n };\n return { childMount: i, updateFlowStep: g, resetFlow: d, handleFlow: v, flowStep: n };\n}, go = {\n key: 1,\n class: \"dp__input_wrap\"\n}, yo = [\"id\", \"name\", \"inputmode\", \"placeholder\", \"disabled\", \"readonly\", \"required\", \"value\", \"autocomplete\", \"aria-label\", \"aria-disabled\", \"aria-invalid\"], ho = {\n key: 2,\n class: \"dp--clear-btn\"\n}, bo = [\"aria-label\"], ko = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"DatepickerInput\",\n props: {\n isMenuOpen: { type: Boolean, default: !1 },\n inputValue: { type: String, default: \"\" },\n ...va\n },\n emits: [\n \"clear\",\n \"open\",\n \"update:input-value\",\n \"set-input-date\",\n \"close\",\n \"select-date\",\n \"set-empty-date\",\n \"toggle\",\n \"focus-prev\",\n \"focus\",\n \"blur\",\n \"real-blur\",\n \"text-input\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, {\n defaultedTextInput: f,\n defaultedAriaLabels: i,\n defaultedInline: g,\n defaultedConfig: d,\n defaultedRange: P,\n defaultedMultiDates: v,\n defaultedUI: R,\n getDefaultPattern: h,\n getDefaultStartTime: T\n } = Oe(a), { checkMinMaxRange: F } = Tt(a), _ = Z(), C = Z(null), M = Z(!1), A = Z(!1), m = j(\n () => ({\n dp__pointer: !a.disabled && !a.readonly && !f.value.enabled,\n dp__disabled: a.disabled,\n dp__input_readonly: !f.value.enabled,\n dp__input: !0,\n dp__input_not_clearable: !a.clearable,\n dp__input_icon_pad: !a.hideInputIcon,\n dp__input_valid: typeof a.state == \"boolean\" ? a.state : !1,\n dp__input_invalid: typeof a.state == \"boolean\" ? !a.state : !1,\n dp__input_focus: M.value || a.isMenuOpen,\n dp__input_reg: !f.value.enabled,\n ...R.value.input ?? {}\n })\n ), z = () => {\n n(\"set-input-date\", null), a.clearable && a.autoApply && (n(\"set-empty-date\"), _.value = null);\n }, L = (k) => {\n const se = T();\n return Yl(\n k,\n f.value.format ?? h(),\n se ?? En({}, a.enableSeconds),\n a.inputValue,\n A.value,\n a.formatLocale\n );\n }, le = (k) => {\n const { rangeSeparator: se } = f.value, [u, re] = k.split(`${se}`);\n if (u) {\n const G = L(u.trim()), I = re ? L(re.trim()) : void 0;\n if (_t(G, I)) return;\n const x = G && I ? [G, I] : [G];\n F(I, x, 0) && (_.value = G ? x : null);\n }\n }, U = () => {\n A.value = !0;\n }, $ = (k) => {\n if (P.value.enabled)\n le(k);\n else if (v.value.enabled) {\n const se = k.split(\";\");\n _.value = se.map((u) => L(u.trim())).filter((u) => u);\n } else\n _.value = L(k);\n }, ee = (k) => {\n const se = typeof k == \"string\" ? k : k.target?.value;\n se !== \"\" ? (f.value.openMenu && !a.isMenuOpen && n(\"open\"), $(se), n(\"set-input-date\", _.value)) : z(), A.value = !1, n(\"update:input-value\", se), n(\"text-input\", k, _.value);\n }, O = (k) => {\n f.value.enabled ? ($(k.target.value), f.value.enterSubmit && za(_.value) && a.inputValue !== \"\" ? (n(\"set-input-date\", _.value, !0), _.value = null) : f.value.enterSubmit && a.inputValue === \"\" && (_.value = null, n(\"clear\"))) : pe(k);\n }, J = (k, se) => {\n f.value.enabled && f.value.tabSubmit && !se && $(k.target.value), f.value.tabSubmit && za(_.value) && a.inputValue !== \"\" ? (n(\"set-input-date\", _.value, !0, !0), _.value = null) : f.value.tabSubmit && a.inputValue === \"\" && (_.value = null, n(\"clear\", !0));\n }, ce = () => {\n M.value = !0, n(\"focus\"), at().then(() => {\n f.value.enabled && f.value.selectOnFocus && C.value?.select();\n });\n }, pe = (k) => {\n if (Dt(k, d.value, !0), f.value.enabled && f.value.openMenu && !g.value.input) {\n if (f.value.openMenu === \"open\" && !a.isMenuOpen) return n(\"open\");\n if (f.value.openMenu === \"toggle\") return n(\"toggle\");\n } else f.value.enabled || n(\"toggle\");\n }, p = () => {\n n(\"real-blur\"), M.value = !1, (!a.isMenuOpen || g.value.enabled && g.value.input) && n(\"blur\"), a.autoApply && f.value.enabled && _.value && !a.isMenuOpen && (n(\"set-input-date\", _.value), n(\"select-date\"), _.value = null);\n }, Y = (k) => {\n Dt(k, d.value, !0), n(\"clear\");\n }, te = () => {\n n(\"close\");\n }, y = (k) => {\n if (k.key === \"Tab\" && J(k), k.key === \"Enter\" && O(k), k.key === \"Escape\" && f.value.escClose && te(), !f.value.enabled) {\n if (k.code === \"Tab\") return;\n k.preventDefault();\n }\n }, V = () => {\n C.value?.focus({ preventScroll: !0 });\n }, S = (k) => {\n _.value = k;\n }, q = (k) => {\n k.key === Re.tab && J(k, !0);\n };\n return t({\n focusInput: V,\n setParsedDate: S\n }), (k, se) => (w(), W(\"div\", { onClick: pe }, [\n k.$slots.trigger && !k.$slots[\"dp-input\"] && !s(g).enabled ? ie(k.$slots, \"trigger\", { key: 0 }) : Q(\"\", !0),\n !k.$slots.trigger && (!s(g).enabled || s(g).input) ? (w(), W(\"div\", go, [\n k.$slots[\"dp-input\"] && !k.$slots.trigger && (!s(g).enabled || s(g).enabled && s(g).input) ? ie(k.$slots, \"dp-input\", {\n key: 0,\n value: e.inputValue,\n isMenuOpen: e.isMenuOpen,\n onInput: ee,\n onEnter: O,\n onTab: J,\n onClear: Y,\n onBlur: p,\n onKeypress: y,\n onPaste: U,\n onFocus: ce,\n openMenu: () => k.$emit(\"open\"),\n closeMenu: () => k.$emit(\"close\"),\n toggleMenu: () => k.$emit(\"toggle\")\n }) : Q(\"\", !0),\n k.$slots[\"dp-input\"] ? Q(\"\", !0) : (w(), W(\"input\", {\n key: 1,\n id: k.uid ? `dp-input-${k.uid}` : void 0,\n ref_key: \"inputRef\",\n ref: C,\n \"data-test-id\": \"dp-input\",\n name: k.name,\n class: De(m.value),\n inputmode: s(f).enabled ? \"text\" : \"none\",\n placeholder: k.placeholder,\n disabled: k.disabled,\n readonly: k.readonly,\n required: k.required,\n value: e.inputValue,\n autocomplete: k.autocomplete,\n \"aria-label\": s(i)?.input,\n \"aria-disabled\": k.disabled || void 0,\n \"aria-invalid\": k.state === !1 ? !0 : void 0,\n onInput: ee,\n onBlur: p,\n onFocus: ce,\n onKeypress: y,\n onKeydown: se[0] || (se[0] = (u) => y(u)),\n onPaste: U\n }, null, 42, yo)),\n he(\"div\", {\n onClick: se[3] || (se[3] = (u) => n(\"toggle\"))\n }, [\n k.$slots[\"input-icon\"] && !k.hideInputIcon ? (w(), W(\"span\", {\n key: 0,\n class: \"dp__input_icon\",\n onClick: se[1] || (se[1] = (u) => n(\"toggle\"))\n }, [\n ie(k.$slots, \"input-icon\")\n ])) : Q(\"\", !0),\n !k.$slots[\"input-icon\"] && !k.hideInputIcon && !k.$slots[\"dp-input\"] ? (w(), Te(s(jt), {\n key: 1,\n \"aria-label\": s(i)?.calendarIcon,\n class: \"dp__input_icon dp__input_icons\",\n onClick: se[2] || (se[2] = (u) => n(\"toggle\"))\n }, null, 8, [\"aria-label\"])) : Q(\"\", !0)\n ]),\n k.$slots[\"clear-icon\"] && (k.alwaysClearable || e.inputValue && k.clearable && !k.disabled && !k.readonly) ? (w(), W(\"span\", ho, [\n ie(k.$slots, \"clear-icon\", { clear: Y })\n ])) : Q(\"\", !0),\n !k.$slots[\"clear-icon\"] && (k.alwaysClearable || k.clearable && e.inputValue && !k.disabled && !k.readonly) ? (w(), W(\"button\", {\n key: 3,\n \"aria-label\": s(i)?.clearInput,\n class: \"dp--clear-btn\",\n type: \"button\",\n onKeydown: se[4] || (se[4] = (u) => s(qe)(u, () => Y(u), !0, q)),\n onClick: se[5] || (se[5] = Xt((u) => Y(u), [\"prevent\"]))\n }, [\n tt(s(Sn), {\n class: \"dp__input_icons\",\n \"data-test-id\": \"clear-icon\"\n })\n ], 40, bo)) : Q(\"\", !0)\n ])) : Q(\"\", !0)\n ]));\n }\n}), wo = typeof window < \"u\" ? window : void 0, Ea = () => {\n}, Do = (e) => al() ? (nl(e), !0) : !1, Mo = (e, t, l, n) => {\n if (!e) return Ea;\n let a = Ea;\n const f = rt(\n () => s(e),\n (g) => {\n a(), g && (g.removeEventListener(t, l), g.addEventListener(t, l, n), a = () => {\n g.removeEventListener(t, l, n), a = Ea;\n });\n },\n { immediate: !0, flush: \"post\" }\n ), i = () => {\n f(), a();\n };\n return Do(i), i;\n}, $o = (e, t, l, n = {}) => {\n const { window: a = wo, event: f = \"pointerdown\" } = n;\n return a ? Mo(a, f, (g) => {\n const d = Le(e), P = Le(t);\n !d || !P || d === g.target || g.composedPath().includes(d) || g.composedPath().includes(P) || l(g);\n }, { passive: !0 }) : void 0;\n}, Ao = [\"data-dp-mobile\"], To = /* @__PURE__ */ We({\n compatConfig: {\n MODE: 3\n },\n __name: \"VueDatePicker\",\n props: {\n ...va\n },\n emits: [\n \"update:model-value\",\n \"update:model-timezone-value\",\n \"text-submit\",\n \"closed\",\n \"cleared\",\n \"open\",\n \"focus\",\n \"blur\",\n \"internal-model-change\",\n \"recalculate-position\",\n \"flow-step\",\n \"update-month-year\",\n \"invalid-select\",\n \"invalid-fixed-range\",\n \"tooltip-open\",\n \"tooltip-close\",\n \"time-picker-open\",\n \"time-picker-close\",\n \"am-pm-change\",\n \"range-start\",\n \"range-end\",\n \"date-update\",\n \"invalid-date\",\n \"overlay-toggle\",\n \"text-input\"\n ],\n setup(e, { expose: t, emit: l }) {\n const n = l, a = e, f = Yt(), i = Z(!1), g = qt(a, \"modelValue\"), d = qt(a, \"timezone\"), P = Z(null), v = Z(null), R = Z(null), h = Z(!1), T = Z(null), F = Z(!1), _ = Z(!1), C = Z(!1), M = Z(!1), { setMenuFocused: A, setShiftKey: m } = Hn(), { clearArrowNav: z } = At(), { validateDate: L, isValidTime: le } = Tt(a), {\n defaultedTransitions: U,\n defaultedTextInput: $,\n defaultedInline: ee,\n defaultedConfig: O,\n defaultedRange: J,\n defaultedMultiDates: ce\n } = Oe(a), { menuTransition: pe, showTransition: p } = aa(U), { isMobile: Y } = Qn(O), te = ll();\n Ue(() => {\n x(a.modelValue), at().then(() => {\n ee.value.enabled || (u(T.value)?.addEventListener(\"scroll\", K), window?.addEventListener(\"resize\", oe));\n }), ee.value.enabled && (i.value = !0), window?.addEventListener(\"keyup\", ge), window?.addEventListener(\"keydown\", _e);\n }), Ut(() => {\n ee.value.enabled || (u(T.value)?.removeEventListener(\"scroll\", K), window?.removeEventListener(\"resize\", oe)), window?.removeEventListener(\"keyup\", ge), window?.removeEventListener(\"keydown\", _e);\n });\n const y = et(f, \"all\", a.presetDates), V = et(f, \"input\");\n rt(\n [g, d],\n () => {\n x(g.value);\n },\n { deep: !0 }\n );\n const { openOnTop: S, menuStyle: q, xCorrect: k, setMenuPosition: se, getScrollableParent: u, shadowRender: re } = co({\n menuRef: P,\n menuRefInner: v,\n inputRef: R,\n pickerWrapperRef: T,\n inline: ee,\n emit: n,\n props: a,\n slots: f\n }), {\n inputValue: G,\n internalModelValue: I,\n parseExternalModelValue: x,\n emitModelValue: c,\n formatInputValue: o,\n checkBeforeEmit: X\n } = rr(n, a, { isInputFocused: h, isTextInputDate: M }), B = j(\n () => ({\n dp__main: !0,\n dp__theme_dark: a.dark,\n dp__theme_light: !a.dark,\n dp__flex_display: ee.value.enabled,\n \"dp--flex-display-collapsed\": C.value,\n dp__flex_display_with_input: ee.value.input\n })\n ), be = j(() => a.dark ? \"dp__theme_dark\" : \"dp__theme_light\"), Ae = j(() => a.teleport ? {\n to: typeof a.teleport == \"boolean\" ? \"body\" : a.teleport,\n disabled: !a.teleport || ee.value.enabled\n } : {}), ne = j(() => ({ class: \"dp__outer_menu_wrap\" })), r = j(() => ee.value.enabled && (a.timePicker || a.monthPicker || a.yearPicker || a.quarterPicker)), E = () => R.value?.$el?.getBoundingClientRect() ?? { width: 0, left: 0, right: 0 }, K = () => {\n i.value && (O.value.closeOnScroll ? Xe() : se());\n }, oe = () => {\n i.value && se();\n const N = v.value?.$el.getBoundingClientRect().width ?? 0;\n C.value = document.body.offsetWidth <= N;\n }, ge = (N) => {\n N.key === \"Tab\" && !ee.value.enabled && !a.teleport && O.value.tabOutClosesMenu && (T.value.contains(document.activeElement) || Xe()), _.value = N.shiftKey;\n }, _e = (N) => {\n _.value = N.shiftKey;\n }, Ye = () => {\n !a.disabled && !a.readonly && (re(te, hn, a), se(!1), i.value = !0, i.value && n(\"open\"), i.value || xe(), x(a.modelValue));\n }, nt = () => {\n G.value = \"\", xe(), v.value?.onValueCleared(), R.value?.setParsedDate(null), n(\"update:model-value\", null), n(\"update:model-timezone-value\", null), n(\"cleared\"), O.value.closeOnClearValue && Xe();\n }, St = () => {\n const N = I.value;\n return !N || !Array.isArray(N) && L(N) ? !0 : Array.isArray(N) ? ce.value.enabled || N.length === 2 && L(N[0]) && L(N[1]) ? !0 : J.value.partialRange && !a.timePicker ? L(N[0]) : !1 : !1;\n }, D = () => {\n X() && St() ? (c(), Xe()) : n(\"invalid-select\", I.value);\n }, de = (N) => {\n fe(), c(), O.value.closeOnAutoApply && !N && Xe();\n }, fe = () => {\n R.value && $.value.enabled && R.value.setParsedDate(I.value);\n }, ht = (N = !1) => {\n a.autoApply && le(I.value) && St() && (J.value.enabled && Array.isArray(I.value) ? (J.value.partialRange || I.value.length === 2) && de(N) : de(N));\n }, xe = () => {\n $.value.enabled || (I.value = null);\n }, Xe = (N = !1) => {\n N && I.value && O.value.setDateOnMenuClose && D(), ee.value.enabled || (i.value && (i.value = !1, k.value = !1, A(!1), m(!1), z(), n(\"closed\"), G.value && x(g.value)), xe(), n(\"blur\"), v.value?.$el?.remove());\n }, ya = (N, ue, me = !1) => {\n if (!N) {\n I.value = null;\n return;\n }\n const vt = Array.isArray(N) ? !N.some((Pt) => !L(Pt)) : L(N), ct = le(N);\n vt && ct ? (M.value = !0, I.value = N, ue ? (F.value = me, D(), n(\"text-submit\")) : a.autoApply && ht(!0), at().then(() => {\n M.value = !1;\n })) : n(\"invalid-date\", N);\n }, ha = () => {\n a.autoApply && le(I.value) && c(), fe();\n }, la = () => i.value ? Xe() : Ye(), ba = (N) => {\n I.value = N;\n }, ka = () => {\n $.value.enabled && (h.value = !0, o()), n(\"focus\");\n }, wa = () => {\n $.value.enabled && (h.value = !1, x(a.modelValue), F.value && Ol(T.value, _.value)?.focus()), n(\"blur\");\n }, Da = (N) => {\n v.value && v.value.updateMonthYear(0, {\n month: dn(N.month),\n year: dn(N.year)\n });\n }, Ma = (N) => {\n x(N ?? a.modelValue);\n }, an = (N, ue) => {\n v.value?.switchView(N, ue);\n }, b = (N, ue) => O.value.onClickOutside ? O.value.onClickOutside(N, ue) : Xe(!0), ae = (N = 0) => {\n v.value?.handleFlow(N);\n }, ve = () => P;\n return $o(\n P,\n R,\n (N) => b(St, N)\n ), t({\n closeMenu: Xe,\n selectDate: D,\n clearValue: nt,\n openMenu: Ye,\n onScroll: K,\n formatInputValue: o,\n // exposed for testing purposes\n updateInternalModelValue: ba,\n // modify internal modelValue\n setMonthYear: Da,\n parseModel: Ma,\n switchView: an,\n toggleMenu: la,\n handleFlow: ae,\n getDpWrapMenuRef: ve\n }), (N, ue) => (w(), W(\"div\", {\n ref_key: \"pickerWrapperRef\",\n ref: T,\n class: De(B.value),\n \"data-datepicker-instance\": \"\",\n \"data-dp-mobile\": s(Y)\n }, [\n tt(ko, He({\n ref_key: \"inputRef\",\n ref: R,\n \"input-value\": s(G),\n \"onUpdate:inputValue\": ue[0] || (ue[0] = (me) => ln(G) ? G.value = me : null),\n \"is-menu-open\": i.value\n }, N.$props, {\n onClear: nt,\n onOpen: Ye,\n onSetInputDate: ya,\n onSetEmptyDate: s(c),\n onSelectDate: D,\n onToggle: la,\n onClose: Xe,\n onFocus: ka,\n onBlur: wa,\n onRealBlur: ue[1] || (ue[1] = (me) => h.value = !1),\n onTextInput: ue[2] || (ue[2] = (me) => N.$emit(\"text-input\", me))\n }), Ge({ _: 2 }, [\n Ce(s(V), (me, vt) => ({\n name: me,\n fn: we((ct) => [\n ie(N.$slots, me, ze(Je(ct)))\n ])\n }))\n ]), 1040, [\"input-value\", \"is-menu-open\", \"onSetEmptyDate\"]),\n (w(), Te(fa(N.teleport ? rl : \"div\"), ze(Je(Ae.value)), {\n default: we(() => [\n tt(Vt, {\n name: s(pe)(s(S)),\n css: s(p) && !s(ee).enabled\n }, {\n default: we(() => [\n i.value ? (w(), W(\"div\", He({\n key: 0,\n ref_key: \"dpWrapMenuRef\",\n ref: P\n }, ne.value, {\n class: { \"dp--menu-wrapper\": !s(ee).enabled },\n style: s(ee).enabled ? void 0 : s(q)\n }), [\n tt(hn, He({\n ref_key: \"dpMenuRef\",\n ref: v\n }, N.$props, {\n \"internal-model-value\": s(I),\n \"onUpdate:internalModelValue\": ue[3] || (ue[3] = (me) => ln(I) ? I.value = me : null),\n class: { [be.value]: !0, \"dp--menu-wrapper\": N.teleport },\n \"open-on-top\": s(S),\n \"no-overlay-focus\": r.value,\n collapse: C.value,\n \"get-input-rect\": E,\n \"is-text-input-date\": M.value,\n onClosePicker: Xe,\n onSelectDate: D,\n onAutoApply: ht,\n onTimeUpdate: ha,\n onFlowStep: ue[4] || (ue[4] = (me) => N.$emit(\"flow-step\", me)),\n onUpdateMonthYear: ue[5] || (ue[5] = (me) => N.$emit(\"update-month-year\", me)),\n onInvalidSelect: ue[6] || (ue[6] = (me) => N.$emit(\"invalid-select\", s(I))),\n onAutoApplyInvalid: ue[7] || (ue[7] = (me) => N.$emit(\"invalid-select\", me)),\n onInvalidFixedRange: ue[8] || (ue[8] = (me) => N.$emit(\"invalid-fixed-range\", me)),\n onRecalculatePosition: s(se),\n onTooltipOpen: ue[9] || (ue[9] = (me) => N.$emit(\"tooltip-open\", me)),\n onTooltipClose: ue[10] || (ue[10] = (me) => N.$emit(\"tooltip-close\", me)),\n onTimePickerOpen: ue[11] || (ue[11] = (me) => N.$emit(\"time-picker-open\", me)),\n onTimePickerClose: ue[12] || (ue[12] = (me) => N.$emit(\"time-picker-close\", me)),\n onAmPmChange: ue[13] || (ue[13] = (me) => N.$emit(\"am-pm-change\", me)),\n onRangeStart: ue[14] || (ue[14] = (me) => N.$emit(\"range-start\", me)),\n onRangeEnd: ue[15] || (ue[15] = (me) => N.$emit(\"range-end\", me)),\n onDateUpdate: ue[16] || (ue[16] = (me) => N.$emit(\"date-update\", me)),\n onInvalidDate: ue[17] || (ue[17] = (me) => N.$emit(\"invalid-date\", me)),\n onOverlayToggle: ue[18] || (ue[18] = (me) => N.$emit(\"overlay-toggle\", me)),\n onMenuBlur: ue[19] || (ue[19] = (me) => N.$emit(\"blur\"))\n }), Ge({ _: 2 }, [\n Ce(s(y), (me, vt) => ({\n name: me,\n fn: we((ct) => [\n ie(N.$slots, me, ze(Je({ ...ct })))\n ])\n }))\n ]), 1040, [\"internal-model-value\", \"class\", \"open-on-top\", \"no-overlay-focus\", \"collapse\", \"is-text-input-date\", \"onRecalculatePosition\"])\n ], 16)) : Q(\"\", !0)\n ]),\n _: 3\n }, 8, [\"name\", \"css\"])\n ]),\n _: 3\n }, 16))\n ], 10, Ao));\n }\n}), qn = /* @__PURE__ */ (() => {\n const e = To;\n return e.install = (t) => {\n t.component(\"Vue3DatePicker\", e);\n }, e;\n})(), So = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n default: qn\n}, Symbol.toStringTag, { value: \"Module\" }));\nObject.entries(So).forEach(([e, t]) => {\n e !== \"default\" && (qn[e] = t);\n});\nexport {\n qn as default\n};\n","import { defineComponent, useModel, computed, openBlock, createBlock, unref, mergeModels } from \"vue\";\nimport { N as NcSelect } from \"./NcSelect-B1uITk_3.mjs\";\nimport { r as register, h as t45, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nregister(t45);\nfunction formatTimezoneId(timezoneId) {\n return timezoneId.slice(timezoneId.indexOf(\"/\") + 1).replaceAll(\"/\", \" - \").replaceAll(\"_\", \" \");\n}\nfunction getTimezones() {\n return Intl.supportedValuesOf(\"timeZone\").filter((tz) => !tz.startsWith(\"Etc/\")).map((timezoneId) => ({\n timezoneId,\n label: formatTimezoneId(timezoneId)\n })).sort((a, b) => a.timezoneId.localeCompare(b.timezoneId));\n}\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcTimezonePicker\",\n props: /* @__PURE__ */ mergeModels({\n additionalTimezones: { default: () => [] },\n uid: { default: createElementId() }\n }, {\n \"modelValue\": { default: \"floating\" },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n const formattedAdditionalTimezones = computed(() => {\n return props.additionalTimezones.map(({ timezoneId, label }) => ({\n timezoneId,\n label\n }));\n });\n const options = computed(() => {\n const timezones = getTimezones();\n timezones.unshift(...formattedAdditionalTimezones.value);\n return timezones;\n });\n function filterBy(option, label, search) {\n const terms = search.trim().split(/\\s+/);\n const values = Object.values(option);\n return terms.every((term) => {\n return values.some((value) => value.toLowerCase().includes(term.toLowerCase()));\n });\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(NcSelect, {\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n \"aria-label-combobox\": unref(t)(\"Search for time zone\"),\n clearable: false,\n filterBy,\n multiple: false,\n options: options.value,\n placeholder: unref(t)(\"Type to search time zone\"),\n uid: _ctx.uid,\n reduce: (option) => option.timezoneId,\n label: \"label\"\n }, null, 8, [\"modelValue\", \"aria-label-combobox\", \"options\", \"placeholder\", \"uid\", \"reduce\"]);\n };\n }\n});\nexport {\n _sfc_main as _\n};\n//# sourceMappingURL=NcTimezonePicker.vue_vue_type_script_setup_true_lang-8CBGI3yi.mjs.map\n","import '../assets/NcDateTimePicker-HT1ZTE-Z.css';\nimport { defineComponent, useModel, useTemplateRef, computed, openBlock, createElementBlock, createVNode, unref, mergeProps, createSlots, withCtx, createTextVNode, toDisplayString, createBlock, Teleport, createElementVNode, mergeModels } from \"vue\";\nimport { x as mdiChevronUp, y as mdiChevronDown, c as mdiChevronRight, z as mdiChevronLeft, A as mdiClock, B as mdiCalendarBlank, b as mdiClose } from \"./mdi-CpchYUUV.mjs\";\nimport { getCanonicalLocale, getFirstDay, getDayNamesMin, getDayNames } from \"@nextcloud/l10n\";\nimport VueDatePicker from \"@vuepic/vue-datepicker\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcTimezonePicker.vue_vue_type_script_setup_true_lang-8CBGI3yi.mjs\";\nimport { r as register, y as t13, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t13);\nconst _hoisted_1 = { class: \"vue-date-time-picker__wrapper\" };\nconst _hoisted_2 = {\n ref: \"target\",\n class: \"vue-date-time-picker__wrapper vue-date-time-picker__wrapper--teleport\"\n};\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcDateTimePicker\",\n props: /* @__PURE__ */ mergeModels({\n appendToBody: { type: Boolean },\n ariaLabel: { default: t(\"Datepicker input\") },\n ariaLabelMenu: { default: t(\"Datepicker menu\") },\n clearable: { type: Boolean },\n confirm: { type: Boolean },\n format: { type: [String, Function], default: void 0 },\n locale: { default: getCanonicalLocale() },\n max: { default: void 0 },\n min: { default: void 0 },\n minuteStep: { default: 10 },\n modelValue: { default: null },\n placeholder: { default: void 0 },\n showTimezoneSelect: { type: Boolean },\n showWeekNumber: { type: Boolean },\n type: { default: \"date\" },\n inline: { type: Boolean, default: false }\n }, {\n \"timezoneId\": { default: \"UTC\" },\n \"timezoneIdModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"update:modelValue\", \"update:timezoneId\", \"blur\"], [\"update:timezoneId\"]),\n setup(__props, { emit: __emit }) {\n const timezoneId = useModel(__props, \"timezoneId\");\n const props = __props;\n const emit = __emit;\n const targetElement = useTemplateRef(\"target\");\n const pickerInstance = useTemplateRef(\"picker\");\n const value = computed(() => {\n if (props.modelValue === null && props.clearable) {\n return null;\n }\n if (props.type === \"week\") {\n const date = props.modelValue instanceof Date ? props.modelValue : /* @__PURE__ */ new Date();\n const end = new Date(date);\n end.setUTCDate(date.getUTCDate() + 6);\n return [date, end];\n } else if (props.type === \"year\") {\n const date = props.modelValue instanceof Date ? props.modelValue : /* @__PURE__ */ new Date();\n return date.getUTCFullYear();\n } else if (props.type === \"month\") {\n const date = props.modelValue instanceof Date ? props.modelValue : /* @__PURE__ */ new Date();\n return { year: date.getUTCFullYear(), month: date.getUTCMonth() };\n } else if (props.type === \"time\") {\n const time = props.modelValue instanceof Date ? props.modelValue : /* @__PURE__ */ new Date();\n return {\n hours: time.getHours(),\n minutes: time.getMinutes(),\n seconds: time.getSeconds()\n };\n } else if (props.type === \"time-range\") {\n const time = [props.modelValue].flat();\n if (time.length !== 2) {\n const start = /* @__PURE__ */ new Date();\n const end = new Date(start);\n end.setHours(end.getHours() + 1);\n time.splice(0, 2, start, end);\n }\n return time.map((date) => ({\n hours: date.getHours(),\n minutes: date.getMinutes(),\n seconds: date.getSeconds()\n }));\n } else if (props.type.endsWith(\"-range\")) {\n if (props.modelValue === void 0) {\n const start = /* @__PURE__ */ new Date();\n const end = new Date(start);\n end.setUTCDate(start.getUTCDate() + 7);\n return [start, end];\n }\n return props.modelValue;\n }\n return props.modelValue ?? /* @__PURE__ */ new Date();\n });\n const placeholderFallback = computed(() => {\n if (props.type === \"date\") {\n return t(\"Select date\");\n } else if (props.type === \"time\") {\n return t(\"Select time\");\n } else if (props.type === \"datetime\") {\n return t(\"Select date and time\");\n } else if (props.type === \"week\") {\n return t(\"Select week\");\n } else if (props.type === \"month\") {\n return t(\"Select month\");\n } else if (props.type === \"year\") {\n return t(\"Select year\");\n } else if (props.type.endsWith(\"-range\")) {\n return t(\"Select time range\");\n }\n return t(\"Select date and time\");\n });\n const realFormat = computed(() => {\n if (props.format) {\n return props.format;\n } else if (props.type === \"week\") {\n return \"RR-II\";\n }\n let formatter;\n if (props.type === \"date\" || props.type === \"date-range\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { dateStyle: \"medium\" });\n } else if (props.type === \"time\" || props.type === \"time-range\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { timeStyle: \"short\" });\n } else if (props.type === \"datetime\" || props.type === \"datetime-range\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { dateStyle: \"medium\", timeStyle: \"short\" });\n } else if (props.type === \"month\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { year: \"numeric\", month: \"2-digit\" });\n } else if (props.type === \"year\") {\n formatter = new Intl.DateTimeFormat(getCanonicalLocale(), { year: \"numeric\" });\n }\n if (formatter) {\n return (input) => Array.isArray(input) ? formatter.formatRange(input[0], input[1]) : formatter.format(input);\n }\n return void 0;\n });\n const pickerType = computed(() => ({\n timePicker: props.type === \"time\" || props.type === \"time-range\",\n yearPicker: props.type === \"year\",\n monthPicker: props.type === \"month\",\n weekPicker: props.type === \"week\",\n range: props.type.endsWith(\"-range\") && {\n // do not use partial ranges (meaning after selecting the start [Date, null] will be emitted)\n // if this is needed someday we can enable it,\n // but its not covered by our component interface (props / events) documentation so just disabled for now.\n partialRange: false\n },\n enableTimePicker: !(props.type === \"date\" || props.type === \"date-range\"),\n flow: props.type === \"datetime\" ? [\"calendar\", \"time\"] : void 0\n }));\n const minTime = computed(() => props.min && { hours: props.min.getHours(), minutes: props.min.getMinutes(), seconds: props.min.getSeconds() });\n const maxTime = computed(() => props.max && { hours: props.max.getHours(), minutes: props.max.getMinutes(), seconds: props.max.getSeconds() });\n function onUpdateModelValue(value2) {\n if (value2 === null) {\n return emit(\"update:modelValue\", null);\n }\n if (props.type === \"time\") {\n emit(\"update:modelValue\", formatLibraryTime(value2));\n } else if (props.type === \"time-range\") {\n const start = formatLibraryTime(value2[0]);\n const end = formatLibraryTime(value2[1]);\n if (end.getTime() < start.getTime()) {\n end.setDate(end.getDate() + 1);\n }\n emit(\"update:modelValue\", [start, end]);\n } else if (props.type === \"month\") {\n const data = value2;\n emit(\"update:modelValue\", new Date(data.year, data.month, 1));\n } else if (props.type === \"year\") {\n emit(\"update:modelValue\", new Date(value2, 0));\n } else if (props.type === \"week\") {\n emit(\"update:modelValue\", value2[0]);\n } else {\n emit(\"update:modelValue\", value2);\n }\n }\n function formatLibraryTime(time) {\n const date = /* @__PURE__ */ new Date();\n date.setHours(time.hours);\n date.setMinutes(time.minutes);\n date.setSeconds(time.seconds);\n return date;\n }\n const weekStart = getFirstDay();\n const dayNames = [...getDayNamesMin()];\n for (let i = 0; i < weekStart; i++) {\n dayNames.push(dayNames.shift());\n }\n const weekNumName = t(\"W\");\n const ariaLabels = computed(() => ({\n toggleOverlay: t(\"Toggle overlay\"),\n menu: props.ariaLabelMenu,\n input: props.ariaLabel,\n openTimePicker: t(\"Open time picker\"),\n closeTimePicker: t(\"Close time Picker\"),\n incrementValue: (type) => {\n if (type === \"hours\") {\n return t(\"Increment hours\");\n } else if (type === \"minutes\") {\n return t(\"Increment minutes\");\n }\n return t(\"Increment seconds\");\n },\n decrementValue: (type) => {\n if (type === \"hours\") {\n return t(\"Decrement hours\");\n } else if (type === \"minutes\") {\n return t(\"Decrement minutes\");\n }\n return t(\"Decrement seconds\");\n },\n openTpOverlay: (type) => {\n if (type === \"hours\") {\n return t(\"Open hours overlay\");\n } else if (type === \"minutes\") {\n return t(\"Open minutes overlay\");\n }\n return t(\"Open seconds overlay\");\n },\n amPmButton: t(\"Switch AM/PM mode\"),\n openYearsOverlay: t(\"Open years overlay\"),\n openMonthsOverlay: t(\"Open months overlay\"),\n nextMonth: t(\"Next month\"),\n prevMonth: t(\"Previous month\"),\n nextYear: t(\"Next year\"),\n prevYear: t(\"Previous year\"),\n weekDay: (day) => getDayNames()[day],\n clearInput: t(\"Clear value\"),\n calendarIcon: t(\"Calendar icon\"),\n timePicker: t(\"Time picker\"),\n monthPicker: (overlay) => overlay ? t(\"Month picker overlay\") : t(\"Month picker\"),\n yearPicker: (overlay) => overlay ? t(\"Year picker overlay\") : t(\"Year picker\")\n }));\n function selectDate() {\n pickerInstance.value.selectDate();\n }\n function cancelSelection() {\n pickerInstance.value.closeMenu();\n }\n const calcMinMaxTime = computed(() => {\n if (props.type === \"datetime\") {\n return {\n minDate: props.min,\n maxDate: props.max,\n minTime: props.min && value.value && sameDay(props.min, value.value) ? minTime.value : void 0,\n maxTime: props.max && value.value && sameDay(props.max, value.value) ? maxTime.value : void 0\n };\n }\n if (props.type === \"datetime-range\") {\n return {\n minDate: props.min,\n maxDate: props.max,\n minTime: props.min && value.value ? sameDay(props.min, value.value[0]) ? minTime.value : void 0 : void 0,\n maxTime: props.max && value.value ? sameDay(props.max, value.value[1]) ? maxTime.value : void 0 : void 0\n };\n }\n if (props.type === \"time\" || props.type === \"time-range\") {\n return {\n minTime: props.min ? minTime.value : void 0,\n maxTime: props.max ? maxTime.value : void 0\n };\n }\n return {\n minDate: props.min,\n maxDate: props.max\n };\n });\n function sameDay(a, b) {\n return a.getFullYear() === b.getFullYear() && a.getMonth() === b.getMonth() && a.getDate() === b.getDate();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createVNode(unref(VueDatePicker), mergeProps({\n ref: \"picker\",\n \"aria-labels\": ariaLabels.value,\n autoApply: !_ctx.confirm,\n class: [\"vue-date-time-picker\", { \"vue-date-time-picker--clearable\": _ctx.clearable }],\n cancelText: unref(t)(\"Cancel\"),\n clearable: _ctx.clearable,\n dayNames,\n placeholder: _ctx.placeholder ?? placeholderFallback.value,\n format: realFormat.value,\n locale: _ctx.locale,\n minDate: calcMinMaxTime.value.minDate,\n maxDate: calcMinMaxTime.value.maxDate,\n minTime: calcMinMaxTime.value.minTime,\n maxTime: calcMinMaxTime.value.maxTime,\n minutesIncrement: _ctx.minuteStep,\n modelValue: value.value,\n nowButtonLabel: unref(t)(\"Now\"),\n selectText: unref(t)(\"Pick\"),\n sixWeeks: \"fair\",\n inline: _ctx.inline,\n teleport: _ctx.appendToBody ? targetElement.value || void 0 : false,\n textInput: \"\",\n weekNumName: unref(weekNumName),\n weekNumbers: _ctx.showWeekNumber ? { type: \"iso\" } : void 0,\n weekStart: unref(weekStart)\n }, pickerType.value, {\n \"onUpdate:modelValue\": onUpdateModelValue,\n onBlur: _cache[1] || (_cache[1] = ($event) => emit(\"blur\"))\n }), createSlots({\n \"action-buttons\": withCtx(() => [\n createVNode(unref(NcButton), {\n size: \"small\",\n variant: \"tertiary\",\n onClick: cancelSelection\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"Cancel\")), 1)\n ]),\n _: 1\n }),\n createVNode(unref(NcButton), {\n size: \"small\",\n variant: \"primary\",\n onClick: selectDate\n }, {\n default: withCtx(() => [\n createTextVNode(toDisplayString(unref(t)(\"Pick\")), 1)\n ]),\n _: 1\n })\n ]),\n \"clear-icon\": withCtx(({ clear }) => [\n createVNode(unref(NcButton), {\n \"aria-label\": unref(t)(\"Clear value\"),\n variant: \"tertiary-no-background\",\n onClick: clear\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiClose),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n _: 2\n }, 1032, [\"aria-label\", \"onClick\"])\n ]),\n \"input-icon\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n path: unref(mdiCalendarBlank),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"clock-icon\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiClock),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"arrow-left\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiChevronLeft),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"arrow-right\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiChevronRight),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"arrow-down\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiChevronDown),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n \"arrow-up\": withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n inline: \"\",\n path: unref(mdiChevronUp),\n size: 20\n }, null, 8, [\"path\"])\n ]),\n _: 2\n }, [\n _ctx.showTimezoneSelect ? {\n name: \"action-extra\",\n fn: withCtx(() => [\n createVNode(_sfc_main$1, {\n modelValue: timezoneId.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => timezoneId.value = $event),\n class: \"vue-date-time-picker__timezone\",\n appendToBody: false,\n inputLabel: unref(t)(\"Time zone\")\n }, null, 8, [\"modelValue\", \"inputLabel\"])\n ]),\n key: \"0\"\n } : void 0\n ]), 1040, [\"aria-labels\", \"autoApply\", \"class\", \"cancelText\", \"clearable\", \"placeholder\", \"format\", \"locale\", \"minDate\", \"maxDate\", \"minTime\", \"maxTime\", \"minutesIncrement\", \"modelValue\", \"nowButtonLabel\", \"selectText\", \"inline\", \"teleport\", \"weekNumName\", \"weekNumbers\", \"weekStart\"]),\n (openBlock(), createBlock(Teleport, {\n to: \"body\",\n disabled: !_ctx.appendToBody\n }, [\n createElementVNode(\"div\", _hoisted_2, null, 512)\n ], 8, [\"disabled\"]))\n ]);\n };\n }\n});\nconst NcDateTimePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-e6654786\"]]);\nexport {\n NcDateTimePicker as N\n};\n//# sourceMappingURL=NcDateTimePicker-DksKisgE.mjs.map\n","import '../assets/NcFilePicker-CimiKIH1.css';\nimport { openBlock, createElementBlock, mergeProps, createElementVNode, toDisplayString, createCommentVNode, defineComponent, useTemplateRef, computed, normalizeClass, createVNode, withCtx, createBlock, createTextVNode, unref, Fragment, renderList, renderSlot, nextTick } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { N as NcActionButton } from \"./NcActionButton-BuRnYpJX.mjs\";\nimport { N as NcActionCaption } from \"./NcActionCaption-f7L9gBlT.mjs\";\nimport { N as NcActions } from \"./NcActions-B_QR93qv.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { N as NcLoadingIcon } from \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nconst _sfc_main$3 = {\n name: \"FolderUploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M20,6A2,2 0 0,1 22,8V18A2,2 0 0,1 20,20H4A2,2 0 0,1 2,18V6A2,2 0 0,1 4,4H10L12,6H20M10.75,13H14V17H16V13H19.25L15,8.75\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon folder-upload-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$3);\n}\nconst IconFolderUpload = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$2]]);\nconst _sfc_main$2 = {\n name: \"PlusIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$1 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M19,13H13V19H11V13H5V11H11V5H13V11H19V13Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon plus-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$1))\n ], 16, _hoisted_1$2);\n}\nconst IconPlus = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$1]]);\nconst _sfc_main$1 = {\n name: \"UploadIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$1 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3 = { d: \"M9,16V10H5L12,3L19,10H15V16H9M5,20V18H19V20H5Z\" };\nconst _hoisted_4 = { key: 0 };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon upload-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2))\n ], 16, _hoisted_1$1);\n}\nconst IconUpload = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render]]);\n/*!\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst gtBuilder = getGettextBuilder().detectLanguage();\nconst gt = gtBuilder.build();\ngt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\nconst _hoisted_1 = [\"accept\", \"multiple\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFilePicker\",\n props: {\n accept: { default: void 0 },\n actionCaption: { default: \"\" },\n actions: { default: () => [] },\n directory: { type: Boolean },\n directoryOnly: { type: Boolean },\n disabled: { type: Boolean },\n iconOnly: { type: Boolean },\n label: { default: void 0 },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n variant: { default: \"primary\" }\n },\n emits: [\"pick\"],\n setup(__props, { expose: __expose, emit: __emit }) {\n const props = __props;\n const emit = __emit;\n __expose({\n reset\n });\n const formElement = useTemplateRef(\"form\");\n const inputElement = useTemplateRef(\"input\");\n const currentLabel = computed(() => {\n if (props.loading) {\n return t(\"Uploading …\");\n } else if (props.label) {\n return props.label;\n } else if (props.directoryOnly) {\n return t(\"Pick folder\");\n }\n return props.multiple ? t(\"Pick files\") : t(\"Pick file\");\n });\n const canUploadFolders = computed(() => {\n return (props.directory || props.directoryOnly) && \"webkitdirectory\" in HTMLInputElement.prototype;\n });\n function triggerPickFiles(uploadFolders) {\n reset();\n if (canUploadFolders.value) {\n inputElement.value.webkitdirectory = uploadFolders;\n }\n nextTick(() => inputElement.value.click());\n }\n function onPick() {\n const files = inputElement.value?.files ? Array.from(inputElement.value.files) : [];\n emit(\"pick\", files);\n }\n function reset() {\n formElement.value.reset();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"form\", {\n ref: \"form\",\n class: normalizeClass(_ctx.$style.filePicker)\n }, [\n createVNode(NcActions, {\n \"aria-label\": currentLabel.value,\n disabled: _ctx.disabled || _ctx.loading,\n menuName: _ctx.iconOnly ? void 0 : currentLabel.value,\n forceName: !_ctx.iconOnly,\n variant: _ctx.variant\n }, {\n icon: withCtx(() => [\n !_ctx.loading ? renderSlot(_ctx.$slots, \"icon\", { key: 0 }, () => [\n createVNode(IconPlus, { size: 20 })\n ]) : (openBlock(), createBlock(NcLoadingIcon, { key: 1 }))\n ]),\n default: withCtx(() => [\n _ctx.actionCaption ? (openBlock(), createBlock(NcActionCaption, {\n key: 0,\n name: _ctx.actionCaption\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n !_ctx.directoryOnly ? (openBlock(), createBlock(NcActionButton, {\n key: 1,\n closeAfterClick: \"\",\n onClick: _cache[0] || (_cache[0] = ($event) => triggerPickFiles(false))\n }, {\n icon: withCtx(() => [\n createVNode(IconUpload, { size: 20 })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(canUploadFolders.value || _ctx.$slots.actions ? _ctx.multiple ? unref(t)(\"Upload files\") : unref(t)(\"Upload file\") : currentLabel.value), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n canUploadFolders.value ? (openBlock(), createBlock(NcActionButton, {\n key: 2,\n closeAfterClick: \"\",\n onClick: _cache[1] || (_cache[1] = ($event) => triggerPickFiles(true))\n }, {\n icon: withCtx(() => [\n createVNode(IconFolderUpload, {\n style: { \"color\": \"var(--color-primary-element)\" },\n size: 20\n })\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(!_ctx.directoryOnly || _ctx.$slots.actions ? unref(t)(\"Upload folder\") : currentLabel.value), 1)\n ]),\n _: 1\n })) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(_ctx.actions, (group) => {\n return openBlock(), createElementBlock(Fragment, null, [\n group.caption ? (openBlock(), createBlock(NcActionCaption, {\n key: group.caption,\n name: group.caption\n }, null, 8, [\"name\"])) : createCommentVNode(\"\", true),\n (openBlock(true), createElementBlock(Fragment, null, renderList(group.actions ?? [group], (action) => {\n return openBlock(), createBlock(NcActionButton, {\n key: action.label,\n closeAfterClick: \"\",\n onClick: action.onClick\n }, {\n icon: withCtx(() => [\n createVNode(NcIconSvgWrapper, {\n svg: action.iconSvg\n }, null, 8, [\"svg\"])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString(action.label), 1)\n ]),\n _: 2\n }, 1032, [\"onClick\"]);\n }), 128))\n ], 64);\n }), 256))\n ]),\n _: 3\n }, 8, [\"aria-label\", \"disabled\", \"menuName\", \"forceName\", \"variant\"]),\n createElementVNode(\"input\", {\n ref: \"input\",\n accept: _ctx.accept?.join(\", \"),\n \"aria-hidden\": \"true\",\n class: \"hidden-visually\",\n multiple: _ctx.multiple,\n type: \"file\",\n onChange: onPick\n }, null, 40, _hoisted_1),\n renderSlot(_ctx.$slots, \"default\")\n ], 2);\n };\n }\n});\nconst filePicker = \"_filePicker_UHtO-\";\nconst style0 = {\n filePicker\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcFilePicker = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcFilePicker as N\n};\n//# sourceMappingURL=NcFilePicker-DtOsHB4q.mjs.map\n","import '../assets/NcKbd-BeQpGp0b.css';\nimport { defineComponent, computed, openBlock, createElementBlock, normalizeClass, renderSlot, createTextVNode, toDisplayString } from \"vue\";\nimport { r as register, o as t7, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { i as isMac } from \"./platform-CC2ecGvV.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t7);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcKbd\",\n props: {\n symbol: { default: () => void 0 },\n mac: { type: Boolean, default: () => isMac }\n },\n setup(__props) {\n const labels = computed(() => ({\n ArrowUp: \"↑\",\n ArrowDown: \"↓\",\n ArrowLeft: \"←\",\n ArrowRight: \"→\",\n Control: !__props.mac ? t(\"Ctrl\") : \"⌘\",\n Alt: !__props.mac ? t(\"Alt\") : \"⌥\",\n Shift: !__props.mac ? t(\"Shift\") : \"⇧\",\n Enter: !__props.mac ? t(\"Enter\") : \"⏎\",\n Tab: !__props.mac ? t(\"Tab\") : \"⇥\",\n Delete: !__props.mac ? t(\"Delete\") : \"⌫\",\n Escape: !__props.mac ? t(\"Escape\") : \"⎋\",\n Space: t(\"Space\")\n // TRANSLATORS: Space key on keyboard\n }));\n const label = computed(() => __props.symbol && labels.value[__props.symbol] || __props.symbol);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"kbd\", {\n class: normalizeClass(_ctx.$style.kbd)\n }, [\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n createTextVNode(toDisplayString(label.value), 1)\n ])\n ], 2);\n };\n }\n});\nconst kbd = \"_kbd_3V7rw\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_FHHYV\",\n kbd\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcKbd = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcKbd as N\n};\n//# sourceMappingURL=NcKbd-DE1emmb_.mjs.map\n","import '../assets/NcHotkeyList-Braxeyah.css';\nimport { defineComponent, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, unref, renderSlot } from \"vue\";\nimport { r as register, p as t31, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t31);\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcHotkeyList\",\n props: {\n label: { default: () => void 0 }\n },\n setup(__props) {\n const labelId = `NcHotkeyList_${createElementId()}`;\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass(_ctx.$style.hotkeyList)\n }, [\n createElementVNode(\"div\", {\n id: labelId,\n class: normalizeClass([_ctx.$style.hotkeyList__heading, { \"hidden-visually\": !_ctx.label }])\n }, toDisplayString(_ctx.label || unref(t)(\"Keyboard shortcuts\")), 3),\n createElementVNode(\"ul\", { \"aria-labelledby\": labelId }, [\n renderSlot(_ctx.$slots, \"default\")\n ])\n ], 2);\n };\n }\n});\nconst hotkeyList = \"_hotkeyList_xNXCh\";\nconst hotkeyList__heading = \"_hotkeyList__heading_j6G86\";\nconst style0 = {\n hotkeyList,\n hotkeyList__heading\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcHotkeyList = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcHotkeyList as N\n};\n//# sourceMappingURL=NcHotkeyList-CHLWkWfY.mjs.map\n","import '../assets/NcListItemIcon-DJRcmlo1.css';\nimport \"escape-html\";\nimport \"striptags\";\nimport { resolveComponent, openBlock, createElementBlock, normalizeStyle, normalizeClass, createVNode, mergeProps, createElementVNode, createBlock, toDisplayString, createCommentVNode, renderSlot } from \"vue\";\nimport \"../composables/useIsDarkTheme/index.mjs\";\nimport \"@nextcloud/router\";\nimport \"../functions/isDarkTheme/index.mjs\";\nimport \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_45238efd_lang-D6LzDiYf.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { u as userStatus, N as NcAvatar } from \"./NcAvatar-ruClKRzS.mjs\";\nimport { _ as _sfc_main$1 } from \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nconst margin = 8;\nconst defaultSize = 32;\nconst _sfc_main = {\n name: \"NcListItemIcon\",\n components: {\n NcAvatar,\n NcHighlight: _sfc_main$1,\n NcIconSvgWrapper\n },\n mixins: [\n userStatus\n ],\n props: {\n /**\n * Default first line text\n */\n name: {\n type: String,\n required: true\n },\n /**\n * Secondary optional line\n * Only visible on size of 32 and above\n */\n subname: {\n type: String,\n default: \"\"\n },\n /**\n * Icon class to be displayed at the end of the component\n */\n icon: {\n type: String,\n default: \"\"\n },\n /**\n * SVG icon to be displayed at the end of the component\n */\n iconSvg: {\n type: String,\n default: \"\"\n },\n /**\n * Descriptive name for the icon\n */\n iconName: {\n type: String,\n default: \"\"\n },\n /**\n * Search within the highlight of name/subname\n */\n search: {\n type: String,\n default: \"\"\n },\n /**\n * Set a size in px that will define the avatar height/width\n * and therefore, the height of the component\n */\n avatarSize: {\n type: Number,\n default: defaultSize\n },\n /**\n * Disable the margins of this component.\n * Useful for integration in `NcSelect` for example\n */\n noMargin: {\n type: Boolean,\n default: false\n },\n /**\n * See the [Avatar](#Avatar) displayName prop\n * Fallback to name\n */\n displayName: {\n type: String,\n default: null\n },\n /**\n * See the [Avatar](#Avatar) isNoUser prop\n * Enable/disable the UserStatus fetching\n */\n isNoUser: {\n type: Boolean,\n default: false\n },\n /**\n * Unique list item ID\n */\n id: {\n type: String,\n default: null\n }\n },\n setup() {\n return {\n margin,\n defaultSize\n };\n },\n computed: {\n hasIcon() {\n return this.icon !== \"\";\n },\n hasIconSvg() {\n return this.iconSvg !== \"\";\n },\n isValidSubname() {\n return this.subname?.trim?.() !== \"\";\n },\n isSizeBigEnough() {\n return this.avatarSize >= 26;\n },\n cssVars() {\n const margin2 = this.noMargin ? 0 : this.margin;\n return {\n \"--height\": this.avatarSize + 2 * margin2 + \"px\",\n \"--margin\": this.margin + \"px\"\n };\n },\n /**\n * Separates the search property into two parts, the first one is the search part on the name, the second on the subname.\n *\n * @return {[string, string]}\n */\n searchParts() {\n const EMAIL_NOTATION = /^([^<]*)<([^>]+)>?$/;\n const match = this.search.match(EMAIL_NOTATION);\n if (this.isNoUser || !match) {\n return [this.search, this.search];\n }\n return [match[1].trim(), match[2]];\n }\n },\n beforeMount() {\n if (!this.isNoUser && !this.subname) {\n this.fetchUserStatus(this.user);\n }\n }\n};\nconst _hoisted_1 = [\"id\"];\nconst _hoisted_2 = { class: \"option__details\" };\nconst _hoisted_3 = { key: 1 };\nconst _hoisted_4 = [\"aria-label\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcAvatar = resolveComponent(\"NcAvatar\");\n const _component_NcHighlight = resolveComponent(\"NcHighlight\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return openBlock(), createElementBlock(\"span\", {\n id: $props.id,\n class: normalizeClass([\"option\", { \"option--compact\": $props.avatarSize < $setup.defaultSize }]),\n style: normalizeStyle($options.cssVars)\n }, [\n createVNode(_component_NcAvatar, mergeProps(_ctx.$attrs, {\n disableMenu: \"\",\n disableTooltip: \"\",\n displayName: $props.displayName || $props.name,\n isNoUser: $props.isNoUser,\n size: $props.avatarSize,\n class: \"option__avatar\"\n }), null, 16, [\"displayName\", \"isNoUser\", \"size\"]),\n createElementVNode(\"div\", _hoisted_2, [\n createVNode(_component_NcHighlight, {\n class: \"option__lineone\",\n text: $props.name,\n search: $options.searchParts[0]\n }, null, 8, [\"text\", \"search\"]),\n $options.isValidSubname && $options.isSizeBigEnough ? (openBlock(), createBlock(_component_NcHighlight, {\n key: 0,\n class: \"option__linetwo\",\n text: $props.subname,\n search: $options.searchParts[1]\n }, null, 8, [\"text\", \"search\"])) : _ctx.hasStatus ? (openBlock(), createElementBlock(\"span\", _hoisted_3, [\n createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.icon), 1),\n createElementVNode(\"span\", null, toDisplayString(_ctx.userStatus.message), 1)\n ])) : createCommentVNode(\"\", true)\n ]),\n renderSlot(_ctx.$slots, \"default\", {}, () => [\n $options.hasIconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 0,\n class: \"option__icon\",\n svg: $props.iconSvg,\n name: $props.iconName\n }, null, 8, [\"svg\", \"name\"])) : $options.hasIcon ? (openBlock(), createElementBlock(\"span\", {\n key: 1,\n class: normalizeClass([\"icon option__icon\", $props.icon]),\n \"aria-label\": $props.iconName\n }, null, 10, _hoisted_4)) : createCommentVNode(\"\", true)\n ], true)\n ], 14, _hoisted_1);\n}\nconst NcListItemIcon = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-0ee94269\"]]);\nexport {\n NcListItemIcon as N\n};\n//# sourceMappingURL=NcListItemIcon-DJJR4RtI.mjs.map\n","if (!Array.prototype.find) {\n Array.prototype.find = function(predicate) {\n if (this === null) {\n throw new TypeError('Array.prototype.find called on null or undefined')\n }\n if (typeof predicate !== 'function') {\n throw new TypeError('predicate must be a function')\n }\n var list = Object(this);\n var length = list.length >>> 0;\n var thisArg = arguments[1];\n var value;\n\n for (var i = 0; i < length; i++) {\n value = list[i];\n if (predicate.call(thisArg, value, i, list)) {\n return value\n }\n }\n return undefined\n };\n}\n\nif (window && typeof window.CustomEvent !== \"function\") {\n function CustomEvent$1(event, params) {\n params = params || {\n bubbles: false,\n cancelable: false,\n detail: undefined\n };\n var evt = document.createEvent('CustomEvent');\n evt.initCustomEvent(event, params.bubbles, params.cancelable, params.detail);\n return evt\n }\n\n if (typeof window.Event !== 'undefined') {\n CustomEvent$1.prototype = window.Event.prototype;\n }\n\n window.CustomEvent = CustomEvent$1;\n}\n\nclass TributeEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.events = this;\n }\n\n static keys() {\n return [\n {\n key: 9,\n value: \"TAB\"\n },\n {\n key: 8,\n value: \"DELETE\"\n },\n {\n key: 13,\n value: \"ENTER\"\n },\n {\n key: 27,\n value: \"ESCAPE\"\n },\n {\n key: 32,\n value: \"SPACE\"\n },\n {\n key: 38,\n value: \"UP\"\n },\n {\n key: 40,\n value: \"DOWN\"\n }\n ];\n }\n\n bind(element) {\n element.boundKeydown = this.keydown.bind(element, this);\n element.boundKeyup = this.keyup.bind(element, this);\n element.boundInput = this.input.bind(element, this);\n\n element.addEventListener(\"keydown\", element.boundKeydown, false);\n element.addEventListener(\"keyup\", element.boundKeyup, false);\n element.addEventListener(\"input\", element.boundInput, false);\n }\n\n unbind(element) {\n element.removeEventListener(\"keydown\", element.boundKeydown, false);\n element.removeEventListener(\"keyup\", element.boundKeyup, false);\n element.removeEventListener(\"input\", element.boundInput, false);\n\n delete element.boundKeydown;\n delete element.boundKeyup;\n delete element.boundInput;\n }\n\n keydown(instance, event) {\n if (instance.shouldDeactivate(event)) {\n instance.tribute.isActive = false;\n instance.tribute.hideMenu();\n }\n\n let element = this;\n instance.commandEvent = false;\n\n TributeEvents.keys().forEach(o => {\n if (o.key === event.keyCode) {\n instance.commandEvent = true;\n instance.callbacks()[o.value.toLowerCase()](event, element);\n }\n });\n }\n\n input(instance, event) {\n instance.inputEvent = true;\n instance.keyup.call(this, instance, event);\n }\n\n click(instance, event) {\n let tribute = instance.tribute;\n if (tribute.menu && tribute.menu.contains(event.target)) {\n let li = event.target;\n event.preventDefault();\n event.stopPropagation();\n while (li.nodeName.toLowerCase() !== \"li\") {\n li = li.parentNode;\n if (!li || li === tribute.menu) {\n throw new Error(\"cannot find the
  • container for the click\");\n }\n }\n tribute.selectItemAtIndex(li.getAttribute(\"data-index\"), event);\n tribute.hideMenu();\n\n // TODO: should fire with externalTrigger and target is outside of menu\n } else if (tribute.current.element && !tribute.current.externalTrigger) {\n tribute.current.externalTrigger = false;\n setTimeout(() => tribute.hideMenu());\n }\n }\n\n keyup(instance, event) {\n if (instance.inputEvent) {\n instance.inputEvent = false;\n }\n instance.updateSelection(this);\n\n if (event.keyCode === 27) return;\n\n if (!instance.tribute.allowSpaces && instance.tribute.hasTrailingSpace) {\n instance.tribute.hasTrailingSpace = false;\n instance.commandEvent = true;\n instance.callbacks()[\"space\"](event, this);\n return;\n }\n\n if (!instance.tribute.isActive) {\n if (instance.tribute.autocompleteMode) {\n instance.callbacks().triggerChar(event, this, \"\");\n } else {\n let keyCode = instance.getKeyCode(instance, this, event);\n\n if (isNaN(keyCode) || !keyCode) return;\n\n let trigger = instance.tribute.triggers().find(trigger => {\n return trigger.charCodeAt(0) === keyCode;\n });\n\n if (typeof trigger !== \"undefined\") {\n instance.callbacks().triggerChar(event, this, trigger);\n }\n }\n }\n\n if (\n instance.tribute.current.mentionText.length <\n instance.tribute.current.collection.menuShowMinLength\n ) {\n return;\n }\n\n if (\n ((instance.tribute.current.trigger ||\n instance.tribute.autocompleteMode) &&\n instance.commandEvent === false) ||\n (instance.tribute.isActive && event.keyCode === 8)\n ) {\n instance.tribute.showMenuFor(this, true);\n }\n }\n\n shouldDeactivate(event) {\n if (!this.tribute.isActive) return false;\n\n if (this.tribute.current.mentionText.length === 0) {\n let eventKeyPressed = false;\n TributeEvents.keys().forEach(o => {\n if (event.keyCode === o.key) eventKeyPressed = true;\n });\n\n return !eventKeyPressed;\n }\n\n return false;\n }\n\n getKeyCode(instance, el, event) {\n let tribute = instance.tribute;\n let info = tribute.range.getTriggerInfo(\n false,\n tribute.hasTrailingSpace,\n true,\n tribute.allowSpaces,\n tribute.autocompleteMode\n );\n\n if (info) {\n return info.mentionTriggerChar.charCodeAt(0);\n } else {\n return false;\n }\n }\n\n updateSelection(el) {\n this.tribute.current.element = el;\n let info = this.tribute.range.getTriggerInfo(\n false,\n this.tribute.hasTrailingSpace,\n true,\n this.tribute.allowSpaces,\n this.tribute.autocompleteMode\n );\n\n if (info) {\n this.tribute.current.selectedPath = info.mentionSelectedPath;\n this.tribute.current.mentionText = info.mentionText;\n this.tribute.current.selectedOffset = info.mentionSelectedOffset;\n }\n }\n\n callbacks() {\n return {\n triggerChar: (e, el, trigger) => {\n let tribute = this.tribute;\n tribute.current.trigger = trigger;\n\n let collectionItem = tribute.collection.find(item => {\n return item.trigger === trigger;\n });\n\n tribute.current.collection = collectionItem;\n\n if (\n tribute.current.mentionText.length >=\n tribute.current.collection.menuShowMinLength &&\n tribute.inputEvent\n ) {\n tribute.showMenuFor(el, true);\n }\n },\n enter: (e, el) => {\n // choose selection\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.selectItemAtIndex(this.tribute.menuSelected, e);\n this.tribute.hideMenu();\n }, 0);\n }\n },\n escape: (e, el) => {\n if (this.tribute.isActive) {\n e.preventDefault();\n e.stopPropagation();\n this.tribute.isActive = false;\n this.tribute.hideMenu();\n }\n },\n tab: (e, el) => {\n // choose first match\n this.callbacks().enter(e, el);\n },\n space: (e, el) => {\n if (this.tribute.isActive) {\n if (this.tribute.spaceSelectsMatch) {\n this.callbacks().enter(e, el);\n } else if (!this.tribute.allowSpaces) {\n e.stopPropagation();\n setTimeout(() => {\n this.tribute.hideMenu();\n this.tribute.isActive = false;\n }, 0);\n }\n }\n },\n up: (e, el) => {\n // navigate up ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length,\n selected = this.tribute.menuSelected;\n\n if (count > selected && selected > 0) {\n this.tribute.menuSelected--;\n this.setActiveLi();\n } else if (selected === 0) {\n this.tribute.menuSelected = count - 1;\n this.setActiveLi();\n this.tribute.menu.scrollTop = this.tribute.menu.scrollHeight;\n }\n }\n },\n down: (e, el) => {\n // navigate down ul\n if (this.tribute.isActive && this.tribute.current.filteredItems) {\n e.preventDefault();\n e.stopPropagation();\n let count = this.tribute.current.filteredItems.length - 1,\n selected = this.tribute.menuSelected;\n\n if (count > selected) {\n this.tribute.menuSelected++;\n this.setActiveLi();\n } else if (count === selected) {\n this.tribute.menuSelected = 0;\n this.setActiveLi();\n this.tribute.menu.scrollTop = 0;\n }\n }\n },\n delete: (e, el) => {\n if (\n this.tribute.isActive &&\n this.tribute.current.mentionText.length < 1\n ) {\n this.tribute.hideMenu();\n } else if (this.tribute.isActive) {\n this.tribute.showMenuFor(el);\n }\n }\n };\n }\n\n setActiveLi(index) {\n let lis = this.tribute.menu.querySelectorAll(\"li\"),\n length = lis.length >>> 0;\n\n if (index) this.tribute.menuSelected = parseInt(index);\n\n for (let i = 0; i < length; i++) {\n let li = lis[i];\n if (i === this.tribute.menuSelected) {\n li.classList.add(this.tribute.current.collection.selectClass);\n\n let liClientRect = li.getBoundingClientRect();\n let menuClientRect = this.tribute.menu.getBoundingClientRect();\n\n if (liClientRect.bottom > menuClientRect.bottom) {\n let scrollDistance = liClientRect.bottom - menuClientRect.bottom;\n this.tribute.menu.scrollTop += scrollDistance;\n } else if (liClientRect.top < menuClientRect.top) {\n let scrollDistance = menuClientRect.top - liClientRect.top;\n this.tribute.menu.scrollTop -= scrollDistance;\n }\n } else {\n li.classList.remove(this.tribute.current.collection.selectClass);\n }\n }\n }\n\n getFullHeight(elem, includeMargin) {\n let height = elem.getBoundingClientRect().height;\n\n if (includeMargin) {\n let style = elem.currentStyle || window.getComputedStyle(elem);\n return (\n height + parseFloat(style.marginTop) + parseFloat(style.marginBottom)\n );\n }\n\n return height;\n }\n}\n\nclass TributeMenuEvents {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.menuEvents = this;\n this.menu = this.tribute.menu;\n }\n\n bind(menu) {\n this.menuClickEvent = this.tribute.events.click.bind(null, this);\n this.menuContainerScrollEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.showMenuFor(this.tribute.current.element, false);\n }\n },\n 300,\n false\n );\n this.windowResizeEvent = this.debounce(\n () => {\n if (this.tribute.isActive) {\n this.tribute.range.positionMenuAtCaret(true);\n }\n },\n 300,\n false\n );\n\n // fixes IE11 issues with mousedown\n this.tribute.range\n .getDocument()\n .addEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .addEventListener(\"mousedown\", this.menuClickEvent, false);\n window.addEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.addEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.addEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n unbind(menu) {\n this.tribute.range\n .getDocument()\n .removeEventListener(\"mousedown\", this.menuClickEvent, false);\n this.tribute.range\n .getDocument()\n .removeEventListener(\"MSPointerDown\", this.menuClickEvent, false);\n window.removeEventListener(\"resize\", this.windowResizeEvent);\n\n if (this.menuContainer) {\n this.menuContainer.removeEventListener(\n \"scroll\",\n this.menuContainerScrollEvent,\n false\n );\n } else {\n window.removeEventListener(\"scroll\", this.menuContainerScrollEvent);\n }\n }\n\n debounce(func, wait, immediate) {\n var timeout;\n return () => {\n var context = this,\n args = arguments;\n var later = () => {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n }\n}\n\n// Thanks to https://github.com/jeff-collins/ment.io\n\nclass TributeRange {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.range = this;\n }\n\n getDocument() {\n let iframe;\n if (this.tribute.current.collection) {\n iframe = this.tribute.current.collection.iframe;\n }\n\n if (!iframe) {\n return document\n }\n\n return iframe.contentWindow.document\n }\n\n positionMenuAtCaret(scrollTo) {\n let context = this.tribute.current,\n coordinates;\n\n let info = this.getTriggerInfo(false, this.tribute.hasTrailingSpace, true, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (typeof info !== 'undefined') {\n\n if(!this.tribute.positionMenu){\n this.tribute.menu.style.cssText = `display: block;`;\n return\n }\n\n if (!this.isContentEditable(context.element)) {\n coordinates = this.getTextAreaOrInputUnderlinePosition(this.tribute.current.element,\n info.mentionPosition);\n }\n else {\n coordinates = this.getContentEditableCaretPosition(info.mentionPosition);\n }\n\n this.tribute.menu.style.cssText = `top: ${coordinates.top}px;\n left: ${coordinates.left}px;\n right: ${coordinates.right}px;\n bottom: ${coordinates.bottom}px;\n position: absolute;\n display: block;`;\n\n if (coordinates.left === 'auto') {\n this.tribute.menu.style.left = 'auto';\n }\n\n if (coordinates.top === 'auto') {\n this.tribute.menu.style.top = 'auto';\n }\n\n if (scrollTo) this.scrollIntoView();\n\n window.setTimeout(() => {\n let menuDimensions = {\n width: this.tribute.menu.offsetWidth,\n height: this.tribute.menu.offsetHeight\n };\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n let menuIsOffScreenHorizontally = window.innerWidth > menuDimensions.width && (menuIsOffScreen.left || menuIsOffScreen.right);\n let menuIsOffScreenVertically = window.innerHeight > menuDimensions.height && (menuIsOffScreen.top || menuIsOffScreen.bottom);\n if (menuIsOffScreenHorizontally || menuIsOffScreenVertically) {\n this.tribute.menu.style.cssText = 'display: none';\n this.positionMenuAtCaret(scrollTo);\n }\n }, 0);\n\n } else {\n this.tribute.menu.style.cssText = 'display: none';\n }\n }\n\n get menuContainerIsBody() {\n return this.tribute.menuContainer === document.body || !this.tribute.menuContainer;\n }\n\n\n selectElement(targetElement, path, offset) {\n let range;\n let elem = targetElement;\n\n if (path) {\n for (var i = 0; i < path.length; i++) {\n elem = elem.childNodes[path[i]];\n if (elem === undefined) {\n return\n }\n while (elem.length < offset) {\n offset -= elem.length;\n elem = elem.nextSibling;\n }\n if (elem.childNodes.length === 0 && !elem.length) {\n elem = elem.previousSibling;\n }\n }\n }\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(elem, offset);\n range.setEnd(elem, offset);\n range.collapse(true);\n\n try {\n sel.removeAllRanges();\n } catch (error) {}\n\n sel.addRange(range);\n targetElement.focus();\n }\n\n replaceTriggerText(text, requireLeadingSpace, hasTrailingSpace, originalEvent, item) {\n let info = this.getTriggerInfo(true, hasTrailingSpace, requireLeadingSpace, this.tribute.allowSpaces, this.tribute.autocompleteMode);\n\n if (info !== undefined) {\n let context = this.tribute.current;\n let replaceEvent = new CustomEvent('tribute-replaced', {\n detail: {\n item: item,\n instance: context,\n context: info,\n event: originalEvent,\n }\n });\n\n if (!this.isContentEditable(context.element)) {\n let myField = this.tribute.current.element;\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : ' ';\n text += textSuffix;\n let startPos = info.mentionPosition;\n let endPos = info.mentionPosition + info.mentionText.length + textSuffix.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length - 1;\n }\n myField.value = myField.value.substring(0, startPos) + text +\n myField.value.substring(endPos, myField.value.length);\n myField.selectionStart = startPos + text.length;\n myField.selectionEnd = startPos + text.length;\n } else {\n // add a space to the end of the pasted text\n let textSuffix = typeof this.tribute.replaceTextSuffix == 'string'\n ? this.tribute.replaceTextSuffix\n : '\\xA0';\n text += textSuffix;\n let endPos = info.mentionPosition + info.mentionText.length;\n if (!this.tribute.autocompleteMode) {\n endPos += info.mentionTriggerChar.length;\n }\n this.pasteHtml(text, info.mentionPosition, endPos);\n }\n\n context.element.dispatchEvent(new CustomEvent('input', { bubbles: true }));\n context.element.dispatchEvent(replaceEvent);\n }\n }\n\n pasteHtml(html, startPos, endPos) {\n let range, sel;\n sel = this.getWindowSelection();\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, startPos);\n range.setEnd(sel.anchorNode, endPos);\n range.deleteContents();\n\n let el = this.getDocument().createElement('div');\n el.innerHTML = html;\n let frag = this.getDocument().createDocumentFragment(),\n node, lastNode;\n while ((node = el.firstChild)) {\n lastNode = frag.appendChild(node);\n }\n range.insertNode(frag);\n\n // Preserve the selection\n if (lastNode) {\n range = range.cloneRange();\n range.setStartAfter(lastNode);\n range.collapse(true);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n }\n\n getWindowSelection() {\n if (this.tribute.collection.iframe) {\n return this.tribute.collection.iframe.contentWindow.getSelection()\n }\n\n return window.getSelection()\n }\n\n getNodePositionInParent(element) {\n if (element.parentNode === null) {\n return 0\n }\n\n for (var i = 0; i < element.parentNode.childNodes.length; i++) {\n let node = element.parentNode.childNodes[i];\n\n if (node === element) {\n return i\n }\n }\n }\n\n getContentEditableSelectedPath(ctx) {\n let sel = this.getWindowSelection();\n let selected = sel.anchorNode;\n let path = [];\n let offset;\n\n if (selected != null) {\n let i;\n let ce = selected.contentEditable;\n while (selected !== null && ce !== 'true') {\n i = this.getNodePositionInParent(selected);\n path.push(i);\n selected = selected.parentNode;\n if (selected !== null) {\n ce = selected.contentEditable;\n }\n }\n path.reverse();\n\n // getRangeAt may not exist, need alternative\n offset = sel.getRangeAt(0).startOffset;\n\n return {\n selected: selected,\n path: path,\n offset: offset\n }\n }\n }\n\n getTextPrecedingCurrentSelection() {\n let context = this.tribute.current,\n text = '';\n\n if (!this.isContentEditable(context.element)) {\n let textComponent = this.tribute.current.element;\n if (textComponent) {\n let startPos = textComponent.selectionStart;\n if (textComponent.value && startPos >= 0) {\n text = textComponent.value.substring(0, startPos);\n }\n }\n\n } else {\n let selectedElem = this.getWindowSelection().anchorNode;\n\n if (selectedElem != null) {\n let workingNodeContent = selectedElem.textContent;\n let selectStartOffset = this.getWindowSelection().getRangeAt(0).startOffset;\n\n if (workingNodeContent && selectStartOffset >= 0) {\n text = workingNodeContent.substring(0, selectStartOffset);\n }\n }\n }\n\n return text\n }\n\n getLastWordInText(text) {\n text = text.replace(/\\u00A0/g, ' '); // https://stackoverflow.com/questions/29850407/how-do-i-replace-unicode-character-u00a0-with-a-space-in-javascript\n let wordsArray = text.split(/\\s+/);\n let worldsCount = wordsArray.length - 1;\n return wordsArray[worldsCount].trim()\n }\n\n getTriggerInfo(menuAlreadyActive, hasTrailingSpace, requireLeadingSpace, allowSpaces, isAutocomplete) {\n let ctx = this.tribute.current;\n let selected, path, offset;\n\n if (!this.isContentEditable(ctx.element)) {\n selected = this.tribute.current.element;\n } else {\n let selectionInfo = this.getContentEditableSelectedPath(ctx);\n\n if (selectionInfo) {\n selected = selectionInfo.selected;\n path = selectionInfo.path;\n offset = selectionInfo.offset;\n }\n }\n\n let effectiveRange = this.getTextPrecedingCurrentSelection();\n let lastWordOfEffectiveRange = this.getLastWordInText(effectiveRange);\n\n if (isAutocomplete) {\n return {\n mentionPosition: effectiveRange.length - lastWordOfEffectiveRange.length,\n mentionText: lastWordOfEffectiveRange,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset\n }\n }\n\n if (effectiveRange !== undefined && effectiveRange !== null) {\n let mostRecentTriggerCharPos = -1;\n let triggerChar;\n\n this.tribute.collection.forEach(config => {\n let c = config.trigger;\n let idx = config.requireLeadingSpace ?\n this.lastIndexWithLeadingSpace(effectiveRange, c) :\n effectiveRange.lastIndexOf(c);\n\n if (idx > mostRecentTriggerCharPos) {\n mostRecentTriggerCharPos = idx;\n triggerChar = c;\n requireLeadingSpace = config.requireLeadingSpace;\n }\n });\n\n if (mostRecentTriggerCharPos >= 0 &&\n (\n mostRecentTriggerCharPos === 0 ||\n !requireLeadingSpace ||\n /[\\xA0\\s]/g.test(\n effectiveRange.substring(\n mostRecentTriggerCharPos - 1,\n mostRecentTriggerCharPos)\n )\n )\n ) {\n let currentTriggerSnippet = effectiveRange.substring(mostRecentTriggerCharPos + triggerChar.length,\n effectiveRange.length);\n\n triggerChar = effectiveRange.substring(mostRecentTriggerCharPos, mostRecentTriggerCharPos + triggerChar.length);\n let firstSnippetChar = currentTriggerSnippet.substring(0, 1);\n let leadingSpace = currentTriggerSnippet.length > 0 &&\n (\n firstSnippetChar === ' ' ||\n firstSnippetChar === '\\xA0'\n );\n if (hasTrailingSpace) {\n currentTriggerSnippet = currentTriggerSnippet.trim();\n }\n\n let regex = allowSpaces ? /[^\\S ]/g : /[\\xA0\\s]/g;\n\n this.tribute.hasTrailingSpace = regex.test(currentTriggerSnippet);\n\n if (!leadingSpace && (menuAlreadyActive || !(regex.test(currentTriggerSnippet)))) {\n return {\n mentionPosition: mostRecentTriggerCharPos,\n mentionText: currentTriggerSnippet,\n mentionSelectedElement: selected,\n mentionSelectedPath: path,\n mentionSelectedOffset: offset,\n mentionTriggerChar: triggerChar\n }\n }\n }\n }\n }\n\n lastIndexWithLeadingSpace (str, trigger) {\n let reversedStr = str.split('').reverse().join('');\n let index = -1;\n\n for (let cidx = 0, len = str.length; cidx < len; cidx++) {\n let firstChar = cidx === str.length - 1;\n let leadingSpace = /\\s/.test(reversedStr[cidx + 1]);\n\n let match = true;\n for (let triggerIdx = trigger.length - 1; triggerIdx >= 0; triggerIdx--) {\n if (trigger[triggerIdx] !== reversedStr[cidx-triggerIdx]) {\n match = false;\n break\n }\n }\n\n if (match && (firstChar || leadingSpace)) {\n index = str.length - 1 - cidx;\n break\n }\n }\n\n return index\n }\n\n isContentEditable(element) {\n return element.nodeName !== 'INPUT' && element.nodeName !== 'TEXTAREA'\n }\n\n isMenuOffScreen(coordinates, menuDimensions) {\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let menuTop = typeof coordinates.top === 'number' ? coordinates.top : windowTop + windowHeight - coordinates.bottom - menuDimensions.height;\n let menuRight = typeof coordinates.right === 'number' ? coordinates.right : coordinates.left + menuDimensions.width;\n let menuBottom = typeof coordinates.bottom === 'number' ? coordinates.bottom : coordinates.top + menuDimensions.height;\n let menuLeft = typeof coordinates.left === 'number' ? coordinates.left : windowLeft + windowWidth - coordinates.right - menuDimensions.width;\n\n return {\n top: menuTop < Math.floor(windowTop),\n right: menuRight > Math.ceil(windowLeft + windowWidth),\n bottom: menuBottom > Math.ceil(windowTop + windowHeight),\n left: menuLeft < Math.floor(windowLeft)\n }\n }\n\n getMenuDimensions() {\n // Width of the menu depends of its contents and position\n // We must check what its width would be without any obstruction\n // This way, we can achieve good positioning for flipping the menu\n let dimensions = {\n width: null,\n height: null\n };\n\n this.tribute.menu.style.cssText = `top: 0px;\n left: 0px;\n position: fixed;\n display: block;\n visibility; hidden;`;\n dimensions.width = this.tribute.menu.offsetWidth;\n dimensions.height = this.tribute.menu.offsetHeight;\n\n this.tribute.menu.style.cssText = `display: none;`;\n\n return dimensions\n }\n\n getTextAreaOrInputUnderlinePosition(element, position, flipped) {\n let properties = ['direction', 'boxSizing', 'width', 'height', 'overflowX',\n 'overflowY', 'borderTopWidth', 'borderRightWidth',\n 'borderBottomWidth', 'borderLeftWidth', 'paddingTop',\n 'paddingRight', 'paddingBottom', 'paddingLeft',\n 'fontStyle', 'fontVariant', 'fontWeight', 'fontStretch',\n 'fontSize', 'fontSizeAdjust', 'lineHeight', 'fontFamily',\n 'textAlign', 'textTransform', 'textIndent',\n 'textDecoration', 'letterSpacing', 'wordSpacing'\n ];\n\n let isFirefox = (window.mozInnerScreenX !== null);\n\n let div = this.getDocument().createElement('div');\n div.id = 'input-textarea-caret-position-mirror-div';\n this.getDocument().body.appendChild(div);\n\n let style = div.style;\n let computed = window.getComputedStyle ? getComputedStyle(element) : element.currentStyle;\n\n style.whiteSpace = 'pre-wrap';\n if (element.nodeName !== 'INPUT') {\n style.wordWrap = 'break-word';\n }\n\n // position off-screen\n style.position = 'absolute';\n style.visibility = 'hidden';\n\n // transfer the element's properties to the div\n properties.forEach(prop => {\n style[prop] = computed[prop];\n });\n\n if (isFirefox) {\n style.width = `${(parseInt(computed.width) - 2)}px`;\n if (element.scrollHeight > parseInt(computed.height))\n style.overflowY = 'scroll';\n } else {\n style.overflow = 'hidden';\n }\n\n div.textContent = element.value.substring(0, position);\n\n if (element.nodeName === 'INPUT') {\n div.textContent = div.textContent.replace(/\\s/g, ' ');\n }\n\n let span = this.getDocument().createElement('span');\n span.textContent = element.value.substring(position) || '.';\n div.appendChild(span);\n\n let rect = element.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let top = 0;\n let left = 0;\n if (this.menuContainerIsBody) {\n top = rect.top;\n left = rect.left;\n }\n\n let coordinates = {\n top: top + windowTop + span.offsetTop + parseInt(computed.borderTopWidth) + parseInt(computed.fontSize) - element.scrollTop,\n left: left + windowLeft + span.offsetLeft + parseInt(computed.borderLeftWidth)\n };\n\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.right = windowWidth - coordinates.left;\n coordinates.left = 'auto';\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top - span.offsetTop);\n coordinates.top = 'auto';\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n this.getDocument().body.removeChild(div);\n return coordinates\n }\n\n getContentEditableCaretPosition(selectedNodePosition) {\n let range;\n let sel = this.getWindowSelection();\n\n range = this.getDocument().createRange();\n range.setStart(sel.anchorNode, selectedNodePosition);\n range.setEnd(sel.anchorNode, selectedNodePosition);\n\n range.collapse(false);\n\n let rect = range.getBoundingClientRect();\n let doc = document.documentElement;\n let windowLeft = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n let windowTop = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n\n let left = rect.left;\n let top = rect.top;\n\n let coordinates = {\n left: left + windowLeft,\n top: top + rect.height + windowTop\n };\n let windowWidth = window.innerWidth;\n let windowHeight = window.innerHeight;\n\n let menuDimensions = this.getMenuDimensions();\n let menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n\n if (menuIsOffScreen.right) {\n coordinates.left = 'auto';\n coordinates.right = windowWidth - rect.left - windowLeft;\n }\n\n let parentHeight = this.tribute.menuContainer\n ? this.tribute.menuContainer.offsetHeight\n : this.getDocument().body.offsetHeight;\n\n if (menuIsOffScreen.bottom) {\n let parentRect = this.tribute.menuContainer\n ? this.tribute.menuContainer.getBoundingClientRect()\n : this.getDocument().body.getBoundingClientRect();\n let scrollStillAvailable = parentHeight - (windowHeight - parentRect.top);\n\n coordinates.top = 'auto';\n coordinates.bottom = scrollStillAvailable + (windowHeight - rect.top);\n }\n\n menuIsOffScreen = this.isMenuOffScreen(coordinates, menuDimensions);\n if (menuIsOffScreen.left) {\n coordinates.left = windowWidth > menuDimensions.width\n ? windowLeft + windowWidth - menuDimensions.width\n : windowLeft;\n delete coordinates.right;\n }\n if (menuIsOffScreen.top) {\n coordinates.top = windowHeight > menuDimensions.height\n ? windowTop + windowHeight - menuDimensions.height\n : windowTop;\n delete coordinates.bottom;\n }\n\n if (!this.menuContainerIsBody) {\n coordinates.left = coordinates.left ? coordinates.left - this.tribute.menuContainer.offsetLeft : coordinates.left;\n coordinates.top = coordinates.top ? coordinates.top - this.tribute.menuContainer.offsetTop : coordinates.top;\n }\n\n return coordinates\n }\n\n scrollIntoView(elem) {\n let reasonableBuffer = 20,\n clientRect;\n let maxScrollDisplacement = 100;\n let e = this.menu;\n\n if (typeof e === 'undefined') return;\n\n while (clientRect === undefined || clientRect.height === 0) {\n clientRect = e.getBoundingClientRect();\n\n if (clientRect.height === 0) {\n e = e.childNodes[0];\n if (e === undefined || !e.getBoundingClientRect) {\n return\n }\n }\n }\n\n let elemTop = clientRect.top;\n let elemBottom = elemTop + clientRect.height;\n\n if (elemTop < 0) {\n window.scrollTo(0, window.pageYOffset + clientRect.top - reasonableBuffer);\n } else if (elemBottom > window.innerHeight) {\n let maxY = window.pageYOffset + clientRect.top - reasonableBuffer;\n\n if (maxY - window.pageYOffset > maxScrollDisplacement) {\n maxY = window.pageYOffset + maxScrollDisplacement;\n }\n\n let targetY = window.pageYOffset - (window.innerHeight - elemBottom);\n\n if (targetY > maxY) {\n targetY = maxY;\n }\n\n window.scrollTo(0, targetY);\n }\n }\n}\n\n// Thanks to https://github.com/mattyork/fuzzy\nclass TributeSearch {\n constructor(tribute) {\n this.tribute = tribute;\n this.tribute.search = this;\n }\n\n simpleFilter(pattern, array) {\n return array.filter(string => {\n return this.test(pattern, string)\n })\n }\n\n test(pattern, string) {\n return this.match(pattern, string) !== null\n }\n\n match(pattern, string, opts) {\n opts = opts || {};\n let len = string.length,\n pre = opts.pre || '',\n post = opts.post || '',\n compareString = opts.caseSensitive && string || string.toLowerCase();\n\n if (opts.skip) {\n return {rendered: string, score: 0}\n }\n\n pattern = opts.caseSensitive && pattern || pattern.toLowerCase();\n\n let patternCache = this.traverse(compareString, pattern, 0, 0, []);\n if (!patternCache) {\n return null\n }\n return {\n rendered: this.render(string, patternCache.cache, pre, post),\n score: patternCache.score\n }\n }\n\n traverse(string, pattern, stringIndex, patternIndex, patternCache) {\n // if the pattern search at end\n if (pattern.length === patternIndex) {\n\n // calculate score and copy the cache containing the indices where it's found\n return {\n score: this.calculateScore(patternCache),\n cache: patternCache.slice()\n }\n }\n\n // if string at end or remaining pattern > remaining string\n if (string.length === stringIndex || pattern.length - patternIndex > string.length - stringIndex) {\n return undefined\n }\n\n let c = pattern[patternIndex];\n let index = string.indexOf(c, stringIndex);\n let best, temp;\n\n while (index > -1) {\n patternCache.push(index);\n temp = this.traverse(string, pattern, index + 1, patternIndex + 1, patternCache);\n patternCache.pop();\n\n // if downstream traversal failed, return best answer so far\n if (!temp) {\n return best\n }\n\n if (!best || best.score < temp.score) {\n best = temp;\n }\n\n index = string.indexOf(c, index + 1);\n }\n\n return best\n }\n\n calculateScore(patternCache) {\n let score = 0;\n let temp = 1;\n\n patternCache.forEach((index, i) => {\n if (i > 0) {\n if (patternCache[i - 1] + 1 === index) {\n temp += temp + 1;\n }\n else {\n temp = 1;\n }\n }\n\n score += temp;\n });\n\n return score\n }\n\n render(string, indices, pre, post) {\n var rendered = string.substring(0, indices[0]);\n\n indices.forEach((index, i) => {\n rendered += pre + string[index] + post +\n string.substring(index + 1, (indices[i + 1]) ? indices[i + 1] : string.length);\n });\n\n return rendered\n }\n\n filter(pattern, arr, opts) {\n opts = opts || {};\n return arr\n .reduce((prev, element, idx, arr) => {\n let str = element;\n\n if (opts.extract) {\n str = opts.extract(element);\n\n if (!str) { // take care of undefineds / nulls / etc.\n str = '';\n }\n }\n\n let rendered = this.match(pattern, str, opts);\n\n if (rendered != null) {\n prev[prev.length] = {\n string: rendered.rendered,\n score: rendered.score,\n index: idx,\n original: element\n };\n }\n\n return prev\n }, [])\n\n .sort((a, b) => {\n let compare = b.score - a.score;\n if (compare) return compare\n return a.index - b.index\n })\n }\n}\n\nclass Tribute {\n constructor({\n values = null,\n iframe = null,\n selectClass = \"highlight\",\n containerClass = \"tribute-container\",\n itemClass = \"\",\n trigger = \"@\",\n autocompleteMode = false,\n selectTemplate = null,\n menuItemTemplate = null,\n lookup = \"key\",\n fillAttr = \"value\",\n collection = null,\n menuContainer = null,\n noMatchTemplate = null,\n requireLeadingSpace = true,\n allowSpaces = false,\n replaceTextSuffix = null,\n positionMenu = true,\n spaceSelectsMatch = false,\n searchOpts = {},\n menuItemLimit = null,\n menuShowMinLength = 0\n }) {\n this.autocompleteMode = autocompleteMode;\n this.menuSelected = 0;\n this.current = {};\n this.inputEvent = false;\n this.isActive = false;\n this.menuContainer = menuContainer;\n this.allowSpaces = allowSpaces;\n this.replaceTextSuffix = replaceTextSuffix;\n this.positionMenu = positionMenu;\n this.hasTrailingSpace = false;\n this.spaceSelectsMatch = spaceSelectsMatch;\n\n if (this.autocompleteMode) {\n trigger = \"\";\n allowSpaces = false;\n }\n\n if (values) {\n this.collection = [\n {\n // symbol that starts the lookup\n trigger: trigger,\n\n // is it wrapped in an iframe\n iframe: iframe,\n\n // class applied to selected item\n selectClass: selectClass,\n\n // class applied to the Container\n containerClass: containerClass,\n\n // class applied to each item\n itemClass: itemClass,\n\n // function called on select that retuns the content to insert\n selectTemplate: (\n selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n\n // function called that returns content for an item\n menuItemTemplate: (\n menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
  • No Match Found!
  • \";\n }.bind(this)\n );\n })(noMatchTemplate),\n\n // column to search against in the object\n lookup: lookup,\n\n // column that contains the content to insert by default\n fillAttr: fillAttr,\n\n // array of objects or a function returning an array of objects\n values: values,\n\n requireLeadingSpace: requireLeadingSpace,\n\n searchOpts: searchOpts,\n\n menuItemLimit: menuItemLimit,\n\n menuShowMinLength: menuShowMinLength\n }\n ];\n } else if (collection) {\n if (this.autocompleteMode)\n console.warn(\n \"Tribute in autocomplete mode does not work for collections\"\n );\n this.collection = collection.map(item => {\n return {\n trigger: item.trigger || trigger,\n iframe: item.iframe || iframe,\n selectClass: item.selectClass || selectClass,\n containerClass: item.containerClass || containerClass,\n itemClass: item.itemClass || itemClass,\n selectTemplate: (\n item.selectTemplate || Tribute.defaultSelectTemplate\n ).bind(this),\n menuItemTemplate: (\n item.menuItemTemplate || Tribute.defaultMenuItemTemplate\n ).bind(this),\n // function called when menu is empty, disables hiding of menu.\n noMatchTemplate: (t => {\n if (typeof t === \"string\") {\n if (t.trim() === \"\") return null;\n return t;\n }\n if (typeof t === \"function\") {\n return t.bind(this);\n }\n\n return (\n noMatchTemplate ||\n function() {\n return \"
  • No Match Found!
  • \";\n }.bind(this)\n );\n })(noMatchTemplate),\n lookup: item.lookup || lookup,\n fillAttr: item.fillAttr || fillAttr,\n values: item.values,\n requireLeadingSpace: item.requireLeadingSpace,\n searchOpts: item.searchOpts || searchOpts,\n menuItemLimit: item.menuItemLimit || menuItemLimit,\n menuShowMinLength: item.menuShowMinLength || menuShowMinLength\n };\n });\n } else {\n throw new Error(\"[Tribute] No collection specified.\");\n }\n\n new TributeRange(this);\n new TributeEvents(this);\n new TributeMenuEvents(this);\n new TributeSearch(this);\n }\n\n get isActive() {\n return this._isActive;\n }\n\n set isActive(val) {\n if (this._isActive != val) {\n this._isActive = val;\n if (this.current.element) {\n let noMatchEvent = new CustomEvent(`tribute-active-${val}`);\n this.current.element.dispatchEvent(noMatchEvent);\n }\n }\n }\n\n static defaultSelectTemplate(item) {\n if (typeof item === \"undefined\")\n return `${this.current.collection.trigger}${this.current.mentionText}`;\n if (this.range.isContentEditable(this.current.element)) {\n return (\n '' +\n (this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]) +\n \"\"\n );\n }\n\n return (\n this.current.collection.trigger +\n item.original[this.current.collection.fillAttr]\n );\n }\n\n static defaultMenuItemTemplate(matchItem) {\n return matchItem.string;\n }\n\n static inputTypes() {\n return [\"TEXTAREA\", \"INPUT\"];\n }\n\n triggers() {\n return this.collection.map(config => {\n return config.trigger;\n });\n }\n\n attach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._attach(el[i]);\n }\n } else {\n this._attach(el);\n }\n }\n\n _attach(el) {\n if (el.hasAttribute(\"data-tribute\")) {\n console.warn(\"Tribute was already bound to \" + el.nodeName);\n }\n\n this.ensureEditable(el);\n this.events.bind(el);\n el.setAttribute(\"data-tribute\", true);\n }\n\n ensureEditable(element) {\n if (Tribute.inputTypes().indexOf(element.nodeName) === -1) {\n if (element.contentEditable) {\n element.contentEditable = true;\n } else {\n throw new Error(\"[Tribute] Cannot bind to \" + element.nodeName);\n }\n }\n }\n\n createMenu(containerClass) {\n let wrapper = this.range.getDocument().createElement(\"div\"),\n ul = this.range.getDocument().createElement(\"ul\");\n wrapper.className = containerClass;\n wrapper.appendChild(ul);\n\n if (this.menuContainer) {\n return this.menuContainer.appendChild(wrapper);\n }\n\n return this.range.getDocument().body.appendChild(wrapper);\n }\n\n showMenuFor(element, scrollTo) {\n // Only proceed if menu isn't already shown for the current element & mentionText\n if (\n this.isActive &&\n this.current.element === element &&\n this.current.mentionText === this.currentMentionTextSnapshot\n ) {\n return;\n }\n this.currentMentionTextSnapshot = this.current.mentionText;\n\n // create the menu if it doesn't exist.\n if (!this.menu) {\n this.menu = this.createMenu(this.current.collection.containerClass);\n element.tributeMenu = this.menu;\n this.menuEvents.bind(this.menu);\n }\n\n this.isActive = true;\n this.menuSelected = 0;\n\n if (!this.current.mentionText) {\n this.current.mentionText = \"\";\n }\n\n const processValues = values => {\n // Tribute may not be active any more by the time the value callback returns\n if (!this.isActive) {\n return;\n }\n\n let items = this.search.filter(this.current.mentionText, values, {\n pre: this.current.collection.searchOpts.pre || \"\",\n post: this.current.collection.searchOpts.post || \"\",\n skip: this.current.collection.searchOpts.skip,\n extract: el => {\n if (typeof this.current.collection.lookup === \"string\") {\n return el[this.current.collection.lookup];\n } else if (typeof this.current.collection.lookup === \"function\") {\n return this.current.collection.lookup(el, this.current.mentionText);\n } else {\n throw new Error(\n \"Invalid lookup attribute, lookup must be string or function.\"\n );\n }\n }\n });\n\n if (this.current.collection.menuItemLimit) {\n items = items.slice(0, this.current.collection.menuItemLimit);\n }\n\n this.current.filteredItems = items;\n\n let ul = this.menu.querySelector(\"ul\");\n\n this.range.positionMenuAtCaret(scrollTo);\n\n if (!items.length) {\n let noMatchEvent = new CustomEvent(\"tribute-no-match\", {\n detail: this.menu\n });\n this.current.element.dispatchEvent(noMatchEvent);\n if (\n (typeof this.current.collection.noMatchTemplate === \"function\" &&\n !this.current.collection.noMatchTemplate()) ||\n !this.current.collection.noMatchTemplate\n ) {\n this.hideMenu();\n } else {\n typeof this.current.collection.noMatchTemplate === \"function\"\n ? (ul.innerHTML = this.current.collection.noMatchTemplate())\n : (ul.innerHTML = this.current.collection.noMatchTemplate);\n }\n\n return;\n }\n\n ul.innerHTML = \"\";\n let fragment = this.range.getDocument().createDocumentFragment();\n\n items.forEach((item, index) => {\n let li = this.range.getDocument().createElement(\"li\");\n li.setAttribute(\"data-index\", index);\n li.className = this.current.collection.itemClass;\n li.addEventListener(\"mousemove\", e => {\n let [li, index] = this._findLiTarget(e.target);\n if (e.movementY !== 0) {\n this.events.setActiveLi(index);\n }\n });\n if (this.menuSelected === index) {\n li.classList.add(this.current.collection.selectClass);\n }\n li.innerHTML = this.current.collection.menuItemTemplate(item);\n fragment.appendChild(li);\n });\n ul.appendChild(fragment);\n };\n\n if (typeof this.current.collection.values === \"function\") {\n this.current.collection.values(this.current.mentionText, processValues);\n } else {\n processValues(this.current.collection.values);\n }\n }\n\n _findLiTarget(el) {\n if (!el) return [];\n const index = el.getAttribute(\"data-index\");\n return !index ? this._findLiTarget(el.parentNode) : [el, index];\n }\n\n showMenuForCollection(element, collectionIndex) {\n if (element !== document.activeElement) {\n this.placeCaretAtEnd(element);\n }\n\n this.current.collection = this.collection[collectionIndex || 0];\n this.current.externalTrigger = true;\n this.current.element = element;\n\n if (element.isContentEditable)\n this.insertTextAtCursor(this.current.collection.trigger);\n else this.insertAtCaret(element, this.current.collection.trigger);\n\n this.showMenuFor(element);\n }\n\n // TODO: make sure this works for inputs/textareas\n placeCaretAtEnd(el) {\n el.focus();\n if (\n typeof window.getSelection != \"undefined\" &&\n typeof document.createRange != \"undefined\"\n ) {\n var range = document.createRange();\n range.selectNodeContents(el);\n range.collapse(false);\n var sel = window.getSelection();\n sel.removeAllRanges();\n sel.addRange(range);\n } else if (typeof document.body.createTextRange != \"undefined\") {\n var textRange = document.body.createTextRange();\n textRange.moveToElementText(el);\n textRange.collapse(false);\n textRange.select();\n }\n }\n\n // for contenteditable\n insertTextAtCursor(text) {\n var sel, range;\n sel = window.getSelection();\n range = sel.getRangeAt(0);\n range.deleteContents();\n var textNode = document.createTextNode(text);\n range.insertNode(textNode);\n range.selectNodeContents(textNode);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n }\n\n // for regular inputs\n insertAtCaret(textarea, text) {\n var scrollPos = textarea.scrollTop;\n var caretPos = textarea.selectionStart;\n\n var front = textarea.value.substring(0, caretPos);\n var back = textarea.value.substring(\n textarea.selectionEnd,\n textarea.value.length\n );\n textarea.value = front + text + back;\n caretPos = caretPos + text.length;\n textarea.selectionStart = caretPos;\n textarea.selectionEnd = caretPos;\n textarea.focus();\n textarea.scrollTop = scrollPos;\n }\n\n hideMenu() {\n if (this.menu) {\n this.menu.style.cssText = \"display: none;\";\n this.isActive = false;\n this.menuSelected = 0;\n this.current = {};\n }\n }\n\n selectItemAtIndex(index, originalEvent) {\n index = parseInt(index);\n if (typeof index !== \"number\" || isNaN(index)) return;\n let item = this.current.filteredItems[index];\n let content = this.current.collection.selectTemplate(item);\n if (content !== null) this.replaceText(content, originalEvent, item);\n }\n\n replaceText(content, originalEvent, item) {\n this.range.replaceTriggerText(content, true, true, originalEvent, item);\n }\n\n _append(collection, newValues, replace) {\n if (typeof collection.values === \"function\") {\n throw new Error(\"Unable to append to values, as it is a function.\");\n } else if (!replace) {\n collection.values = collection.values.concat(newValues);\n } else {\n collection.values = newValues;\n }\n }\n\n append(collectionIndex, newValues, replace) {\n let index = parseInt(collectionIndex);\n if (typeof index !== \"number\")\n throw new Error(\"please provide an index for the collection to update.\");\n\n let collection = this.collection[index];\n\n this._append(collection, newValues, replace);\n }\n\n appendCurrent(newValues, replace) {\n if (this.isActive) {\n this._append(this.current.collection, newValues, replace);\n } else {\n throw new Error(\n \"No active state. Please use append instead and pass an index.\"\n );\n }\n }\n\n detach(el) {\n if (!el) {\n throw new Error(\"[Tribute] Must pass in a DOM node or NodeList.\");\n }\n\n // Check if it is a jQuery collection\n if (typeof jQuery !== \"undefined\" && el instanceof jQuery) {\n el = el.get();\n }\n\n // Is el an Array/Array-like object?\n if (\n el.constructor === NodeList ||\n el.constructor === HTMLCollection ||\n el.constructor === Array\n ) {\n let length = el.length;\n for (var i = 0; i < length; ++i) {\n this._detach(el[i]);\n }\n } else {\n this._detach(el);\n }\n }\n\n _detach(el) {\n this.events.unbind(el);\n if (el.tributeMenu) {\n this.menuEvents.unbind(el.tributeMenu);\n }\n\n setTimeout(() => {\n el.removeAttribute(\"data-tribute\");\n this.isActive = false;\n if (el.tributeMenu) {\n el.tributeMenu.remove();\n }\n });\n }\n}\n\n/**\n * Tribute.js\n * Native ES6 JavaScript @mention Plugin\n **/\n\nexport default Tribute;\n","import '../assets/NcProgressBar-D1DYRrCN.css';\nimport { defineComponent, useCssVars, computed, openBlock, createElementBlock, normalizeClass, createElementVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"aria-valuenow\"];\nconst _hoisted_2 = [\"height\", \"width\"];\nconst _hoisted_3 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_4 = [\"stroke-dasharray\", \"stroke-dashoffset\", \"stroke-width\", \"r\", \"cx\", \"cy\"];\nconst _hoisted_5 = {\n key: 1,\n class: \"progress-bar-container\"\n};\nconst _hoisted_6 = [\"value\"];\nconst _hoisted_7 = {\n key: 0,\n class: \"progress-bar__value\"\n};\nconst gridBaseline = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\nconst clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\nconst clickableAreaSmall = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--clickable-area-small\"));\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcProgressBar\",\n props: {\n value: { default: 0 },\n size: { default: \"small\" },\n error: { type: Boolean },\n type: { default: \"linear\" },\n color: { default: \"var(--color-primary-element)\" },\n showValue: { type: Boolean, default: false }\n },\n setup(__props) {\n useCssVars((_ctx) => ({\n \"3a86fec2\": _ctx.color,\n \"57442460\": heightPx.value\n }));\n const props = __props;\n const normalizedProgress = computed(() => Math.max(0, Math.min(100, props.value)) / 100);\n const height = computed(() => {\n if (typeof props.size === \"number\") {\n return Math.round(props.size);\n }\n if (props.type === \"circular\") {\n if (props.size === \"medium\") {\n return clickableArea;\n } else {\n return clickableAreaSmall;\n }\n }\n if (props.size === \"medium\") {\n return 1.5 * gridBaseline;\n }\n return gridBaseline;\n });\n const heightPx = computed(() => `${height.value}px`);\n const strokeWidth = computed(() => Math.max(gridBaseline, height.value / clickableArea * gridBaseline));\n const circleCenterPosition = computed(() => height.value / 2);\n const circleRadius = computed(() => height.value / 2 - strokeWidth.value);\n const circumference = computed(() => circleRadius.value * 2 * Math.PI);\n return (_ctx, _cache) => {\n return _ctx.type === \"circular\" ? (openBlock(), createElementBlock(\"span\", {\n key: 0,\n role: \"progressbar\",\n \"aria-valuenow\": _ctx.value,\n class: normalizeClass([{ \"progress-bar--error\": _ctx.error }, \"progress-bar progress-bar--circular\"])\n }, [\n (openBlock(), createElementBlock(\"svg\", {\n height: height.value,\n width: height.value\n }, [\n createElementVNode(\"circle\", {\n stroke: \"currentColor\",\n fill: \"transparent\",\n \"stroke-dasharray\": `${normalizedProgress.value * circumference.value} ${(1 - normalizedProgress.value) * circumference.value}`,\n \"stroke-dashoffset\": 0.25 * circumference.value,\n \"stroke-width\": strokeWidth.value,\n r: circleRadius.value,\n cx: circleCenterPosition.value,\n cy: circleCenterPosition.value\n }, null, 8, _hoisted_3),\n createElementVNode(\"circle\", {\n stroke: \"var(--color-background-darker)\",\n fill: \"transparent\",\n \"stroke-dasharray\": `${(1 - normalizedProgress.value) * circumference.value} ${normalizedProgress.value * circumference.value}`,\n \"stroke-dashoffset\": (0.25 - normalizedProgress.value) * circumference.value,\n \"stroke-width\": strokeWidth.value,\n r: circleRadius.value,\n cx: circleCenterPosition.value,\n cy: circleCenterPosition.value\n }, null, 8, _hoisted_4)\n ], 8, _hoisted_2))\n ], 10, _hoisted_1)) : (openBlock(), createElementBlock(\"div\", _hoisted_5, [\n createElementVNode(\"progress\", {\n class: normalizeClass([\"progress-bar progress-bar--linear vue\", { \"progress-bar--error\": _ctx.error }]),\n value: _ctx.value,\n max: \"100\"\n }, null, 10, _hoisted_6),\n _ctx.showValue ? (openBlock(), createElementBlock(\"span\", _hoisted_7, toDisplayString(_ctx.value) + \"%\", 1)) : createCommentVNode(\"\", true)\n ]));\n };\n }\n});\nconst NcProgressBar = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-353fa414\"]]);\nexport {\n NcProgressBar as N\n};\n//# sourceMappingURL=NcProgressBar-JyXXoHLT.mjs.map\n","import '../assets/NcRelatedResourcesPanel-D1efpH8E.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport { r as register, S as t38, a as t, T as t42, U as t9 } from \"./_l10n-BklkVPDO.mjs\";\nimport { N as NcButton } from \"./NcButton-lQra4n2g.mjs\";\nimport { g as getRoute } from \"./autolink-U5pBzLgI.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, createVNode, withCtx, createTextVNode, toDisplayString, createElementVNode, mergeProps, createCommentVNode, Fragment, renderList, createBlock } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { getCapabilities } from \"@nextcloud/capabilities\";\nimport { C as ChevronDown } from \"./ChevronDown-C6gc637b.mjs\";\nimport { C as ChevronUp } from \"./ChevronUp-ChH8oB7p.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nregister(t38);\nconst _sfc_main$4 = {\n name: \"NcResource\",\n components: {\n NcButton\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n icon: {\n type: String,\n required: true\n },\n name: {\n type: String,\n required: true\n },\n url: {\n type: String,\n required: true\n }\n },\n data() {\n return {\n labelTranslated: t('Open link to \"{resourceName}\"', { resourceName: this.name })\n };\n },\n computed: {\n route() {\n return getRoute(this.$router, this.url);\n }\n },\n methods: {\n t\n }\n};\nconst _hoisted_1$4 = { class: \"resource\" };\nconst _hoisted_2$4 = { class: \"resource__icon\" };\nconst _hoisted_3$3 = [\"src\"];\nfunction _sfc_render$4(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcButton = resolveComponent(\"NcButton\");\n return openBlock(), createElementBlock(\"li\", _hoisted_1$4, [\n createVNode(_component_NcButton, {\n class: \"resource__button\",\n \"aria-label\": $data.labelTranslated,\n to: $options.route,\n href: $options.route ? null : $props.url,\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createElementVNode(\"div\", _hoisted_2$4, [\n createElementVNode(\"img\", { src: $props.icon }, null, 8, _hoisted_3$3)\n ])\n ]),\n default: withCtx(() => [\n createTextVNode(\" \" + toDisplayString($props.name), 1)\n ]),\n _: 1\n }, 8, [\"aria-label\", \"to\", \"href\"])\n ]);\n}\nconst NcResource = /* @__PURE__ */ _export_sfc(_sfc_main$4, [[\"render\", _sfc_render$4], [\"__scopeId\", \"data-v-8db55138\"]]);\nconst _sfc_main$3 = {\n name: \"AccountGroupIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$3 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$3 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$2 = { d: \"M12,5.5A3.5,3.5 0 0,1 15.5,9A3.5,3.5 0 0,1 12,12.5A3.5,3.5 0 0,1 8.5,9A3.5,3.5 0 0,1 12,5.5M5,8C5.56,8 6.08,8.15 6.53,8.42C6.38,9.85 6.8,11.27 7.66,12.38C7.16,13.34 6.16,14 5,14A3,3 0 0,1 2,11A3,3 0 0,1 5,8M19,8A3,3 0 0,1 22,11A3,3 0 0,1 19,14C17.84,14 16.84,13.34 16.34,12.38C17.2,11.27 17.62,9.85 17.47,8.42C17.92,8.15 18.44,8 19,8M5.5,18.25C5.5,16.18 8.41,14.5 12,14.5C15.59,14.5 18.5,16.18 18.5,18.25V20H5.5V18.25M0,20V18.5C0,17.11 1.89,15.94 4.45,15.6C3.86,16.28 3.5,17.22 3.5,18.25V20H0M24,20H20.5V18.25C20.5,17.22 20.14,16.28 19.55,15.6C22.11,15.94 24,17.11 24,18.5V20Z\" };\nconst _hoisted_4$2 = { key: 0 };\nfunction _sfc_render$3(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon account-group-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$2, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$2, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$3))\n ], 16, _hoisted_1$3);\n}\nconst AccountGroup = /* @__PURE__ */ _export_sfc(_sfc_main$3, [[\"render\", _sfc_render$3]]);\nconst _sfc_main$2 = {\n name: \"OpenInNewIcon\",\n emits: [\"click\"],\n props: {\n title: {\n type: String\n },\n fillColor: {\n type: String,\n default: \"currentColor\"\n },\n size: {\n type: Number,\n default: 24\n }\n }\n};\nconst _hoisted_1$2 = [\"aria-hidden\", \"aria-label\"];\nconst _hoisted_2$2 = [\"fill\", \"width\", \"height\"];\nconst _hoisted_3$1 = { d: \"M14,3V5H17.59L7.76,14.83L9.17,16.24L19,6.41V10H21V3M19,19H5V5H12V3H5C3.89,3 3,3.9 3,5V19A2,2 0 0,0 5,21H19A2,2 0 0,0 21,19V12H19V19Z\" };\nconst _hoisted_4$1 = { key: 0 };\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", mergeProps(_ctx.$attrs, {\n \"aria-hidden\": $props.title ? null : \"true\",\n \"aria-label\": $props.title,\n class: \"material-design-icon open-in-new-icon\",\n role: \"img\",\n onClick: _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"click\", $event))\n }), [\n (openBlock(), createElementBlock(\"svg\", {\n fill: $props.fillColor,\n class: \"material-design-icon__svg\",\n width: $props.size,\n height: $props.size,\n viewBox: \"0 0 24 24\"\n }, [\n createElementVNode(\"path\", _hoisted_3$1, [\n $props.title ? (openBlock(), createElementBlock(\"title\", _hoisted_4$1, toDisplayString($props.title), 1)) : createCommentVNode(\"\", true)\n ])\n ], 8, _hoisted_2$2))\n ], 16, _hoisted_1$2);\n}\nconst OpenInNew = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2]]);\nregister(t42);\nconst teamResourceProviders = getCapabilities()?.circles?.teamResourceProviders ?? [];\nconst _sfc_main$1 = {\n name: \"NcTeamResources\",\n components: {\n AccountGroup,\n ChevronDown,\n ChevronUp,\n OpenInNew,\n NcButton,\n NcIconSvgWrapper\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n providerId: {\n type: String,\n default: null\n },\n itemId: {\n type: [String, Number],\n default: null\n }\n },\n data() {\n return {\n appEnabled: OC?.appswebroots?.circles !== void 0 && (OC.config.version.split(\".\")[0] ?? 0) >= 29,\n loading: false,\n teamResources: null,\n teamOpen: []\n };\n },\n computed: {\n isVisible() {\n return !this.loading && this.teamResources?.length > 0;\n },\n teamProviders() {\n return (teamId) => {\n const team = this.teamResources.find((t2) => t2.teamId === teamId);\n return team.resources?.reduce((acc, resource) => {\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n if (!acc[resource.provider.id]) {\n acc[resource.provider.id] = resource.provider;\n acc[resource.provider.id].resources = [];\n }\n if (resource.provider.id === this.providerId && resource.id === String(this.itemId)) {\n return acc;\n }\n acc[resource.provider.id].resources.push(resource);\n return acc;\n }, {});\n };\n },\n open() {\n return (teamId) => {\n return this.teamOpen.indexOf(teamId) !== -1;\n };\n }\n },\n watch: {\n providerId() {\n this.fetchTeamResources();\n },\n itemId() {\n this.fetchTeamResources();\n }\n },\n created() {\n this.fetchTeamResources();\n },\n methods: {\n t,\n async fetchTeamResources() {\n if (!teamResourceProviders.includes(this.providerId)) {\n return;\n }\n try {\n this.loading = true;\n const response = await axios.get(generateOcsUrl(`/teams/resources/${this.providerId}/${this.itemId}`));\n this.teamResources = response.data.ocs.data.teams;\n this.teamOpen = [this.teamResources[0]?.teamId];\n } catch (error) {\n this.teamResources = null;\n logger.error(\"[NcTeamResources] Failed to fetch resources\", { error });\n } finally {\n this.loading = false;\n }\n },\n toggleOpen(teamId, open) {\n if (open) {\n this.teamOpen.push(teamId);\n } else {\n this.teamOpen.splice(this.teamOpen.indexOf(teamId), 1);\n }\n }\n }\n};\nconst _hoisted_1$1 = {\n key: 0,\n class: \"team-resources\"\n};\nconst _hoisted_2$1 = { class: \"team-resources__header\" };\nconst _hoisted_3 = [\"open\", \"onToggle\"];\nconst _hoisted_4 = { class: \"related-team__header\" };\nconst _hoisted_5 = { class: \"related-team__name\" };\nconst _hoisted_6 = { key: 0 };\nconst _hoisted_7 = [\"href\"];\nconst _hoisted_8 = {\n key: 0,\n class: \"resource__icon\"\n};\nconst _hoisted_9 = {\n key: 2,\n class: \"resource__icon\"\n};\nconst _hoisted_10 = [\"src\"];\nconst _hoisted_11 = { class: \"resource__name\" };\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_AccountGroup = resolveComponent(\"AccountGroup\");\n const _component_OpenInNew = resolveComponent(\"OpenInNew\");\n const _component_NcButton = resolveComponent(\"NcButton\");\n const _component_ChevronUp = resolveComponent(\"ChevronUp\");\n const _component_ChevronDown = resolveComponent(\"ChevronDown\");\n const _component_NcIconSvgWrapper = resolveComponent(\"NcIconSvgWrapper\");\n return $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createElementVNode(\"h5\", _hoisted_2$1, toDisplayString($options.t(\"Related team resources\")), 1),\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.teamResources, (team) => {\n return openBlock(), createElementBlock(\"details\", {\n key: team.teamId,\n name: \"Team resources\",\n class: \"related-team\",\n open: $options.open(team.teamId),\n onToggle: (event) => $options.toggleOpen(team.teamId, event.target.open)\n }, [\n createElementVNode(\"summary\", _hoisted_4, [\n createElementVNode(\"h5\", _hoisted_5, [\n createVNode(_component_AccountGroup, { size: 20 }),\n createTextVNode(\" \" + toDisplayString(team.displayName), 1)\n ]),\n createVNode(_component_NcButton, {\n \"aria-label\": $options.t(\"View team\"),\n href: team.link,\n title: $options.t(\"View team\"),\n variant: \"tertiary\"\n }, {\n icon: withCtx(() => [\n createVNode(_component_OpenInNew, { size: 20 })\n ]),\n _: 2\n }, 1032, [\"aria-label\", \"href\", \"title\"]),\n $options.open(team.teamId) ? (openBlock(), createBlock(_component_ChevronUp, {\n key: 0,\n size: 20\n })) : (openBlock(), createBlock(_component_ChevronDown, {\n key: 1,\n size: 20\n }))\n ]),\n createElementVNode(\"div\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList($options.teamProviders(team.teamId), (provider) => {\n return openBlock(), createElementBlock(\"div\", {\n key: provider.id,\n class: \"related-team-provider\"\n }, [\n provider.resources.length > 0 ? (openBlock(), createElementBlock(\"h6\", _hoisted_6, toDisplayString(provider.name), 1)) : createCommentVNode(\"\", true),\n createElementVNode(\"ul\", null, [\n (openBlock(true), createElementBlock(Fragment, null, renderList(provider.resources, (resource) => {\n return openBlock(), createElementBlock(\"li\", {\n key: resource.url,\n class: \"related-team-resource\"\n }, [\n createElementVNode(\"a\", {\n href: resource.url,\n class: \"related-team-resource__link\"\n }, [\n resource.iconEmoji ? (openBlock(), createElementBlock(\"span\", _hoisted_8, toDisplayString(resource.iconEmoji), 1)) : resource.iconSvg ? (openBlock(), createBlock(_component_NcIconSvgWrapper, {\n key: 1,\n class: \"resource__icon\",\n svg: resource.iconSvg,\n size: 20\n }, null, 8, [\"svg\"])) : resource.iconURL ? (openBlock(), createElementBlock(\"span\", _hoisted_9, [\n createElementVNode(\"img\", {\n src: resource.iconURL,\n alt: \"\"\n }, null, 8, _hoisted_10)\n ])) : createCommentVNode(\"\", true),\n createElementVNode(\"span\", _hoisted_11, toDisplayString(resource.label), 1)\n ], 8, _hoisted_7)\n ]);\n }), 128))\n ])\n ]);\n }), 128))\n ])\n ], 40, _hoisted_3);\n }), 128))\n ])) : createCommentVNode(\"\", true);\n}\nconst NcTeamResources = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-a0203ee5\"]]);\nregister(t9);\nconst _sfc_main = {\n name: \"NcRelatedResourcesPanel\",\n components: {\n NcResource,\n NcTeamResources\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n providerId: {\n type: String,\n default: null\n },\n /**\n * The item id which uniquely identities the e.g. Calendar event, Deck board, file, Talk room, etc.\n */\n itemId: {\n type: [String, Number],\n default: null\n },\n /**\n * Limits to specific resource type. i.e. any provider id implemented with `\\OCA\\RelatedResources\\IRelatedResourceProvider::getProviderId()`\n */\n resourceType: {\n type: String,\n default: \"\"\n },\n /**\n * Set the maximum number of resources to load\n */\n limit: {\n type: Number,\n default: 0\n },\n /**\n * Only used by the files sidebar\n *\n * File info is passed when registered with `OCA.Sharing.ShareTabSections.registerSection()`\n */\n fileInfo: {\n type: Object,\n default: null\n },\n /**\n * Make the header name dynamic\n */\n header: {\n type: String,\n default: t(\"Related resources\")\n },\n description: {\n type: String,\n default: t(\"Anything shared with the same group of people will show up here\")\n },\n /**\n * If this element is used on a primary element set to true for primary styling.\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"hasError\",\n \"hasResources\"\n ],\n data() {\n return {\n appEnabled: OC?.appswebroots?.related_resources !== void 0,\n loading: false,\n error: null,\n resources: []\n };\n },\n computed: {\n isVisible() {\n if (this.loading) {\n return false;\n }\n return this.error ?? this.resources.length > 0;\n },\n subline() {\n if (this.error) {\n return t(\"Error getting related resources. Please contact your system administrator if you have any questions.\");\n }\n return this.description;\n },\n hasResourceInfo() {\n if (this.providerId !== null && this.itemId !== null) {\n return true;\n }\n if (this.fileInfo !== null) {\n return true;\n }\n return false;\n },\n isFiles() {\n return this.fileInfo?.id !== void 0;\n },\n url() {\n let providerId = null;\n let itemId = null;\n if (this.isFiles) {\n providerId = \"files\";\n itemId = this.fileInfo.id;\n } else {\n providerId = this.providerId;\n itemId = this.itemId;\n }\n return generateOcsUrl(\"/apps/related_resources/related/{providerId}?itemId={itemId}&resourceType={resourceType}&limit={limit}&format=json\", {\n providerId,\n itemId,\n resourceType: this.resourceType,\n limit: this.limit\n });\n }\n },\n watch: {\n providerId() {\n this.fetchRelatedResources();\n },\n itemId() {\n this.fetchRelatedResources();\n },\n fileInfo() {\n this.fetchRelatedResources();\n },\n error(error) {\n this.$emit(\"hasError\", Boolean(error));\n },\n resources(resources) {\n this.$emit(\"hasResources\", resources.length > 0);\n }\n },\n created() {\n this.fetchRelatedResources();\n },\n methods: {\n t,\n async fetchRelatedResources() {\n if (!this.appEnabled || !this.hasResourceInfo) {\n return;\n }\n this.loading = true;\n this.error = null;\n this.resources = [];\n try {\n const response = await axios.get(this.url);\n this.resources = response.data.ocs?.data;\n } catch (error) {\n this.error = error;\n logger.error(\"[NcRelatedResourcesPanel] Failed to fetch resources\", { error });\n } finally {\n this.loading = false;\n }\n }\n }\n};\nconst _hoisted_1 = {\n key: 0,\n class: \"related-resources\"\n};\nconst _hoisted_2 = { class: \"related-resources__header\" };\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcTeamResources = resolveComponent(\"NcTeamResources\");\n const _component_NcResource = resolveComponent(\"NcResource\");\n return openBlock(), createElementBlock(\"div\", null, [\n createVNode(_component_NcTeamResources, {\n providerId: $props.providerId,\n itemId: $props.itemId\n }, null, 8, [\"providerId\", \"itemId\"]),\n $data.appEnabled && $options.isVisible ? (openBlock(), createElementBlock(\"div\", _hoisted_1, [\n createElementVNode(\"div\", _hoisted_2, [\n createElementVNode(\"h5\", null, toDisplayString($props.header), 1),\n createElementVNode(\"p\", null, toDisplayString($options.subline), 1)\n ]),\n (openBlock(true), createElementBlock(Fragment, null, renderList($data.resources, (resource) => {\n return openBlock(), createBlock(_component_NcResource, {\n key: resource.itemId,\n class: \"related-resources__entry\",\n icon: resource.icon,\n name: resource.title,\n url: resource.url\n }, null, 8, [\"icon\", \"name\", \"url\"]);\n }), 128))\n ])) : createCommentVNode(\"\", true)\n ]);\n}\nconst NcRelatedResourcesPanel = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-a1a23691\"]]);\nexport {\n NcRelatedResourcesPanel as N\n};\n//# sourceMappingURL=NcRelatedResourcesPanel-Cn27rj0H.mjs.map\n","import '../assets/NcRichContenteditable-Do20Rmk1.css';\nimport debounce from \"debounce\";\nimport Tribute from \"tributejs/dist/tribute.esm.js\";\nimport { useIsDarkTheme } from \"../composables/useIsDarkTheme/index.mjs\";\nimport { g as getAvatarUrl } from \"./NcMentionBubble.vue_vue_type_style_index_0_scoped_45238efd_lang-D6LzDiYf.mjs\";\nimport { N as NcUserStatusIcon } from \"./NcUserStatusIcon-JWiuiAXe.mjs\";\nimport { openBlock, createElementBlock, normalizeClass, createElementVNode, normalizeStyle, toDisplayString, createApp, resolveComponent, createBlock, createCommentVNode, mergeProps, withModifiers, withKeys } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nimport { a as emojiSearch, e as emojiAddRecent } from \"./emoji-V9hqFgPs.mjs\";\nimport { r as register, s as t37, J as t34, a as t, K as n } from \"./_l10n-BklkVPDO.mjs\";\nimport escapeHTML from \"escape-html\";\nimport stripTags from \"striptags\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue-router\";\nimport \"./legacy-DcjXBL_t.mjs\";\nimport \"./NcButton-lQra4n2g.mjs\";\nimport { g as getLinkWithPicker, s as searchProvider } from \"./referencePickerModal-D09ZVhqa.mjs\";\nimport \"./customPickerElements-Cu7bLbap.mjs\";\nimport \"./autolink-U5pBzLgI.mjs\";\nimport \"./NcRichText-D_ssz6sB.mjs\";\nimport \"./NcEmptyContent-CDgWCt_m.mjs\";\nimport \"./NcHighlight.vue_vue_type_script_lang-DnWQDM_2.mjs\";\nimport \"./NcSelect-B1uITk_3.mjs\";\nimport \"./NcLoadingIcon-CInLzPtA.mjs\";\nimport \"./NcTextField.vue_vue_type_script_setup_true_lang-B-4HNjYH.mjs\";\nimport \"dompurify\";\nimport \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport \"./NcInputField-CPL-a_MM.mjs\";\nimport \"@nextcloud/event-bus\";\nimport \"focus-trap\";\nimport \"./NcActions-B_QR93qv.mjs\";\nimport \"../composables/useFormatDateTime/index.mjs\";\nimport \"../composables/useHotKey/index.mjs\";\nimport \"../composables/useIsFullscreen/index.mjs\";\nimport \"../composables/useIsMobile/index.mjs\";\nimport \"./NcModal-kyWZ3UFC.mjs\";\nimport \"./rtl-v0UOPAM7.mjs\";\nconst _sfc_main$2 = {\n name: \"NcMentionBubble\",\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * Id of the bubble\n */\n id: {\n type: String,\n required: true\n },\n /**\n * The main text\n */\n label: {\n type: String,\n required: false,\n default: null\n },\n /**\n * Icon to be applied\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * URL of the icon\n */\n iconUrl: {\n type: [String, null],\n default: null\n },\n source: {\n type: String,\n required: true\n },\n /**\n * Is the bubble shown as primary\n */\n primary: {\n type: Boolean,\n default: false\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n },\n mentionText() {\n return !this.id.includes(\" \") && !this.id.includes(\"/\") ? `@${this.id}` : `@\"${this.id}\"`;\n }\n }\n};\nconst _hoisted_1$2 = { class: \"mention-bubble__wrapper\" };\nconst _hoisted_2$2 = { class: \"mention-bubble__content\" };\nconst _hoisted_3$1 = [\"title\"];\nconst _hoisted_4$1 = {\n role: \"none\",\n class: \"mention-bubble__select\"\n};\nfunction _sfc_render$2(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"span\", {\n class: normalizeClass([\"mention-bubble\", { \"mention-bubble--primary\": $props.primary }]),\n contenteditable: \"false\"\n }, [\n createElementVNode(\"span\", _hoisted_1$2, [\n createElementVNode(\"span\", _hoisted_2$2, [\n createElementVNode(\"span\", {\n class: normalizeClass([[$props.icon, `mention-bubble__icon--${$options.avatarUrl ? \"with-avatar\" : \"\"}`], \"mention-bubble__icon\"]),\n style: normalizeStyle($options.avatarUrl ? { backgroundImage: `url(${$options.avatarUrl})` } : null)\n }, null, 6),\n createElementVNode(\"span\", {\n role: \"heading\",\n class: \"mention-bubble__title\",\n title: $props.label\n }, null, 8, _hoisted_3$1)\n ]),\n createElementVNode(\"span\", _hoisted_4$1, toDisplayString($options.mentionText), 1)\n ])\n ], 2);\n}\nconst NcMentionBubble = /* @__PURE__ */ _export_sfc(_sfc_main$2, [[\"render\", _sfc_render$2], [\"__scopeId\", \"data-v-45238efd\"]]);\nconst MENTION_START = /(?=[a-z0-9_\\-@.'])\\B/.source;\nconst MENTION_SIMPLE = /(@[a-z0-9_\\-@.']+)/.source;\nconst MENTION_GUEST = /@"(?:guest|email){1}\\/[a-f0-9]+"/.source;\nconst MENTION_PREFIXED = /@"(?:federated_)?(?:group|team|user){1}\\/[a-z0-9_\\-@.' /:]+"/.source;\nconst MENTION_WITH_SPACE = /@"[a-z0-9_\\-@.' ]+"/.source;\nconst MENTION_COMPLEX = `(${MENTION_GUEST}|${MENTION_PREFIXED}|${MENTION_WITH_SPACE})`;\nconst USERID_REGEX = new RegExp(`${MENTION_START}${MENTION_SIMPLE}`, \"gi\");\nconst USERID_REGEX_WITH_SPACE = new RegExp(`${MENTION_START}${MENTION_COMPLEX}`, \"gi\");\nconst richEditor = {\n props: {\n userData: {\n type: Object,\n default: () => ({})\n }\n },\n methods: {\n /**\n * Convert the value string to html for the inner content\n *\n * @param {string} value the content without html\n * @return {string} rendered html\n */\n renderContent(value) {\n const sanitizedValue = escapeHTML(value);\n const splitValue = sanitizedValue.split(USERID_REGEX).map((part) => part.split(USERID_REGEX_WITH_SPACE)).flat();\n return splitValue.map((part) => {\n if (!part.startsWith(\"@\")) {\n return part;\n }\n const id = part.slice(1).replace(/"/gi, \"\");\n return this.genSelectTemplate(id);\n }).join(\"\").replace(/\\n/gmi, \"
    \").replace(/&/gmi, \"&\");\n },\n /**\n * Convert the innerHtml content to a string with mentions as text\n *\n * @param {string} content the content without html\n * @return {string}\n */\n parseContent(content) {\n let text = content;\n text = text.replace(/
    /gmi, \"\\n\");\n text = text.replace(/ /gmi, \" \");\n text = text.replace(/&/gmi, \"&\");\n text = text.replace(/<\\/div>/gmi, \"\\n\");\n text = stripTags(text, \"
    \");\n text = stripTags(text);\n return text;\n },\n /**\n * Generate an autocompletion popup entry template\n *\n * @param {string} value the value to match against the userData\n * @return {string}\n */\n genSelectTemplate(value) {\n if (typeof value === \"undefined\") {\n return `${this.autocompleteTribute.current.collection.trigger}${this.autocompleteTribute.current.mentionText}`;\n }\n const data = this.userData[value];\n if (!data) {\n return [\" \", \"/\", \":\"].every((char) => !value.includes(char)) ? `@${value}` : `@\"${value}\"`;\n }\n return this.renderComponentHtml(data, NcMentionBubble).replace(/[\\n\\t]/gmi, \"\").replace(/>\\s+<\");\n },\n /**\n * Render a component and return its html content\n *\n * @param {object} props the props to pass to the component\n * @param {object} component the component to render\n * @return {string} the rendered html\n */\n renderComponentHtml(props, component) {\n const Item = createApp(component, {\n ...props\n });\n const mount = document.createElement(\"div\");\n mount.style.display = \"none\";\n document.body.appendChild(mount);\n Item.mount(mount);\n const renderedHtml = mount.innerHTML;\n Item.unmount();\n mount.remove();\n return renderedHtml;\n }\n }\n};\nconst _sfc_main$1 = {\n name: \"NcAutoCompleteResult\",\n components: {\n NcUserStatusIcon\n },\n /* eslint vue/require-prop-comment: warn -- TODO: Add a proper doc block about what this props do */\n props: {\n /**\n * The label text\n */\n label: {\n type: String,\n required: false,\n default: null\n },\n /**\n * The secondary line of text if any\n */\n subline: {\n type: String,\n default: null\n },\n /**\n * Unique id\n */\n id: {\n type: String,\n default: null\n },\n /**\n * The icon class\n */\n icon: {\n type: String,\n required: true\n },\n /**\n * Icon as external URL\n */\n iconUrl: {\n type: String,\n default: null\n },\n source: {\n type: String,\n required: true\n },\n status: {\n type: [Object, Array],\n default: () => ({})\n }\n },\n setup() {\n const isDarkTheme = useIsDarkTheme();\n return {\n isDarkTheme\n };\n },\n computed: {\n avatarUrl() {\n if (this.iconUrl) {\n return this.iconUrl;\n }\n return this.id && this.source === \"users\" ? getAvatarUrl(this.id, { isDarkTheme: this.isDarkTheme }) : null;\n }\n }\n};\nconst _hoisted_1$1 = { class: \"autocomplete-result\" };\nconst _hoisted_2$1 = {\n key: 0,\n class: \"autocomplete-result__status autocomplete-result__status--icon\"\n};\nconst _hoisted_3 = { class: \"autocomplete-result__content\" };\nconst _hoisted_4 = [\"title\"];\nconst _hoisted_5 = {\n key: 0,\n class: \"autocomplete-result__subline\"\n};\nfunction _sfc_render$1(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcUserStatusIcon = resolveComponent(\"NcUserStatusIcon\");\n return openBlock(), createElementBlock(\"div\", _hoisted_1$1, [\n createElementVNode(\"div\", {\n class: normalizeClass([[$props.icon, `autocomplete-result__icon--${$options.avatarUrl ? \"with-avatar\" : \"\"}`], \"autocomplete-result__icon\"]),\n style: normalizeStyle($options.avatarUrl ? { backgroundImage: `url(${$options.avatarUrl})` } : null)\n }, [\n $props.status.icon ? (openBlock(), createElementBlock(\"span\", _hoisted_2$1, toDisplayString($props.status && $props.status.icon || \"\"), 1)) : $props.status.status && $props.status.status !== \"offline\" ? (openBlock(), createBlock(_component_NcUserStatusIcon, {\n key: 1,\n class: \"autocomplete-result__status\",\n status: $props.status.status\n }, null, 8, [\"status\"])) : createCommentVNode(\"\", true)\n ], 6),\n createElementVNode(\"span\", _hoisted_3, [\n createElementVNode(\"span\", {\n class: \"autocomplete-result__title\",\n title: $props.label\n }, toDisplayString($props.label), 9, _hoisted_4),\n $props.subline ? (openBlock(), createElementBlock(\"span\", _hoisted_5, toDisplayString($props.subline), 1)) : createCommentVNode(\"\", true)\n ])\n ]);\n}\nconst NcAutoCompleteResult = /* @__PURE__ */ _export_sfc(_sfc_main$1, [[\"render\", _sfc_render$1], [\"__scopeId\", \"data-v-ca83b679\"]]);\nregister(t34, t37);\nconst style1 = {\n \"material-design-icon\": \"_material-design-icon_UrExO\",\n \"tribute-container\": \"_tribute-container_aTO5r\",\n \"tribute-container__item\": \"_tribute-container__item_EHZ07\",\n \"tribute-container--focus-visible\": \"_tribute-container--focus-visible_GHsDW\",\n \"tribute-container-autocomplete\": \"_tribute-container-autocomplete_YNk1h\",\n \"tribute-container-emoji\": \"_tribute-container-emoji_jWgZX\",\n \"tribute-container-link\": \"_tribute-container-link_1b7mc\",\n \"tribute-item\": \"_tribute-item_p5sRT\",\n \"tribute-item__title\": \"_tribute-item__title_VPcy9\",\n \"tribute-item__icon\": \"_tribute-item__icon_aTxCU\"\n};\nconst smilesCharacters = [\"d\", \"D\", \"p\", \"P\", \"s\", \"S\", \"x\", \"X\", \")\", \"(\", \"|\", \"/\"];\nconst textSmiles = [];\nsmilesCharacters.forEach((char) => {\n textSmiles.push(\":\" + char);\n textSmiles.push(\":-\" + char);\n});\nlet isPlaintextOnlySupported = null;\nconst _sfc_main = {\n name: \"NcRichContenteditable\",\n mixins: [richEditor],\n inheritAttrs: false,\n props: {\n /**\n * The ID attribute of the content editable\n */\n id: {\n type: String,\n default: () => createElementId()\n },\n /**\n * Visual label of the contenteditable\n */\n label: {\n type: String,\n default: \"\"\n },\n /**\n * The text content\n */\n modelValue: {\n type: String,\n required: true\n },\n /**\n * Placeholder to be shown if empty\n */\n placeholder: {\n type: String,\n default: t(\"Write a message …\")\n },\n /**\n * Auto complete function\n */\n autoComplete: {\n type: Function,\n default: () => []\n },\n /**\n * The containing element for the menu popover\n */\n menuContainer: {\n type: Element,\n default: () => document.body\n },\n /**\n * Make the contenteditable looks like a textarea or not.\n * Default looks like a single-line input.\n * This also handle the default enter/shift+enter behaviour.\n * if multiline, enter = newline; otherwise enter = submit\n * shift+enter always add a new line. ctrl+enter always submits\n */\n multiline: {\n type: Boolean,\n default: false\n },\n /**\n * Is the content editable ?\n */\n contenteditable: {\n type: Boolean,\n default: true\n },\n /**\n * Disable the editing and show specific disabled design\n */\n disabled: {\n type: Boolean,\n default: false\n },\n /**\n * Max allowed length\n */\n maxlength: {\n type: Number,\n default: null\n },\n /**\n * Enable or disable emoji autocompletion\n */\n emojiAutocomplete: {\n type: Boolean,\n default: true\n },\n /**\n * Enable or disable link autocompletion\n */\n linkAutocomplete: {\n type: Boolean,\n default: true\n },\n /**\n * CSS class to apply to the root element.\n */\n class: {\n type: [String, Array, Object],\n default: \"\"\n }\n },\n emits: [\n \"paste\",\n \"update:modelValue\",\n \"smartPickerSubmit\",\n \"submit\"\n ],\n setup() {\n const segmenter = new Intl.Segmenter();\n if (isPlaintextOnlySupported === null) {\n try {\n document.createElement(\"div\").contentEditable = \"plaintext-only\";\n isPlaintextOnlySupported = true;\n } catch (error) {\n logger.debug(\"[NcRichContenteditable] Unsupported attribute value:\", { error });\n isPlaintextOnlySupported = false;\n }\n }\n return {\n // Constants\n labelId: createElementId(),\n tributeId: createElementId(),\n segmenter,\n /**\n * Non-reactive property to store Tribute instance\n *\n * @type {import('tributejs').default | null}\n */\n tribute: null,\n tributeStyleMutationObserver: null\n };\n },\n data() {\n return {\n // Represent the raw untrimmed text of the contenteditable\n // serves no other purpose than to check whether the\n // content is empty or not\n localValue: this.modelValue,\n // Is in text composition session in IME\n isComposing: false,\n // Tribute autocomplete\n isAutocompleteOpen: false,\n autocompleteActiveId: void 0,\n isTributeIntegrationDone: false\n };\n },\n computed: {\n /**\n * Is the current trimmed value empty?\n *\n * @return {boolean}\n */\n isEmptyValue() {\n return !this.localValue || this.localValue.trim() === \"\";\n },\n /**\n * Is the current value over maxlength?\n *\n * @return {boolean}\n */\n isOverMaxlength() {\n if (this.isEmptyValue || !this.maxlength) {\n return false;\n }\n const length = [...this.segmenter.segment(this.localValue)].length;\n return length > this.maxlength;\n },\n /**\n * Tooltip to show if characters count is over limit\n *\n * @return {string}\n */\n tooltipString() {\n if (!this.isOverMaxlength) {\n return null;\n }\n return n(\"Message limit of %n character reached\", \"Message limit of %n characters reached\", this.maxlength);\n },\n /**\n * Edit is only allowed when contenteditable is:\n * 'true' (all browsers since 2015)\n * 'plaintext-only' (most browsers since 2015, Firefox since 136+)\n *\n * @return {string}\n */\n contenteditableAttributeValue() {\n if (this.contenteditable && !this.disabled) {\n return isPlaintextOnlySupported ? \"plaintext-only\" : \"true\";\n }\n return \"false\";\n },\n /**\n * Compute debounce function for the autocomplete function\n */\n debouncedAutoComplete() {\n return debounce(async (search, callback) => {\n this.autoComplete(search, callback);\n }, 100);\n }\n },\n watch: {\n /**\n * If the parent value change, we compare the plain text rendering\n * If it's different, we render everything and update the main content\n */\n modelValue() {\n const html = this.$refs.contenteditable.innerHTML;\n if (this.modelValue.trim() !== this.parseContent(html).trim()) {\n this.updateContent(this.modelValue);\n }\n }\n },\n mounted() {\n this.initializeTribute();\n this.updateContent(this.modelValue);\n this.$refs.contenteditable.contentEditable = this.contenteditableAttributeValue;\n },\n beforeUnmount() {\n if (this.tribute) {\n this.tribute.detach(this.$refs.contenteditable);\n }\n if (this.tributeStyleMutationObserver) {\n this.tributeStyleMutationObserver.disconnect();\n }\n },\n methods: {\n /**\n * Focus the richContenteditable\n *\n * @public\n */\n focus() {\n this.$refs.contenteditable.focus();\n },\n initializeTribute() {\n const renderMenuItem = (content) => `
    ${content}
    `;\n const tributesCollection = [];\n tributesCollection.push({\n fillAttr: \"id\",\n // Search against id and label (display name) (fallback to title for v8.0.0..8.6.1 compatibility)\n lookup: (result) => `${result.id} ${result.label ?? result.title}`,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(this.renderComponentHtml(item.original, NcAutoCompleteResult)),\n // Hide if no results\n noMatchTemplate: () => '',\n // Inner display of mentions\n selectTemplate: (item) => this.genSelectTemplate(item?.original?.id),\n // Autocompletion results\n values: this.debouncedAutoComplete,\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-autocomplete\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n if (this.emojiAutocomplete) {\n tributesCollection.push({\n trigger: \":\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n return renderMenuItem(`${item.original.native} :${item.original.short_name}`);\n },\n // Hide if no results\n noMatchTemplate: () => t(\"No emoji found\"),\n // Display raw emoji along with its name\n selectTemplate: (item) => {\n if (textSmiles.includes(item.original)) {\n return item.original;\n }\n emojiAddRecent(item.original);\n return item.original.native;\n },\n // Pass the search results as values\n values: (text, cb) => {\n const emojiResults = emojiSearch(text);\n if (textSmiles.includes(\":\" + text)) {\n emojiResults.unshift(\":\" + text);\n }\n cb(emojiResults);\n },\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-emoji\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n if (this.linkAutocomplete) {\n tributesCollection.push({\n trigger: \"/\",\n // Don't use the tribute search function at all\n // We pass search results as values (see below)\n lookup: (result, query) => query,\n requireLeadingSpace: true,\n // Popup mention autocompletion templates\n menuItemTemplate: (item) => renderMenuItem(` ${item.original.title}`),\n // Hide if no results\n noMatchTemplate: () => t(\"No link provider found\"),\n selectTemplate: this.getLink,\n // Pass the search results as values\n values: (text, cb) => cb(searchProvider(text)),\n // Class added to the menu container\n containerClass: `${this.$style[\"tribute-container\"]} ${this.$style[\"tribute-container-link\"]}`,\n // Class added to each list item\n itemClass: this.$style[\"tribute-container__item\"]\n });\n }\n this.tribute = new Tribute({\n collection: tributesCollection,\n // FIXME: tributejs doesn't support allowSpaces as a collection option, only as a global one\n // Requires to fork a library to allow spaces only in the middle of mentions ('@' trigger)\n allowSpaces: false,\n // Where to inject the menu popup\n menuContainer: this.menuContainer\n });\n this.tribute.attach(this.$refs.contenteditable);\n },\n getLink(item) {\n getLinkWithPicker(item.original.id).then((result) => {\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n const eventData = {\n result,\n insertText: true\n };\n this.$emit(\"smartPickerSubmit\", eventData);\n if (eventData.insertText) {\n const newElem = document.createTextNode(result);\n tmpElem.replaceWith(newElem);\n this.setCursorAfter(newElem);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n } else {\n tmpElem.remove();\n }\n }).catch((error) => {\n logger.debug(\"[NcRichContenteditable] Smart picker promise rejected:\", { error });\n const tmpElem = document.getElementById(\"tmp-smart-picker-result-node\");\n this.setCursorAfter(tmpElem);\n tmpElem.remove();\n });\n return '';\n },\n setCursorAfter(element) {\n const range = document.createRange();\n range.setEndAfter(element);\n range.collapse();\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n moveCursorToEnd() {\n if (!document.createRange) {\n return;\n }\n if (window.getSelection().rangeCount > 0 && this.$refs.contenteditable.contains(window.getSelection().getRangeAt(0).commonAncestorContainer)) {\n return;\n }\n const range = document.createRange();\n range.selectNodeContents(this.$refs.contenteditable);\n range.collapse(false);\n const selection = window.getSelection();\n selection.removeAllRanges();\n selection.addRange(range);\n },\n /**\n * Re-emit the input event to the parent\n *\n * @param {Event} event the input event\n */\n onInput(event) {\n this.updateValue(event.target.innerHTML);\n },\n /**\n * When pasting, sanitize the content, extract text\n * and render it again\n *\n * @param {Event} event the paste event\n * @fires Event paste the original paste event\n */\n onPaste(event) {\n if (!this.contenteditable || this.disabled) {\n return;\n }\n if (isPlaintextOnlySupported) {\n this.$emit(\"paste\", event);\n } else {\n event.preventDefault();\n const clipboardData = event.clipboardData;\n this.$emit(\"paste\", event);\n if (clipboardData.files.length !== 0 || !Object.values(clipboardData.items).find((item) => item?.type.startsWith(\"text\"))) {\n return;\n }\n const text = clipboardData.getData(\"text\");\n const selection = window.getSelection();\n const range = selection.getRangeAt(0);\n range.deleteContents();\n range.insertNode(document.createTextNode(text));\n range.collapse(false);\n }\n this.updateValue(this.$refs.contenteditable.innerHTML);\n },\n /**\n * Update the value text from the provided html\n *\n * @param {string} htmlOrText the html content (or raw text with @mentions)\n */\n updateValue(htmlOrText) {\n const text = this.parseContent(htmlOrText).replace(/^\\n$/, \"\");\n this.localValue = text;\n this.$emit(\"update:modelValue\", text);\n },\n /**\n * Update content and local value\n *\n * @param {string} value the message value\n */\n updateContent(value) {\n const renderedContent = this.renderContent(value);\n this.$refs.contenteditable.innerHTML = renderedContent;\n this.localValue = value;\n },\n /**\n * Enter key pressed. Submits if not multiline\n *\n * @param {Event} event the keydown event\n */\n onEnter(event) {\n if (this.multiline || this.isOverMaxlength || this.tribute.isActive || this.isComposing) {\n return;\n }\n event.preventDefault();\n event.stopPropagation();\n this.$emit(\"submit\", event);\n },\n /**\n * Ctrl + Enter key pressed is used to submit\n *\n * @param {Event} event the keydown event\n */\n onCtrlEnter(event) {\n if (this.isOverMaxlength) {\n return;\n }\n this.$emit(\"submit\", event);\n },\n onKeyUp(event) {\n event.stopImmediatePropagation();\n },\n onKeyEsc(event) {\n if (this.tribute && this.isAutocompleteOpen) {\n event.stopImmediatePropagation();\n this.tribute.hideMenu();\n }\n },\n /**\n * Get HTML element with Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeContainer() {\n return this.tribute.menu;\n },\n /**\n * Get the currently selected item element id in Tribute.js container\n *\n * @return {HTMLElement}\n */\n getTributeSelectedItem() {\n return this.getTributeContainer().querySelector('.highlight [id^=\"nc-rich-contenteditable-tribute-item-\"]');\n },\n /**\n * Handle Tribute activation\n *\n * @param {boolean} isActive - is active\n */\n onTributeActive(isActive) {\n this.isAutocompleteOpen = isActive;\n if (isActive) {\n this.getTributeContainer().setAttribute(\"class\", this.tribute.current.collection.containerClass || this.$style[\"tribute-container\"]);\n this.setupTributeIntegration();\n document.removeEventListener(\"click\", this.hideTribute, true);\n } else {\n this.debouncedAutoComplete.clear();\n this.autocompleteActiveId = void 0;\n this.setTributeFocusVisible(false);\n }\n },\n onTributeArrowKeyDown() {\n if (!this.isAutocompleteOpen) {\n return;\n }\n this.setTributeFocusVisible(true);\n this.onTributeSelectedItemWillChange();\n },\n onTributeSelectedItemWillChange() {\n requestAnimationFrame(() => {\n this.autocompleteActiveId = this.getTributeSelectedItem()?.id;\n });\n },\n setupTributeIntegration() {\n if (this.isTributeIntegrationDone) {\n return;\n }\n this.isTributeIntegrationDone = true;\n const tributeContainer = this.getTributeContainer();\n tributeContainer.id = this.tributeId;\n tributeContainer.setAttribute(\"role\", \"listbox\");\n const ul = tributeContainer.children[0];\n ul.setAttribute(\"role\", \"presentation\");\n this.tributeStyleMutationObserver = new MutationObserver(([{ target }]) => {\n if (target.style.display !== \"none\") {\n this.onTributeSelectedItemWillChange();\n }\n }).observe(tributeContainer, {\n attributes: true,\n attributeFilter: [\"style\"]\n });\n tributeContainer.addEventListener(\"mousemove\", () => {\n this.setTributeFocusVisible(false);\n this.onTributeSelectedItemWillChange();\n }, { passive: true });\n },\n /**\n * Set tribute-container--focus-visible class on the Tribute container when the user navigates the listbox via keyboard.\n *\n * Because the real focus is kept on the textbox, we cannot use the :focus-visible pseudo-class\n * to style selected options in the autocomplete listbox.\n *\n * @param {boolean} withFocusVisible - should the focus-visible class be added\n */\n setTributeFocusVisible(withFocusVisible) {\n if (withFocusVisible) {\n this.getTributeContainer().classList.add(this.$style[\"tribute-container--focus-visible\"]);\n } else {\n this.getTributeContainer().classList.remove(this.$style[\"tribute-container--focus-visible\"]);\n }\n },\n /**\n * Show tribute menu programmatically.\n *\n * @param {string} trigger - trigger character, can be '/', '@', or ':'\n *\n * @public\n */\n showTribute(trigger) {\n this.focus();\n const index = this.tribute.collection.findIndex((collection) => collection.trigger === trigger);\n this.tribute.showMenuForCollection(this.$refs.contenteditable, index);\n this.updateValue(this.$refs.contenteditable.innerHTML);\n document.addEventListener(\"click\", this.hideTribute, true);\n },\n /**\n * Hide tribute menu programmatically\n *\n */\n hideTribute() {\n this.tribute.hideMenu();\n document.removeEventListener(\"click\", this.hideTribute, true);\n }\n }\n};\nconst _hoisted_1 = [\"id\", \"contenteditable\", \"aria-labelledby\", \"aria-placeholder\", \"aria-controls\", \"aria-expanded\", \"aria-activedescendant\", \"title\"];\nconst _hoisted_2 = [\"id\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"rich-contenteditable\", _ctx.$props.class])\n }, [\n createElementVNode(\"div\", mergeProps({\n id: $props.id,\n ref: \"contenteditable\",\n class: [{\n \"rich-contenteditable__input--empty\": $options.isEmptyValue,\n \"rich-contenteditable__input--multiline\": $props.multiline,\n \"rich-contenteditable__input--has-label\": $props.label,\n \"rich-contenteditable__input--overflow\": $options.isOverMaxlength,\n \"rich-contenteditable__input--disabled\": $props.disabled\n }, \"rich-contenteditable__input\"],\n contenteditable: $options.contenteditableAttributeValue,\n \"aria-labelledby\": $props.label ? $setup.labelId : void 0,\n \"aria-placeholder\": $props.placeholder,\n \"aria-multiline\": \"true\",\n role: \"textbox\",\n \"aria-haspopup\": \"listbox\",\n \"aria-autocomplete\": \"inline\",\n \"aria-controls\": $setup.tributeId,\n \"aria-expanded\": $data.isAutocompleteOpen ? \"true\" : \"false\",\n \"aria-activedescendant\": $data.autocompleteActiveId,\n title: $options.tooltipString\n }, _ctx.$attrs, {\n onFocus: _cache[0] || (_cache[0] = (...args) => $options.moveCursorToEnd && $options.moveCursorToEnd(...args)),\n onInput: _cache[1] || (_cache[1] = (...args) => $options.onInput && $options.onInput(...args)),\n onCompositionstart: _cache[2] || (_cache[2] = ($event) => $data.isComposing = true),\n onCompositionend: _cache[3] || (_cache[3] = ($event) => $data.isComposing = false),\n onKeydownCapture: _cache[4] || (_cache[4] = withKeys((...args) => $options.onKeyEsc && $options.onKeyEsc(...args), [\"esc\"])),\n onKeydown: [\n _cache[5] || (_cache[5] = withKeys(withModifiers((...args) => $options.onEnter && $options.onEnter(...args), [\"exact\"]), [\"enter\"])),\n _cache[6] || (_cache[6] = withKeys(withModifiers((...args) => $options.onCtrlEnter && $options.onCtrlEnter(...args), [\"ctrl\", \"exact\", \"stop\", \"prevent\"]), [\"enter\"])),\n _cache[9] || (_cache[9] = withKeys(withModifiers((...args) => $options.onTributeArrowKeyDown && $options.onTributeArrowKeyDown(...args), [\"exact\", \"stop\"]), [\"up\"])),\n _cache[10] || (_cache[10] = withKeys(withModifiers((...args) => $options.onTributeArrowKeyDown && $options.onTributeArrowKeyDown(...args), [\"exact\", \"stop\"]), [\"down\"]))\n ],\n onPaste: _cache[7] || (_cache[7] = (...args) => $options.onPaste && $options.onPaste(...args)),\n onKeyupCapture: _cache[8] || (_cache[8] = withModifiers((...args) => $options.onKeyUp && $options.onKeyUp(...args), [\"stop\", \"prevent\"])),\n onTributeActiveTrue: _cache[11] || (_cache[11] = ($event) => $options.onTributeActive(true)),\n onTributeActiveFalse: _cache[12] || (_cache[12] = ($event) => $options.onTributeActive(false))\n }), null, 16, _hoisted_1),\n $props.label ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: $setup.labelId,\n class: \"rich-contenteditable__label\"\n }, toDisplayString($props.label), 9, _hoisted_2)) : createCommentVNode(\"\", true)\n ], 2);\n}\nconst cssModules = {\n \"$style\": style1\n};\nconst NcRichContenteditable = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__cssModules\", cssModules], [\"__scopeId\", \"data-v-426785d7\"]]);\nexport {\n NcAutoCompleteResult as N,\n NcMentionBubble as a,\n NcRichContenteditable as b\n};\n//# sourceMappingURL=NcRichContenteditable-BREsny-v.mjs.map\n","import '../assets/NcSelectUsers-YF5729PJ.css';\nimport { defineComponent, useModel, ref, watch, openBlock, createBlock, unref, mergeProps, withCtx, createVNode, mergeModels } from \"vue\";\nimport { N as NcListItemIcon } from \"./NcListItemIcon-DJJR4RtI.mjs\";\nimport { N as NcSelect } from \"./NcSelect-B1uITk_3.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcSelectUsers\",\n props: /* @__PURE__ */ mergeModels({\n ariaLabelClearSelected: {},\n ariaLabelListbox: {},\n ariaLabelDeselectOption: { type: Function },\n disabled: { type: Boolean },\n inputId: {},\n inputLabel: {},\n labelOutside: { type: Boolean },\n keepOpen: { type: Boolean },\n loading: { type: Boolean },\n multiple: { type: Boolean },\n noWrap: { type: Boolean },\n options: {},\n placeholder: {},\n required: { type: Boolean }\n }, {\n \"modelValue\": {},\n \"modelModifiers\": {}\n }),\n emits: /* @__PURE__ */ mergeModels([\"search\"], [\"update:modelValue\"]),\n setup(__props, { emit: __emit }) {\n const modelValue = useModel(__props, \"modelValue\");\n const emit = __emit;\n const search = ref(\"\");\n watch(search, () => emit(\"search\", search.value));\n const clickableArea = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-clickable-area\"));\n const gridBaseLine = Number.parseInt(window.getComputedStyle(document.body).getPropertyValue(\"--default-grid-baseline\"));\n const avatarSize = clickableArea - 2 * gridBaseLine;\n function filterBy(option, label, search2) {\n const EMAIL_NOTATION = /[^<]*<([^>]+)/;\n const match = search2.match(EMAIL_NOTATION);\n const subname = option.subname?.toLocaleLowerCase() ?? \"\";\n return match && subname.indexOf(match[1].toLocaleLowerCase()) > -1 || `${label} ${option.subname}`.toLocaleLowerCase().indexOf(search2.toLocaleLowerCase()) > -1;\n }\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcSelect), mergeProps({\n modelValue: modelValue.value,\n \"onUpdate:modelValue\": _cache[0] || (_cache[0] = ($event) => modelValue.value = $event),\n class: \"nc-select-users\"\n }, _ctx.$props, {\n filterBy,\n label: \"displayName\",\n onSearch: _cache[1] || (_cache[1] = ($event) => search.value = $event)\n }), {\n option: withCtx((option) => [\n createVNode(unref(NcListItemIcon), mergeProps(option, {\n avatarSize: 32,\n name: option.displayName,\n search: search.value\n }), null, 16, [\"name\", \"search\"])\n ]),\n \"selected-option\": withCtx((selectedOption) => [\n createVNode(unref(NcListItemIcon), mergeProps(selectedOption, {\n avatarSize,\n name: selectedOption.displayName,\n noMargin: \"\",\n search: search.value\n }), null, 16, [\"name\", \"search\"])\n ]),\n _: 1\n }, 16, [\"modelValue\"]);\n };\n }\n});\nconst NcSelectUsers = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-e8e18fd3\"]]);\nexport {\n NcSelectUsers as N\n};\n//# sourceMappingURL=NcSelectUsers-B9ZFtd6B.mjs.map\n","import '../assets/NcSettingsSelectGroup-D_fSrafm.css';\nimport axios from \"@nextcloud/axios\";\nimport { generateOcsUrl } from \"@nextcloud/router\";\nimport debounce from \"debounce\";\nimport { N as NcSelect } from \"./NcSelect-B1uITk_3.mjs\";\nimport { r as register, i as t50, a as t } from \"./_l10n-BklkVPDO.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { resolveComponent, openBlock, createElementBlock, toDisplayString, createCommentVNode, createVNode, withDirectives, createElementVNode, vShow } from \"vue\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nregister(t50);\nconst _sfc_main = {\n name: \"NcSettingsSelectGroup\",\n components: {\n NcSelect\n },\n props: {\n /**\n * The text of the label element of the select group input\n */\n label: {\n type: String,\n required: true\n },\n /**\n * Placeholder for the input element\n * For backwards compatibility it falls back to the `label` value\n */\n placeholder: {\n type: String,\n default: \"\"\n },\n /**\n * id attribute of the select group element\n */\n id: {\n type: String,\n default: () => \"action-\" + createElementId(),\n validator: (id) => id.trim() !== \"\"\n },\n /**\n * value of the select group input\n * A list of group IDs can be provided\n */\n modelValue: {\n type: Array,\n default: () => []\n },\n /**\n * disabled state of the settings select group input\n */\n disabled: {\n type: Boolean,\n default: false\n }\n },\n emits: [\n \"error\",\n \"input\",\n \"update:modelValue\"\n ],\n data() {\n return {\n /** Temporary store to cache groups */\n groups: {},\n randId: createElementId(),\n errorMessage: \"\"\n };\n },\n computed: {\n /**\n * If the error message should be shown\n */\n hasError() {\n return this.errorMessage !== \"\";\n },\n /**\n * Validate input value and only return valid strings (group IDs)\n *\n * @return {string[]}\n */\n filteredValue() {\n return this.modelValue.filter((group) => group !== \"\" && typeof group === \"string\");\n },\n /**\n * value property converted to an array of group objects used as input for the NcSelect\n */\n inputValue() {\n return this.filteredValue.map((id) => {\n if (typeof this.groups[id] === \"undefined\") {\n return {\n id,\n displayname: id\n };\n }\n return this.groups[id];\n });\n },\n /**\n * Convert groups object to array of groups required for NcSelect.options\n * Filter out currently selected values\n *\n * @return {object[]}\n */\n groupsArray() {\n return Object.values(this.groups).filter((g) => !this.modelValue.includes(g.id));\n }\n },\n watch: {\n /**\n * If the value is changed, check that all groups are loaded so we show the correct display name\n */\n modelValue: {\n handler() {\n const loadedGroupIds = Object.keys(this.groups);\n const missing = this.filteredValue.filter((group) => !loadedGroupIds.includes(group));\n missing.forEach((groupId) => {\n this.loadGroup(groupId);\n });\n },\n // Run the watch handler also when the component is initially mounted\n immediate: true\n }\n },\n /**\n * Load groups matching the empty query to reduce API calls\n */\n async mounted() {\n const storageName = `${appName}:${appVersion}/initialGroups`;\n let savedGroups = window.sessionStorage.getItem(storageName);\n if (savedGroups) {\n savedGroups = Object.fromEntries(JSON.parse(savedGroups).map((group) => [group.id, group]));\n this.groups = { ...this.groups, ...savedGroups };\n } else {\n await this.loadGroup(\"\");\n window.sessionStorage.setItem(storageName, JSON.stringify(Object.values(this.groups)));\n }\n },\n methods: {\n t,\n /**\n * Called when a new group is selected or previous group is deselected to emit the update event\n *\n * @param {object[]} updatedValue Array of selected groups\n */\n update(updatedValue) {\n const value = updatedValue.map((element) => element.id);\n this.$emit(\"update:modelValue\", value);\n },\n /**\n * Use provisioning API to search for given group and save it in the groups object\n *\n * @param {string} query The query like parts of the id oder display name\n * @return {boolean}\n */\n async loadGroup(query) {\n try {\n query = typeof query === \"string\" ? encodeURI(query) : \"\";\n const response = await axios.get(generateOcsUrl(`cloud/groups/details?search=${query}&limit=10`, 2));\n if (this.errorMessage !== \"\") {\n window.setTimeout(() => {\n this.errorMessage = \"\";\n }, 5e3);\n }\n if (Object.keys(response.data.ocs.data.groups).length > 0) {\n const newGroups = Object.fromEntries(response.data.ocs.data.groups.map((element) => [element.id, element]));\n this.groups = { ...this.groups, ...newGroups };\n return true;\n }\n } catch (error) {\n this.$emit(\"error\", error);\n this.errorMessage = t(\"Unable to search the group\");\n }\n return false;\n },\n /**\n * Custom filter function for `NcSelect` to filter by ID *and* display name\n *\n * @param {object} option One of the groups\n * @param {string} label The label property of the group\n * @param {string} search The current search string\n */\n filterGroups(option, label, search) {\n return `${label || \"\"} ${option.id}`.toLocaleLowerCase().indexOf(search.toLocaleLowerCase()) > -1;\n },\n /**\n * Debounce the group search (reduce API calls)\n */\n onSearch: debounce(function(query) {\n this.loadGroup(query);\n }, 200)\n }\n};\nconst _hoisted_1 = [\"for\"];\nfunction _sfc_render(_ctx, _cache, $props, $setup, $data, $options) {\n const _component_NcSelect = resolveComponent(\"NcSelect\");\n return openBlock(), createElementBlock(\"div\", null, [\n $props.label ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n for: $props.id,\n class: \"hidden-visually\"\n }, toDisplayString($props.label), 9, _hoisted_1)) : createCommentVNode(\"\", true),\n createVNode(_component_NcSelect, {\n modelValue: $options.inputValue,\n options: $options.groupsArray,\n placeholder: $props.placeholder || $props.label,\n filterBy: $options.filterGroups,\n inputId: $props.id,\n limit: 5,\n label: \"displayname\",\n multiple: true,\n closeOnSelect: false,\n disabled: $props.disabled,\n \"onUpdate:modelValue\": $options.update,\n onSearch: $options.onSearch\n }, null, 8, [\"modelValue\", \"options\", \"placeholder\", \"filterBy\", \"inputId\", \"disabled\", \"onUpdate:modelValue\", \"onSearch\"]),\n withDirectives(createElementVNode(\"div\", { class: \"select-group-error\" }, toDisplayString($data.errorMessage), 513), [\n [vShow, $options.hasError]\n ])\n ]);\n}\nconst NcSettingsSelectGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"render\", _sfc_render], [\"__scopeId\", \"data-v-f2b71592\"]]);\nexport {\n NcSettingsSelectGroup as N\n};\n//# sourceMappingURL=NcSettingsSelectGroup-CupkYUPJ.mjs.map\n","import '../assets/NcTextArea-DF9NgPUa.css';\nimport { defineComponent, useModel, useAttrs, useTemplateRef, computed, watch, openBlock, createElementBlock, normalizeClass, unref, createElementVNode, mergeProps, toDisplayString, createCommentVNode, createBlock, createTextVNode, mergeModels } from \"vue\";\nimport { d as mdiCheck, j as mdiAlertCircleOutline } from \"./mdi-CpchYUUV.mjs\";\nimport { N as NcIconSvgWrapper } from \"./NcIconSvgWrapper-De-2-ukl.mjs\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { i as isLegacy } from \"./legacy-DcjXBL_t.mjs\";\nimport { l as logger } from \"./logger-D3RVzcfQ.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = { class: \"textarea__main-wrapper\" };\nconst _hoisted_2 = [\"id\", \"aria-describedby\", \"disabled\", \"placeholder\", \"value\"];\nconst _hoisted_3 = [\"for\"];\nconst _hoisted_4 = [\"id\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n ...{ inheritAttrs: false },\n __name: \"NcTextArea\",\n props: /* @__PURE__ */ mergeModels({\n disabled: { type: Boolean },\n error: { type: Boolean },\n helperText: { default: void 0 },\n id: { default: () => createElementId() },\n inputClass: { default: \"\" },\n label: { default: void 0 },\n labelOutside: { type: Boolean },\n placeholder: { default: void 0 },\n resize: { default: \"both\" },\n success: { type: Boolean }\n }, {\n \"modelValue\": { required: true },\n \"modelModifiers\": {}\n }),\n emits: [\"update:modelValue\"],\n setup(__props, { expose: __expose }) {\n const modelValue = useModel(__props, \"modelValue\");\n const props = __props;\n __expose({\n focus,\n select\n });\n const attrs = useAttrs();\n const textAreaElement = useTemplateRef(\"input\");\n const internalPlaceholder = computed(() => props.placeholder || (isLegacy ? props.label : void 0));\n watch(() => props.labelOutside, () => {\n if (!props.labelOutside && !props.label) {\n logger.warn(\"[NcTextArea] You need to add a label to the NcInputField component. Either use the prop label or use an external one, as per the example in the documentation.\");\n }\n });\n const ariaDescribedby = computed(() => {\n const ariaDescribedby2 = [];\n if (props.helperText) {\n ariaDescribedby2.push(`${props.id}-helper-text`);\n }\n if (typeof attrs[\"aria-describedby\"] === \"string\") {\n ariaDescribedby2.push(attrs[\"aria-describedby\"]);\n }\n return ariaDescribedby2.join(\" \") || void 0;\n });\n function handleInput(event) {\n const { value } = event.target;\n modelValue.value = value;\n }\n function focus(options) {\n textAreaElement.value.focus(options);\n }\n function select() {\n textAreaElement.value.select();\n }\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"div\", {\n class: normalizeClass([\"textarea\", [\n _ctx.$attrs.class,\n {\n \"textarea--disabled\": _ctx.disabled,\n \"textarea--legacy\": unref(isLegacy)\n }\n ]])\n }, [\n createElementVNode(\"div\", _hoisted_1, [\n createElementVNode(\"textarea\", mergeProps({ ..._ctx.$attrs, class: void 0 }, {\n id: _ctx.id,\n ref: \"input\",\n \"aria-describedby\": ariaDescribedby.value,\n \"aria-live\": \"polite\",\n class: [\"textarea__input\", [\n _ctx.inputClass,\n {\n \"textarea__input--label-outside\": _ctx.labelOutside,\n \"textarea__input--legacy\": unref(isLegacy),\n \"textarea__input--success\": _ctx.success,\n \"textarea__input--error\": _ctx.error\n }\n ]],\n disabled: _ctx.disabled,\n placeholder: internalPlaceholder.value,\n style: { resize: _ctx.resize },\n value: modelValue.value,\n onInput: handleInput\n }), null, 16, _hoisted_2),\n !_ctx.labelOutside ? (openBlock(), createElementBlock(\"label\", {\n key: 0,\n class: \"textarea__label\",\n for: _ctx.id\n }, toDisplayString(_ctx.label), 9, _hoisted_3)) : createCommentVNode(\"\", true)\n ]),\n _ctx.helperText ? (openBlock(), createElementBlock(\"p\", {\n key: 0,\n id: `${_ctx.id}-helper-text`,\n class: normalizeClass([\"textarea__helper-text-message\", {\n \"textarea__helper-text-message--error\": _ctx.error,\n \"textarea__helper-text-message--success\": _ctx.success\n }])\n }, [\n _ctx.success ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 0,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiCheck),\n inline: \"\"\n }, null, 8, [\"path\"])) : _ctx.error ? (openBlock(), createBlock(NcIconSvgWrapper, {\n key: 1,\n class: \"textarea__helper-text-message__icon\",\n path: unref(mdiAlertCircleOutline),\n inline: \"\"\n }, null, 8, [\"path\"])) : createCommentVNode(\"\", true),\n createTextVNode(\" \" + toDisplayString(_ctx.helperText), 1)\n ], 10, _hoisted_4)) : createCommentVNode(\"\", true)\n ], 2);\n };\n }\n});\nconst NcTextArea = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__scopeId\", \"data-v-657c47f8\"]]);\nexport {\n NcTextArea as N\n};\n//# sourceMappingURL=NcTextArea-CseOD9aM.mjs.map\n"],"names":["register","t20","NcActions","t14","t21","t23","t51","t16","t44","t","t47","t48","t31","LOCALHOST","COLON","defaults","noop","Options","opts","defaultRender","o","ignoredTags","uppercaseIgnoredTags","i","ir","token","key","operator","isCallable","option","obj","val","MultiToken","value","tokens","scheme","options","truncate","formatted","protocol","href","formattedHref","tagName","content","attributes","className","target","rel","attrs","eventListeners","createTokenClass","type","props","Token","p","t15","PQueue","t28","t6","t35","millisecondsInWeek","millisecondsInDay","millisecondsInMinute","millisecondsInHour","millisecondsInSecond","constructFromSymbol","constructFrom","date","toDate","argument","context","addDays","amount","_date","addMonths","dayOfMonth","endOfDesiredMonth","daysInMonth","add","duration","years","months","weeks","days","hours","minutes","seconds","dateWithMonths","dateWithDays","minutesToAdd","msToAdd","addMilliseconds","addHours","defaultOptions","getDefaultOptions","startOfWeek","weekStartsOn","day","diff","startOfISOWeek","getISOWeekYear","year","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","getTimezoneOffsetInMilliseconds","utcDate","normalizeDates","dates","normalize","startOfDay","differenceInCalendarDays","laterDate","earlierDate","laterDate_","earlierDate_","laterStartOfDay","earlierStartOfDay","laterTimestamp","earlierTimestamp","startOfISOWeekYear","fourthOfJanuary","addQuarters","addYears","compareAsc","dateLeft","dateRight","isDate","isValid","getQuarter","differenceInCalendarYears","differenceInYears","sign","partial","result","normalizeInterval","interval","start","end","eachDayOfInterval","reversed","endTime","step","startOfQuarter","currentMonth","month","eachQuarterOfInterval","startOfMonth","endOfYear","startOfYear","date_","endOfWeek","endOfQuarter","formatDistanceLocale","formatDistance","count","tokenValue","buildFormatLongFn","args","width","dateFormats","timeFormats","dateTimeFormats","formatLong","formatRelativeLocale","formatRelative","_baseDate","_options","buildLocalizeFn","valuesArray","defaultWidth","index","eraValues","quarterValues","monthValues","dayValues","dayPeriodValues","formattingDayPeriodValues","ordinalNumber","dirtyNumber","number","rem100","localize","quarter","buildMatchFn","string","matchPattern","matchResult","matchedString","parsePatterns","findIndex","pattern","findKey","rest","object","predicate","array","buildMatchPatternFn","parseResult","matchOrdinalNumberPattern","parseOrdinalNumberPattern","matchEraPatterns","parseEraPatterns","matchQuarterPatterns","parseQuarterPatterns","matchMonthPatterns","parseMonthPatterns","matchDayPatterns","parseDayPatterns","matchDayPeriodPatterns","parseDayPeriodPatterns","match","enUS","getDayOfYear","getISOWeek","getWeekYear","firstWeekContainsDate","firstWeekOfNextYear","firstWeekOfThisYear","startOfWeekYear","firstWeek","getWeek","addLeadingZeros","targetLength","output","lightFormatters","signedYear","dayPeriodEnumValue","numberOfDigits","milliseconds","fractionalSeconds","dayPeriodEnum","formatters","era","signedWeekYear","weekYear","twoDigitYear","isoWeekYear","week","isoWeek","dayOfYear","dayOfWeek","localDayOfWeek","isoDayOfWeek","_localize","timezoneOffset","formatTimezoneWithOptionalMinutes","formatTimezone","formatTimezoneShort","timestamp","offset","delimiter","absOffset","dateLongFormatter","timeLongFormatter","dateTimeLongFormatter","datePattern","timePattern","dateTimeFormat","longFormatters","dayOfYearTokenRE","weekYearTokenRE","throwTokens","isProtectedDayOfYearToken","isProtectedWeekYearToken","warnOrThrowProtectedError","format","input","_message","message","subject","formattingTokensRegExp","longFormattingTokensRegExp","escapedStringRegExp","doubleQuoteRegExp","unescapedLatinCharacterRegExp","formatStr","locale","defaultLocale","originalDate","parts","substring","firstCharacter","longFormatter","cleanEscapedString","formatterOptions","part","formatter","matched","getDay","getDaysInMonth","monthIndex","lastDayOfMonth","getInternalDefaultOptions","getHours","getISODay","getMinutes","getMonth","getSeconds","getYear","isAfter","dateToCompare","isBefore","isEqual","leftDate","rightDate","transpose","constructor","isConstructor","TIMEZONE_UNIT_PRIORITY","Setter","_utcDate","ValueSetter","validateValue","setValue","priority","subPriority","flags","DateTimezoneSetter","reference","Parser","dateString","_value","EraParser","numericPatterns","timezonePatterns","mapValue","parseFnResult","mapFn","parseNumericPattern","parseTimezonePattern","parseAnyDigitsSigned","parseNDigits","n","parseNDigitsSigned","dayPeriodEnumToHours","dayPeriod","normalizeTwoDigitYear","currentYear","isCommonEra","absCurrentYear","rangeEnd","rangeEndCentury","isPreviousCentury","isLeapYearIndex","YearParser","valueCallback","normalizedTwoDigitYear","LocalWeekYearParser","ISOWeekYearParser","_flags","firstWeekOfYear","ExtendedYearParser","QuarterParser","StandAloneQuarterParser","MonthParser","StandAloneMonthParser","setWeek","LocalWeekParser","setISOWeek","ISOWeekParser","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","DateParser","isLeapYear","DayOfYearParser","setDay","currentDay","dayIndex","delta","DayParser","LocalDayParser","wholeWeekDays","StandAloneLocalDayParser","setISODay","ISODayParser","AMPMParser","AMPMMidnightParser","DayPeriodParser","Hour1to12Parser","isPM","Hour0to23Parser","Hour0To11Parser","Hour1To24Parser","MinuteParser","SecondParser","FractionOfSecondParser","ISOTimezoneWithZParser","ISOTimezoneParser","TimestampSecondsParser","TimestampMillisecondsParser","parsers","notWhitespaceRegExp","parse","dateStr","referenceDate","invalidDate","subFnOptions","setters","usedTokens","parser","incompatibleTokens","incompatibleToken","usedToken","uniquePrioritySetters","setter","a","b","setterArray","isSameQuarter","dateLeft_","dateRight_","subDays","setMonth","midMonth","set","values","setHours","setMilliseconds","setMinutes","setSeconds","setYear","subMonths","sub","withoutMonths","withoutDays","minutesToSub","msToSub","subYears","jt","Jn","w","W","he","Sn","Ua","Va","ja","Ka","Ga","Ze","Qa","l","La","H","wl","Fe","Dl","Ml","ot","st","Ot","je","$l","Qe","Re","Lt","un","Al","ft","Tl","f","qa","Ja","Pn","g","d","Sl","Le","s","Pl","Rn","Xa","Ne","dn","cn","Cn","Rl","Zt","Ht","Dt","Cl","Ol","Fa","Za","Ta","ca","Bl","qe","_l","On","Bn","fn","Na","da","dl","Se","Yl","Il","ol","Mt","ul","il","wn","Dn","Be","Ft","$e","Nt","Ee","_t","xt","it","Sa","Bt","yt","$t","zt","_n","ye","Me","Yn","Wt","In","bn","El","Ct","mt","Wa","kn","En","wt","pt","sl","ut","Nn","Jt","Ll","Nl","Ln","It","oa","za","Fl","Pa","Ra","vn","Ca","zl","Hl","Fn","xa","Ha","mn","cl","kt","zn","Kt","ea","Hn","j","Pe","Oa","Z","sa","Ba","_a","Ya","Ve","Ie","At","M","A","P","v","pn","Wl","gn","Ul","Vl","jl","Kl","Gl","Ql","ql","Xl","Jl","Zl","xl","er","Ia","tr","ar","nr","lr","Oe","U","$","C","z","R","h","T","F","_","m","L","rr","qt","rt","x","X","S","fl","B","k","q","le","ee","O","J","ce","pe","Y","te","y","V","se","be","Ae","u","re","G","I","or","Tt","Mn","$n","va","dt","sr","ur","We","Ue","Ut","ie","ze","He","ke","lt","Q","gt","Ke","dr","cr","fr","vr","ta","ga","Zn","at","c","De","Xt","Ce","ua","ia","mr","ma","pr","Qt","gr","Wn","aa","Te","we","xn","tt","Vt","Ge","en","tn","pa","Un","Vn","jn","An","Gt","vl","yr","na","hr","Yt","et","Je","br","kr","wr","Dr","Mr","$r","Ar","Tr","Sr","Pr","r","E","K","oe","Tn","ml","ge","_e","Ye","nt","ne","fa","Rr","Cr","Or","Br","Kn","Gn","_r","Yr","Ir","Er","Nr","Lr","Fr","zr","Hr","Wr","Ur","Vr","jr","Kr","Gr","pl","gl","yn","Qr","ae","ve","N","ue","me","ct","Pt","$a","Rt","ra","Aa","Xn","vt","xe","St","D","fe","ht","Xe","ya","ha","la","ba","ka","wa","Da","Ma","qr","Xr","mo","Jr","rn","sn","yl","hl","on","Zr","xr","eo","Qn","to","ao","no","lo","ro","oo","so","uo","io","hn","de","po","el","Et","co","tl","nn","bt","fo","vo","kl","bl","go","yo","ho","bo","ko","wo","Ea","Do","al","nl","Mo","$o","Ao","To","ll","an","ln","rl","qn","So","t45","formatTimezoneId","timezoneId","getTimezones","tz","_sfc_main","defineComponent","mergeModels","createElementId","__props","modelValue","useModel","formattedAdditionalTimezones","computed","label","timezones","filterBy","search","terms","term","_ctx","_cache","openBlock","createBlock","NcSelect","$event","unref","t13","_hoisted_1","_hoisted_2","getCanonicalLocale","__emit","emit","targetElement","useTemplateRef","pickerInstance","time","placeholderFallback","realFormat","pickerType","minTime","maxTime","onUpdateModelValue","value2","formatLibraryTime","data","weekStart","getFirstDay","dayNames","getDayNamesMin","weekNumName","ariaLabels","getDayNames","overlay","selectDate","cancelSelection","calcMinMaxTime","sameDay","createElementBlock","createVNode","VueDatePicker","mergeProps","createSlots","withCtx","NcButton","createTextVNode","toDisplayString","clear","NcIconSvgWrapper","mdiClose","mdiCalendarBlank","mdiClock","mdiChevronLeft","mdiChevronRight","mdiChevronDown","mdiChevronUp","_sfc_main$1","Teleport","createElementVNode","NcDateTimePicker","_export_sfc","gtBuilder","getGettextBuilder","t7","margin","defaultSize","NcAvatar","userStatus","margin2","EMAIL_NOTATION","_hoisted_3","_hoisted_4","_sfc_render","$props","$setup","$data","$options","_component_NcAvatar","resolveComponent","_component_NcHighlight","_component_NcIconSvgWrapper","normalizeClass","normalizeStyle","createCommentVNode","renderSlot","NcListItemIcon","t38","t42","getCapabilities","t9","list","length","thisArg","CustomEvent$1","event","params","evt","t34","t37","ref","watch","clickableArea","gridBaseLine","avatarSize","search2","subname","selectedOption","NcSelectUsers","t50","debounce","query","__expose","focus","select","useAttrs","textAreaElement","internalPlaceholder","isLegacy","logger","ariaDescribedby","ariaDescribedby2","handleInput","mdiCheck","mdiAlertCircleOutline","NcTextArea"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148]} \ No newline at end of file diff --git a/dist/index-BpgPbDC6.chunk.mjs.map.license b/dist/index-Bk4hMpWo.chunk.mjs.map.license similarity index 100% rename from dist/index-BpgPbDC6.chunk.mjs.map.license rename to dist/index-Bk4hMpWo.chunk.mjs.map.license diff --git a/dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs b/dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs similarity index 99% rename from dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs rename to dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs index 10eaf6856dbae..c0fedcb408ed9 100644 --- a/dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs +++ b/dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs @@ -1,6 +1,6 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/Plus-BsxGg9Cm.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/Plus-DoZPzs7J.chunk.css'),window.OC.filePath('', '', 'dist/index-Dpj4ddZx.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-CQFyGatl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQwJiKOs.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/ShareType-suoNfd7y.chunk.mjs'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-TGZB0t_n.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DdQinVMt.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-DxPSRxK-.chunk.css'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-5gl8Syfa-CtBAA7-7.chunk.css'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-DS-ziNw6.chunk.css'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-B9mkBKAR.chunk.css'),window.OC.filePath('', '', 'dist/dav-C3Vmpmsl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DuirWb3a.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css')])))=>i.map(i=>d[i]); +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/Plus-BsxGg9Cm.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/Plus-DoZPzs7J.chunk.css'),window.OC.filePath('', '', 'dist/index-Dpj4ddZx.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-CQFyGatl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQwJiKOs.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/ShareType-suoNfd7y.chunk.mjs'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-TGZB0t_n.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DdQinVMt.chunk.css'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-DxPSRxK-.chunk.css'),window.OC.filePath('', '', 'dist/NcBreadcrumbs-5gl8Syfa-CtBAA7-7.chunk.css'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs'),window.OC.filePath('', '', 'dist/NcActionRouter-CvDVCQiQ-DS-ziNw6.chunk.css'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-B9mkBKAR.chunk.css'),window.OC.filePath('', '', 'dist/dav-C3Vmpmsl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DuirWb3a.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css')])))=>i.map(i=>d[i]); import{b as j,_ as M}from"./index-BgmsSgl5.chunk.mjs";import{s as y,N as I}from"./index-Bos-XXa5.chunk.mjs";import{l as Y}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{f as P,g as _}from"./index-DqIuD5e7.chunk.mjs";import{N as V}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{b as U,A as T,B as L,c as p,o as x,w as D,l as A,j as W,u as w,k as q,t as K,p as O}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";var v={exports:{}},H=v.exports,k;function R(){return k||(k=1,(function(i){(function(e,s){i.exports?i.exports=s():e.Toastify=s()})(H,function(e){var s=function(u){return new s.lib.init(u)},t="1.12.0";s.defaults={oldestFirst:!0,text:"Toastify is awesome!",node:void 0,duration:3e3,selector:void 0,callback:function(){},destination:void 0,newWindow:!1,close:!1,gravity:"toastify-top",positionLeft:!1,position:"",backgroundColor:"",avatar:"",className:"",stopOnFocus:!0,onClick:function(){},offset:{x:0,y:0},escapeMarkup:!0,ariaLive:"polite",style:{background:""}},s.lib=s.prototype={toastify:t,constructor:s,init:function(u){return u||(u={}),this.options={},this.toastElement=null,this.options.text=u.text||s.defaults.text,this.options.node=u.node||s.defaults.node,this.options.duration=u.duration===0?0:u.duration||s.defaults.duration,this.options.selector=u.selector||s.defaults.selector,this.options.callback=u.callback||s.defaults.callback,this.options.destination=u.destination||s.defaults.destination,this.options.newWindow=u.newWindow||s.defaults.newWindow,this.options.close=u.close||s.defaults.close,this.options.gravity=u.gravity==="bottom"?"toastify-bottom":s.defaults.gravity,this.options.positionLeft=u.positionLeft||s.defaults.positionLeft,this.options.position=u.position||s.defaults.position,this.options.backgroundColor=u.backgroundColor||s.defaults.backgroundColor,this.options.avatar=u.avatar||s.defaults.avatar,this.options.className=u.className||s.defaults.className,this.options.stopOnFocus=u.stopOnFocus===void 0?s.defaults.stopOnFocus:u.stopOnFocus,this.options.onClick=u.onClick||s.defaults.onClick,this.options.offset=u.offset||s.defaults.offset,this.options.escapeMarkup=u.escapeMarkup!==void 0?u.escapeMarkup:s.defaults.escapeMarkup,this.options.ariaLive=u.ariaLive||s.defaults.ariaLive,this.options.style=u.style||s.defaults.style,u.backgroundColor&&(this.options.style.background=u.backgroundColor),this},buildToast:function(){if(!this.options)throw"Toastify is not initialized";var u=document.createElement("div");u.className="toastify on "+this.options.className,this.options.position?u.className+=" toastify-"+this.options.position:this.options.positionLeft===!0?(u.className+=" toastify-left",console.warn("Property `positionLeft` will be depreciated in further versions. Please use `position` instead.")):u.className+=" toastify-right",u.className+=" "+this.options.gravity,this.options.backgroundColor&&console.warn('DEPRECATION NOTICE: "backgroundColor" is being deprecated. Please use the "style.background" property.');for(var m in this.options.style)u.style[m]=this.options.style[m];if(this.options.ariaLive&&u.setAttribute("aria-live",this.options.ariaLive),this.options.node&&this.options.node.nodeType===Node.ELEMENT_NODE)u.appendChild(this.options.node);else if(this.options.escapeMarkup?u.innerText=this.options.text:u.innerHTML=this.options.text,this.options.avatar!==""){var g=document.createElement("img");g.src=this.options.avatar,g.className="toastify-avatar",this.options.position=="left"||this.options.positionLeft===!0?u.appendChild(g):u.insertAdjacentElement("afterbegin",g)}if(this.options.close===!0){var a=document.createElement("button");a.type="button",a.setAttribute("aria-label","Close"),a.className="toast-close",a.innerHTML="✖",a.addEventListener("click",function(C){C.stopPropagation(),this.removeElement(this.toastElement),window.clearTimeout(this.toastElement.timeOutValue)}.bind(this));var r=window.innerWidth>0?window.innerWidth:screen.width;(this.options.position=="left"||this.options.positionLeft===!0)&&r>360?u.insertAdjacentElement("afterbegin",a):u.appendChild(a)}if(this.options.stopOnFocus&&this.options.duration>0){var d=this;u.addEventListener("mouseover",function(C){window.clearTimeout(u.timeOutValue)}),u.addEventListener("mouseleave",function(){u.timeOutValue=window.setTimeout(function(){d.removeElement(u)},d.options.duration)})}if(typeof this.options.destination<"u"&&u.addEventListener("click",function(C){C.stopPropagation(),this.options.newWindow===!0?window.open(this.options.destination,"_blank"):window.location=this.options.destination}.bind(this)),typeof this.options.onClick=="function"&&typeof this.options.destination>"u"&&u.addEventListener("click",function(C){C.stopPropagation(),this.options.onClick()}.bind(this)),typeof this.options.offset=="object"){var E=n("x",this.options),c=n("y",this.options),B=this.options.position=="left"?E:"-"+E,z=this.options.gravity=="toastify-top"?c:"-"+c;u.style.transform="translate("+B+","+z+")"}return u},showToast:function(){this.toastElement=this.buildToast();var u;if(typeof this.options.selector=="string"?u=document.getElementById(this.options.selector):this.options.selector instanceof HTMLElement||typeof ShadowRoot<"u"&&this.options.selector instanceof ShadowRoot?u=this.options.selector:u=document.body,!u)throw"Root element is not defined";var m=s.defaults.oldestFirst?u.firstChild:u.lastChild;return u.insertBefore(this.toastElement,m),s.reposition(),this.options.duration>0&&(this.toastElement.timeOutValue=window.setTimeout(function(){this.removeElement(this.toastElement)}.bind(this),this.options.duration)),this},hideToast:function(){this.toastElement.timeOutValue&&clearTimeout(this.toastElement.timeOutValue),this.removeElement(this.toastElement)},removeElement:function(u){u.className=u.className.replace(" on",""),window.setTimeout(function(){this.options.node&&this.options.node.parentNode&&this.options.node.parentNode.removeChild(this.options.node),u.parentNode&&u.parentNode.removeChild(u),this.options.callback.call(u),s.reposition()}.bind(this),400)}},s.reposition=function(){for(var u={top:15,bottom:15},m={top:15,bottom:15},g={top:15,bottom:15},a=document.getElementsByClassName("toastify"),r,d=0;d0?window.innerWidth:screen.width;B<=360?(a[d].style[r]=g[r]+"px",g[r]+=E+c):o(a[d],"toastify-left")===!0?(a[d].style[r]=u[r]+"px",u[r]+=E+c):(a[d].style[r]=m[r]+"px",m[r]+=E+c)}return this};function n(u,m){return m.offset[u]?isNaN(m.offset[u])?m.offset[u]:m.offset[u]+"px":"0px"}function o(u,m){return!u||typeof m!="string"?!1:!!(u.className&&u.className.trim().split(/\s+/gi).indexOf(m)>-1)}return s.lib.init.prototype=s.lib,s})})(v)),v.exports}var G=R();const Z=P(G),J='',Q='',N=Y().detectLanguage();for(const i of[{language:"ar",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" لا يصلح كاسم مجلد.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" غير مسموح به كاسم مجلد']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" غير مسموح به داخل اسم مجلد.']},{msgid:"All files",msgstr:["كل الملفات"]},{msgid:"Choose",msgstr:["إختَر"]},{msgid:"Choose {file}",msgstr:["إختر {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["إختَر %n ملف","إختَر %n ملف","إختَر %n ملف","إختَر %n ملفات","إختَر %n ملف","إختر %n ملف"]},{msgid:"Copy",msgstr:["نسخ"]},{msgid:"Copy to {target}",msgstr:["نسخ إلى {target}"]},{msgid:"Could not create the new folder",msgstr:["تعذّر إنشاء المجلد الجديد"]},{msgid:"Could not load files settings",msgstr:["يتعذّر تحميل إعدادات الملفات"]},{msgid:"Could not load files views",msgstr:["تعذر تحميل عرض الملفات"]},{msgid:"Create directory",msgstr:["إنشاء مجلد"]},{msgid:"Current view selector",msgstr:["محدد العرض الحالي"]},{msgid:"Favorites",msgstr:["المفضلة"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["الملفات والمجلدات التي تحددها كمفضلة ستظهر هنا."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["الملفات و المجلدات التي قمت مؤخراً بتعديلها سوف تظهر هنا."]},{msgid:"Filter file list",msgstr:["تصفية قائمة الملفات"]},{msgid:"Folder name cannot be empty.",msgstr:["اسم المجلد لا يمكن أن يكون فارغاً."]},{msgid:"Home",msgstr:["البداية"]},{msgid:"Modified",msgstr:["التعديل"]},{msgid:"Move",msgstr:["نقل"]},{msgid:"Move to {target}",msgstr:["نقل إلى {target}"]},{msgid:"Name",msgstr:["الاسم"]},{msgid:"New",msgstr:["جديد"]},{msgid:"New folder",msgstr:["مجلد جديد"]},{msgid:"New folder name",msgstr:["اسم المجلد الجديد"]},{msgid:"No files in here",msgstr:["لا توجد ملفات هنا"]},{msgid:"No files matching your filter were found.",msgstr:["لا توجد ملفات تتطابق مع عامل التصفية الذي وضعته"]},{msgid:"No matching files",msgstr:["لا توجد ملفات مطابقة"]},{msgid:"Recent",msgstr:["الحالي"]},{msgid:"Select all entries",msgstr:["حدد جميع الإدخالات"]},{msgid:"Select entry",msgstr:["إختَر المدخل"]},{msgid:"Select the row for {nodename}",msgstr:["إختر سطر الـ {nodename}"]},{msgid:"Size",msgstr:["الحجم"]},{msgid:"Undo",msgstr:["تراجع"]},{msgid:"Upload some content or sync with your devices!",msgstr:["قم برفع بعض المحتوى أو المزامنة مع أجهزتك!"]}]},{language:"ast",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["«{name}» ye un nome de carpeta inválidu."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["«{name}» ye un nome de carpeta inválidu"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["Nun se permite'l caráuter «/» dientro'l nome de les carpetes."]},{msgid:"All files",msgstr:["Tolos ficheros"]},{msgid:"Choose",msgstr:["Escoyer"]},{msgid:"Choose {file}",msgstr:["Escoyer «{ficheru}»"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escoyer %n ficheru","Escoyer %n ficheros"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar en: {target}"]},{msgid:"Could not create the new folder",msgstr:["Nun se pudo crear la carpeta"]},{msgid:"Could not load files settings",msgstr:["Nun se pudo cargar la configuración de los ficheros"]},{msgid:"Could not load files views",msgstr:["Nun se pudieron cargar les vistes de los ficheros"]},{msgid:"Create directory",msgstr:["Crear un direutoriu"]},{msgid:"Current view selector",msgstr:["Selector de la vista actual"]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Equí apaecen los ficheros y les carpetes que metas en Favoritos."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Equí apaecen los fichero y les carpetes que modificares apocayá."]},{msgid:"Filter file list",msgstr:["Peñerar la llista de ficheros"]},{msgid:"Folder name cannot be empty.",msgstr:["El nome de la carpeta nun pue tar baleru."]},{msgid:"Home",msgstr:["Aniciu"]},{msgid:"Modified",msgstr:["Modificóse"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"New",msgstr:["Nuevu"]},{msgid:"New folder",msgstr:["Carpeta nueva"]},{msgid:"New folder name",msgstr:["Nome de carpeta nuevu"]},{msgid:"No files in here",msgstr:["Equí nun hai nengún ficheru"]},{msgid:"No files matching your filter were found.",msgstr:["Nun s'atopó nengún ficheru que concasare cola peñera."]},{msgid:"No matching files",msgstr:["Nun hai nengún ficheru que concase"]},{msgid:"Recent",msgstr:["De recién"]},{msgid:"Select all entries",msgstr:["Seleicionar toles entraes"]},{msgid:"Select entry",msgstr:["Seleicionar la entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleicionar la filera de: {nodename}"]},{msgid:"Size",msgstr:["Tamañu"]},{msgid:"Undo",msgstr:["Desfacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Xubi dalgún elementu o sincroniza colos tos preseos!"]}]},{language:"ca",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:[`No és permès d'usar el caràcter "{char}" en un nom.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" no és un nom permès.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" no és vàlid com a nom de carpeta.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" no és vàlid com a nom de carpeta']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" és un mot reservat i no està permès com a nom.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:[`"/" no està permès en el nom d'una carpeta.`]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n conflicte de fitxers","%n conflictes de fitxers"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n onflicte de fitxers a {dirname}","%n conflictes de fitxers a {dirname}"]},{msgid:"All files",msgstr:["Tots els fitxers"]},{msgid:"Cancel",msgstr:["Cancel·lar"]},{msgid:"Cancel the entire operation",msgstr:["Cancel·lar tota l'operació"]},{msgid:"Choose",msgstr:["Tria"]},{msgid:"Choose {file}",msgstr:["Tria {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Tria %n fitxer","Tria %n fitxers"]},{msgid:"Confirm",msgstr:["Confirma"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copia"]},{msgid:"Copy to {target}",msgstr:["Copia a {target}"]},{msgid:"Could not create the new folder",msgstr:["No s'ha pogut crear la carpeta nova"]},{msgid:"Could not load files settings",msgstr:["No es poden carregar fitxers de configuració"]},{msgid:"Could not load files views",msgstr:["No es poden carregar fitxers de vistes"]},{msgid:"Create directory",msgstr:["Crea un directori"]},{msgid:"Current view selector",msgstr:["Selector de visualització actual"]},{msgid:"Enter your name",msgstr:["Escriviu el vostre nom"]},{msgid:"Existing version",msgstr:["Versió existent"]},{msgid:"Failed to set nickname.",msgstr:["No s'ha pogut desar el sobrenom."]},{msgid:"Favorites",msgstr:["Preferits"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Els fitxers i les carpetes que marqueu com a favorits es mostraran aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Els fitxers i les carpetes recentment modificats es mostraran aquí."]},{msgid:"Filter file list",msgstr:["Filtrar llistat de fitxers"]},{msgid:"Folder name cannot be empty.",msgstr:["El nom de la carpeta no pot estar buit."]},{msgid:"Guest identification",msgstr:["Identificació com a convidat"]},{msgid:"Home",msgstr:["Inici"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom."]},{msgid:"Invalid name.",msgstr:["Nom no vàlid."]},{msgid:"Last modified date unknown",msgstr:["Data de l'última modificació desconeguda"]},{msgid:"Modified",msgstr:["Data de modificació"]},{msgid:"Move",msgstr:["Desplaça"]},{msgid:"Move to {target}",msgstr:["Desplaça a {target}"]},{msgid:"Name",msgstr:["Nom"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Els noms poden tenir com a màxim 64 caràcters."]},{msgid:"Names must not be empty.",msgstr:["Els noms no poden ser buits."]},{msgid:'Names must not end with "{extension}".',msgstr:[`Els noms no poden acabar amb l'extensió "{extension}".`]},{msgid:"Names must not start with a dot.",msgstr:["Els noms no poden començar amb un punt."]},{msgid:"New",msgstr:["Crea"]},{msgid:"New folder",msgstr:["Carpeta nova"]},{msgid:"New folder name",msgstr:["Nom de la carpeta nova"]},{msgid:"New version",msgstr:["Nova versió"]},{msgid:"No files in here",msgstr:["No hi ha cap fitxer"]},{msgid:"No files matching your filter were found.",msgstr:["No s'ha trobat cap fitxer que coincideixi amb el filtre."]},{msgid:"No matching files",msgstr:["No hi ha cap fitxer que coincideixi"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Si us plau, escriu un nom amb 2 caràcters com a mínim."]},{msgid:"Recent",msgstr:["Recents"]},{msgid:"Select all checkboxes",msgstr:["Selecciona totes les caselles de selecció"]},{msgid:"Select all entries",msgstr:["Selecciona totes les entrades"]},{msgid:"Select all existing files",msgstr:["Selecciona tots els fitxers existents"]},{msgid:"Select all new files",msgstr:["Selecciona tots els fitxers nous"]},{msgid:"Select entry",msgstr:["Selecciona l'entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Selecciona la fila per a {nodename}"]},{msgid:"Size",msgstr:["Mida"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Omet %n fitxer","Omet %n fitxers"]},{msgid:"Skip this file",msgstr:["Omet aquest fitxer"]},{msgid:"Submit name",msgstr:["Entreu el nom"]},{msgid:"Undo",msgstr:["Desfés"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Pugeu contingut o sincronitzeu-lo amb els vostres dispositius!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quan es selecciona una carpeta entrant, també se sobreescriuran els fitxers que hi entrin en conflicte."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quan es selecciona una carpeta entrant, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes."]},{msgid:"Which files do you want to keep?",msgstr:["Quins fitxers voleu conservar?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Actualment se us mostra com a {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Actualment no esteu identificat."]},{msgid:"You cannot leave the name empty.",msgstr:["No podeu deixar el nom buit."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Heu de triar com a mínim una solució de conflicte"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Heu de seleccionar com a mínim una versió de cada fitxer per continuar."]}]},{language:"cs_CZ",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["znak „{char}“ není možné použít uvnitř názvu složky."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}“ není možné použít uvnitř názvu."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}“ není možné použít jako název."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ je vyhrazeným názvem a není možné ho používat pro názvy složek."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}“ je vyhrazeným názvem a není možné ho použít."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n kolize souboru","%n kolize souborů","%n kolizí souborů","%n kolize souborů"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n kolize souborů v {dirname}","%n kolize souborů v {dirname}","%n kolizí souborů v {dirname}","%n kolize souborů v {dirname}"]},{msgid:"All files",msgstr:["Veškeré soubory"]},{msgid:"Cancel",msgstr:["Storno"]},{msgid:"Cancel the entire operation",msgstr:["Zrušit celou operaci"]},{msgid:"Choose",msgstr:["Zvolit"]},{msgid:"Choose {file}",msgstr:["Zvolit {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Zvolte %n soubor","Zvolte %n soubory","Zvolte %n souborů","Zvolte %n soubory"]},{msgid:"Confirm",msgstr:["Potvrdit"]},{msgid:"Continue",msgstr:["Pokračovat"]},{msgid:"Copy",msgstr:["Zkopírovat"]},{msgid:"Copy to {target}",msgstr:["Zkopírovat do {target}"]},{msgid:"Could not create the new folder",msgstr:["Novou složku se nepodařilo vytvořit"]},{msgid:"Could not load files settings",msgstr:["Nepodařilo se načíst nastavení pro soubory"]},{msgid:"Could not load files views",msgstr:["Nepodařilo se načíst pohledy souborů"]},{msgid:"Create directory",msgstr:["Vytvořit složku"]},{msgid:"Current view selector",msgstr:["Výběr stávajícího zobrazení"]},{msgid:"Enter your name",msgstr:["Zadejte své jméno"]},{msgid:"Existing version",msgstr:["Existující verze"]},{msgid:"Failed to set nickname.",msgstr:["Nepodařilo se nastavit přezdívku."]},{msgid:"Favorites",msgstr:["Oblíbené"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Zde se zobrazí soubory a složky, které označíte jako oblíbené."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Zde se zobrazí soubory a složky, které jste nedávno pozměnili."]},{msgid:"Filter file list",msgstr:["Filtrovat seznam souborů"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Názvy složek nemohou končit na „{extension}“."]},{msgid:"Guest identification",msgstr:["Identifikace hosta"]},{msgid:"Home",msgstr:["Domů"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Pokud vyberete obě verze, pak k názvu příchozího souboru bude přidáno číslo."]},{msgid:"Invalid folder name.",msgstr:["Neplatný název složky."]},{msgid:"Invalid name.",msgstr:["Neplatný název."]},{msgid:"Last modified date unknown",msgstr:["Datum poslední změny neznámé"]},{msgid:"Modified",msgstr:["Změněno"]},{msgid:"Move",msgstr:["Přesounout"]},{msgid:"Move to {target}",msgstr:["Přesunout do {target}"]},{msgid:"Name",msgstr:["Název"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Je třeba, aby délka jmen nepřesahovala 64 znaků."]},{msgid:"Names must not be empty.",msgstr:["Názvy je třeba vyplnit."]},{msgid:'Names must not end with "{extension}".',msgstr:["Názvy nemohou končit na „{extension}“."]},{msgid:"Names must not start with a dot.",msgstr:["Názvy nemohou začínat tečkou."]},{msgid:"New",msgstr:["Nové"]},{msgid:"New folder",msgstr:["Nová složka"]},{msgid:"New folder name",msgstr:["Název pro novou složku"]},{msgid:"New version",msgstr:["Nová verze"]},{msgid:"No files in here",msgstr:["Nejsou zde žádné soubory"]},{msgid:"No files matching your filter were found.",msgstr:["Nenalezeny žádné soubory odpovídající vašemu filtru"]},{msgid:"No matching files",msgstr:["Žádné odpovídající soubory"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Zadejte jméno dlouhé alespoň 2 znaky."]},{msgid:"Recent",msgstr:["Nedávné"]},{msgid:"Select all checkboxes",msgstr:["Vybrat všechny zaškrtávací kolonky"]},{msgid:"Select all entries",msgstr:["Vybrat všechny položky"]},{msgid:"Select all existing files",msgstr:["Vybrat všechny existující soubory"]},{msgid:"Select all new files",msgstr:["Vybrat všechny nové soubory"]},{msgid:"Select entry",msgstr:["Vybrat položku"]},{msgid:"Select the row for {nodename}",msgstr:["Vybrat řádek pro {nodename}"]},{msgid:"Size",msgstr:["Velikost"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Přeskočit %n soubor","Přeskočit %n soubory","Přeskočit %n souborů","Přeskočit %n soubory"]},{msgid:"Skip this file",msgstr:["Přeskočit tento soubor"]},{msgid:"Submit name",msgstr:["Odeslat jméno"]},{msgid:"Undo",msgstr:["Zpět"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Nahrajte sem nějaký obsah nebo proveďte synchronizaci se svými zařízeními!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Pokud je vybrána příchozí složka, budou v ní také přepsány jakékoli kolidující soubory."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Pokud je vybrána příchozí složka, je obsah zapsán do existující složky a je provedeno rekurzivní vyřešení kolizí."]},{msgid:"Which files do you want to keep?",msgstr:["Které soubory chcete ponechat?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["V tuto chvíli jste identifikováni jako {nickname}."]},{msgid:"You are currently not identified.",msgstr:["V tuto chvíli nejste identifikovaní."]},{msgid:"You cannot leave the name empty.",msgstr:["Jméno nelze ponechat nevyplněné."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Je třeba zvolit alespoň jedno z řešení kolize"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru."]}]},{language:"da",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" er ikke tilladt i et navn.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" er ikke tilladt i et navn.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" er et ugyldigt mappenavn.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" er ikke et tilladt mappenavn']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" er et reserveret navn og er derfor ikke tilladt.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" er ikke tilladt i et mappenavn.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n filkonflikt","%n filer konflikter"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n filkonflikt i {dirname}","%n filkonflikter i {dirname}"]},{msgid:"All files",msgstr:["Alle filer"]},{msgid:"Cancel",msgstr:["Fortryd"]},{msgid:"Cancel the entire operation",msgstr:["Annullér hele operationen"]},{msgid:"Choose",msgstr:["Vælg"]},{msgid:"Choose {file}",msgstr:["Vælg {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Vælg %n fil","Vælg %n filer"]},{msgid:"Confirm",msgstr:["Bekræft"]},{msgid:"Continue",msgstr:["Fortsæt"]},{msgid:"Copy",msgstr:["Kopier"]},{msgid:"Copy to {target}",msgstr:["Kopier til {target}"]},{msgid:"Could not create the new folder",msgstr:["Kunne ikke oprette den nye mappe"]},{msgid:"Could not load files settings",msgstr:["Filindstillingerne kunne ikke indlæses"]},{msgid:"Could not load files views",msgstr:["Kunne ikke indlæse filvisninger"]},{msgid:"Create directory",msgstr:["Opret mappe"]},{msgid:"Current view selector",msgstr:["Aktuel visningsvælger"]},{msgid:"Enter your name",msgstr:["Indtast dit navn"]},{msgid:"Existing version",msgstr:["Eksisterende version"]},{msgid:"Failed to set nickname.",msgstr:["Forsøg på at gemme kaldenavn mislykkedes."]},{msgid:"Favorites",msgstr:["Favoritter"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Filer og mapper, du markerer som foretrukne, vises her."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Filer og mapper, du for nylig har ændret, vises her."]},{msgid:"Filter file list",msgstr:["Filtrer fil liste"]},{msgid:"Folder name cannot be empty.",msgstr:["Mappenavnet må ikke være tomt."]},{msgid:"Guest identification",msgstr:["Gæsteidentifikation"]},{msgid:"Home",msgstr:["Hjem"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn."]},{msgid:"Invalid name.",msgstr:["Ugyldigt navn."]},{msgid:"Last modified date unknown",msgstr:["Senest ændret dato ukendt"]},{msgid:"Modified",msgstr:["Ændret"]},{msgid:"Move",msgstr:["Flyt"]},{msgid:"Move to {target}",msgstr:["Flyt til {target}"]},{msgid:"Name",msgstr:["Navn"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Navne kan højst være 64 tegn lange."]},{msgid:"Names must not be empty.",msgstr:["Navne kan ikke være tomt."]},{msgid:'Names must not end with "{extension}".',msgstr:['Navne må ikke ende på "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Navne skal starte med et punktum."]},{msgid:"New",msgstr:["Ny"]},{msgid:"New folder",msgstr:["Ny mappe"]},{msgid:"New folder name",msgstr:["Ny mappe navn"]},{msgid:"New version",msgstr:["Ny version"]},{msgid:"No files in here",msgstr:["Ingen filer here"]},{msgid:"No files matching your filter were found.",msgstr:["Der blev ikke fundet nogen filer, der matcher dit filter."]},{msgid:"No matching files",msgstr:["Ingen matchende filer"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Indtast et navn med mindst 2 tegn."]},{msgid:"Recent",msgstr:["Seneste"]},{msgid:"Select all checkboxes",msgstr:["Markér alle afkrydsningsfelter"]},{msgid:"Select all entries",msgstr:["Vælg alle poster"]},{msgid:"Select all existing files",msgstr:["Vælg alle eksisterende filer"]},{msgid:"Select all new files",msgstr:["Vælg alle nye filer"]},{msgid:"Select entry",msgstr:["Vælg post"]},{msgid:"Select the row for {nodename}",msgstr:["Vælg rækken for {nodenavn}"]},{msgid:"Size",msgstr:["Størelse"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Spring %n fil over","Spring %n filer over"]},{msgid:"Skip this file",msgstr:["Spring denne fil over"]},{msgid:"Submit name",msgstr:["Indsend navn"]},{msgid:"Undo",msgstr:["Fortryd"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Upload noget indhold eller synkroniser med dine enheder!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Når en indkommende mappe er valgt, vil eventuelle modstridende filer i det også blive overskrevet."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Når en indkommende mappe er valgt, er indholdet skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres."]},{msgid:"Which files do you want to keep?",msgstr:["Hvilke filer vil du have?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du er i øjeblikket identificeret som {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Du er ikke identificeret."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kan ikke efterlade navnet tomt."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Du skal vælge mindst én konfliktløsning"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du skal vælge mindst én version af hver fil for at fortsætte."]}]},{language:"de",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" ist innerhalb eines Ordnernamens nicht zulässig.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" ist innerhalb eines Namens nicht zulässig.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ist kein zulässiger Name.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig für Ordnernamen.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n Dateikonflikt","%n Dateikonflikte"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n Dateikonflikt in {dirname}","%n Dateikonflikte in {dirname}"]},{msgid:"All files",msgstr:["Alle Dateien"]},{msgid:"Cancel",msgstr:["Abbrechen"]},{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},{msgid:"Choose",msgstr:["Auswählen"]},{msgid:"Choose {file}",msgstr:["{file} auswählen"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n Datei auswählen","%n Dateien auswählen"]},{msgid:"Confirm",msgstr:["Bestätigen"]},{msgid:"Continue",msgstr:["Fortsetzen"]},{msgid:"Copy",msgstr:["Kopieren"]},{msgid:"Copy to {target}",msgstr:["Nach {target} kopieren"]},{msgid:"Could not create the new folder",msgstr:["Der neue Ordner konnte nicht erstellt werden"]},{msgid:"Could not load files settings",msgstr:["Dateieinstellungen konnten nicht geladen werden"]},{msgid:"Could not load files views",msgstr:["Dateiansichten konnten nicht geladen werden"]},{msgid:"Create directory",msgstr:["Verzeichnis erstellen"]},{msgid:"Current view selector",msgstr:["Aktuelle Ansichtsauswahl"]},{msgid:"Enter your name",msgstr:["Gib deinen Namen ein"]},{msgid:"Existing version",msgstr:["Vorhandene Version"]},{msgid:"Failed to set nickname.",msgstr:["Spitzname konnte nicht gespeichert werden."]},{msgid:"Favorites",msgstr:["Favoriten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Dateien und Ordner, die du als Favorit markierst, werden hier angezeigt."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Dateien und Ordner, die du kürzlich geändert hast, werden hier angezeigt."]},{msgid:"Filter file list",msgstr:["Dateiliste filtern"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Ordnernamen dürfen nicht mit "{extension}" enden.']},{msgid:"Guest identification",msgstr:["Gast-Identifikation"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt."]},{msgid:"Invalid folder name.",msgstr:["Ungültiger Ordnername."]},{msgid:"Invalid name.",msgstr:["Ungültiger Name."]},{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},{msgid:"Modified",msgstr:["Geändert"]},{msgid:"Move",msgstr:["Verschieben"]},{msgid:"Move to {target}",msgstr:["Nach {target} verschieben"]},{msgid:"Name",msgstr:["Name"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namen dürfen maximal 64 Zeichen lang sein."]},{msgid:"Names must not be empty.",msgstr:["Namen dürfen nicht leer sein."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namen dürfen nicht mit "{extension}" enden.']},{msgid:"Names must not start with a dot.",msgstr:["Namen dürfen nicht mit einem Punkt beginnen."]},{msgid:"New",msgstr:["Neu"]},{msgid:"New folder",msgstr:["Neuer Ordner"]},{msgid:"New folder name",msgstr:["Neuer Ordnername"]},{msgid:"New version",msgstr:["Neue Version"]},{msgid:"No files in here",msgstr:["Hier sind keine Dateien"]},{msgid:"No files matching your filter were found.",msgstr:["Es wurden keine Dateien gefunden, die deinem Filter entsprechen."]},{msgid:"No matching files",msgstr:["Keine passenden Dateien"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Bitte einen Namen mit mindestens zwei Zeichen eingeben."]},{msgid:"Recent",msgstr:["Neueste"]},{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},{msgid:"Select all entries",msgstr:["Alle Einträge auswählen"]},{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},{msgid:"Select entry",msgstr:["Eintrag auswählen"]},{msgid:"Select the row for {nodename}",msgstr:["Die Zeile für {nodename} auswählen."]},{msgid:"Size",msgstr:["Größe"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n Datei überspringen","%n Dateien überspringen"]},{msgid:"Skip this file",msgstr:["Diese Datei überspringen"]},{msgid:"Submit name",msgstr:["Namen senden"]},{msgid:"Undo",msgstr:["Rückgängig machen"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Lade Inhalte hoch oder synchronisiere diese mit deinen Geräten!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien sollen behalten werden?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du bist derzeit als {nickname} identifiziert."]},{msgid:"You are currently not identified.",msgstr:["Du bist momentan nicht identifiziert."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kannst den Namen nicht leer lassen."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Es muss mindestens eine Konfliktlösung gewählt werden"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren."]}]},{language:"de_DE",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" ist innerhalb eines Ordnernamens nicht zulässig.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" ist innerhalb eines Namens nicht zulässig.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ist kein zulässiger Name.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig für Ordnernamen.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" ist ein reservierter Name und nicht zulässig.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n Dateikonflikt","%n Dateikonflikte"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n Dateikonflikt in {dirname}","%n Dateikonflikte in {dirname}"]},{msgid:"All files",msgstr:["Alle Dateien"]},{msgid:"Cancel",msgstr:["Abbrechen"]},{msgid:"Cancel the entire operation",msgstr:["Den gesamten Vorgang abbrechen"]},{msgid:"Choose",msgstr:["Auswählen"]},{msgid:"Choose {file}",msgstr:["{file} auswählen"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n Datei auswählen","%n Dateien auswählen"]},{msgid:"Confirm",msgstr:["Bestätigen"]},{msgid:"Continue",msgstr:["Fortsetzen"]},{msgid:"Copy",msgstr:["Kopieren"]},{msgid:"Copy to {target}",msgstr:["Nach {target} kopieren"]},{msgid:"Could not create the new folder",msgstr:["Der neue Ordner konnte nicht erstellt werden"]},{msgid:"Could not load files settings",msgstr:["Dateieinstellungen konnten nicht geladen werden"]},{msgid:"Could not load files views",msgstr:["Dateiansichten konnten nicht geladen werden"]},{msgid:"Create directory",msgstr:["Verzeichnis erstellen"]},{msgid:"Current view selector",msgstr:["Aktuelle Ansichtsauswahl"]},{msgid:"Enter your name",msgstr:["Geben Sie Ihren Namen ein"]},{msgid:"Existing version",msgstr:["Vorhandene Version"]},{msgid:"Failed to set nickname.",msgstr:["Spitzname konnte nicht gespeichert werden."]},{msgid:"Favorites",msgstr:["Favoriten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Dateien und Ordner, die Sie als Favorit markieren, werden hier angezeigt."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Dateien und Ordner, die Sie kürzlich geändert haben, werden hier angezeigt."]},{msgid:"Filter file list",msgstr:["Dateiliste filtern"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Ordnernamen dürfen nicht mit "{extension}" enden.']},{msgid:"Guest identification",msgstr:["Gast-Identifikation"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt."]},{msgid:"Invalid folder name.",msgstr:["Ungültiger Ordnername."]},{msgid:"Invalid name.",msgstr:["Ungültiger Name."]},{msgid:"Last modified date unknown",msgstr:["Datum der letzten Änderung unbekannt"]},{msgid:"Modified",msgstr:["Geändert"]},{msgid:"Move",msgstr:["Verschieben"]},{msgid:"Move to {target}",msgstr:["Nach {target} verschieben"]},{msgid:"Name",msgstr:["Name"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namen dürfen maximal 64 Zeichen lang sein."]},{msgid:"Names must not be empty.",msgstr:["Namen dürfen nicht leer sein."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namen dürfen nicht mit "{extension}" enden.']},{msgid:"Names must not start with a dot.",msgstr:["Namen dürfen nicht mit einem Punkt beginnen."]},{msgid:"New",msgstr:["Neu"]},{msgid:"New folder",msgstr:["Neuer Ordner"]},{msgid:"New folder name",msgstr:["Neuer Ordnername"]},{msgid:"New version",msgstr:["Neue Version"]},{msgid:"No files in here",msgstr:["Hier sind keine Dateien"]},{msgid:"No files matching your filter were found.",msgstr:["Es wurden keine Dateien gefunden, die Ihrem Filter entsprechen."]},{msgid:"No matching files",msgstr:["Keine passenden Dateien"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Bitte einen Namen mit mindestens zwei Zeichen eingeben."]},{msgid:"Recent",msgstr:["Neueste"]},{msgid:"Select all checkboxes",msgstr:["Alle Kontrollkästchen aktivieren"]},{msgid:"Select all entries",msgstr:["Alle Einträge auswählen"]},{msgid:"Select all existing files",msgstr:["Alle vorhandenen Dateien auswählen"]},{msgid:"Select all new files",msgstr:["Alle neuen Dateien auswählen"]},{msgid:"Select entry",msgstr:["Eintrag auswählen"]},{msgid:"Select the row for {nodename}",msgstr:["Die Zeile für {nodename} auswählen."]},{msgid:"Size",msgstr:["Größe"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n Datei überspringen","%n Dateien überspringen"]},{msgid:"Skip this file",msgstr:["Diese Datei überspringen"]},{msgid:"Submit name",msgstr:["Namen senden"]},{msgid:"Undo",msgstr:["Rückgängig machen"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Laden Sie Inhalte hoch oder synchronisieren Sie diese mit Ihren Geräten!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt."]},{msgid:"Which files do you want to keep?",msgstr:["Welche Dateien sollen behalten werden?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sie sind derzeit als {nickname} identifiziert."]},{msgid:"You are currently not identified.",msgstr:["Sie sind momentan nicht identifiziert."]},{msgid:"You cannot leave the name empty.",msgstr:["Sie können den Namen nicht leer lassen."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Es muss mindestens eine Konfliktlösung gewählt werden"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren."]}]},{language:"el",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["Το «{char}» δεν επιτρέπεται μέσα σε όνομα φακέλου."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" δεν επιτρέπεται μέσα σε ένα όνομα.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" δεν είναι επιτρεπτό όνομα.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["Το «{segment}» είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται για ονόματα φακέλων."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n σύγκρουση αρχείου","%n σύγκρουση αρχείων"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n σύγκρουση αρχείου στο {dirname}","%n σύγκρουση αρχείων στο {dirname}"]},{msgid:"All files",msgstr:["Όλα τα αρχεία"]},{msgid:"Cancel",msgstr:["Ακύρωση"]},{msgid:"Cancel the entire operation",msgstr:["Ακύρωση όλης της διαδικασίας"]},{msgid:"Choose",msgstr:["Επιλογή"]},{msgid:"Choose {file}",msgstr:["Επιλέξτε {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Επιλέξτε %n αρχείο","Επιλέξτε %n αρχεία"]},{msgid:"Confirm",msgstr:["Επιβεβαίωση"]},{msgid:"Continue",msgstr:["Συνέχεια"]},{msgid:"Copy",msgstr:["Αντιγραφή"]},{msgid:"Copy to {target}",msgstr:["Αντιγραφή στο {target}"]},{msgid:"Could not create the new folder",msgstr:["Αδυναμία δημιουργίας νέου φακέλου"]},{msgid:"Could not load files settings",msgstr:["Αδυναμία φόρτωσης ρυθμίσεων αρχείων"]},{msgid:"Could not load files views",msgstr:["Αδυναμία φόρτωσης προβολών αρχείων"]},{msgid:"Create directory",msgstr:["Δημιουργία καταλόγου"]},{msgid:"Current view selector",msgstr:["Επιλογέας τρέχουσας προβολής"]},{msgid:"Enter your name",msgstr:["Εισάγετε το όνομά σας"]},{msgid:"Existing version",msgstr:["Υφιστάμενη έκδοση"]},{msgid:"Failed to set nickname.",msgstr:["Αποτυχία στην ρύθμιση του ψευδώνυμου."]},{msgid:"Favorites",msgstr:["Αγαπημένα"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Τα αρχεία και οι φάκελοι που επισημάνετε ως αγαπημένα θα εμφανίζονται εδώ."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Τα αρχεία και οι φάκελοι που τροποποιήσατε πρόσφατα θα εμφανίζονται εδώ."]},{msgid:"Filter file list",msgstr:["Φιλτράρισμα λίστας αρχείων"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Τα ονόματα των φακέλων δεν πρέπει να τελειώνουν με «{extension}»."]},{msgid:"Guest identification",msgstr:["Ταυτοποίηση επισκέπτη"]},{msgid:"Home",msgstr:["Αρχική"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Εάν επιλέξετε και τις δύο εκδόσεις, στο όνομα του εισερχόμενου αρχείου θα προστεθεί ένας αριθμός."]},{msgid:"Invalid folder name.",msgstr:["Μη έγκυρο όνομα φακέλου."]},{msgid:"Invalid name.",msgstr:["Μη έγκυρο όνομα."]},{msgid:"Last modified date unknown",msgstr:["Άγνωστη ημερομηνία τελευταίας τροποποίησης"]},{msgid:"Modified",msgstr:["Τροποποιήθηκε"]},{msgid:"Move",msgstr:["Μετακίνηση"]},{msgid:"Move to {target}",msgstr:["Μετακίνηση στο {target}"]},{msgid:"Name",msgstr:["Όνομα"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Τα ονόματα μπορούν να έχουν μέγιστο μήκος 64 χαρακτήρες."]},{msgid:"Names must not be empty.",msgstr:["Τα ονόματα δεν πρέπει να είναι κενά."]},{msgid:'Names must not end with "{extension}".',msgstr:['Τα ονόματα δεν πρέπει να τελειώνουν με "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Τα ονόματα δεν πρέπει να ξεκινούν με τελεία."]},{msgid:"New",msgstr:["Νέο"]},{msgid:"New folder",msgstr:["Νέος φάκελος"]},{msgid:"New folder name",msgstr:["Όνομα νέου φακέλου"]},{msgid:"New version",msgstr:["Νέα έκδοση"]},{msgid:"No files in here",msgstr:["Δεν υπάρχουν αρχεία εδώ"]},{msgid:"No files matching your filter were found.",msgstr:["Δεν βρέθηκαν αρχεία που να ταιριάζουν με το φίλτρο σας."]},{msgid:"No matching files",msgstr:["Κανένα αρχείο δεν ταιριάζει"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Παρακαλώ εισάγετε ένα όνομα με τουλάχιστον 2 χαρακτήρες."]},{msgid:"Recent",msgstr:["Πρόσφατα"]},{msgid:"Select all checkboxes",msgstr:["Επιλέξτε όλα τα πλαίσια ελέγχου"]},{msgid:"Select all entries",msgstr:["Επιλογή όλων των καταχωρήσεων"]},{msgid:"Select all existing files",msgstr:["Επιλογή όλων των υπάρχοντων αρχείων"]},{msgid:"Select all new files",msgstr:["Επιλογή όλων των νέων αρχείων"]},{msgid:"Select entry",msgstr:["Επιλογή εγγραφής"]},{msgid:"Select the row for {nodename}",msgstr:["Επιλέξτε τη γραμμή για το {nodename}"]},{msgid:"Size",msgstr:["Μέγεθος"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Παράλειψη ενός αρχείου","Παράλειψη %n αρχείων"]},{msgid:"Skip this file",msgstr:["Παράλειψη αυτού το αρχείου"]},{msgid:"Submit name",msgstr:["Υποβολή ονόματος"]},{msgid:"Undo",msgstr:["Αναίρεση"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Ανεβάστε κάποιο περιεχόμενο ή συγχρονίστε με τις συσκευές σας!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Όταν επιλέγεται ένας φάκελος εισερχομένων, όλα τα αρχεία που βρίσκονται σε σύγκρουση μέσα σε αυτόν θα αντικατασταθούν επίσης."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Όταν επιλέγεται ένας φάκελος εισερχομένων, το περιεχόμενο εγγράφεται στον υπάρχοντα φάκελο και εκτελείται μια αναδρομική επίλυση σύγκρουσης."]},{msgid:"Which files do you want to keep?",msgstr:["Ποια αρχεία θέλετε να διατηρήσετε;"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Αυτή τη στιγμή έχετε αναγνωριστεί ως {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Δεν έχετε ταυτοποιηθεί."]},{msgid:"You cannot leave the name empty.",msgstr:["Δεν μπορείτε να αφήσετε το όνομα κενό."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Πρέπει να επιλέξετε τουλάχιστον μία λύση σύγκρουσης"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Πρέπει να επιλέξετε τουλάχιστον μία έκδοση από κάθε αρχείο για να συνεχίσετε."]}]},{language:"en_GB",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" is not allowed inside a folder name.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" is not allowed inside a name.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" is not an allowed name.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" is a reserved name and cannot be used for folder names.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" is a reserved name and not allowed.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n file conflict","%n files conflict"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n file conflict in {dirname}","%n file conflicts in {dirname}"]},{msgid:"All files",msgstr:["All files"]},{msgid:"Cancel",msgstr:["Cancel"]},{msgid:"Cancel the entire operation",msgstr:["Cancel the entire operation"]},{msgid:"Choose",msgstr:["Choose"]},{msgid:"Choose {file}",msgstr:["Choose {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Choose %n file","Choose %n files"]},{msgid:"Confirm",msgstr:["Confirm"]},{msgid:"Continue",msgstr:["Continue"]},{msgid:"Copy",msgstr:["Copy"]},{msgid:"Copy to {target}",msgstr:["Copy to {target}"]},{msgid:"Could not create the new folder",msgstr:["Could not create the new folder"]},{msgid:"Could not load files settings",msgstr:["Could not load files settings"]},{msgid:"Could not load files views",msgstr:["Could not load files views"]},{msgid:"Create directory",msgstr:["Create directory"]},{msgid:"Current view selector",msgstr:["Current view selector"]},{msgid:"Enter your name",msgstr:["Enter your name"]},{msgid:"Existing version",msgstr:["Existing version"]},{msgid:"Failed to set nickname.",msgstr:["Failed to set nickname."]},{msgid:"Favorites",msgstr:["Favourites"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Files and folders you mark as favourite will show up here."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Files and folders you recently modified will show up here."]},{msgid:"Filter file list",msgstr:["Filter file list"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Folder names must not end with "{extension}".']},{msgid:"Guest identification",msgstr:["Guest identification"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["If you select both versions, the incoming file will have a number added to its name."]},{msgid:"Invalid folder name.",msgstr:["Invalid folder name."]},{msgid:"Invalid name.",msgstr:["Invalid name."]},{msgid:"Last modified date unknown",msgstr:["Last modified date unknown"]},{msgid:"Modified",msgstr:["Modified"]},{msgid:"Move",msgstr:["Move"]},{msgid:"Move to {target}",msgstr:["Move to {target}"]},{msgid:"Name",msgstr:["Name"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Names may be at most 64 characters long."]},{msgid:"Names must not be empty.",msgstr:["Names must not be empty."]},{msgid:'Names must not end with "{extension}".',msgstr:['Names must not end with "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Names must not start with a dot."]},{msgid:"New",msgstr:["New"]},{msgid:"New folder",msgstr:["New folder"]},{msgid:"New folder name",msgstr:["New folder name"]},{msgid:"New version",msgstr:["New version"]},{msgid:"No files in here",msgstr:["No files in here"]},{msgid:"No files matching your filter were found.",msgstr:["No files matching your filter were found."]},{msgid:"No matching files",msgstr:["No matching files"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Please enter a name with at least 2 characters."]},{msgid:"Recent",msgstr:["Recent"]},{msgid:"Select all checkboxes",msgstr:["Select all checkboxes"]},{msgid:"Select all entries",msgstr:["Select all entries"]},{msgid:"Select all existing files",msgstr:["Select all existing files"]},{msgid:"Select all new files",msgstr:["Select all new files"]},{msgid:"Select entry",msgstr:["Select entry"]},{msgid:"Select the row for {nodename}",msgstr:["Select the row for {nodename}"]},{msgid:"Size",msgstr:["Size"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Skip %n file","Skip %n files"]},{msgid:"Skip this file",msgstr:["Skip this file"]},{msgid:"Submit name",msgstr:["Submit name"]},{msgid:"Undo",msgstr:["Undo"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Upload some content or sync with your devices!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["When an incoming folder is selected, any conflicting files within it will also be overwritten."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed."]},{msgid:"Which files do you want to keep?",msgstr:["Which files do you want to keep?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["You are currently identified as {nickname}."]},{msgid:"You are currently not identified.",msgstr:["You are currently not identified."]},{msgid:"You cannot leave the name empty.",msgstr:["You cannot leave the name empty."]},{msgid:"You need to choose at least one conflict solution",msgstr:["You need to choose at least one conflict solution"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["You need to select at least one version of each file to continue."]}]},{language:"es",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" no está permitido dentro de un nombre.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" no es un nombre permitido.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" es un nombre de carpeta no válido.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" no es un nombre de carpeta permitido']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" es un nombre reservado y no está permitido.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" no está permitido dentro del nombre de una carpeta.']},{msgid:"All files",msgstr:["Todos los archivos"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Choose",msgstr:["Seleccionar"]},{msgid:"Choose {file}",msgstr:["Seleccionar {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Elige %n archivo","Elige %n archivos","Seleccione %n archivos"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar a {target}"]},{msgid:"Could not create the new folder",msgstr:["No se pudo crear la nueva carpeta"]},{msgid:"Could not load files settings",msgstr:["No se pudieron cargar los ajustes de archivos"]},{msgid:"Could not load files views",msgstr:["No se pudieron cargar las vistas de los archivos"]},{msgid:"Create directory",msgstr:["Crear directorio"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Enter your name",msgstr:["Ingrese su nombre"]},{msgid:"Failed to set nickname.",msgstr:["Fallo al establecer apodo."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Los archivos y carpetas que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Los archivos y carpetas que modificó recientemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar lista de archivos"]},{msgid:"Folder name cannot be empty.",msgstr:["El nombre de la carpeta no puede estar vacío."]},{msgid:"Guest identification",msgstr:["Identificación de invitado"]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"Invalid name.",msgstr:["Nombre inválido."]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nombre"]},{msgid:"Names must not be empty.",msgstr:["Los nombres no deben estar vacíos."]},{msgid:'Names must not end with "{extension}".',msgstr:['Los nombres no deben terminar con "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Los nombres no deben iniciar con un punto."]},{msgid:"New",msgstr:["Nuevo"]},{msgid:"New folder",msgstr:[" Nueva carpeta"]},{msgid:"New folder name",msgstr:["Nuevo nombre de carpeta"]},{msgid:"No files in here",msgstr:["No hay archivos aquí"]},{msgid:"No files matching your filter were found.",msgstr:["No se encontraron archivos que coincidiesen con su filtro."]},{msgid:"No matching files",msgstr:["No hay archivos coincidentes"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Por favor, ingrese un nombre con al menos 2 caracteres."]},{msgid:"Recent",msgstr:["Reciente"]},{msgid:"Select all entries",msgstr:["Seleccionar todas las entradas"]},{msgid:"Select entry",msgstr:["Seleccionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccione la fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Submit name",msgstr:["Enviar nombre"]},{msgid:"Undo",msgstr:["Deshacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Cargue algún contenido o sincronice con sus dispositivos!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Ud. se encuentra identificado actualmente como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Ud. no se encuentra identificado actualmente."]},{msgid:"You cannot leave the name empty.",msgstr:["No puede dejar el nombre vacío."]}]},{language:"es_AR",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" es un nombre de carpeta inválido.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" no es un nombre de carpeta permitido']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" no está permitido en el nombre de una carpeta.']},{msgid:"All files",msgstr:["Todos los archivos"]},{msgid:"Choose",msgstr:["Elegir"]},{msgid:"Choose {file}",msgstr:["Elija {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Elija %n archivo","Elija %n archivos","Elija %n archivos"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar a {target}"]},{msgid:"Could not create the new folder",msgstr:["No se pudo crear la nueva carpeta"]},{msgid:"Could not load files settings",msgstr:["No se pudo cargar la configuración de archivos"]},{msgid:"Could not load files views",msgstr:["No se pudieron cargar las vistas de los archivos"]},{msgid:"Create directory",msgstr:["Crear directorio"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Los archivos y carpetas que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Los archivos y carpetas que modificó recientemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar lista de archivos"]},{msgid:"Folder name cannot be empty.",msgstr:["El nombre de la carpeta no puede estar vacío."]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nombre"]},{msgid:"New",msgstr:["Nuevo"]},{msgid:"New folder",msgstr:["Nueva carpeta"]},{msgid:"New folder name",msgstr:["Nombre de nueva carpeta"]},{msgid:"No files in here",msgstr:["No hay archivos aquí"]},{msgid:"No files matching your filter were found.",msgstr:["No se encontraron archivos que coincidan con su filtro."]},{msgid:"No matching files",msgstr:["No hay archivos coincidentes"]},{msgid:"Recent",msgstr:["Reciente"]},{msgid:"Select all entries",msgstr:["Seleccionar todas las entradas"]},{msgid:"Select entry",msgstr:["Seleccionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccione la fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Undo",msgstr:["Deshacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Cargue algún contenido o sincronice con sus dispositivos!"]}]},{language:"es_MX",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" no está permitido dentro de un nombre de carpeta']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" no está permitido dentro de un nombre']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" no es un nombre permitido']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" es un nombre reservado y no está permitido para nombres de carpetas']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" es un nombre reservado y no está permitido']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n conflicto de archivo","%n conflicto de archivos","%n conflicto de archivos"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n conflicto de archivo en {dirname}","%n conflictos de archivo en {dirname}","%n conflictos de archivo en {dirname}"]},{msgid:"All files",msgstr:["Todos los archivos"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar la operación completa"]},{msgid:"Choose",msgstr:["Seleccionar"]},{msgid:"Choose {file}",msgstr:["Seleccionar {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Seleccionar %n archivo","Seleccionar %n archivos","Seleccionar %n archivos"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar a {target}"]},{msgid:"Could not create the new folder",msgstr:["No se pudo crear la nueva carpeta"]},{msgid:"Could not load files settings",msgstr:["No se pudo cargar la configuración de archivos"]},{msgid:"Could not load files views",msgstr:["No se pudieron cargar las vistas de los archivos"]},{msgid:"Create directory",msgstr:["Crear carpeta"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Enter your name",msgstr:["Ingresa tu nombre"]},{msgid:"Existing version",msgstr:["Versión existente"]},{msgid:"Failed to set nickname.",msgstr:["No se pudo establecer el nickname"]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Los archivos y carpetas que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Los archivos y carpetas que modificó recientemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar lista de archivos"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Los nombres para carpeta no deben terminar con "{extension}"']},{msgid:"Guest identification",msgstr:["Identificación de invitado"]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si seleccionas ambas versiones, se le agregará al archivo que se está descargando, un número a su nombre."]},{msgid:"Invalid folder name.",msgstr:["Nombre de carpeta no válido"]},{msgid:"Invalid name.",msgstr:["Nombre no válido"]},{msgid:"Last modified date unknown",msgstr:["Última fecha de modificación desconocida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover a {target}"]},{msgid:"Name",msgstr:["Nombre"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Los nombres pueden tener como máximo 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["Los nombres no deben estar vacíos."]},{msgid:'Names must not end with "{extension}".',msgstr:['Los nombres no deben terminar con "{extension}"']},{msgid:"Names must not start with a dot.",msgstr:["Los nombres no deben comenzar con un punto."]},{msgid:"New",msgstr:["Nuevo"]},{msgid:"New folder",msgstr:["Nueva carpeta"]},{msgid:"New folder name",msgstr:["Nombre de nueva carpeta"]},{msgid:"New version",msgstr:["Versión nueva"]},{msgid:"No files in here",msgstr:["No hay archivos aquí"]},{msgid:"No files matching your filter were found.",msgstr:["No se encontraron archivos que coincidan con su filtro."]},{msgid:"No matching files",msgstr:["No hay archivos coincidentes"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Por favor ingrese un nombre con al menos 2 caracteres."]},{msgid:"Recent",msgstr:["Reciente"]},{msgid:"Select all checkboxes",msgstr:["Seleccione todas las casillas de verificación"]},{msgid:"Select all entries",msgstr:["Seleccionar todas las entradas"]},{msgid:"Select all existing files",msgstr:["Seleccione todos los archivos que aparecen"]},{msgid:"Select all new files",msgstr:["Seleccione todos los archivos nuevos"]},{msgid:"Select entry",msgstr:["Seleccionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccione la fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Omitir %n archivo","Omitir %n archivos","Omitir %n archivos"]},{msgid:"Skip this file",msgstr:["Omitir este archivo"]},{msgid:"Submit name",msgstr:["Enviar nombre"]},{msgid:"Undo",msgstr:["Deshacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["¡Suba algún contenido o sincronice con sus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cuando se selecciona una carpeta en descarga, cualquier archivo conflictivo que contenga también se sobrescribirá."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cuando se selecciona una carpeta en descarga, el contenido se escribe en la carpeta existente y se realiza una resolución de conflicto recursiva."]},{msgid:"Which files do you want to keep?",msgstr:["¿Qué archivos deseas conservar?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Actualmente estás identificado como {nickname}"]},{msgid:"You are currently not identified.",msgstr:["No estás identificado actualmente."]},{msgid:"You cannot leave the name empty.",msgstr:["No puedes dejar el nombre vacío."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Necesitas elegir al menos una solución al conflicto."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Necesitas seleccionar al menos una versión de cada archivo para continuar."]}]},{language:"et_EE",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["„{char}“ pole kausta nimes lubatud."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}“ pole nimes lubatud."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}“ pole lubatud nimi."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ on reserveeritud nimi ja pole kausta nimes lubatud."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}“ on reserveeritud nimi ja pole kasutamiseks lubatud."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n fail on vastuolus","%n faili on omavahel vastuolus"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n fail on {dirname} kaustas vastuolus","%n faili on omavahel {dirname} kaustas vastuolus"]},{msgid:"All files",msgstr:["Kõik failid"]},{msgid:"Cancel",msgstr:["Katkesta"]},{msgid:"Cancel the entire operation",msgstr:["Katkesta kogu tegevus"]},{msgid:"Choose",msgstr:["Tee valik"]},{msgid:"Choose {file}",msgstr:["Vali {file} fail"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Vali %n fail","Vali %n faili"]},{msgid:"Confirm",msgstr:["Kinnita"]},{msgid:"Continue",msgstr:["Jätka"]},{msgid:"Copy",msgstr:["Kopeeri"]},{msgid:"Copy to {target}",msgstr:["Kopeeri sihtkohta „{target}“"]},{msgid:"Could not create the new folder",msgstr:["Uut kausta ei saanud luua"]},{msgid:"Could not load files settings",msgstr:["Failide seadistusi ei õnnestunud laadida"]},{msgid:"Could not load files views",msgstr:["Failide vaatamiskordi ei õnnestunud laadida"]},{msgid:"Create directory",msgstr:["Loo kaust"]},{msgid:"Current view selector",msgstr:["Praeguse vaate valija"]},{msgid:"Enter your name",msgstr:["Sisesta oma nimi"]},{msgid:"Existing version",msgstr:["Olemasolev versioon"]},{msgid:"Failed to set nickname.",msgstr:["Hüüdnime ei õnnestunud lisada"]},{msgid:"Favorites",msgstr:["Lemmikud"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Failid ja kaustad, mida märgistad lemmikuks, kuvatakse siin."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Siin kuvatakse hiljuti muudetud failid ja kaustad."]},{msgid:"Filter file list",msgstr:["Filtreeri faililoendit"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Kausta nime lõpus ei tohi olla „{extension}“."]},{msgid:"Guest identification",msgstr:["Külalise tuvastamine"]},{msgid:"Home",msgstr:["Avaleht"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Kui valid mõlemad versioonid, siis uue faili nimele lisatakse number."]},{msgid:"Invalid folder name.",msgstr:["Vigane kausta nimi."]},{msgid:"Invalid name.",msgstr:["Vigane nimi."]},{msgid:"Last modified date unknown",msgstr:["Viimase muutmise kuupäev pole teada"]},{msgid:"Modified",msgstr:["Muudetud"]},{msgid:"Move",msgstr:["Teisalda"]},{msgid:"Move to {target}",msgstr:["Teisalda kausta „{target}“"]},{msgid:"Name",msgstr:["Nimi"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nimed võivad olla vaid kuni 64 tähemärki pikad."]},{msgid:"Names must not be empty.",msgstr:["Nimi ei saa olla tühi."]},{msgid:'Names must not end with "{extension}".',msgstr:["Nime lõpus ei tohi olla „{extension}“."]},{msgid:"Names must not start with a dot.",msgstr:["Nime alguses ei tohi olla punkt."]},{msgid:"New",msgstr:["Uus"]},{msgid:"New folder",msgstr:["Uus kaust"]},{msgid:"New folder name",msgstr:["Uue kausta nimi"]},{msgid:"New version",msgstr:["Uus versioon"]},{msgid:"No files in here",msgstr:["Siin puuduvad failid"]},{msgid:"No files matching your filter were found.",msgstr:["Sinu filtrile vastavaid faile ei leidunud."]},{msgid:"No matching files",msgstr:["Puuduvad sobivad failid"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Palun sisesta vähemalt 2 tähemärki pikk nimi."]},{msgid:"Recent",msgstr:["Hiljutine"]},{msgid:"Select all checkboxes",msgstr:["Vali kõik märkeruudud"]},{msgid:"Select all entries",msgstr:["Vali kõik kirjed"]},{msgid:"Select all existing files",msgstr:["Vali kõik olemasolevad failid"]},{msgid:"Select all new files",msgstr:["Vali kõik uued failid"]},{msgid:"Select entry",msgstr:["Vali kirje"]},{msgid:"Select the row for {nodename}",msgstr:["Vali rida „{nodename}“ jaoks"]},{msgid:"Size",msgstr:["Suurus"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Jäta %n fail vahele","Jäta %n faili vahele"]},{msgid:"Skip this file",msgstr:["Jäta see fail vahele"]},{msgid:"Submit name",msgstr:["Lisa nimi"]},{msgid:"Undo",msgstr:["Tühista"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Lisa mingit sisu või sünkrooni see oma seadmetest!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Kui uute failide kaust on valitud, siis kõik seal leiduvad vastuolus failid saavad üle kirjutatud."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Kui uute failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja korraldatakse rekursiivne failikonfliktide lahendamine."]},{msgid:"Which files do you want to keep?",msgstr:["Missugused failid tahaksid alles jätta?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sa oled hetkel tuvastatav kui {nickname}.."]},{msgid:"You are currently not identified.",msgstr:["Sa oled hetkel tuvastamata."]},{msgid:"You cannot leave the name empty.",msgstr:["Sa ei saa jätte nime tühjaks."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Sa pead valima vähemalt ühe failikonflikti lahenduse."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Jätkamaks pead valima igast failist vähemalt ühe versiooni."]}]},{language:"fa",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} نام پوشه معتبر نیست"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} نام پوشه مجاز نیست"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" نمی‌تواند در نام پوشه استفاده شود.']},{msgid:"All files",msgstr:["همه فایل‌ها"]},{msgid:"Cancel",msgstr:["لغو"]},{msgid:"Choose",msgstr:["انتخاب"]},{msgid:"Choose {file}",msgstr:["انتخاب {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["انتخاب %n فایل","انتخاب %n فایل"]},{msgid:"Copy",msgstr:["رونوشت"]},{msgid:"Copy to {target}",msgstr:["رونوشت از {target}"]},{msgid:"Could not create the new folder",msgstr:["پوشه جدید ایجاد نشد"]},{msgid:"Could not load files settings",msgstr:["تنظیمات فایل باز نشد"]},{msgid:"Could not load files views",msgstr:["نمای فایل‌ها بارگیری نشد"]},{msgid:"Create directory",msgstr:["ایجاد فهرست"]},{msgid:"Current view selector",msgstr:["انتخابگر نماگر فعلی"]},{msgid:"Enter your name",msgstr:["نام خود را وارد کنید"]},{msgid:"Failed to set nickname.",msgstr:["تنظیم نام مستعار ناموفق بود."]},{msgid:"Favorites",msgstr:["علایق"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["فایل‌ها و پوشه‌هایی که به‌عنوان مورد علاقه علامت‌گذاری می‌کنید در اینجا نشان داده می‌شوند."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["فایل‌ها و پوشه‌هایی که اخیراً تغییر داده‌اید در اینجا نمایش داده می‌شوند."]},{msgid:"Filter file list",msgstr:["فیلتر لیست فایل"]},{msgid:"Folder name cannot be empty.",msgstr:["نام پوشه نمی تواند خالی باشد."]},{msgid:"Guest identification",msgstr:["شناسایی مهمان"]},{msgid:"Home",msgstr:["خانه"]},{msgid:"Modified",msgstr:["اصلاح شده"]},{msgid:"Move",msgstr:["انتقال"]},{msgid:"Move to {target}",msgstr:["انتقال به {target}"]},{msgid:"Name",msgstr:["نام"]},{msgid:"New",msgstr:["جدید"]},{msgid:"New folder",msgstr:["پوشه جدید"]},{msgid:"New folder name",msgstr:["نام پوشه جدید"]},{msgid:"No files in here",msgstr:["فایلی اینجا نیست"]},{msgid:"No files matching your filter were found.",msgstr:["هیچ فایلی مطابق با فیلتر شما یافت نشد."]},{msgid:"No matching files",msgstr:["فایل منطبقی وجود ندارد"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["لطفاً نامی با حداقل ۲ کاراکتر وارد کنید."]},{msgid:"Recent",msgstr:["اخیر"]},{msgid:"Select all entries",msgstr:["انتخاب همه ورودی ها"]},{msgid:"Select entry",msgstr:["انتخاب ورودی"]},{msgid:"Select the row for {nodename}",msgstr:["انتخاب ردیف برای {nodename}"]},{msgid:"Size",msgstr:["اندازه"]},{msgid:"Submit name",msgstr:["ارسال نام"]},{msgid:"Undo",msgstr:["بازگردانی"]},{msgid:"Upload some content or sync with your devices!",msgstr:["مقداری محتوا آپلود کنید یا با دستگاه های خود همگام سازی کنید!"]},{msgid:"You are currently not identified.",msgstr:["شما در حال حاضر شناسایی نشده‌اید."]},{msgid:"You cannot leave the name empty.",msgstr:["نمی‌توانید نام را خالی بگذارید."]}]},{language:"fi_FI",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" ei ole sallittu nimessä.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ei ole sallittu nimi.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" on virheellinen kansion nimi.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" ei ole sallittu kansion nimi']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" on varattu nimi eikä se ole sallittu.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" ei ole sallittu kansion nimessä.']},{msgid:"All files",msgstr:["Kaikki tiedostot"]},{msgid:"Cancel",msgstr:["Peruuta"]},{msgid:"Choose",msgstr:["Valitse"]},{msgid:"Choose {file}",msgstr:["Valitse {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Valitse %n tiedosto","Valitse %n tiedostoa"]},{msgid:"Copy",msgstr:["Kopioi"]},{msgid:"Copy to {target}",msgstr:["Kopioi sijaintiin {target}"]},{msgid:"Could not create the new folder",msgstr:["Uutta kansiota ei voitu luoda"]},{msgid:"Could not load files settings",msgstr:["Tiedoston asetuksia ei saa ladattua"]},{msgid:"Could not load files views",msgstr:["Tiedoston näkymiä ei saa ladattua"]},{msgid:"Create directory",msgstr:["Luo kansio"]},{msgid:"Current view selector",msgstr:["Nykyisen näkymän valinta"]},{msgid:"Enter your name",msgstr:["Kirjoita nimesi"]},{msgid:"Failed to set nickname.",msgstr:["Kutsumanimen asettaminen epäonnistui."]},{msgid:"Favorites",msgstr:["Suosikit"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Tiedostot ja kansiot, jotka merkitset suosikkeihisi, näkyvät täällä."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Tiedostot ja kansiot, joita muokkasit äskettäin, näkyvät täällä."]},{msgid:"Filter file list",msgstr:["Suodata tiedostolistaa"]},{msgid:"Folder name cannot be empty.",msgstr:["Kansion nimi ei voi olla tyhjä."]},{msgid:"Guest identification",msgstr:["Vieraan tunnistaminen"]},{msgid:"Home",msgstr:["Koti"]},{msgid:"Invalid name.",msgstr:["Virheellinen nimi."]},{msgid:"Modified",msgstr:["Muokattu"]},{msgid:"Move",msgstr:["Siirrä"]},{msgid:"Move to {target}",msgstr:["Siirrä sijaintiin {target}"]},{msgid:"Name",msgstr:["Nimi"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nimissä voi olla enintään 64 merkkiä."]},{msgid:"Names must not be empty.",msgstr:["Nimet eivät saa olla tyhjiä."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nimet eivät saa päättyä sanaan "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nimet eivät saa alkaa pisteellä."]},{msgid:"New",msgstr:["Uusi"]},{msgid:"New folder",msgstr:["Uusi kansio"]},{msgid:"New folder name",msgstr:["Uuden kansion nimi"]},{msgid:"No files in here",msgstr:["Täällä ei ole tiedostoja"]},{msgid:"No files matching your filter were found.",msgstr:["Suodatinta vastaavia tiedostoja ei löytynyt."]},{msgid:"No matching files",msgstr:["Ei vastaavia tiedostoja"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Kirjoita vähintään kaksi merkkiä sisältävä nimi."]},{msgid:"Recent",msgstr:["Viimeisimmät"]},{msgid:"Select all entries",msgstr:["Valitse kaikki tietueet"]},{msgid:"Select entry",msgstr:["Valitse tietue"]},{msgid:"Select the row for {nodename}",msgstr:["Valitse rivi {nodename}:lle"]},{msgid:"Size",msgstr:["Koko"]},{msgid:"Submit name",msgstr:["Lähetä nimi"]},{msgid:"Undo",msgstr:["Kumoa"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Lähetä jotain sisältöä tai synkronoi laitteidesi kanssa!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sinut tunnetaan tällä hetkellä nimellä {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Sinua ei ole tunnistettu."]},{msgid:"You cannot leave the name empty.",msgstr:["Nimeä ei voi jättää tyhjäksi."]}]},{language:"fr",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:[`"{char}" n'est pas autorisé dans un nom de dossier.`]},{msgid:'"{char}" is not allowed inside a name.',msgstr:[`"{char}" n'est pas autorisé dans un nom.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:[`"{extension}" n'est pas un nom autorisé.`]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:[`"{segment}" est un nom réservé et n'est pas autorisé pour un nom de dossier.`]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:[`"{segment}" est un nom réservé et n'est pas autorisé.`]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n conflit de fichier","%n conflit de fichiers","%n conflit de fichiers"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%nconflit de fichier dans {dirname}","%n conflit de fichiers dans {dirname}","%nconflit de fichiers dans {dirname}"]},{msgid:"All files",msgstr:["Tous les fichiers"]},{msgid:"Cancel",msgstr:["Annuler"]},{msgid:"Cancel the entire operation",msgstr:["Tout annuler "]},{msgid:"Choose",msgstr:["Choisir"]},{msgid:"Choose {file}",msgstr:["Choisir {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Choisir %n fichier","Choisir %n fichiers","Choisir %n fichiers "]},{msgid:"Confirm",msgstr:["Confirmer"]},{msgid:"Continue",msgstr:["Continuer"]},{msgid:"Copy",msgstr:["Copier"]},{msgid:"Copy to {target}",msgstr:["Copier vers {target}"]},{msgid:"Could not create the new folder",msgstr:["Impossible de créer le nouveau dossier"]},{msgid:"Could not load files settings",msgstr:["Les paramètres des fichiers n'ont pas pu être chargés"]},{msgid:"Could not load files views",msgstr:["Impossible de charger les vues des fichiers"]},{msgid:"Create directory",msgstr:["Créer un répertoire"]},{msgid:"Current view selector",msgstr:["Sélecteur d'affichage actuel"]},{msgid:"Enter your name",msgstr:["Entrez votre nom"]},{msgid:"Existing version",msgstr:["Version actuelle "]},{msgid:"Failed to set nickname.",msgstr:["Échec de définition du surnom."]},{msgid:"Favorites",msgstr:["Favoris"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Les fichiers et répertoires marqués en favoris apparaîtront ici."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Les fichiers et répertoires modifiés récemment apparaîtront ici."]},{msgid:"Filter file list",msgstr:["Filtrer la liste des fichiers"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Les noms de dossiers ne doivent pas se terminer par "{extension}".']},{msgid:"Guest identification",msgstr:["Identification d'invité"]},{msgid:"Home",msgstr:["Accueil"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Si vous conservez les deux versions, le fichier reçu sera renommé avec un numéro."]},{msgid:"Invalid folder name.",msgstr:["Nom de dossier invalide."]},{msgid:"Invalid name.",msgstr:["Nom invalide."]},{msgid:"Last modified date unknown",msgstr:["Date de modification inconnue"]},{msgid:"Modified",msgstr:["Modifié"]},{msgid:"Move",msgstr:["Déplacer"]},{msgid:"Move to {target}",msgstr:["Déplacer vers {target}"]},{msgid:"Name",msgstr:["Nom"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Les noms peuvent comporter au maximum 64 caractères."]},{msgid:"Names must not be empty.",msgstr:["Les noms ne peuvent pas être vides."]},{msgid:'Names must not end with "{extension}".',msgstr:['Les noms ne doivent pas se terminer par "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Les noms ne peuvent pas commencer par un point."]},{msgid:"New",msgstr:["Nouveau"]},{msgid:"New folder",msgstr:["Nouveau dossier"]},{msgid:"New folder name",msgstr:["Nom du nouveau dossier"]},{msgid:"New version",msgstr:["Nouvelle version"]},{msgid:"No files in here",msgstr:["Aucun fichier ici"]},{msgid:"No files matching your filter were found.",msgstr:["Aucun fichier trouvé correspondant à votre filtre."]},{msgid:"No matching files",msgstr:["Aucun fichier correspondant"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Veuillez entrer un nom avec au moins 2 caractères."]},{msgid:"Recent",msgstr:["Récents"]},{msgid:"Select all checkboxes",msgstr:["Sélectionner toutes les cases à cocher"]},{msgid:"Select all entries",msgstr:["Tout sélectionner"]},{msgid:"Select all existing files",msgstr:["Sélectionner tous les fichiers existants"]},{msgid:"Select all new files",msgstr:["Sélectionner tous les nouveaux fichiers"]},{msgid:"Select entry",msgstr:["Sélectionner une entrée"]},{msgid:"Select the row for {nodename}",msgstr:["Sélectionner la ligne correspondant à {nodename}"]},{msgid:"Size",msgstr:["Taille"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Ignorer %n fichier","Ignorer %n fichiers ","Ignorer %n fichiers "]},{msgid:"Skip this file",msgstr:["Ignorer ce fichier"]},{msgid:"Submit name",msgstr:["Envoyer le nom"]},{msgid:"Undo",msgstr:["Annuler"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Chargez du contenu ou synchronisez avec vos équipements !"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["En sélectionnant un dossier entrant, les fichiers en conflit qu’il contient seront automatiquement écrasés."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Lorsque vous sélectionnez un dossier entrant, son contenu est ajouté au dossier existant et les conflits sont résolus automatiquement."]},{msgid:"Which files do you want to keep?",msgstr:["Quels fichiers souhaitez-vous conserver ?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Vous êtes actuellement identifié comme {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Vous n'êtes pas identifié actuellement."]},{msgid:"You cannot leave the name empty.",msgstr:["Vous ne pouvez pas laisser le nom vide."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Vous devez choisir au moins une option pour résoudre le conflit"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Sélectionnez au moins une version de chaque fichier pour continuer."]}]},{language:"ga",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:[`Ní cheadaítear "{char}" laistigh d'ainm fillteáin.`]},{msgid:'"{char}" is not allowed inside a name.',msgstr:[`Ní cheadaítear "{char}" laistigh d'ainm.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:['Ní ainm ceadaithe é "{extension}".']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:[`Is ainm curtha in áirithe é "{segment}" agus ní cheadaítear é d'ainmneacha fillteán.`]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['Is ainm curtha in áirithe é "{segment}" agus ní cheadaítear é.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n coimhlint comhaid","%n coimhlint comhad","%n coimhlint comhad","%n coimhlint comhad","%n coimhlint comhad"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n coimhlint comhaid i {dirname}","%n coimhlintí comhaid i {dirname}","%n coimhlintí comhaid i {dirname}","%n coimhlintí comhaid i {dirname}","%n coimhlintí comhaid i {dirname}"]},{msgid:"All files",msgstr:["Gach comhad"]},{msgid:"Cancel",msgstr:["Cealaigh"]},{msgid:"Cancel the entire operation",msgstr:["Cealaigh an oibríocht ar fad"]},{msgid:"Choose",msgstr:["Roghnaigh"]},{msgid:"Choose {file}",msgstr:["Roghnaigh {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Roghnaigh %n comhad","Roghnaigh %n comhaid","Roghnaigh %n comhaid","Roghnaigh %n comhaid","Roghnaigh %n comhaid"]},{msgid:"Confirm",msgstr:["Deimhnigh"]},{msgid:"Continue",msgstr:["Lean ar aghaidh"]},{msgid:"Copy",msgstr:["Cóip"]},{msgid:"Copy to {target}",msgstr:["Cóipeáil chuig {target}"]},{msgid:"Could not create the new folder",msgstr:["Níorbh fhéidir an fillteán nua a chruthú"]},{msgid:"Could not load files settings",msgstr:["Níorbh fhéidir socruithe comhaid a lódáil"]},{msgid:"Could not load files views",msgstr:["Níorbh fhéidir radhairc comhad a lódáil"]},{msgid:"Create directory",msgstr:["Cruthaigh eolaire"]},{msgid:"Current view selector",msgstr:["Roghnóir amhairc reatha"]},{msgid:"Enter your name",msgstr:["Cuir isteach d'ainm"]},{msgid:"Existing version",msgstr:["Leagan atá ann cheana féin"]},{msgid:"Failed to set nickname.",msgstr:["Theip ar leasainm a shocrú."]},{msgid:"Favorites",msgstr:["Ceanáin"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Taispeánfar comhaid agus fillteáin a d'athraigh tú le déanaí anseo."]},{msgid:"Filter file list",msgstr:["Scag liosta comhad"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Ní féidir ainmneacha fillteán a chríochnú le "{extension}".']},{msgid:"Guest identification",msgstr:["Aitheantas aoi"]},{msgid:"Home",msgstr:["Baile"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Má roghnaíonn tú an dá leagan, cuirfear uimhir le hainm an chomhaid atá ag teacht isteach."]},{msgid:"Invalid folder name.",msgstr:["Ainm fillteáin neamhbhailí."]},{msgid:"Invalid name.",msgstr:["Ainm neamhbhailí."]},{msgid:"Last modified date unknown",msgstr:["Dáta an athraithe dheireanaigh anaithnid"]},{msgid:"Modified",msgstr:["Athraithe"]},{msgid:"Move",msgstr:["Bog"]},{msgid:"Move to {target}",msgstr:["Bog go{target}"]},{msgid:"Name",msgstr:["Ainm"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Ní fhéadfaidh ainmneacha a bheith níos mó ná 64 carachtar ar fhad."]},{msgid:"Names must not be empty.",msgstr:["Ní féidir ainmneacha a bheith folamh."]},{msgid:'Names must not end with "{extension}".',msgstr:['Ní féidir ainmneacha a chríochnú le "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Ní mór ainmneacha a bheith ag tosú le ponc."]},{msgid:"New",msgstr:["Nua"]},{msgid:"New folder",msgstr:["Fillteán nua"]},{msgid:"New folder name",msgstr:["Ainm fillteáin nua"]},{msgid:"New version",msgstr:["Leagan nua"]},{msgid:"No files in here",msgstr:["Níl aon chomhaid istigh anseo"]},{msgid:"No files matching your filter were found.",msgstr:["Níor aimsíodh aon chomhad a tháinig le do scagaire."]},{msgid:"No matching files",msgstr:["Gan comhaid meaitseála"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Cuir isteach ainm ina bhfuil 2 charachtar ar a laghad."]},{msgid:"Recent",msgstr:["le déanaí"]},{msgid:"Select all checkboxes",msgstr:["Roghnaigh na boscaí seiceála go léir"]},{msgid:"Select all entries",msgstr:["Roghnaigh gach iontráil"]},{msgid:"Select all existing files",msgstr:["Roghnaigh na comhaid uile atá ann cheana"]},{msgid:"Select all new files",msgstr:["Roghnaigh gach comhad nua"]},{msgid:"Select entry",msgstr:["Roghnaigh iontráil"]},{msgid:"Select the row for {nodename}",msgstr:["Roghnaigh an ró do {nodename}"]},{msgid:"Size",msgstr:["Méid"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Léim %n comhad","Léim %n comhaid","Léim %n comhaid","Léim %n comhaid","Léim %n comhaid"]},{msgid:"Skip this file",msgstr:["Scipeáil an comhad seo"]},{msgid:"Submit name",msgstr:["Cuir isteach ainm"]},{msgid:"Undo",msgstr:["Cealaigh"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Uaslódáil roinnt ábhair nó sioncronaigh le do ghléasanna!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid choimhlinteacha ann a athscríobh freisin."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach sa fhillteán atá ann cheana féin agus déantar réiteach coinbhleachta athchúrsach."]},{msgid:"Which files do you want to keep?",msgstr:["Cé na comhaid ar mhaith leat a choinneáil?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Is é {nickname} an ainm atá ort faoi láthair."]},{msgid:"You are currently not identified.",msgstr:["Níl aitheantas tugtha duit faoi láthair."]},{msgid:"You cannot leave the name empty.",msgstr:["Ní féidir leat an t-ainm a fhágáil folamh."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Ní mór duit réiteach coinbhleachta amháin ar a laghad a roghnú"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú le leanúint ar aghaidh."]}]},{language:"gl",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["«{char}» non está permitido no nome dun cartafol."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["«{char}» non está permitido dentro dun nome."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["«{extension}» non é un nome permitido."]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["«{segment}» é un nome reservado e non está permitido para nomes de cartafoles."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["«{segment}» é un nome reservado e non está permitido."]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n ficheiro en conflito","%n ficheiros en conflito"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n ficheiro en conflito en {dirname}","%n ficheiros en conflito en {dirname}"]},{msgid:"All files",msgstr:["Todos os ficheiros"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar toda a operación"]},{msgid:"Choose",msgstr:["Escoller"]},{msgid:"Choose {file}",msgstr:["Escoller {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escoller %n ficheiro","Escoller %n ficheiros"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar en {target}"]},{msgid:"Could not create the new folder",msgstr:["Non foi posíbel crear o novo cartafol"]},{msgid:"Could not load files settings",msgstr:["Non foi posíbel cargar os axustes dos ficheiros"]},{msgid:"Could not load files views",msgstr:["Non foi posíbel cargar as vistas dos ficheiros"]},{msgid:"Create directory",msgstr:["Crear un directorio"]},{msgid:"Current view selector",msgstr:["Selector de vista actual"]},{msgid:"Enter your name",msgstr:["Introduza o seu nome"]},{msgid:"Existing version",msgstr:["Versión existente"]},{msgid:"Failed to set nickname.",msgstr:["Produciuse un fallo ao definir o alcume."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Os ficheiros e cartafoles que marque como favoritos aparecerán aquí."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Os ficheiros e cartafoles que modificou recentemente aparecerán aquí."]},{msgid:"Filter file list",msgstr:["Filtrar a lista de ficheiros"]},{msgid:'Folder names must not end with "{extension}".',msgstr:["Os nomes de cartafol non deben rematar en «{extension}»."]},{msgid:"Guest identification",msgstr:["Identificación do convidado"]},{msgid:"Home",msgstr:["Inicio"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome."]},{msgid:"Invalid folder name.",msgstr:["O nome de cartafol non é válido."]},{msgid:"Invalid name.",msgstr:["Nome incorrecto"]},{msgid:"Last modified date unknown",msgstr:["Data da última modificación descoñecida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover cara a {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Os nomes poden ter unha lonxitude máxima de 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["Os nomes non deben estar baleiros."]},{msgid:'Names must not end with "{extension}".',msgstr:["Os nomes non deben rematar en «{extension}»."]},{msgid:"Names must not start with a dot.",msgstr:["Os nomes non deben comezar cun punto."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Novo cartafol"]},{msgid:"New folder name",msgstr:["Novo nome do cartafol"]},{msgid:"New version",msgstr:["Nova versión"]},{msgid:"No files in here",msgstr:["Aquí non hai ficheiros"]},{msgid:"No files matching your filter were found.",msgstr:["Non se atopou ningún ficheiro que coincida co filtro."]},{msgid:"No matching files",msgstr:["Non hai ficheiros coincidentes"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Introduza un nome con polo menos 2 caracteres."]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all checkboxes",msgstr:["Seleccionar todas as caixas"]},{msgid:"Select all entries",msgstr:["Seleccionar todas as entradas"]},{msgid:"Select all existing files",msgstr:["Seleccionar todos os ficheiros existentes"]},{msgid:"Select all new files",msgstr:["Seleccionar todos os ficheiros novos"]},{msgid:"Select entry",msgstr:["Seleccionar a entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Seleccionar a fila para {nodename}"]},{msgid:"Size",msgstr:["Tamaño"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Omitir %n ficheiro","Omitir %n ficheiros"]},{msgid:"Skip this file",msgstr:["Omitir este ficheiro"]},{msgid:"Submit name",msgstr:["Enviar o nome"]},{msgid:"Undo",msgstr:["Desfacer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Enviar algún contido ou sincronizalo cos seus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Cando se selecciona un cartafol entrante, todos os ficheiros conflitivos dentro dela tamén serán sobrescritos."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e realízase unha resolución recursiva de conflitos."]},{msgid:"Which files do you want to keep?",msgstr:["Que ficheiros quere conservar?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Vde. está identificado actualmente como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Vde. non está identificado actualmente."]},{msgid:"You cannot leave the name empty.",msgstr:["Vde. non pode deixar o nome baleiro."]},{msgid:"You need to choose at least one conflict solution",msgstr:["É necesario escoller polo menos unha solución de conflito"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["É necesario seleccionar polo menos unha versión de cada ficheiro para continuar."]}]},{language:"hr",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["Znak „{char}” nije dopušten u nazivu mape."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:["Znak „{char}” nije dopušten u nazivu."]},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nije dopušten u nazivu.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" je rezervirana riječ i nije dopušten u nazivu mape.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" je rezervirana riječ i nije dopušten.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["Sukobljava se %n datoteka","Sukobljava se %n datoteke","Sukobljava se %n datoteke"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n sukob datoteka u {dirname}","%n sukoba datoteka u {dirname}","%n sukoba datoteka u {dirname}"]},{msgid:"All files",msgstr:["Sve datoteke"]},{msgid:"Cancel",msgstr:["Odustani"]},{msgid:"Cancel the entire operation",msgstr:["Odustani od cijele operacije"]},{msgid:"Choose",msgstr:["Odaberi"]},{msgid:"Choose {file}",msgstr:["Odaberi {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Odaberi %n datoteku","Odaberi %n datoteka","Odaberi %n datoteke"]},{msgid:"Confirm",msgstr:["Potvrdi"]},{msgid:"Continue",msgstr:["Nastavi"]},{msgid:"Copy",msgstr:["Kopiraj"]},{msgid:"Copy to {target}",msgstr:["Kopiraj u {target}"]},{msgid:"Could not create the new folder",msgstr:["Nije moguće stvoriti novu mapu"]},{msgid:"Could not load files settings",msgstr:["Nije moguće učitati postavke datoteka"]},{msgid:"Could not load files views",msgstr:["Nije moguće učitati prikaze datoteka"]},{msgid:"Create directory",msgstr:["Stvori mapu"]},{msgid:"Current view selector",msgstr:["Odabir trenutačnog prikaza"]},{msgid:"Enter your name",msgstr:["Unesite vaše ime"]},{msgid:"Existing version",msgstr:["Postojeća verzija"]},{msgid:"Failed to set nickname.",msgstr:["Neuspjelo postavljanje nadimka."]},{msgid:"Favorites",msgstr:["Favoriti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Ovdje se prikazuju datoteke i mape koje ste označili kao favoriti."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Ovdje se prikazuju datoteke i mape koje ste nedavno ažurirali."]},{msgid:"Filter file list",msgstr:["Filtriranje liste datoteka"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nazivi mapa ne smiju završiti sa "{extension}".']},{msgid:"Guest identification",msgstr:["Identifikacija gosta"]},{msgid:"Home",msgstr:["Naslovna"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ako odaberete obje verzije, dolaznoj datoteci bit će dodan broj u nazivu."]},{msgid:"Invalid folder name.",msgstr:["Neispavan naziv mape."]},{msgid:"Invalid name.",msgstr:["Neispravan naziv."]},{msgid:"Last modified date unknown",msgstr:["Nepoznat datum zadnjeg ažuriranja"]},{msgid:"Modified",msgstr:["Ažurirano"]},{msgid:"Move",msgstr:["Premjesti"]},{msgid:"Move to {target}",msgstr:["Premjesti u {target}"]},{msgid:"Name",msgstr:["Naziv"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nazivi mogu imati najviše 64 znaka."]},{msgid:"Names must not be empty.",msgstr:["Nazivi ne smiju biti prazni."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nazivi ne smiju završiti sa "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nazivi ne smiju započinjati točkom."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Nova mapa"]},{msgid:"New folder name",msgstr:["Novi naziv mape"]},{msgid:"New version",msgstr:["Nova verzija"]},{msgid:"No files in here",msgstr:["Ovdje nema datoteka"]},{msgid:"No files matching your filter were found.",msgstr:["Nisu pronađene datoteke koje odgovaraju vašem filtru."]},{msgid:"No matching files",msgstr:["Nema odgovarajućih datoteka."]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Unesite naziv s najmanje 2 znaka."]},{msgid:"Recent",msgstr:["Nedavno"]},{msgid:"Select all checkboxes",msgstr:["Označi sve potvrdne okvire"]},{msgid:"Select all entries",msgstr:["Označi sve stavke"]},{msgid:"Select all existing files",msgstr:["Označi sve postojeće datoteke"]},{msgid:"Select all new files",msgstr:["Označi sve nove datoteke"]},{msgid:"Select entry",msgstr:["Označi stavku"]},{msgid:"Select the row for {nodename}",msgstr:["Označi red za{nodename}"]},{msgid:"Size",msgstr:["Veličina"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Preskoči %n datoteku","Preskoči %n datoteke","Preskoči %n datoteke"]},{msgid:"Skip this file",msgstr:["Preskoči ovu datoteku"]},{msgid:"Submit name",msgstr:["Pošalji naziv"]},{msgid:"Undo",msgstr:["Poništi"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Prenesite neki sadržaj ili sinkronizirajte sa svojim uređajima!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Kada je odabrana dolazna mapa, sve datoteke unutar nje koje su u sukobu također će biti prepisane."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Kada je odabrana dolazna mapa, sadržaj se upisuje u postojeću mapu i provodi se rekurzivno rješavanje sukoba."]},{msgid:"Which files do you want to keep?",msgstr:["Koje datoteke želite zadržati?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Trenutno ste identificirani kao {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Trenutno niste identificirani."]},{msgid:"You cannot leave the name empty.",msgstr:["Ne možete ostaviti naziv prazan."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Morate odabrati barem jedno rješenje sukoba"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Morate odabrati barem jednu verziju svake datoteke kako biste nastavili."]}]},{language:"hu_HU",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" nem engedélyezett névben.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nem engedélyezett név.']},{msgid:'"{name}" is an invalid folder name.',msgstr:["„{name}” érvénytelen mappanév."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["„{name}” nem engedélyezett mappanév"]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" foglalt név és nem engedélyezett.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:["„/” jel nem szerepelhet mappa nevében."]},{msgid:"All files",msgstr:["Minden fájl"]},{msgid:"Cancel",msgstr:["Mégse"]},{msgid:"Choose",msgstr:["Kiválasztás"]},{msgid:"Choose {file}",msgstr:["{file} kiválasztása"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n fájl kiválasztása","%n fájl kiválasztása"]},{msgid:"Copy",msgstr:["Másolás"]},{msgid:"Copy to {target}",msgstr:["Másolás ide: {target}"]},{msgid:"Could not create the new folder",msgstr:["Az új mappa létrehozása nem lehetséges"]},{msgid:"Could not load files settings",msgstr:["Fájlbeállítások betöltése nem lehetséges"]},{msgid:"Could not load files views",msgstr:["Fájlnézetek betöltése nem lehetséges"]},{msgid:"Create directory",msgstr:["Mappa létrehozása"]},{msgid:"Current view selector",msgstr:["Jelenlegi nézet választó"]},{msgid:"Enter your name",msgstr:["Add meg a neved"]},{msgid:"Failed to set nickname.",msgstr:["Becenév beállítás sikertelen."]},{msgid:"Favorites",msgstr:["Kedvencek"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["A kedvencként megjelölt fájlok és mappák itt jelennek meg."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["A nemrég módosított fájlok és mappák itt jelennek meg."]},{msgid:"Filter file list",msgstr:["Fájl lista szűrése"]},{msgid:"Folder name cannot be empty.",msgstr:["A mappa neve nem lehet üres."]},{msgid:"Guest identification",msgstr:["Vendég azonosítás"]},{msgid:"Home",msgstr:["Kezdőlap"]},{msgid:"Invalid name.",msgstr:["Érvénytelen név."]},{msgid:"Modified",msgstr:["Módosítva"]},{msgid:"Move",msgstr:["Mozgatás"]},{msgid:"Move to {target}",msgstr:["Mozgatás ide: {target}"]},{msgid:"Name",msgstr:["Név"]},{msgid:"Names must not be empty.",msgstr:["Nevek nem lehetnek üresek."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nevek nem végződhetnek "{extension}"-re.']},{msgid:"Names must not start with a dot.",msgstr:["Nevek nem kezdődhetnek ponttal."]},{msgid:"New",msgstr:["Új"]},{msgid:"New folder",msgstr:["Új mappa"]},{msgid:"New folder name",msgstr:["Új mappa név"]},{msgid:"No files in here",msgstr:["Itt nincsenek fájlok"]},{msgid:"No files matching your filter were found.",msgstr:["Nincs a szűrési feltételeknek megfelelő fájl."]},{msgid:"No matching files",msgstr:["Nincs ilyen fájl"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Kérlek adj meg egy legalább 2 karakteres nevet."]},{msgid:"Recent",msgstr:["Gyakori"]},{msgid:"Select all entries",msgstr:["Minden bejegyzés kijelölése"]},{msgid:"Select entry",msgstr:["Bejegyzés kijelölése"]},{msgid:"Select the row for {nodename}",msgstr:["Válassz sort a következőnek: {nodename}"]},{msgid:"Size",msgstr:["Méret"]},{msgid:"Submit name",msgstr:["Név beküldése"]},{msgid:"Undo",msgstr:["Visszavonás"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Tölts fel tartalmat vagy szinkronizálj az eszközeiddel!"]},{msgid:"You are currently not identified.",msgstr:["Jelenleg nem vagy azonosítva."]},{msgid:"You cannot leave the name empty.",msgstr:["A nevet nem hagyhatod üresen."]}]},{language:"hy",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} սխալ թղթապանակի անվանում է"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} համարվում է անթույլատրելի թղթապանակի անվանում"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["/ չի թույլատրվում օգտագործել անվանման մեջ"]},{msgid:"All files",msgstr:["Բոլոր ֆայլերը"]},{msgid:"Choose",msgstr:["Ընտրել"]},{msgid:"Choose {file}",msgstr:["Ընտրել {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Ընտրել %n ֆայլ","Ընտրել %n ֆայլեր"]},{msgid:"Copy",msgstr:["Պատճենել"]},{msgid:"Copy to {target}",msgstr:["Պատճենել {target}"]},{msgid:"Could not create the new folder",msgstr:["Չստացվեց ստեղծել նոր թղթապանակը"]},{msgid:"Could not load files settings",msgstr:["Չստացվեց բեռնել ֆայլի կարգավորումները"]},{msgid:"Could not load files views",msgstr:["Չստացվեց բեռնել ֆայլերի դիտումները"]},{msgid:"Create directory",msgstr:["Ստեղծել դիրեկտորիա"]},{msgid:"Current view selector",msgstr:["Ընթացիկ դիտման ընտրիչ"]},{msgid:"Favorites",msgstr:["Նախընտրելիներ"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք դուք նշել եք որպես նախընտրելիներ:"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք վերջերս փոխել եք:"]},{msgid:"Filter file list",msgstr:["Ֆիլտրել ֆայլերի ցուցակը"]},{msgid:"Folder name cannot be empty.",msgstr:["Թղթապանակի անունը չի կարող դատարկ լինել:"]},{msgid:"Home",msgstr:["Սկիզբ"]},{msgid:"Modified",msgstr:["Փոփոխված"]},{msgid:"Move",msgstr:["Տեղափոխել"]},{msgid:"Move to {target}",msgstr:["Տեղափոխել {target}"]},{msgid:"Name",msgstr:["Անուն"]},{msgid:"New",msgstr:["Նոր"]},{msgid:"New folder",msgstr:["Նոր թղթապանակ"]},{msgid:"New folder name",msgstr:["Նոր թղթապանակի անվանում"]},{msgid:"No files in here",msgstr:["Այստեղ չկան ֆայլեր"]},{msgid:"No files matching your filter were found.",msgstr:["Ձեր ֆիլտրին համապատասխանող ֆայլերը չեն գտնվել:"]},{msgid:"No matching files",msgstr:["Չկան համապատասխան ֆայլեր"]},{msgid:"Recent",msgstr:["Վերջին"]},{msgid:"Select all entries",msgstr:["Ընտրել բոլոր գրառումները"]},{msgid:"Select entry",msgstr:["Ընտրել բոլոր գրառումը"]},{msgid:"Select the row for {nodename}",msgstr:["Ընտրեք տողը {nodename}-ի համար "]},{msgid:"Size",msgstr:["Չափ"]},{msgid:"Undo",msgstr:["Ետարկել"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Ներբեռնեք որոշ բովանդակություն կամ համաժամացրեք այն ձեր սարքերի հետ:"]}]},{language:"id",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" tidak diizinkan di dalam nama folder.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" tidak diizinkan di dalam nama.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" bukan nama yang diizinkan.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" adalah nama yang dicadangkan dan tidak diizinkan untuk nama folder.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" adalah nama yang dicadangkan dan tidak diizinkan.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n konflik file"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n konflik file di {dirname}"]},{msgid:"All files",msgstr:["Semua berkas"]},{msgid:"Cancel",msgstr:["Batal"]},{msgid:"Cancel the entire operation",msgstr:["Batalkan seluruh operasi"]},{msgid:"Choose",msgstr:["Pilih"]},{msgid:"Choose {file}",msgstr:["Pilih {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Pilih %n file"]},{msgid:"Confirm",msgstr:["Konfirmasi"]},{msgid:"Continue",msgstr:["Lanjutkan"]},{msgid:"Copy",msgstr:["Salin"]},{msgid:"Copy to {target}",msgstr:["Salin ke {target}"]},{msgid:"Could not create the new folder",msgstr:["Tidak dapat membuat folder baru"]},{msgid:"Could not load files settings",msgstr:["Tidak dapat memuat pengaturan file"]},{msgid:"Could not load files views",msgstr:["Tidak dapat memuat tampilan file"]},{msgid:"Create directory",msgstr:["Buat direktori"]},{msgid:"Current view selector",msgstr:["Pemilih tampilan saat ini"]},{msgid:"Enter your name",msgstr:["Masukkan nama Anda"]},{msgid:"Existing version",msgstr:["Versi yang ada"]},{msgid:"Failed to set nickname.",msgstr:["Gagal menetapkan nama panggilan."]},{msgid:"Favorites",msgstr:["Favorit"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Berkas dan folder yang Anda tandai sebagai favorit akan muncul di sini."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Berkas dan folder yang Anda ubah baru-baru ini akan muncul di sini."]},{msgid:"Filter file list",msgstr:["Saring daftar berkas"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nama folder tidak boleh diakhiri dengan "{extension}".']},{msgid:"Guest identification",msgstr:["Identifikasi tamu"]},{msgid:"Home",msgstr:["Beranda"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jika Anda memilih kedua versi, file yang masuk akan ditambahkan angka pada namanya."]},{msgid:"Invalid folder name.",msgstr:["Nama folder tidak valid."]},{msgid:"Invalid name.",msgstr:["Nama tidak valid."]},{msgid:"Last modified date unknown",msgstr:["Tanggal modifikasi terakhir tidak diketahui"]},{msgid:"Modified",msgstr:["Diubah"]},{msgid:"Move",msgstr:["Pindahkan"]},{msgid:"Move to {target}",msgstr:["Pindahkan ke {target}"]},{msgid:"Name",msgstr:["Nama"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Panjang nama maksimal 64 karakter."]},{msgid:"Names must not be empty.",msgstr:["Nama tidak boleh kosong."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nama tidak boleh diakhiri dengan "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nama tidak boleh diawali dengan titik."]},{msgid:"New",msgstr:["Baru"]},{msgid:"New folder",msgstr:["Folder baru"]},{msgid:"New folder name",msgstr:["Nama folder baru"]},{msgid:"New version",msgstr:["Versi baru"]},{msgid:"No files in here",msgstr:["Tidak ada berkas di sini"]},{msgid:"No files matching your filter were found.",msgstr:["Tidak ada berkas yang cocok dengan penyaringan Anda."]},{msgid:"No matching files",msgstr:["Tidak ada berkas yang cocok"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Silakan masukkan nama dengan minimal 2 karakter."]},{msgid:"Recent",msgstr:["Terkini"]},{msgid:"Select all checkboxes",msgstr:["Pilih semua kotak centang"]},{msgid:"Select all entries",msgstr:["Pilih semua entri"]},{msgid:"Select all existing files",msgstr:["Pilih semua file yang ada"]},{msgid:"Select all new files",msgstr:["Pilih semua file baru"]},{msgid:"Select entry",msgstr:["Pilih entri"]},{msgid:"Select the row for {nodename}",msgstr:["Pilih baris untuk {nodename}"]},{msgid:"Size",msgstr:["Ukuran"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Lewati %n file"]},{msgid:"Skip this file",msgstr:["Lewati file ini"]},{msgid:"Submit name",msgstr:["Kirim nama"]},{msgid:"Undo",msgstr:["Tidak jadi"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Unggah beberapa konten atau sinkronkan dengan perangkat Anda!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Saat folder yang masuk dipilih, semua file yang konflik di dalamnya juga akan ditimpa."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Saat folder yang masuk dipilih, konten ditulis ke dalam folder yang ada dan penyelesaian konflik rekursif dilakukan."]},{msgid:"Which files do you want to keep?",msgstr:["File mana yang ingin Anda pertahankan?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Saat ini Anda teridentifikasi sebagai {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Saat ini Anda tidak teridentifikasi."]},{msgid:"You cannot leave the name empty.",msgstr:["Anda tidak dapat membiarkan nama kosong."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Anda perlu memilih setidaknya satu solusi konflik"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Anda perlu memilih setidaknya satu versi dari setiap file untuk melanjutkan."]}]},{language:"is",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" er ógilt möppuheiti.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" er ekki leyfilegt möppuheiti']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" er er ekki leyfilegt innan í skráarheiti.']},{msgid:"All files",msgstr:["Allar skrár"]},{msgid:"Choose",msgstr:["Veldu"]},{msgid:"Choose {file}",msgstr:["Veldu {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Veldu %n skrá","Veldu %n skrár"]},{msgid:"Copy",msgstr:["Afrita"]},{msgid:"Copy to {target}",msgstr:["Afrita í {target}"]},{msgid:"Could not create the new folder",msgstr:["Get ekki búið til nýju möppuna"]},{msgid:"Could not load files settings",msgstr:["Tókst ekki að hlaða inn stillingum skráa"]},{msgid:"Could not load files views",msgstr:["Tókst ekki að hlaða inn sýnum skráa"]},{msgid:"Create directory",msgstr:["Búa til möppu"]},{msgid:"Current view selector",msgstr:["Núverandi val sýnar"]},{msgid:"Favorites",msgstr:["Eftirlæti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Skrár og möppur sem þú merkir sem eftirlæti birtast hér."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Skrár og möppur sem þú breyttir nýlega birtast hér."]},{msgid:"Filter file list",msgstr:["Sía skráalista"]},{msgid:"Folder name cannot be empty.",msgstr:["Möppuheiti má ekki vera tómt."]},{msgid:"Home",msgstr:["Heim"]},{msgid:"Modified",msgstr:["Breytt"]},{msgid:"Move",msgstr:["Færa"]},{msgid:"Move to {target}",msgstr:["Færa í {target}"]},{msgid:"Name",msgstr:["Heiti"]},{msgid:"New",msgstr:["Nýtt"]},{msgid:"New folder",msgstr:["Ný mappa"]},{msgid:"New folder name",msgstr:["Heiti nýrrar möppu"]},{msgid:"No files in here",msgstr:["Engar skrár hér"]},{msgid:"No files matching your filter were found.",msgstr:["Engar skrár fundust sem passa við síuna."]},{msgid:"No matching files",msgstr:["Engar samsvarandi skrár"]},{msgid:"Recent",msgstr:["Nýlegt"]},{msgid:"Select all entries",msgstr:["Velja allar færslur"]},{msgid:"Select entry",msgstr:["Velja færslu"]},{msgid:"Select the row for {nodename}",msgstr:["Veldu röðina fyrir {nodename}"]},{msgid:"Size",msgstr:["Stærð"]},{msgid:"Undo",msgstr:["Afturkalla"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Sendu inn eitthvað efni eða samstilltu við tækin þín!"]}]},{language:"it",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:[`"{char}" non è consentito all'interno di un nome di cartella.`]},{msgid:'"{char}" is not allowed inside a name.',msgstr:[`"{char}" non è consentito all'interno di un nome.`]},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" non è un nome consentito']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" è un nome riservato e non consentito per i nomi delle cartelle.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" è un nome riservato e non consentito.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n file in conflitto","%n file in conflitto","%n file in conflitto"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n file in conflitto in {dirname}","%n file in conflitto in {dirname}","%n file in conflitto in {dirname}"]},{msgid:"All files",msgstr:["Tutti i file"]},{msgid:"Cancel",msgstr:["Annulla"]},{msgid:"Cancel the entire operation",msgstr:["Annulla l'intera operazione"]},{msgid:"Choose",msgstr:["Scegli"]},{msgid:"Choose {file}",msgstr:["Scegli {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Scegli %n file","Scegli %n file","Scegli %n file"]},{msgid:"Confirm",msgstr:["Conferma"]},{msgid:"Continue",msgstr:["Continua"]},{msgid:"Copy",msgstr:["Copia"]},{msgid:"Copy to {target}",msgstr:["Copia in {target}"]},{msgid:"Could not create the new folder",msgstr:["Impossibile creare la nuova cartella"]},{msgid:"Could not load files settings",msgstr:["Impossibile caricare le impostazioni dei file"]},{msgid:"Could not load files views",msgstr:["Impossibile caricare le visualizzazioni dei file"]},{msgid:"Create directory",msgstr:["Crea cartella"]},{msgid:"Current view selector",msgstr:["Selettore della vista attuale"]},{msgid:"Enter your name",msgstr:["Inserisci il tuo nome"]},{msgid:"Existing version",msgstr:["Versione esistente"]},{msgid:"Failed to set nickname.",msgstr:["Impossibile impostare lo pseudonimo."]},{msgid:"Favorites",msgstr:["Preferiti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["I file e le cartelle contrassegnate come preferite saranno mostrate qui."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["I file e le cartelle che hai modificato di recente saranno mostrate qui."]},{msgid:"Filter file list",msgstr:["Filtra l'elenco dei file"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['I nomi delle cartelle devono finire con "{extension}".']},{msgid:"Guest identification",msgstr:["Identificazione ospiti"]},{msgid:"Home",msgstr:["Home"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se selezioni entrambe le versioni, al nome del file in arrivo verrà aggiunto un numero."]},{msgid:"Invalid folder name.",msgstr:["Nome cartella non valido."]},{msgid:"Invalid name.",msgstr:["Nome non valido."]},{msgid:"Last modified date unknown",msgstr:["Data di ultima modifica sconosciuta"]},{msgid:"Modified",msgstr:["Modificato"]},{msgid:"Move",msgstr:["Sposta"]},{msgid:"Move to {target}",msgstr:["Sposta in {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["I nomi dovrebbero avere una lunghezza massima di 64 caratteri."]},{msgid:"Names must not be empty.",msgstr:["I nomi non devono essere vuoti."]},{msgid:'Names must not end with "{extension}".',msgstr:['I nomi devono finire con "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["I nomi non possono iniziare con un punto."]},{msgid:"New",msgstr:["Nuovo"]},{msgid:"New folder",msgstr:["Nuova cartella"]},{msgid:"New folder name",msgstr:["Nome della nuova cartella"]},{msgid:"New version",msgstr:["Nuova versione"]},{msgid:"No files in here",msgstr:["Nessun file qui"]},{msgid:"No files matching your filter were found.",msgstr:["Nessun file che corrisponde al tuo filtro è stato trovato."]},{msgid:"No matching files",msgstr:["Nessun file corrispondente"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Digita un nome con almeno 2 caratteri."]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all checkboxes",msgstr:["Seleziona tutte le caselle"]},{msgid:"Select all entries",msgstr:["Scegli tutte le voci"]},{msgid:"Select all existing files",msgstr:["Seleziona tutti i file esistenti"]},{msgid:"Select all new files",msgstr:["Seleziona tutti i nuovi file"]},{msgid:"Select entry",msgstr:["Seleziona la voce"]},{msgid:"Select the row for {nodename}",msgstr:["Seleziona la riga per {nodename}"]},{msgid:"Size",msgstr:["Dimensioni"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Salta %n file","Salta %n file","Salta %n file"]},{msgid:"Skip this file",msgstr:["Salta questo file"]},{msgid:"Submit name",msgstr:["Invia nome"]},{msgid:"Undo",msgstr:["Annulla"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Carica qualche contenuto o sincronizza con i tuoi dispositivi!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno saranno sovrascritti."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti."]},{msgid:"Which files do you want to keep?",msgstr:["Quali file vuoi conservare?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Sei attualmente identificato come {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Attualmente non sei identificato."]},{msgid:"You cannot leave the name empty.",msgstr:["Non puoi lasciare il nome vuoto."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Devi scegliere almeno una soluzione al conflitto"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Per continuare, è necessario selezionare almeno una versione di ciascun file."]}]},{language:"ja_JP",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['フォルダー名に "{char}" を使用することはできません。']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['名前に "{char}" を使用することはできません。']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" は許可された名前ではありません。']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" は予約名のため、使用できません。']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" は予約名のため、使用できません。']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%nファイルが競合しています"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%nディレクトリ{dirname}内のファイル競合"]},{msgid:"All files",msgstr:["すべてのファイル"]},{msgid:"Cancel",msgstr:["キャンセル"]},{msgid:"Cancel the entire operation",msgstr:["すべての操作をキャンセル"]},{msgid:"Choose",msgstr:["選択"]},{msgid:"Choose {file}",msgstr:["{file} を選択"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n 個のファイルを選択"]},{msgid:"Confirm",msgstr:["確認"]},{msgid:"Continue",msgstr:["続行"]},{msgid:"Copy",msgstr:["コピー"]},{msgid:"Copy to {target}",msgstr:["{target} にコピー"]},{msgid:"Could not create the new folder",msgstr:["新しいフォルダーを作成できませんでした"]},{msgid:"Could not load files settings",msgstr:["ファイル設定を読み込めませんでした"]},{msgid:"Could not load files views",msgstr:["ファイルビューを読み込めませんでした"]},{msgid:"Create directory",msgstr:["ディレクトリを作成"]},{msgid:"Current view selector",msgstr:["現在のビュー選択"]},{msgid:"Enter your name",msgstr:["名前を入力してください"]},{msgid:"Existing version",msgstr:["現行バージョン"]},{msgid:"Failed to set nickname.",msgstr:["ニックネームの設定に失敗しました。"]},{msgid:"Favorites",msgstr:["お気に入り"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["お気に入りとしてマークしたファイルとフォルダーがここに表示されます。"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["最近変更したファイルとフォルダーがここに表示されます。"]},{msgid:"Filter file list",msgstr:["ファイルのリストをフィルター"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['フォルダー名の末尾に "{extension}" を使用できません。']},{msgid:"Guest identification",msgstr:["ゲスト識別"]},{msgid:"Home",msgstr:["ホーム"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["両方のバージョンを選択した場合、受信ファイル名には番号が追加されます。"]},{msgid:"Invalid folder name.",msgstr:["フォルダー名が無効です。"]},{msgid:"Invalid name.",msgstr:["無効な名前です。"]},{msgid:"Last modified date unknown",msgstr:["最終更新日不明"]},{msgid:"Modified",msgstr:["変更済み"]},{msgid:"Move",msgstr:["移動"]},{msgid:"Move to {target}",msgstr:["{target} に移動"]},{msgid:"Name",msgstr:["名前"]},{msgid:"Names may be at most 64 characters long.",msgstr:["名前は最大64文字です。"]},{msgid:"Names must not be empty.",msgstr:["名前は空にできません。"]},{msgid:'Names must not end with "{extension}".',msgstr:['名前の末尾に "{extension}" を使用できません。']},{msgid:"Names must not start with a dot.",msgstr:["ドットで始まる名前は使用できません。"]},{msgid:"New",msgstr:["新規作成"]},{msgid:"New folder",msgstr:["新しいフォルダー"]},{msgid:"New folder name",msgstr:["新しいフォルダーの名前"]},{msgid:"New version",msgstr:["新バージョン"]},{msgid:"No files in here",msgstr:["ファイルがありません"]},{msgid:"No files matching your filter were found.",msgstr:["フィルターに一致するファイルは見つかりませんでした。"]},{msgid:"No matching files",msgstr:["一致するファイルはありません"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["名前は2文字以上を入力してください。"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all checkboxes",msgstr:["すべてのチェックボックスを選択"]},{msgid:"Select all entries",msgstr:["すべてのエントリを選択"]},{msgid:"Select all existing files",msgstr:["既存のファイルをすべて選択"]},{msgid:"Select all new files",msgstr:["すべての新規ファイルを選択"]},{msgid:"Select entry",msgstr:["エントリを選択"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename} の行を選択"]},{msgid:"Size",msgstr:["サイズ"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n 個のファイルをスキップ"]},{msgid:"Skip this file",msgstr:["このファイルをスキップ"]},{msgid:"Submit name",msgstr:["名前を送信する"]},{msgid:"Undo",msgstr:["元に戻す"]},{msgid:"Upload some content or sync with your devices!",msgstr:["コンテンツをアップロードするか、デバイスと同期してください!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["受信フォルダーを選択すると、そのフォルダー内の競合ファイルも上書きされます。"]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["受信フォルダーを選択すると、内容は既存のフォルダーに書き込まれ、再帰的な競合解決が実行されます。"]},{msgid:"Which files do you want to keep?",msgstr:["どのファイルを残しますか?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["現在、{nickname}として識別されています。"]},{msgid:"You are currently not identified.",msgstr:["現在あなたは識別されていません。"]},{msgid:"You cannot leave the name empty.",msgstr:["名前を空にすることはできません。"]},{msgid:"You need to choose at least one conflict solution",msgstr:["少なくとも1つの競合ソリューションを選択する必要があります"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["続行するには、各ファイルのバージョンを少なくとも1つ選択する必要があります。"]}]},{language:"ko",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['폴더 이름 안에는 "{char}"를 사용할 수 없습니다.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}"는 이름 내에 사용할 수 없습니다.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}"은 허용되는 이름이 아닙니다.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}"는 예약된 이름이므로 폴더 이름으로 사용할 수 없습니다.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['같은 이름을 가진 "{segment}"이 이미 사용 중입니다.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n 파일 충돌"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} 안의 %n 파일 충돌"]},{msgid:"All files",msgstr:["모든 파일"]},{msgid:"Cancel",msgstr:["취소"]},{msgid:"Cancel the entire operation",msgstr:["전체 작업 취소"]},{msgid:"Choose",msgstr:["선택"]},{msgid:"Choose {file}",msgstr:["{file} 선택"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n개의 파일 선택"]},{msgid:"Confirm",msgstr:["확인"]},{msgid:"Continue",msgstr:["계속"]},{msgid:"Copy",msgstr:["복사"]},{msgid:"Copy to {target}",msgstr:["{target}으로 복사"]},{msgid:"Could not create the new folder",msgstr:["새 폴더를 만들 수 없음"]},{msgid:"Could not load files settings",msgstr:["파일 설정을 불러오지 못함"]},{msgid:"Could not load files views",msgstr:["파일 보기를 불러오지 못함"]},{msgid:"Create directory",msgstr:["디렉토리 만들기"]},{msgid:"Current view selector",msgstr:["현재 뷰 선택자"]},{msgid:"Enter your name",msgstr:["이름을 입력하세요 "]},{msgid:"Existing version",msgstr:["기존 버전"]},{msgid:"Failed to set nickname.",msgstr:[`닉네임을 설정하지 못했습니다. - `]},{msgid:"Favorites",msgstr:["즐겨찾기"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["즐겨찾기로 표시한 파일 및 폴더가 이곳에 표시됩니다."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["최근 수정한 파일 및 폴더가 이곳에 표시됩니다."]},{msgid:"Filter file list",msgstr:["파일 목록 필터링"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['폴더 이름은 "{extension}"로 끝나면 안됩니다.']},{msgid:"Guest identification",msgstr:["게스트 확인"]},{msgid:"Home",msgstr:["홈"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["만약 두 버전 모두 선택한다면 들어오는 파일은 이름에 번호가 추가될 것입니다."]},{msgid:"Invalid folder name.",msgstr:["폴더 이름이 잘못되었습니다."]},{msgid:"Invalid name.",msgstr:["잘못된 이름입니다. "]},{msgid:"Last modified date unknown",msgstr:["최근 수정 날짜 알 수 없음"]},{msgid:"Modified",msgstr:["수정됨"]},{msgid:"Move",msgstr:["이동"]},{msgid:"Move to {target}",msgstr:["{target}으로 이동"]},{msgid:"Name",msgstr:["이름"]},{msgid:"Names may be at most 64 characters long.",msgstr:["이름은 아마도 최대 64글자 입니다."]},{msgid:"Names must not be empty.",msgstr:["이름은 비어 있으면 안 됩니다."]},{msgid:'Names must not end with "{extension}".',msgstr:['이름은 "{extension}"로 끝나지 않아야 합니다.']},{msgid:"Names must not start with a dot.",msgstr:["이름은 점으로 시작해서는 안 됩니다."]},{msgid:"New",msgstr:["새로 만들기"]},{msgid:"New folder",msgstr:["새 폴더"]},{msgid:"New folder name",msgstr:["새 폴더명"]},{msgid:"New version",msgstr:["새로운 버전"]},{msgid:"No files in here",msgstr:["파일이 없습니다"]},{msgid:"No files matching your filter were found.",msgstr:["선택한 필터에 해당하는 파일이 없습니다."]},{msgid:"No matching files",msgstr:["일치하는 파일 없음"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["최소 2자 이상의 이름을 입력하십시오. "]},{msgid:"Recent",msgstr:["최근"]},{msgid:"Select all checkboxes",msgstr:["모든 체크박스 선택"]},{msgid:"Select all entries",msgstr:["모두 선택"]},{msgid:"Select all existing files",msgstr:["모든 기존 파일 선택"]},{msgid:"Select all new files",msgstr:["모든 새 파일 선택"]},{msgid:"Select entry",msgstr:["항목 선택"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename}의 행 선택"]},{msgid:"Size",msgstr:["크기"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n 파일 건너뜀"]},{msgid:"Skip this file",msgstr:["이 파일 건너뜀"]},{msgid:"Submit name",msgstr:["이름 제출"]},{msgid:"Undo",msgstr:["되돌리기"]},{msgid:"Upload some content or sync with your devices!",msgstr:["기기에서 파일을 업로드 또는 동기화하세요!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["들어오는 폴더를 선택하면 해당 폴더 내의 충돌하는 파일도 덮어쓰여집니다."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["들어오는 폴더를 선택하면 해당 콘텐츠가 기존 폴더에 기록되고 재귀적 충돌 해결이 수행됩니다."]},{msgid:"Which files do you want to keep?",msgstr:["어떤 파일을 보관하시겠습니까?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["{nickname}로서 인증 상태 입니다."]},{msgid:"You are currently not identified.",msgstr:["현재 인증되지 않았습니다."]},{msgid:"You cannot leave the name empty.",msgstr:["이름은 비워 둘 수 없습니다. "]},{msgid:"You need to choose at least one conflict solution",msgstr:["최소한 하나의 갈등 해결 방안을 선택해야 합니다."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["계속 진행하려면 각 파일의 버전을 하나 이상 선택해야 합니다."]}]},{language:"lb",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} ass en ongëlteg Dossier"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} ass net en erlaabten Dossiernumm"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" ass net an engem Dossier Numm erlaabt']},{msgid:"All files",msgstr:["All Dateien"]},{msgid:"Choose",msgstr:["Wielt"]},{msgid:"Choose {file}",msgstr:["Wielt {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Wielt %n Fichieren","Wielt %n Fichier"]},{msgid:"Copy",msgstr:["Kopie"]},{msgid:"Copy to {target}",msgstr:["Kopie op {target}"]},{msgid:"Could not create the new folder",msgstr:["Konnt den neien Dossier net erstellen"]},{msgid:"Could not load files settings",msgstr:["Konnt d'Dateienastellungen net lueden"]},{msgid:"Could not load files views",msgstr:["Konnt d'Dateien net lueden"]},{msgid:"Create directory",msgstr:["Erstellt Verzeechnes"]},{msgid:"Current view selector",msgstr:["Aktuell Vue selector"]},{msgid:"Favorites",msgstr:["Favoritten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Dateien an Ordner, déi Dir als Favorit markéiert, ginn hei gewisen"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Dateien an Ordner déi Dir viru kuerzem geännert hutt ginn hei op"]},{msgid:"Filter file list",msgstr:["Filter Datei Lëscht"]},{msgid:"Folder name cannot be empty.",msgstr:["Dossier Numm kann net eidel sinn"]},{msgid:"Home",msgstr:["Wëllkomm"]},{msgid:"Modified",msgstr:["Geännert"]},{msgid:"Move",msgstr:["Plënne"]},{msgid:"Move to {target}",msgstr:["Plënneren {target}"]},{msgid:"Name",msgstr:["Numm"]},{msgid:"New",msgstr:["Nei"]},{msgid:"New folder",msgstr:["Neien dossier"]},{msgid:"New folder name",msgstr:["Neien dossier numm"]},{msgid:"No files in here",msgstr:["Kee fichier hei"]},{msgid:"No files matching your filter were found.",msgstr:["Kee fichier deen äre filter passt gouf fonnt"]},{msgid:"No matching files",msgstr:["Keng passende dateien"]},{msgid:"Recent",msgstr:["Rezent"]},{msgid:"Select all entries",msgstr:["Wielt all entréen"]},{msgid:"Select entry",msgstr:["Wielt entrée"]},{msgid:"Select the row for {nodename}",msgstr:["Wielt d'zeil fir {nodename}"]},{msgid:"Size",msgstr:["Gréisst"]},{msgid:"Undo",msgstr:["Undoen"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Luet en inhalt erop oder synchroniséiert mat ären apparater"]}]},{language:"lo",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['ບໍ່ອະນຸຍາດໃຫ້ມີ "{char}" ພາຍໃນຊື່.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ບໍ່ແມ່ນຊື່ທີ່ໄດ້ຮັບອະນຸຍາດ.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" ແມ່ນຊື່ໂຟນເດີທີ່ບໍ່ຖືກຕ້ອງ.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" ບໍ່ແມ່ນຊື່ໂຟນເດີທີ່ໄດ້ຮັບອະນຸຍາດ']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ໄດ້ຮັບອະນຸຍາດ.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['ບໍ່ອະນຸຍາດໃຫ້ມີ "/" ພາຍໃນຊື່ໂຟນເດີ.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["ໄຟລ໌ຂັດກັນ %n ລາຍການ"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["ໄຟລ໌ຂັດກັນ %n ລາຍການໃນ {dirname}"]},{msgid:"All files",msgstr:["ໄຟລ໌ທັງໝົດ"]},{msgid:"Cancel",msgstr:["ຍົກເລີກ"]},{msgid:"Cancel the entire operation",msgstr:["ຍົກເລີກການດຳເນີນການທັງໝົດ"]},{msgid:"Choose",msgstr:["ເລືອກ"]},{msgid:"Choose {file}",msgstr:["ເລືອກ {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["ເລືອກ %n ໄຟລ໌"]},{msgid:"Confirm",msgstr:["ຢືນຢັນ"]},{msgid:"Continue",msgstr:["ດຳເນີນການຕໍ່"]},{msgid:"Copy",msgstr:["ຄັດລອກ"]},{msgid:"Copy to {target}",msgstr:["ຄັດລອກໄປທີ່ {target}"]},{msgid:"Could not create the new folder",msgstr:["ບໍ່ສາມາດສ້າງໂຟນເດີໃໝ່ໄດ້"]},{msgid:"Could not load files settings",msgstr:["ບໍ່ສາມາດໂຫຼດການຕັ້ງຄ່າໄຟລ໌ໄດ້"]},{msgid:"Could not load files views",msgstr:["ບໍ່ສາມາດໂຫຼດມຸມມອງໄຟລ໌ໄດ້"]},{msgid:"Create directory",msgstr:["ສ້າງໄດເຣັກທໍຣີ"]},{msgid:"Current view selector",msgstr:["ຕົວເລືອກມຸມມອງປັດຈຸບັນ"]},{msgid:"Enter your name",msgstr:["ປ້ອນຊື່ຂອງທ່ານ"]},{msgid:"Existing version",msgstr:["ເວີຊັນທີ່ມີຢູ່"]},{msgid:"Failed to set nickname.",msgstr:["ຕັ້ງຊື່ຫຼິ້ນບໍ່ສຳເລັດ."]},{msgid:"Favorites",msgstr:["ລາຍການທີ່ມັກ"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານໝາຍວ່າເປັນລາຍການທີ່ມັກຈະສະແດງຢູ່ບ່ອນນີ້."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານແກ້ໄຂລ່າສຸດຈະສະແດງຢູ່ບ່ອນນີ້."]},{msgid:"Filter file list",msgstr:["ກັ່ນຕອງລາຍການໄຟລ໌"]},{msgid:"Folder name cannot be empty.",msgstr:["ຊື່ໂຟນເດີຕ້ອງບໍ່ຫວ່າງເປົ່າ."]},{msgid:"Guest identification",msgstr:["ການລະບຸຕົວຕົນຂອງແຂກ"]},{msgid:"Home",msgstr:["ໜ້າຫຼັກ"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["ຖ້າທ່ານເລືອກທັງສອງເວີຊັນ, ໄຟລ໌ທີ່ເຂົ້າມາຈະມີຕົວເລກເພີ່ມໃສ່ຊື່ຂອງມັນ."]},{msgid:"Invalid name.",msgstr:["ຊື່ບໍ່ຖືກຕ້ອງ."]},{msgid:"Last modified date unknown",msgstr:["ບໍ່ຮູ້ວັນທີແກ້ໄຂລ່າສຸດ"]},{msgid:"Modified",msgstr:["ແກ້ໄຂເມື່ອ"]},{msgid:"Move",msgstr:["ຍ້າຍ"]},{msgid:"Move to {target}",msgstr:["ຍ້າຍໄປທີ່ {target}"]},{msgid:"Name",msgstr:["ຊື່"]},{msgid:"Names may be at most 64 characters long.",msgstr:["ຊື່ອາດມີຄວາມຍາວສູງສຸດ 64 ຕົວອັກສອນ."]},{msgid:"Names must not be empty.",msgstr:["ຊື່ຕ້ອງບໍ່ຫວ່າງເປົ່າ."]},{msgid:'Names must not end with "{extension}".',msgstr:['ຊື່ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["ຊື່ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຈຸດ."]},{msgid:"New",msgstr:["ໃໝ່"]},{msgid:"New folder",msgstr:["ໂຟນເດີໃໝ່"]},{msgid:"New folder name",msgstr:["ຊື່ໂຟນເດີໃໝ່"]},{msgid:"New version",msgstr:["ເວີຊັນໃໝ່"]},{msgid:"No files in here",msgstr:["ບໍ່ມີໄຟລ໌ຢູ່ບ່ອນນີ້"]},{msgid:"No files matching your filter were found.",msgstr:["ບໍ່ພົບໄຟລ໌ທີ່ກົງກັບການກັ່ນຕອງຂອງທ່ານ."]},{msgid:"No matching files",msgstr:["ບໍ່ມີໄຟລ໌ທີ່ກົງກັນ"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["ກະລຸນາປ້ອນຊື່ທີ່ມີຢ່າງໜ້ອຍ 2 ຕົວອັກສອນ."]},{msgid:"Recent",msgstr:["ລ່າສຸດ"]},{msgid:"Select all checkboxes",msgstr:["ເລືອກກ່ອງໝາຍທັງໝົດ"]},{msgid:"Select all entries",msgstr:["ເລືອກທຸກລາຍການ"]},{msgid:"Select all existing files",msgstr:["ເລືອກໄຟລ໌ທີ່ມີຢູ່ທັງໝົດ"]},{msgid:"Select all new files",msgstr:["ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ"]},{msgid:"Select entry",msgstr:["ເລືອກລາຍການ"]},{msgid:"Select the row for {nodename}",msgstr:["ເລືອກແຖວສຳລັບ {nodename}"]},{msgid:"Size",msgstr:["ຂະໜາດ"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["ຂ້າມ %n ໄຟລ໌"]},{msgid:"Skip this file",msgstr:["ຂ້າມໄຟລ໌ນີ້"]},{msgid:"Submit name",msgstr:["ສົ່ງຊື່"]},{msgid:"Undo",msgstr:["ເອົາຄືນ"]},{msgid:"Upload some content or sync with your devices!",msgstr:["ອັບໂຫຼດເນື້ອຫາ ຫຼື ຊິງຄ໌ກັບອຸປະກອນຂອງທ່ານ!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ໄຟລ໌ໃດໆທີ່ຂັດກັນພາຍໃນໂຟນເດີນັ້ນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟນເດີທີ່ມີຢູ່ ແລະ ຈະມີການແກ້ໄຂຂໍ້ຂັດແຍ່ງແບບຕໍ່ເນື່ອງ."]},{msgid:"Which files do you want to keep?",msgstr:["ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["ຕອນນີ້ທ່ານຖືກລະບຸວ່າເປັນ {nickname}."]},{msgid:"You are currently not identified.",msgstr:["ຕອນນີ້ທ່ານຍັງບໍ່ໄດ້ຖືກລະບຸຕົວຕົນ."]},{msgid:"You cannot leave the name empty.",msgstr:["ທ່ານບໍ່ສາມາດປະຊື່ໃຫ້ຫວ່າງເປົ່າໄດ້."]},{msgid:"You need to choose at least one conflict solution",msgstr:["ທ່ານຈຳເປັນຕ້ອງເລືອກວິທີແກ້ໄຂຂໍ້ຂັດແຍ່ງຢ່າງໜ້ອຍໜຶ່ງຢ່າງ"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງເວີຊັນຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່."]}]},{language:"lt_LT",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["„{name}“ yra netinkamas aplanko pavadinimas."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["„{name}“ yra neleidžiamas aplanko pavadinimas"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["„/“ yra neleidžiamas aplanko pavadinime."]},{msgid:"All files",msgstr:["Visi failai"]},{msgid:"Cancel",msgstr:["Atšaukti"]},{msgid:"Choose",msgstr:["Pasirinkti"]},{msgid:"Choose {file}",msgstr:["Pasirinkti {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Pasirinkti %n failą","Pasirinkti %n failus","Pasirinkti %n failų","Pasirinkti %n failą"]},{msgid:"Copy",msgstr:["Kopijuoti"]},{msgid:"Copy to {target}",msgstr:["Kopijuoti į {target}"]},{msgid:"Could not create the new folder",msgstr:["Nepavyko sukurti naujo aplanko"]},{msgid:"Could not load files settings",msgstr:["Nepavyko įkelti failų nustatymų"]},{msgid:"Could not load files views",msgstr:["Nepavyko įkelti failų peržiūrų"]},{msgid:"Create directory",msgstr:["Sukurti katalogą"]},{msgid:"Current view selector",msgstr:["Dabartinis peržiūros pasirinkimas"]},{msgid:"Enter your name",msgstr:["Įrašykite savo vardą"]},{msgid:"Failed to set nickname.",msgstr:["Nepavyko nustatyti slapyvardžio"]},{msgid:"Favorites",msgstr:["Populiariausi"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Failai ir aplankai, kuriuos pažymėsite kaip mėgstamiausius, bus rodomi čia."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Čia bus rodomi failai ir aplankai, kuriuos neseniai pakeitėte."]},{msgid:"Filter file list",msgstr:["Filtruoti failų sąrašą"]},{msgid:"Folder name cannot be empty.",msgstr:["Aplanko pavadinimas negali būti tuščias."]},{msgid:"Guest identification",msgstr:["Svečio identifikacija"]},{msgid:"Home",msgstr:["Pradžia"]},{msgid:"Modified",msgstr:["Pakeista"]},{msgid:"Move",msgstr:["Perkelti"]},{msgid:"Move to {target}",msgstr:["Perkelti į {target}"]},{msgid:"Name",msgstr:["Vardas"]},{msgid:"New",msgstr:["Naujas"]},{msgid:"New folder",msgstr:["Naujas aplankas"]},{msgid:"New folder name",msgstr:["Naujas aplanko pavadinimas"]},{msgid:"No files in here",msgstr:["Čia failų nėra"]},{msgid:"No files matching your filter were found.",msgstr:["Nepavyko rasti failų pagal filtro nustatymus"]},{msgid:"No matching files",msgstr:["Nėra atitinkančių failų"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Įrašykite vardą iš mažiausiai dviejų ženklų."]},{msgid:"Recent",msgstr:["Nauji"]},{msgid:"Select all entries",msgstr:["Žymėti visus įrašus"]},{msgid:"Select entry",msgstr:["Žymėti įrašą"]},{msgid:"Select the row for {nodename}",msgstr:["Pasirinkite eilutę {nodename}"]},{msgid:"Size",msgstr:["Dydis"]},{msgid:"Submit name",msgstr:["Patvirtinti vardą"]},{msgid:"Undo",msgstr:["Atšaukti"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Įkelkite turinio arba sinchronizuokite su savo įrenginiais!"]},{msgid:"You are currently not identified.",msgstr:["Šiuo metu nesate identifikuotas."]},{msgid:"You cannot leave the name empty.",msgstr:["Negalite palikti tuščio vardo lauko."]}]},{language:"lv",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" nav derīgs mapes nosaukums.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" nav atļauts mapes nosaukums']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" nav atļauts mapes nosaukuma izmantošanā.']},{msgid:"All files",msgstr:["Visas datnes"]},{msgid:"Choose",msgstr:["Izvēlieties"]},{msgid:"Choose {file}",msgstr:["Izvēlieties {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Izvēlēties %n datņu","Izvēlēties %n datni","Izvēlēties %n datnes"]},{msgid:"Copy",msgstr:["Kopēt"]},{msgid:"Copy to {target}",msgstr:["Kopēt uz {target}"]},{msgid:"Could not create the new folder",msgstr:["Nevarēja izveidot jaunu mapi"]},{msgid:"Could not load files settings",msgstr:["Nevarēja ielādēt datņu iestatījumus"]},{msgid:"Could not load files views",msgstr:["Nevarēja ielādēt datņu apskatījumus"]},{msgid:"Create directory",msgstr:["Izveidot direktoriju"]},{msgid:"Current view selector",msgstr:["Pašreizēja skata atlasītājs"]},{msgid:"Favorites",msgstr:["Favorīti"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Šeit parādīsies datnes un mapes, kas tiks atzīmētas kā iecienītas."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Šeit parādīsies datnes un mapes, kuras nesen tika izmainītas."]},{msgid:"Filter file list",msgstr:["Atlasīt datņu sarakstu"]},{msgid:"Folder name cannot be empty.",msgstr:["Mapes nosaukums nevar būt tukšs."]},{msgid:"Home",msgstr:["Sākums"]},{msgid:"Modified",msgstr:["Izmaninīta"]},{msgid:"Move",msgstr:["Pārvietot"]},{msgid:"Move to {target}",msgstr:["Pārvietot uz {target}"]},{msgid:"Name",msgstr:["Nosaukums"]},{msgid:"New",msgstr:["Jauns"]},{msgid:"New folder",msgstr:["Jauna mape"]},{msgid:"New folder name",msgstr:["Jaunas mapes nosaukums"]},{msgid:"No files in here",msgstr:["Šeit nav datņu"]},{msgid:"No files matching your filter were found.",msgstr:["Netika atrasta neviena datne, kas atbilst atlasei."]},{msgid:"No matching files",msgstr:["Nav atbilstošu datņu"]},{msgid:"Recent",msgstr:["Nesenās"]},{msgid:"Select all entries",msgstr:["Atlasīt visus ierakstus"]},{msgid:"Select entry",msgstr:["Atlasīt ierakstu"]},{msgid:"Select the row for {nodename}",msgstr:["Atlasīt rindu {nodename}"]},{msgid:"Size",msgstr:["Izmērs"]},{msgid:"Undo",msgstr:["Atsaukt"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Augšupielādē kādu saturu vai sinhronizē savās iekārtās!"]}]},{language:"mk",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" не е дозволено во име.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" не е дозволено име.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" не е валидно име за папка/']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" не е дозволено име за папка']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" е резервирано име и не е дозволено.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" не е дозволена во име на папка.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n конфликт со датотекa","%n конфликти со датотеки"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n конфликт со датотека во {dirname}","%n конфликти со датотеки vo {dirname}"]},{msgid:"All files",msgstr:["Сите датотеки"]},{msgid:"Cancel",msgstr:["Откажи"]},{msgid:"Cancel the entire operation",msgstr:["Прекини ја целата операција"]},{msgid:"Choose",msgstr:["Избери"]},{msgid:"Choose {file}",msgstr:["Избери {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Избери %n датотека","Избери %n датотеки"]},{msgid:"Confirm",msgstr:["Потврди"]},{msgid:"Continue",msgstr:["Продолжи"]},{msgid:"Copy",msgstr:["Копирај"]},{msgid:"Copy to {target}",msgstr:["Копирај во {target}"]},{msgid:"Could not create the new folder",msgstr:["Неможе да се креира нова папка"]},{msgid:"Could not load files settings",msgstr:["Неможе да се вчиаат параметрите за датотеките"]},{msgid:"Could not load files views",msgstr:["Неможе да се вчитаат погледите за датотеките"]},{msgid:"Create directory",msgstr:["Креирај папка"]},{msgid:"Current view selector",msgstr:["Избирач на тековен приказ"]},{msgid:"Enter your name",msgstr:["Внесете го вашето име"]},{msgid:"Existing version",msgstr:["Моментална верзија"]},{msgid:"Failed to set nickname.",msgstr:["Неуспешно поставување прекар."]},{msgid:"Favorites",msgstr:["Фаворити"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Датотеките и папките кој ќе ги означите за омилени ќе се појават овде."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Датотеките и папките кој неодамна сте ги измениле ќе се појават овде."]},{msgid:"Filter file list",msgstr:["Филтрирај листа на датотеки"]},{msgid:"Folder name cannot be empty.",msgstr:["Името на папката неможе да биде празно."]},{msgid:"Guest identification",msgstr:["Гостинска идентификација"]},{msgid:"Home",msgstr:["Почетна"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ако ги избереш двете верзии, влезната датотека ќе добие број додаден на нејзиното име."]},{msgid:"Invalid name.",msgstr:["Невалидно име."]},{msgid:"Last modified date unknown",msgstr:["Датумот на последна измена е непознат"]},{msgid:"Modified",msgstr:["Променето"]},{msgid:"Move",msgstr:["Премести"]},{msgid:"Move to {target}",msgstr:["Премести во {target}"]},{msgid:"Name",msgstr:["Име"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Имињата можат да бидат најмногу со 64 карактери."]},{msgid:"Names must not be empty.",msgstr:["Имињата неможе да бидат празни."]},{msgid:'Names must not end with "{extension}".',msgstr:['Имињата неможе да завршуваат со "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Имињата неможе да започнуваат со точка."]},{msgid:"New",msgstr:["Нова"]},{msgid:"New folder",msgstr:["Нова папка"]},{msgid:"New folder name",msgstr:["Ново име на папка"]},{msgid:"New version",msgstr:["Нова верзија"]},{msgid:"No files in here",msgstr:["Овде нема датотеки"]},{msgid:"No files matching your filter were found.",msgstr:["Не се пронајдени датотеки што одговараат на вашиот филтер."]},{msgid:"No matching files",msgstr:["Нема датотеки што се совпаѓаат"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Внесете име со најмалку 2 карактери."]},{msgid:"Recent",msgstr:["Неодамнешни"]},{msgid:"Select all checkboxes",msgstr:["Избери ги сите полиња за избор"]},{msgid:"Select all entries",msgstr:["Изберете ги сите записи"]},{msgid:"Select all existing files",msgstr:["Изберете ги сите постоечки датотеки"]},{msgid:"Select all new files",msgstr:["Изберете ги сите нови датотеки"]},{msgid:"Select entry",msgstr:["Избери запис"]},{msgid:"Select the row for {nodename}",msgstr:["Избери ред за {nodename}"]},{msgid:"Size",msgstr:["Големина"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Прескокни %n датотека","Прескокни %n датотеки"]},{msgid:"Skip this file",msgstr:["Прескокни ја оваа датотека"]},{msgid:"Submit name",msgstr:["Испрати име"]},{msgid:"Undo",msgstr:["Врати"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Прикачи содржина или синхронизирај со ваши уреди!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Кога е избрана влезна папка, сите конфликтни датотеки во неа исто така ќе бидат препишани."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Кога е избрана влезна папка, содржината се запишува во постоечката папка и се извршува рекурсивно решавање на конфликти."]},{msgid:"Which files do you want to keep?",msgstr:["Кој датотеки сакаш да ги зачуваш?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Моментално сте идентификувани како {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Моментално не сте идентификувани."]},{msgid:"You cannot leave the name empty.",msgstr:["Не можете да го оставите името празно."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Треба да избереш најмалку едно решение за конфликт"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Треба да избереш најмалку една верзија за секоја датотека за да продолжи."]}]},{language:"ms_MY",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" adalah nama folder yang tidak sesuai ']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" nama folder yang tidak dibenarkan']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" tidak dibenarkan dalam nama folder']},{msgid:"All files",msgstr:["Semua fail"]},{msgid:"Choose",msgstr:["Pilih"]},{msgid:"Choose {file}",msgstr:["Pilih {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Pilih fail %n"]},{msgid:"Copy",msgstr:["menyalin"]},{msgid:"Copy to {target}",msgstr:["menyalin ke {target}"]},{msgid:"Could not create the new folder",msgstr:["Tidak dapat mewujudkan folder baharu"]},{msgid:"Could not load files settings",msgstr:["Tidak dapat memuatkan tetapan fail"]},{msgid:"Could not load files views",msgstr:["Tidak dapat memuatkan paparan fail"]},{msgid:"Create directory",msgstr:["mewujudkan direktori"]},{msgid:"Current view selector",msgstr:["pemilih pandangan semasa"]},{msgid:"Favorites",msgstr:["Pilihan"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Fail dan folder yang anda tanda sebagai pilihan akan dipaparkan di sini."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Fail dan folder yang anda telah ubah suai baru-baru ini dipaparkan di sini."]},{msgid:"Filter file list",msgstr:["Menapis senarai fail"]},{msgid:"Folder name cannot be empty.",msgstr:["Nama folder tidak boleh kosong."]},{msgid:"Home",msgstr:["Utama"]},{msgid:"Modified",msgstr:["Ubah suai"]},{msgid:"Move",msgstr:["pindah"]},{msgid:"Move to {target}",msgstr:["pindah ke {target}"]},{msgid:"Name",msgstr:["Nama"]},{msgid:"New",msgstr:["Baru"]},{msgid:"New folder",msgstr:["Folder Baharu"]},{msgid:"New folder name",msgstr:["Nama folder baharu"]},{msgid:"No files in here",msgstr:["Tiada fail di sini"]},{msgid:"No files matching your filter were found.",msgstr:["Tiada fail yang sepadan dengan tapisan anda."]},{msgid:"No matching files",msgstr:["Tiada fail yang sepadan"]},{msgid:"Recent",msgstr:["baru-baru ini"]},{msgid:"Select all entries",msgstr:["Pilih semua entri"]},{msgid:"Select entry",msgstr:["Pilih entri"]},{msgid:"Select the row for {nodename}",msgstr:["memilih baris {nodename}"]},{msgid:"Size",msgstr:["Saiz"]},{msgid:"Undo",msgstr:["buat asal"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Muat naik beberapa kandungan atau selaras dengan peranti anda!"]}]},{language:"nb_NO",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" er ikke tillatt i et navn.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" er ikke et tillatt navn.']},{msgid:'"{name}" is an invalid folder name.',msgstr:["«{name}» er ikke et gyldig mappenavn."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["«{name}» er ikke et tillatt mappenavn."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" er et reservert navn og er ikke tillatt.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" er ikke tillatt inne i et mappenavn.']},{msgid:"All files",msgstr:["Alle filer"]},{msgid:"Cancel",msgstr:["Avbryt"]},{msgid:"Choose",msgstr:["Velg"]},{msgid:"Choose {file}",msgstr:["Velg {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Velg %n fil","Velg %n filer"]},{msgid:"Copy",msgstr:["Kopier"]},{msgid:"Copy to {target}",msgstr:["Kopier til {target}"]},{msgid:"Could not create the new folder",msgstr:["Kunne ikke opprette den nye mappen"]},{msgid:"Could not load files settings",msgstr:["Kunne ikke laste filinnstillinger"]},{msgid:"Could not load files views",msgstr:["Kunne ikke laste filvisninger"]},{msgid:"Create directory",msgstr:["Opprett mappe"]},{msgid:"Current view selector",msgstr:["Nåværende visningsvelger"]},{msgid:"Enter your name",msgstr:["Skriv inn navnet ditt"]},{msgid:"Failed to set nickname.",msgstr:["Kunne ikke lagre kallenavnet."]},{msgid:"Favorites",msgstr:["Favoritter"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Filer og mapper du markerer som favoritter vil vises her."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Filer og mapper du nylig har endret, vil vises her."]},{msgid:"Filter file list",msgstr:["Filtrer filliste"]},{msgid:"Folder name cannot be empty.",msgstr:["Mappenavn kan ikke være tomt."]},{msgid:"Guest identification",msgstr:["Gjesteidentifikasjon"]},{msgid:"Home",msgstr:["Hjem"]},{msgid:"Invalid name.",msgstr:["Ugyldig navn."]},{msgid:"Modified",msgstr:["Modifisert"]},{msgid:"Move",msgstr:["Flytt"]},{msgid:"Move to {target}",msgstr:["Flytt til {target}"]},{msgid:"Name",msgstr:["Navn"]},{msgid:"Names must not be empty.",msgstr:["Navn kan ikke være tomme."]},{msgid:'Names must not end with "{extension}".',msgstr:['Navn kan ikke ende med "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Navn kan ikke starte med et punktum."]},{msgid:"New",msgstr:["Ny"]},{msgid:"New folder",msgstr:["Ny mappe"]},{msgid:"New folder name",msgstr:["Nytt mappenavn"]},{msgid:"No files in here",msgstr:["Ingen filer her"]},{msgid:"No files matching your filter were found.",msgstr:["Ingen filer funnet med ditt filter."]},{msgid:"No matching files",msgstr:["Ingen filer samsvarer"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Vennligst angi et navn som har minst 2 tegn."]},{msgid:"Recent",msgstr:["Nylige"]},{msgid:"Select all entries",msgstr:["Velg alle oppføringer"]},{msgid:"Select entry",msgstr:["Velg oppføring"]},{msgid:"Select the row for {nodename}",msgstr:["Velg raden for {nodename}"]},{msgid:"Size",msgstr:["Størrelse"]},{msgid:"Submit name",msgstr:["Bekreft navn"]},{msgid:"Undo",msgstr:["Angre"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Last opp innhold eller synkroniser med enhetene dine!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du er akkurat nå identifisert som {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Du er akkurat nå ikke identifisert."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kan ikke la navnet være blankt."]}]},{language:"nl",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["{char}is niet toegestaan in een mapnaam."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" kan niet gebruikt worden in de benaming.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" is geen toegestane naam.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" is een gereserveerde naam en niet toegestaan in mapnamen.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" is een gereserveerde naam en niet toegestaan.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n bestanden conflicteren","%nbestand bestanden conflicteren"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n bestand conflicteerd in {dirname}","%nbestanden conflicteert in {dirname}"]},{msgid:"All files",msgstr:["Alle bestanden"]},{msgid:"Cancel",msgstr:["Annuleren"]},{msgid:"Cancel the entire operation",msgstr:["Annuleer de hele bewerking"]},{msgid:"Choose",msgstr:["Kiezen"]},{msgid:"Choose {file}",msgstr:["Kies {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Kies %n bestand","Kies %n bestanden"]},{msgid:"Confirm",msgstr:["Bevestigen"]},{msgid:"Continue",msgstr:["Doorgaan"]},{msgid:"Copy",msgstr:["Kopiëren"]},{msgid:"Copy to {target}",msgstr:["Kopiëren naar {target}"]},{msgid:"Could not create the new folder",msgstr:["Kon de nieuwe map niet maken"]},{msgid:"Could not load files settings",msgstr:["Kon de bestandsinstellingen niet laden"]},{msgid:"Could not load files views",msgstr:["Kon de bestandsweergaves niet laden"]},{msgid:"Create directory",msgstr:["Map aanmaken"]},{msgid:"Current view selector",msgstr:["Huidige weergave keuze"]},{msgid:"Enter your name",msgstr:["Voer je naam in"]},{msgid:"Existing version",msgstr:["Bestaande versie"]},{msgid:"Failed to set nickname.",msgstr:["Kon geen bijnaam instellen."]},{msgid:"Favorites",msgstr:["Favorieten"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Bestanden en mappen die je als favoriet markeert, verschijnen hier."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Bestanden en mappen die je recentelijk hebt gewijzigd, verschijnen hier."]},{msgid:"Filter file list",msgstr:["Bestandslijst filteren"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Mapnamen mogen niet eindigen op "{extension}".']},{msgid:"Guest identification",msgstr:["Gastenidentificatie"]},{msgid:"Home",msgstr:["Thuis"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Als u beide versies selecteert wordt een nummer toegevoegd aan de naam van het binnenkomende bestand."]},{msgid:"Invalid folder name.",msgstr:["Ongeldige mapnaam."]},{msgid:"Invalid name.",msgstr:["Ongeldige naam."]},{msgid:"Last modified date unknown",msgstr:["Laatste wijzigingsdatum onbekend"]},{msgid:"Modified",msgstr:["Gewijzigd"]},{msgid:"Move",msgstr:["Verplaatsen"]},{msgid:"Move to {target}",msgstr:["Verplaatsen naar {target}"]},{msgid:"Name",msgstr:["Naam"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namen mogen maximaal 64 tekens lang zijn."]},{msgid:"Names must not be empty.",msgstr:["Namen mogen niet leeg zijn."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namen mogen niet eindigen met "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Namen mogen niet begonnen met een punt."]},{msgid:"New",msgstr:["Nieuw"]},{msgid:"New folder",msgstr:["Nieuwe map"]},{msgid:"New folder name",msgstr:["Nieuwe mapnaam"]},{msgid:"New version",msgstr:["Nieuwe versie"]},{msgid:"No files in here",msgstr:["Geen bestanden hier"]},{msgid:"No files matching your filter were found.",msgstr:["Geen bestanden gevonden die voldoen aan je filter."]},{msgid:"No matching files",msgstr:["Geen overeenkomende bestanden"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Voer een naam in met minimaal 2 tekens."]},{msgid:"Recent",msgstr:["Recent"]},{msgid:"Select all checkboxes",msgstr:["Selecteer alle aanvinkopties"]},{msgid:"Select all entries",msgstr:["Alle invoer selecteren"]},{msgid:"Select all existing files",msgstr:["Selecteer alle bestaande bestanden"]},{msgid:"Select all new files",msgstr:["Selecteer alle nieuwe bestanden"]},{msgid:"Select entry",msgstr:["Invoer selecteren"]},{msgid:"Select the row for {nodename}",msgstr:["Selecteer de rij voor {nodename}"]},{msgid:"Size",msgstr:["Grootte"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Sla %n bestand over","Sla %n bestanden over"]},{msgid:"Skip this file",msgstr:["Sla dit bestand over"]},{msgid:"Submit name",msgstr:["Naam indienen"]},{msgid:"Undo",msgstr:["Ongedaan maken"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Upload inhoud of synchroniseer met je apparaten!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Als een inkomende map wordt geselecteerd, worden alle conflicterende bestanden daarin overschreven."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Als een inkomende map wordt geselecteerd, wordt de inhoud naar de bestaande map geschreven en wordt een recursieve conflict-oplossing uitgevoerd."]},{msgid:"Which files do you want to keep?",msgstr:["Welke bestanden wilt u bewaren?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Je wordt momenteel geïdentificeerd als {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Je bent momenteel niet geïdentificeerd."]},{msgid:"You cannot leave the name empty.",msgstr:["Je kunt de naam niet leeg laten."]},{msgid:"You need to choose at least one conflict solution",msgstr:["U moet in elk geval een conflictoplossing kiezen"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["U moet minstens een versie van elk bestand kiezen om door te gaan. "]}]},{language:"pl",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['Znak "{char}" nie jest dozwolony w nazwie folderu.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" nie jest dozwolone w nazwie.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nie jest dozwoloną nazwą.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" jest nazwą zastrzeżoną i nie jest dozwolona jako nazwa folderu.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" jest zastrzeżoną nazwą i nie jest dozwolone.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["Konflikt pliku","Konflikt %n plików","Konflikt %n plików","Konflikt %n plików"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n konfliktów pliku w {dirname}","%n konfliktów plików w {dirname}","%n konfliktów plików w {dirname}","%n konfliktów plików w {dirname}"]},{msgid:"All files",msgstr:["Wszystkie pliki"]},{msgid:"Cancel",msgstr:["Anuluj"]},{msgid:"Cancel the entire operation",msgstr:["Anuluj całą operację"]},{msgid:"Choose",msgstr:["Wybierz"]},{msgid:"Choose {file}",msgstr:["Wybierz {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Wybierz %n plik","Wybierz %n pliki","Wybierz %n plików","Wybierz %n plików"]},{msgid:"Confirm",msgstr:["Potwierdź"]},{msgid:"Continue",msgstr:["Kontynuuj"]},{msgid:"Copy",msgstr:["Kopiuj"]},{msgid:"Copy to {target}",msgstr:["Skopiuj do {target}"]},{msgid:"Could not create the new folder",msgstr:["Nie można utworzyć nowego folderu"]},{msgid:"Could not load files settings",msgstr:["Nie można wczytać ustawień plików"]},{msgid:"Could not load files views",msgstr:["Nie można wczytać widoków plików"]},{msgid:"Create directory",msgstr:["Utwórz katalog"]},{msgid:"Current view selector",msgstr:["Bieżący selektor widoku"]},{msgid:"Enter your name",msgstr:["Wprowadź nazwę"]},{msgid:"Existing version",msgstr:["Istniejąca wersja"]},{msgid:"Failed to set nickname.",msgstr:["Nie udało się utworzyć pseudonimu."]},{msgid:"Favorites",msgstr:["Ulubione"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Pliki i foldery które oznaczysz jako ulubione będą wyświetlały się tutaj"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Pliki i foldery które ostatnio modyfikowałeś będą wyświetlały się tutaj"]},{msgid:"Filter file list",msgstr:["Filtruj listę plików"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nazwy folderów nie mogą kończyć się na "{extension}".']},{msgid:"Guest identification",msgstr:["Identyfikacja gościa"]},{msgid:"Home",msgstr:["Strona główna"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Jeśli wybierzesz obie wersje, do nazwy przychodzącego pliku zostanie dodany numer."]},{msgid:"Invalid folder name.",msgstr:["Nieprawidłowa nazwa folderu."]},{msgid:"Invalid name.",msgstr:["Nieprawidłowa nazwa."]},{msgid:"Last modified date unknown",msgstr:["Data ostatniej modyfikacji nieznana"]},{msgid:"Modified",msgstr:["Zmodyfikowano"]},{msgid:"Move",msgstr:["Przenieś"]},{msgid:"Move to {target}",msgstr:["Przejdź do {target}"]},{msgid:"Name",msgstr:["Nazwa"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Nazwy mogą mieć maksymalnie 64 znaki."]},{msgid:"Names must not be empty.",msgstr:["Nazwy nie mogą być puste."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nazwy nie mogą kończyć się na "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nazwy nie mogą zaczynać się od kropki."]},{msgid:"New",msgstr:["Nowy"]},{msgid:"New folder",msgstr:["Nowy folder"]},{msgid:"New folder name",msgstr:["Nowa nazwa folderu"]},{msgid:"New version",msgstr:["Nowa wersja"]},{msgid:"No files in here",msgstr:["Brak plików"]},{msgid:"No files matching your filter were found.",msgstr:["Nie znaleziono plików spełniających warunki filtru"]},{msgid:"No matching files",msgstr:["Brak pasujących plików"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Wprowadź nazwę zawierającą minimum 2 znaki."]},{msgid:"Recent",msgstr:["Ostatni"]},{msgid:"Select all checkboxes",msgstr:["Zaznacz wszystkie pola wyboru"]},{msgid:"Select all entries",msgstr:["Wybierz wszystkie wpisy"]},{msgid:"Select all existing files",msgstr:["Zaznacz wszystkie istniejące pliki"]},{msgid:"Select all new files",msgstr:["Zaznacz wszystkie nowe pliki"]},{msgid:"Select entry",msgstr:["Wybierz wpis"]},{msgid:"Select the row for {nodename}",msgstr:["Wybierz wiersz dla {nodename}"]},{msgid:"Size",msgstr:["Rozmiar"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Pomiń %n plik","Pomiń %n plików","Pomiń %n plików","Pomiń %n plików"]},{msgid:"Skip this file",msgstr:["Pomiń ten plik"]},{msgid:"Submit name",msgstr:["Zatwierdź nazwę"]},{msgid:"Undo",msgstr:["Cofnij"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Wyślij zawartość lub zsynchronizuj ze swoimi urządzeniami!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Po wybraniu przychodzącego folderu wszystkie konfliktujące pliki w jego obrębie również zostaną nadpisane."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Po wybraniu przychodzącego folderu jego zawartość zostanie zapisana w istniejącym folderze i zostanie przeprowadzone rekursywne rozwiązywanie konfliktów."]},{msgid:"Which files do you want to keep?",msgstr:["Które pliki chcesz zachować?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Obecnie jesteś zidentyfikowany jako {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Użytkownik nie został uwierzytelniony."]},{msgid:"You cannot leave the name empty.",msgstr:["Nazwa nie może być pusta."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Musisz wybrać co najmniej jedno rozwiązanie konfliktu"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku."]}]},{language:"pt_BR",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" não é permitido dentro de um nome de pasta.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" não é permitido dentro de um nome.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" não é um nome permitido.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" é um nome reservado e não permitido para nomes de pasta.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" é um nome reservado e não permitido.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n arquivo conflita","%n de arquivos conflitam","%n arquivos conflitam"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n conflito de arquivo em {dirname}","%n de conflitos de arquivos em {dirname}","%n conflitos de arquivos em {dirname}"]},{msgid:"All files",msgstr:["Todos os arquivos"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar toda a operação"]},{msgid:"Choose",msgstr:["Escolher"]},{msgid:"Choose {file}",msgstr:["Escolher {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escolher %n arquivo","Escolher %n arquivos","Escolher %n arquivos"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar para {target}"]},{msgid:"Could not create the new folder",msgstr:["Não foi possível criar a nova pasta"]},{msgid:"Could not load files settings",msgstr:["Não foi possível carregar configurações de arquivos"]},{msgid:"Could not load files views",msgstr:["Não foi possível carregar visualições de arquivos"]},{msgid:"Create directory",msgstr:["Criar diretório"]},{msgid:"Current view selector",msgstr:["Seletor de visualização atual"]},{msgid:"Enter your name",msgstr:["Digite seu nome"]},{msgid:"Existing version",msgstr:["Versão existente"]},{msgid:"Failed to set nickname.",msgstr:["Falha ao definir apelido."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Os arquivos e pastas que você marca como favoritos aparecerão aqui."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Arquivos e pastas que você modificou recentemente aparecerão aqui."]},{msgid:"Filter file list",msgstr:["Filtrar lista de arquivos"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Nomes de pasta não podem terminar com "{extension}".']},{msgid:"Guest identification",msgstr:["Identificação de convidados"]},{msgid:"Home",msgstr:["Início"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se você selecionar ambas as versões, um número será adicionado ao nome do arquivo recebido."]},{msgid:"Invalid folder name.",msgstr:["Nome de pasta inválido."]},{msgid:"Invalid name.",msgstr:["Nome inválido."]},{msgid:"Last modified date unknown",msgstr:["Data da última modificação desconhecida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover para {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Os nomes podem ter no máximo 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["Nomes não podem estar vazios."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nomes não podem terminar com "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Nomes não podem começar com um ponto."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Nova pasta"]},{msgid:"New folder name",msgstr:["Novo nome de pasta"]},{msgid:"New version",msgstr:["Nova versão"]},{msgid:"No files in here",msgstr:["Nenhum arquivo aqui"]},{msgid:"No files matching your filter were found.",msgstr:["Nenhum arquivo correspondente ao seu filtro foi encontrado."]},{msgid:"No matching files",msgstr:["Nenhum arquivo correspondente"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Digite um nome com pelo menos 2 caracteres."]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all checkboxes",msgstr:["Selecione todas as caixas de seleção"]},{msgid:"Select all entries",msgstr:["Selecionar todas as entradas"]},{msgid:"Select all existing files",msgstr:["Selecione todos os arquivos existentes"]},{msgid:"Select all new files",msgstr:["Selecione todos os novos arquivos"]},{msgid:"Select entry",msgstr:["Selecionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Selecionar a linha para {nodename}"]},{msgid:"Size",msgstr:["Tamanho"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Ignorar %n arquivo","Ignorar %n de arquivos","Ignorar %n arquivos"]},{msgid:"Skip this file",msgstr:["Ignorar este arquivo"]},{msgid:"Submit name",msgstr:["Enviar nome"]},{msgid:"Undo",msgstr:["Desfazer"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Faça upload de algum conteúdo ou sincronize com seus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ao selecionar uma pasta de entrada, quaisquer arquivos conflitantes dentro dela também serão sobrescritos."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução recursiva de conflitos é realizada."]},{msgid:"Which files do you want to keep?",msgstr:["Quais arquivos você deseja manter?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Você está atualmente identificado como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["No momento, você não está identificado."]},{msgid:"You cannot leave the name empty.",msgstr:["Você não pode deixar o nome vazio."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Você precisa escolher pelo menos uma solução para o conflito"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Você precisa selecionar pelo menos uma versão de cada arquivo para continuar."]}]},{language:"pt_PT",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" não é permitido dentro de um nome.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" não é um nome permitido.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" é um nome de pasta inválido.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" não é um nome de pasta permitido']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" é um nome reservado e não é permitido.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" não é permitido dentro do nome de pasta.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n ficheiro em conflito","%n ficheiros em conflito","%n ficheiros em conflito"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n ficheiro em conflito em {dirname}","%n ficheiros em conflito em {dirname}","%n ficheiros em conflito em {dirname}"]},{msgid:"All files",msgstr:["Todos os ficheiros"]},{msgid:"Cancel",msgstr:["Cancelar"]},{msgid:"Cancel the entire operation",msgstr:["Cancelar toda a operação"]},{msgid:"Choose",msgstr:["Escolher"]},{msgid:"Choose {file}",msgstr:["Escolher {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Escolha %n ficheiro","Escolha %n ficheiros","Escolha %n ficheiros"]},{msgid:"Confirm",msgstr:["Confirmar"]},{msgid:"Continue",msgstr:["Continuar"]},{msgid:"Copy",msgstr:["Copiar"]},{msgid:"Copy to {target}",msgstr:["Copiar para {target}"]},{msgid:"Could not create the new folder",msgstr:["Não foi possível criar a nova pasta "]},{msgid:"Could not load files settings",msgstr:["Não foi possível carregar as definições dos ficheiros"]},{msgid:"Could not load files views",msgstr:["Não foi possível carregar as visualizações dos ficheiros"]},{msgid:"Create directory",msgstr:["Criar pasta"]},{msgid:"Current view selector",msgstr:["Seletor de visualização atual"]},{msgid:"Enter your name",msgstr:["Introduza o seu nome"]},{msgid:"Existing version",msgstr:["Versão existente"]},{msgid:"Failed to set nickname.",msgstr:["Falha ao definir o nome alternativo."]},{msgid:"Favorites",msgstr:["Favoritos"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Os ficheiros e as pastas que marcar como favoritos aparecerão aqui."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Os ficheiros e as pastas que modificou recentemente aparecerão aqui."]},{msgid:"Filter file list",msgstr:["Filtrar lista de ficheiros"]},{msgid:"Folder name cannot be empty.",msgstr:["O nome da pasta não pode estar vazio."]},{msgid:"Guest identification",msgstr:["Identificação de convidado"]},{msgid:"Home",msgstr:["Início"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Se você selecionar ambas as versões, um número será adicionado ao nome do ficheiro recebido."]},{msgid:"Invalid name.",msgstr:["Nome inválido."]},{msgid:"Last modified date unknown",msgstr:["Data da última modificação desconhecida"]},{msgid:"Modified",msgstr:["Modificado"]},{msgid:"Move",msgstr:["Mover"]},{msgid:"Move to {target}",msgstr:["Mover para {target}"]},{msgid:"Name",msgstr:["Nome"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Os nomes podem ter no máximo 64 caracteres."]},{msgid:"Names must not be empty.",msgstr:["O nome não pode ficar em branco."]},{msgid:'Names must not end with "{extension}".',msgstr:['Nomes não podem terminar em "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Os nomes não podem começar por um ponto."]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Nova pasta"]},{msgid:"New folder name",msgstr:["Novo nome da pasta"]},{msgid:"New version",msgstr:["Nova versão"]},{msgid:"No files in here",msgstr:["Sem ficheiros aqui"]},{msgid:"No files matching your filter were found.",msgstr:["Não foi encontrado nenhum ficheiro correspondente ao seu filtro."]},{msgid:"No matching files",msgstr:["Nenhum ficheiro correspondente"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Introduza um nome com, pelo menos, 2 caracteres."]},{msgid:"Recent",msgstr:["Recentes"]},{msgid:"Select all checkboxes",msgstr:["Selecione todas as caixas de seleção"]},{msgid:"Select all entries",msgstr:["Selecionar todas as entradas"]},{msgid:"Select all existing files",msgstr:["Selecione todos os ficheiros existentes"]},{msgid:"Select all new files",msgstr:["Selecione todos os novos ficheiros"]},{msgid:"Select entry",msgstr:["Selecionar entrada"]},{msgid:"Select the row for {nodename}",msgstr:["Selecione a linha para {nodename}"]},{msgid:"Size",msgstr:["Tamanho"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Ignorar %n ficheiro","Ignorar %n ficheiros","Ignorar %n ficheiros"]},{msgid:"Skip this file",msgstr:["Ignorar este ficheiro"]},{msgid:"Submit name",msgstr:["Submeter nome"]},{msgid:"Undo",msgstr:["Anular"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Envie algum conteúdo ou sincronize com os seus dispositivos!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Ao selecionar uma pasta de entrada, quaisquer ficheiros conflituantes dentro da mesma serão também sobrescritos."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e é realizada uma resolução recursiva de conflitos."]},{msgid:"Which files do you want to keep?",msgstr:["Quais os ficheiros que deseja manter?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Atualmente está identificado como {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Atualmente, não está identificado."]},{msgid:"You cannot leave the name empty.",msgstr:["Não pode deixar o nome em branco."]},{msgid:"You need to choose at least one conflict solution",msgstr:["É preciso escolher pelo menos uma solução para o conflito."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["É necessário selecionar pelo menos uma versão de cada ficheiro para continuar."]}]},{language:"ro",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" este un nume de director invalid.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" nu este un nume de director permis']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" nu este permis în numele unui director.']},{msgid:"All files",msgstr:["Toate fișierele"]},{msgid:"Choose",msgstr:["Alege"]},{msgid:"Choose {file}",msgstr:["Alege {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Alege %n fișier","Alege %n fișiere","Alege %n fișiere"]},{msgid:"Copy",msgstr:["Copiază"]},{msgid:"Copy to {target}",msgstr:["Copiază în {target}"]},{msgid:"Could not create the new folder",msgstr:["Nu s-a putut crea noul director"]},{msgid:"Could not load files settings",msgstr:["Nu s-au putut încărca setările fișierelor"]},{msgid:"Could not load files views",msgstr:["Nu s-au putut încărca vizualizările fișierelor"]},{msgid:"Create directory",msgstr:["Creează director"]},{msgid:"Current view selector",msgstr:["Selectorul curent al vizualizării"]},{msgid:"Favorites",msgstr:["Favorite"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Fișiere și directoare pe care le marcați ca favorite vor apărea aici."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Fișiere și directoare pe care le-ați modificat recent vor apărea aici."]},{msgid:"Filter file list",msgstr:["Filtrează lista de fișiere"]},{msgid:"Folder name cannot be empty.",msgstr:["Numele de director nu poate fi necompletat."]},{msgid:"Home",msgstr:["Acasă"]},{msgid:"Modified",msgstr:["Modificat"]},{msgid:"Move",msgstr:["Mută"]},{msgid:"Move to {target}",msgstr:["Mută către {target}"]},{msgid:"Name",msgstr:["Nume"]},{msgid:"New",msgstr:["Nou"]},{msgid:"New folder",msgstr:["Director nou"]},{msgid:"New folder name",msgstr:["Numele noului director"]},{msgid:"No files in here",msgstr:["Nu există fișiere"]},{msgid:"No files matching your filter were found.",msgstr:["Nu există fișiere potrivite pentru filtrul selectat"]},{msgid:"No matching files",msgstr:["Nu există fișiere potrivite"]},{msgid:"Recent",msgstr:["Recente"]},{msgid:"Select all entries",msgstr:["Selectează toate înregistrările"]},{msgid:"Select entry",msgstr:["Selectează înregistrarea"]},{msgid:"Select the row for {nodename}",msgstr:["Selectează rândul pentru {nodename}"]},{msgid:"Size",msgstr:["Mărime"]},{msgid:"Undo",msgstr:["Anulează"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Încărcați conținut sau sincronizați cu dispozitivele dumneavoastră!"]}]},{language:"ru",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" не допускается внутри имени.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" это не допустимое имя.']},{msgid:'"{name}" is an invalid folder name.',msgstr:["«{name}» — недопустимое имя папки."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["«{name}» не является разрешенным именем папки"]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" это зарезервированное имя и не допустимо.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:["Символ «/» не допускается внутри имени папки."]},{msgid:"All files",msgstr:["Все файлы"]},{msgid:"Cancel",msgstr:["Отмена"]},{msgid:"Choose",msgstr:["Выбрать"]},{msgid:"Choose {file}",msgstr:["Выбрать «{file}»"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Выбрать %n файл","Выбрать %n файла","Выбрать %n файлов","Выбрать %n файлов"]},{msgid:"Copy",msgstr:["Копировать"]},{msgid:"Copy to {target}",msgstr:["Копировать в «{target}»"]},{msgid:"Could not create the new folder",msgstr:["Не удалось создать новую папку"]},{msgid:"Could not load files settings",msgstr:["Не удалось загрузить настройки файлов"]},{msgid:"Could not load files views",msgstr:["Не удалось загрузить конфигурацию просмотра файлов"]},{msgid:"Create directory",msgstr:["Создать папку"]},{msgid:"Current view selector",msgstr:["Переключатель текущего вида"]},{msgid:"Enter your name",msgstr:["Введите ваше имя"]},{msgid:"Failed to set nickname.",msgstr:["Не удалось задать никнейм."]},{msgid:"Favorites",msgstr:["Избранное"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Здесь будут отображаться файлы и папки, которые вы пометили как избранные."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Здесь будут отображаться файлы и папки, которые вы недавно изменили."]},{msgid:"Filter file list",msgstr:["Фильтровать список файлов"]},{msgid:"Folder name cannot be empty.",msgstr:["Имя папки не может быть пустым."]},{msgid:"Guest identification",msgstr:["Гостевая идентификация"]},{msgid:"Home",msgstr:["Домой"]},{msgid:"Invalid name.",msgstr:["Неверное имя."]},{msgid:"Modified",msgstr:["Изменен"]},{msgid:"Move",msgstr:["Переместить"]},{msgid:"Move to {target}",msgstr:["Переместить в «{target}»"]},{msgid:"Name",msgstr:["Имя"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Имена не могут быть длинее 64 символов."]},{msgid:"Names must not be empty.",msgstr:["Имена не могут быть пустыми."]},{msgid:'Names must not end with "{extension}".',msgstr:['Имена не могут оканчиваться на "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Имена должны начинаться с точки."]},{msgid:"New",msgstr:["Новый"]},{msgid:"New folder",msgstr:["Новая папка"]},{msgid:"New folder name",msgstr:["Имя новой папки"]},{msgid:"No files in here",msgstr:["Здесь нет файлов"]},{msgid:"No files matching your filter were found.",msgstr:["Файлы, соответствующие вашему фильтру, не найдены."]},{msgid:"No matching files",msgstr:["Нет подходящих файлов"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Пожалуйста введите имя длиной не менее 2 символов."]},{msgid:"Recent",msgstr:["Недавний"]},{msgid:"Select all entries",msgstr:["Выбрать все записи"]},{msgid:"Select entry",msgstr:["Выбрать запись"]},{msgid:"Select the row for {nodename}",msgstr:["Выбрать строку для «{nodename}»"]},{msgid:"Size",msgstr:["Размер"]},{msgid:"Submit name",msgstr:["Отправить имя"]},{msgid:"Undo",msgstr:["Отменить"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Загрузите контент или синхронизируйте его со своими устройствами!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Вы идентифицированы как {nickname}."]},{msgid:"You are currently not identified.",msgstr:["В данный момент вы не идентифицированы."]},{msgid:"You cannot leave the name empty.",msgstr:["Вы не можете оставить имя пустым."]}]},{language:"sk_SK",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" nie je povolené v názve priečinka.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" nie je povolené v rámci mena.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" nie je povolený názov.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["„{segment}“ je rezervované meno a nie je povolené na názvy priečinkov."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" je rezervované meno a nie je povolené.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n konflikt súborov","%n konflikty súborov","%n konfliktov súborov","%n konflikty súborov"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n konflikt súborov v {dirname}","%n konflikty súborov v {dirname}","%n konfliktov súborov v {dirname}","%n konfliktov súborov v {dirname}"]},{msgid:"All files",msgstr:["Všetky súbory"]},{msgid:"Cancel",msgstr:["Zrušiť"]},{msgid:"Cancel the entire operation",msgstr:["Zrušiť celú operáciu"]},{msgid:"Choose",msgstr:["Vybrať"]},{msgid:"Choose {file}",msgstr:["Vybrať {súbor}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Vybraný %n súbor","Vybrané %n súbory","Vybraných %n súborov","Vybraných %n súborov"]},{msgid:"Confirm",msgstr:["Potvrdiť"]},{msgid:"Continue",msgstr:["Pokračovať"]},{msgid:"Copy",msgstr:["Kopírovať"]},{msgid:"Copy to {target}",msgstr:["Kopírovať do {umiestnenia}"]},{msgid:"Could not create the new folder",msgstr:["Nepodarilo sa vytvoriť nový priečinok"]},{msgid:"Could not load files settings",msgstr:["Nepodarilo sa načítať nastavenia súborov"]},{msgid:"Could not load files views",msgstr:["Nepodarilo sa načítať pohľady súborov"]},{msgid:"Create directory",msgstr:["Vytvoriť adresár"]},{msgid:"Current view selector",msgstr:["Výber aktuálneho zobrazenia"]},{msgid:"Enter your name",msgstr:["Zadajte svoje meno"]},{msgid:"Existing version",msgstr:["Existujúca verzia"]},{msgid:"Failed to set nickname.",msgstr:["Nepodarilo sa nastaviť prezývku."]},{msgid:"Favorites",msgstr:["Obľúbené"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Tu sa zobrazia súbory a priečinky, ktoré označíte ako obľúbené."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Tu sa zobrazia súbory a priečinky, ktoré ste nedávno upravili."]},{msgid:"Filter file list",msgstr:["Filtrovať zoznam súborov"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Názvy priečinkov nesmú končiť na "{extension}".']},{msgid:"Guest identification",msgstr:["Identifikácia hosťa"]},{msgid:"Home",msgstr:["Domov"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Ak vyberiete obe verzie, prichádzajúci súbor bude mať k svojmu názvu pridané číslo."]},{msgid:"Invalid folder name.",msgstr:["Neplatný názov priečinka."]},{msgid:"Invalid name.",msgstr:["Neplatné meno."]},{msgid:"Last modified date unknown",msgstr:["Posledná zmena dátumu neznáma"]},{msgid:"Modified",msgstr:["Upravené"]},{msgid:"Move",msgstr:["Prejsť"]},{msgid:"Move to {target}",msgstr:["Prejsť na {umiestnenie}"]},{msgid:"Name",msgstr:["Názov"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Mená môžu mať maximálne 64 znakov."]},{msgid:"Names must not be empty.",msgstr:["Mená nesmú byť prázdne."]},{msgid:'Names must not end with "{extension}".',msgstr:['Mená nesmú končiť "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Mená nesmú začínať bodkou."]},{msgid:"New",msgstr:["Pridať"]},{msgid:"New folder",msgstr:["Pridať priečinok"]},{msgid:"New folder name",msgstr:["Pridať názov priečinka"]},{msgid:"New version",msgstr:["Nová verzia"]},{msgid:"No files in here",msgstr:["Nie sú tu žiadne súbory"]},{msgid:"No files matching your filter were found.",msgstr:["Nenašli sa žiadne súbory zodpovedajúce vášmu filtru."]},{msgid:"No matching files",msgstr:["Žiadne zodpovedajúce súbory"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Zadajte meno s aspoň 2 znakmi."]},{msgid:"Recent",msgstr:["Nedávne"]},{msgid:"Select all checkboxes",msgstr:["Vyberte všetky zaškrtávacie políčka"]},{msgid:"Select all entries",msgstr:["Vybrať všetky položky"]},{msgid:"Select all existing files",msgstr:["Vybrať všetky existujúce súbory"]},{msgid:"Select all new files",msgstr:["Vybrať všetky nové súbory"]},{msgid:"Select entry",msgstr:["Vybrať položku"]},{msgid:"Select the row for {nodename}",msgstr:["Vyberte riadok pre {názov uzla}"]},{msgid:"Size",msgstr:["Veľkosť"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Preskočiť %n súbor","Preskočiť %n súbory","Preskočiť %n súborov","Preskočiť %n súbory"]},{msgid:"Skip this file",msgstr:["Preskočiť tento súbor"]},{msgid:"Submit name",msgstr:["Zadať meno"]},{msgid:"Undo",msgstr:["Späť"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Nahrajte nejaký obsah alebo synchronizujte so svojimi zariadeniami!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Keď je vybraná prichádzajúca složka, všetky konfliktné súbory v nej budú taktiež prepísané."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Keď je vybraná prichádzajúca zložka, obsah sa zapíše do existujúcej zložky a vykoná sa rekurzívne riešenie konfliktov."]},{msgid:"Which files do you want to keep?",msgstr:["Ktoré súbory chcete zachovať?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Momentálne ste identifikovaný ako {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Momentálne nie ste identifikovaný."]},{msgid:"You cannot leave the name empty.",msgstr:["Nemôžete nechať meno prázdne."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Musíte si vybrať aspoň jedno riešenie konfliktu."]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Musíte vybrať aspoň jednu verziu každého súboru, aby ste mohli pokračovať."]}]},{language:"sl",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["{name} je neveljavno ime mape."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["{name} ni dovoljeno ime mape"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" ni dovoljen v imenu mape.']},{msgid:"All files",msgstr:["Vse datoteke"]},{msgid:"Choose",msgstr:["Izberi"]},{msgid:"Choose {file}",msgstr:["Izberi {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Izberi %n datoteko","Izberi %n datoteki","Izberi %n datotek","Izberi %n datotek"]},{msgid:"Copy",msgstr:["Kopiraj"]},{msgid:"Copy to {target}",msgstr:["Kopiraj v {target}"]},{msgid:"Could not create the new folder",msgstr:["Nisem mogel ustvariti nove mape"]},{msgid:"Could not load files settings",msgstr:["NIsem mogel naložiti nastavitev datotek"]},{msgid:"Could not load files views",msgstr:["Nisem mogel naložiti pogledov datotek"]},{msgid:"Create directory",msgstr:["Ustvari mapo"]},{msgid:"Current view selector",msgstr:["Izbirnik trenutnega pogleda"]},{msgid:"Favorites",msgstr:["Priljubljene"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Datoteke in mape ki jih označite kot priljubljene se bodo prikazale tukaj."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Daoteke in mape ki ste jih pred kratkim spremenili se bodo prikazale tukaj."]},{msgid:"Filter file list",msgstr:["Filtriraj seznam datotek"]},{msgid:"Folder name cannot be empty.",msgstr:["Ime mape ne more biti prazno"]},{msgid:"Home",msgstr:["Domov"]},{msgid:"Modified",msgstr:["Spremenjeno"]},{msgid:"Move",msgstr:["Premakni"]},{msgid:"Move to {target}",msgstr:["Premakni v {target}"]},{msgid:"Name",msgstr:["Ime"]},{msgid:"New",msgstr:["Nov"]},{msgid:"New folder",msgstr:["Nova mapa"]},{msgid:"New folder name",msgstr:["Novo ime mape"]},{msgid:"No files in here",msgstr:["Tukaj ni datotek"]},{msgid:"No files matching your filter were found.",msgstr:["Ni bilo najdenih ujemajočih datotek glede na vaš filter."]},{msgid:"No matching files",msgstr:["Ni ujemajočih datotek"]},{msgid:"Recent",msgstr:["Nedavne"]},{msgid:"Select all entries",msgstr:["Izberi vse vnose"]},{msgid:"Select entry",msgstr:["Izberi vnos"]},{msgid:"Select the row for {nodename}",msgstr:["Izberi vrstico za {nodename}"]},{msgid:"Size",msgstr:["Velikost"]},{msgid:"Undo",msgstr:["Razveljavi"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Naloži nekaj vsebine ali sinhroniziraj s svojimi napravami!"]}]},{language:"sr",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:["„{char}” није дозвољено унутар имена."]},{msgid:'"{extension}" is not an allowed name.',msgstr:["„{extension}” није дозвољено име."]},{msgid:'"{name}" is an invalid folder name.',msgstr:["„{name}” није исправно име фолдера."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["„{name}” није дозвољено име за фолдер."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["„{segment}” је резервисано име и није дозвољено."]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["„/” није дозвољено унутар имена фолдера."]},{msgid:"All files",msgstr:["Сви фајлови"]},{msgid:"Cancel",msgstr:["Откажи"]},{msgid:"Choose",msgstr:["Изаберите"]},{msgid:"Choose {file}",msgstr:["Изаберите {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Изаберите %n фајл","Изаберите %n фајла","Изаберите %n фајлова"]},{msgid:"Copy",msgstr:["Копирај"]},{msgid:"Copy to {target}",msgstr:["Копирај у {target}"]},{msgid:"Could not create the new folder",msgstr:["Није могао да се креира нови фолдер"]},{msgid:"Could not load files settings",msgstr:["Не могу да се учитају подешавања фајлова"]},{msgid:"Could not load files views",msgstr:["Не могу да се учитају прикази фајлова"]},{msgid:"Create directory",msgstr:["Креирај директоријум"]},{msgid:"Current view selector",msgstr:["Бирач тренутног приказа"]},{msgid:"Enter your name",msgstr:["Унесите своје име"]},{msgid:"Failed to set nickname.",msgstr:["Није успело постављање надимка."]},{msgid:"Favorites",msgstr:["Омиљено"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Овде ће се појавити фајлови и фолдери које сте означили као омиљене."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Овде ће се појавити фајлови и фолдери који се се недавно изменили."]},{msgid:"Filter file list",msgstr:["Фитрирање листе фајлова"]},{msgid:"Folder name cannot be empty.",msgstr:["Име фолдера не може бити празно."]},{msgid:"Guest identification",msgstr:["Идентификација госта"]},{msgid:"Home",msgstr:["Почетак"]},{msgid:"Invalid name.",msgstr:["Неисправно име."]},{msgid:"Modified",msgstr:["Измењено"]},{msgid:"Move",msgstr:["Премести"]},{msgid:"Move to {target}",msgstr:["Премести у {target}"]},{msgid:"Name",msgstr:["Име"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Највећа дужина имена може бити 64 карактера."]},{msgid:"Names must not be empty.",msgstr:["Имена не смеју да буду празна."]},{msgid:'Names must not end with "{extension}".',msgstr:["Имена не смеју да се завршавају на „{extension}”."]},{msgid:"Names must not start with a dot.",msgstr:["Имена не смеју да почињу тачком."]},{msgid:"New",msgstr:["Ново"]},{msgid:"New folder",msgstr:["Нови фолдер"]},{msgid:"New folder name",msgstr:["Име новог фолдера"]},{msgid:"No files in here",msgstr:["Овде нема фајлова"]},{msgid:"No files matching your filter were found.",msgstr:["Није пронађен ниједан фајл који задовољава ваш филтер."]},{msgid:"No matching files",msgstr:["Нема таквих фајлова"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Молимо вас да унесете име од барем два карактера."]},{msgid:"Recent",msgstr:["Скорашње"]},{msgid:"Select all entries",msgstr:["Изаберите све ставке"]},{msgid:"Select entry",msgstr:["Изаберите ставку"]},{msgid:"Select the row for {nodename}",msgstr:["Изаберите ред за {nodename}"]},{msgid:"Size",msgstr:["Величина"]},{msgid:"Submit name",msgstr:["Предај име"]},{msgid:"Undo",msgstr:["Поништи"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Отпремите нешто или синхронизујте са својим уређајима!"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Тренутно се идентификујете као {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Тренутно немате идентификацију."]},{msgid:"You cannot leave the name empty.",msgstr:["Име не можете да оставите празно."]}]},{language:"sr@latin",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["„{name}” je neispravan naziv foldera."]},{msgid:'"{name}" is not an allowed folder name',msgstr:["„{name}” je nedozvoljen naziv foldera."]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["„/” se ne može koristiti unutar naziva foldera."]},{msgid:"All files",msgstr:["Svi fajlovi"]},{msgid:"Choose",msgstr:["Izaberite"]},{msgid:"Choose {file}",msgstr:["Izaberite {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Izaberite %n fajl","Izaberite %n fajla","Izaberite %n fajlova"]},{msgid:"Copy",msgstr:["Kopiraj"]},{msgid:"Copy to {target}",msgstr:["Kopiraj u {target}"]},{msgid:"Could not create the new folder",msgstr:["Neuspešno kreiranje novog foldera"]},{msgid:"Could not load files settings",msgstr:["Neuspešno učitavanje podešavanja fajlova"]},{msgid:"Could not load files views",msgstr:["Neuspešno učitavanje prikaza fajlova"]},{msgid:"Create directory",msgstr:["Kreiraj direktorijum"]},{msgid:"Current view selector",msgstr:["Birač trenutnog prikaza"]},{msgid:"Favorites",msgstr:["Omiljeno"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Lista omiljenih fajlova i foldera."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Lista fajlova i foldera sa skorašnjim izmenama."]},{msgid:"Filter file list",msgstr:["Fitriranje liste fajlova"]},{msgid:"Folder name cannot be empty.",msgstr:["Naziv foldera ne može biti prazan."]},{msgid:"Home",msgstr:["Početak"]},{msgid:"Modified",msgstr:["Izmenjeno"]},{msgid:"Move",msgstr:["Premesti"]},{msgid:"Move to {target}",msgstr:["Premesti u {target}"]},{msgid:"Name",msgstr:["Naziv"]},{msgid:"New",msgstr:["Novo"]},{msgid:"New folder",msgstr:["Novi folder"]},{msgid:"New folder name",msgstr:["Naziv novog foldera"]},{msgid:"No files in here",msgstr:["Bez fajlova"]},{msgid:"No files matching your filter were found.",msgstr:["Nema fajlova koji zadovoljavaju uslove filtera."]},{msgid:"No matching files",msgstr:["Nema takvih fajlova"]},{msgid:"Recent",msgstr:["Skorašnje"]},{msgid:"Select all entries",msgstr:["Izaberite sve stavke"]},{msgid:"Select entry",msgstr:["Izaberite stavku"]},{msgid:"Select the row for {nodename}",msgstr:["Izaberite red za {nodename}"]},{msgid:"Size",msgstr:["Veličina"]},{msgid:"Undo",msgstr:["Vrati"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Otpremite sadržaj ili sinhronizujte sa svojim uređajima!"]}]},{language:"sv",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" är inte tillåtet i ett mappnamn.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" är inte tillåtet i ett namn.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" är inte ett tillåtet namn.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" är ett reserverat namn och inte tillåtet mappnamn.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" är ett reserverat namn och inte tillåtet.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n fil är i konflikt","%n filer är i konflikt"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n fil är i konflikt i {dirname}","%n filer är i konflikt i {dirname}"]},{msgid:"All files",msgstr:["Alla filer"]},{msgid:"Cancel",msgstr:["Avbryt"]},{msgid:"Cancel the entire operation",msgstr:["Avbryt hela operationen"]},{msgid:"Choose",msgstr:["Välj"]},{msgid:"Choose {file}",msgstr:["Välj {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Välj %n fil","Välj %n filer"]},{msgid:"Confirm",msgstr:["Bekräfta"]},{msgid:"Continue",msgstr:["Fortsätt"]},{msgid:"Copy",msgstr:["Kopiera"]},{msgid:"Copy to {target}",msgstr:["Kopiera till {target}"]},{msgid:"Could not create the new folder",msgstr:["Kunde inte skapa den nya mappen"]},{msgid:"Could not load files settings",msgstr:["Kunde inte ladda filinställningar"]},{msgid:"Could not load files views",msgstr:["Kunde inte ladda filvyer"]},{msgid:"Create directory",msgstr:["Skapa katalog"]},{msgid:"Current view selector",msgstr:["Aktuell vyväljare"]},{msgid:"Enter your name",msgstr:["Ange ditt namn"]},{msgid:"Existing version",msgstr:["Nuvarande version"]},{msgid:"Failed to set nickname.",msgstr:["Kunde inte ställa in smeknamn."]},{msgid:"Favorites",msgstr:["Favoriter"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Filer och mappar som du markerar som favorit kommer att visas här."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Filer och mappar som du nyligen ändrat kommer att visas här."]},{msgid:"Filter file list",msgstr:["Filtrera fillistan"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Mappnamn får inte sluta med "{extension}".']},{msgid:"Guest identification",msgstr:["Gästidentifiering"]},{msgid:"Home",msgstr:["Hem"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Om du väljer båda versionerna kommer den inkommande filen att få ett nummer tillagt i sitt namn."]},{msgid:"Invalid folder name.",msgstr:["Ogiltigt mappnamn."]},{msgid:"Invalid name.",msgstr:["Ogiltigt namn."]},{msgid:"Last modified date unknown",msgstr:["Senaste ändringsdatum okänt"]},{msgid:"Modified",msgstr:["Ändrad"]},{msgid:"Move",msgstr:["Flytta"]},{msgid:"Move to {target}",msgstr:["Flytta till {target}"]},{msgid:"Name",msgstr:["Namn"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Namnen kan vara högst 64 tecken långa."]},{msgid:"Names must not be empty.",msgstr:["Namn får inte vara tomt."]},{msgid:'Names must not end with "{extension}".',msgstr:['Namn får inte sluta med "{extension}".']},{msgid:"Names must not start with a dot.",msgstr:["Namn får inte börja med en punkt."]},{msgid:"New",msgstr:["Ny"]},{msgid:"New folder",msgstr:["Ny mapp"]},{msgid:"New folder name",msgstr:["Nytt mappnamn"]},{msgid:"New version",msgstr:["Ny version"]},{msgid:"No files in here",msgstr:["Inga filer här"]},{msgid:"No files matching your filter were found.",msgstr:["Inga filer som matchar ditt filter hittades."]},{msgid:"No matching files",msgstr:["Inga matchande filer"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Ange ett namn med minst 2 tecken."]},{msgid:"Recent",msgstr:["Nyligen"]},{msgid:"Select all checkboxes",msgstr:["Markera alla kryssrutor"]},{msgid:"Select all entries",msgstr:["Välj alla poster"]},{msgid:"Select all existing files",msgstr:["Välj alla befintliga filer"]},{msgid:"Select all new files",msgstr:["Välj alla nya filer"]},{msgid:"Select entry",msgstr:["Välj post"]},{msgid:"Select the row for {nodename}",msgstr:["Välj raden för {nodename}"]},{msgid:"Size",msgstr:["Storlek"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Hoppa över %n fil","Hoppa över %n filer"]},{msgid:"Skip this file",msgstr:["Hoppa över den här filen"]},{msgid:"Submit name",msgstr:["Skicka namn"]},{msgid:"Undo",msgstr:["Ångra"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Ladda upp lite innehåll eller synkronisera med dina enheter!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["När en inkommande mapp väljs kommer eventuella konflikterande filer i den också att skrivas över."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs."]},{msgid:"Which files do you want to keep?",msgstr:["Vilka filer vill du behålla?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Du är för närvarande identifierad som {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Du är för närvarande inte identifierad."]},{msgid:"You cannot leave the name empty.",msgstr:["Du kan inte lämna namnet tomt."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Du måste välja minst en konfliktlösning"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Du måste välja minst en version av varje fil för att fortsätta."]}]},{language:"tr",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:['"{char}" karakteri bir klasör adında kullanılamaz.']},{msgid:'"{char}" is not allowed inside a name.',msgstr:['Bir ad içinde "{char}" karakteri kullanılamaz.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" adına izin verilmiyor.']},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:['"{segment}" adı sistem için ayrılmış olduğundan klasör adlarında kullanılamaz.']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" adı sistem için ayrılmış olduğundan kullanılamaz.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n dosya çakışıyor","%n dosya çakışıyor"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} içindeki %n dosya çakışıyor","{dirname} içindeki %n dosya çakışıyor"]},{msgid:"All files",msgstr:["Tüm dosyalar"]},{msgid:"Cancel",msgstr:["İptal"]},{msgid:"Cancel the entire operation",msgstr:["Tüm işlemi iptal et"]},{msgid:"Choose",msgstr:["Seçin"]},{msgid:"Choose {file}",msgstr:["{file} seçin"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["%n dosya seçin","%n dosya seçin"]},{msgid:"Confirm",msgstr:["Onayla"]},{msgid:"Continue",msgstr:["İlerle"]},{msgid:"Copy",msgstr:["Kopyala"]},{msgid:"Copy to {target}",msgstr:["{target} üzerine kopyala"]},{msgid:"Could not create the new folder",msgstr:["Yeni klasör oluşturulamadı"]},{msgid:"Could not load files settings",msgstr:["Dosyalar uygulamasının ayarları yüklenemedi"]},{msgid:"Could not load files views",msgstr:["Dosyalar uygulamasının görünümleri yüklenemedi"]},{msgid:"Create directory",msgstr:["Klasör oluştur"]},{msgid:"Current view selector",msgstr:["Geçerli görünüm seçici"]},{msgid:"Enter your name",msgstr:["Adınızı yazın"]},{msgid:"Existing version",msgstr:["Var olan sürüm"]},{msgid:"Failed to set nickname.",msgstr:["Takma ad ayarlanamadı."]},{msgid:"Favorites",msgstr:["Sık kullanılanlar"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Sık kullanılan olarak seçtiğiniz dosyalar burada görüntülenir."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Son zamanlarda değiştirdiğiniz dosya ve klasörler burada görüntülenir."]},{msgid:"Filter file list",msgstr:["Dosya listesini süz"]},{msgid:'Folder names must not end with "{extension}".',msgstr:['Klasör adları "{extension}" ile bitemez.']},{msgid:"Guest identification",msgstr:["Konuk kimliği"]},{msgid:"Home",msgstr:["Giriş"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir."]},{msgid:"Invalid folder name.",msgstr:["Klasör adı geçersiz."]},{msgid:"Invalid name.",msgstr:["Ad geçersiz."]},{msgid:"Last modified date unknown",msgstr:["Son değiştirilme tarihi bilinmiyor."]},{msgid:"Modified",msgstr:["Değiştirilme"]},{msgid:"Move",msgstr:["Taşı"]},{msgid:"Move to {target}",msgstr:["{target} üzerine taşı"]},{msgid:"Name",msgstr:["Ad"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Adlar en fazla 64 karakter uzunluğunda olabilir."]},{msgid:"Names must not be empty.",msgstr:["Ad boş olamaz."]},{msgid:'Names must not end with "{extension}".',msgstr:['Ad "{extension}" ile bitemez.']},{msgid:"Names must not start with a dot.",msgstr:["Ad nokta karakteri ile başlayamaz."]},{msgid:"New",msgstr:["Yeni"]},{msgid:"New folder",msgstr:["Yeni klasör"]},{msgid:"New folder name",msgstr:["Yeni klasör adı"]},{msgid:"New version",msgstr:["Yeni sürüm"]},{msgid:"No files in here",msgstr:["Burada herhangi bir dosya yok"]},{msgid:"No files matching your filter were found.",msgstr:["Süzgece uyan bir dosya bulunamadı."]},{msgid:"No matching files",msgstr:["Eşleşen bir dosya yok"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Ad en az 2 karakter uzunluğunda olmalıdır."]},{msgid:"Recent",msgstr:["Son kullanılanlar"]},{msgid:"Select all checkboxes",msgstr:["Tüm kutuları işaretle"]},{msgid:"Select all entries",msgstr:["Tüm kayıtları seç"]},{msgid:"Select all existing files",msgstr:["Tüm var olan dosyaları seç"]},{msgid:"Select all new files",msgstr:["Tüm yeni dosyaları seç"]},{msgid:"Select entry",msgstr:["Kaydı seç"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename} satırını seçin"]},{msgid:"Size",msgstr:["Boyut"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n dosyayı atla","%n dosyayı atla"]},{msgid:"Skip this file",msgstr:["Bu dosyayı atla"]},{msgid:"Submit name",msgstr:["Adı gönder"]},{msgid:"Undo",msgstr:["Geri al"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Bir gelen klasör seçildiğinde, içerik var olan klasöre yazılır ve alt klasörlerle bir çakışma çözümü uygulanır."]},{msgid:"Which files do you want to keep?",msgstr:["Hangi dosyaları tutmak istiyorsunuz?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["{nickname} olarak tanınıyorsunuz."]},{msgid:"You are currently not identified.",msgstr:["Henüz kendinizi tanıtmadınız."]},{msgid:"You cannot leave the name empty.",msgstr:["Ad boş bırakılamaz."]},{msgid:"You need to choose at least one conflict solution",msgstr:["En az bir çakışma çözümü seçmelisiniz"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["İlerlemek için her dosaynın en az bir sürümünü seçmelisiniz."]}]},{language:"uk",translations:[{msgid:'"{char}" is not allowed inside a folder name.',msgstr:["{char} не дозволено всередині назви каталогу."]},{msgid:'"{char}" is not allowed inside a name.',msgstr:['"{char}" не дозволено всередині імени.']},{msgid:'"{extension}" is not an allowed name.',msgstr:[`"{extension}" недозволене ім'я.`]},{msgid:'"{segment}" is a reserved name and not allowed for folder names.',msgstr:["{segment} є зарезервованим ім'ям і не дозволено для назви каталогу."]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:[`"{segment}" зарезервоване ім'я і не дозволено для використання.`]},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n конфлікт файлів","%n конфлікти файлів","%n конфліктів файлів","%n конфліктів файлів"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["%n конфлікт файлів у каталозі {dirname}","%n конфлікти файлів у каталозі {dirname}","%n конфліктів файлів у каталозі {dirname}","%n конфліктів файлів у каталозі {dirname}"]},{msgid:"All files",msgstr:["Всі файли"]},{msgid:"Cancel",msgstr:["Скасувати"]},{msgid:"Cancel the entire operation",msgstr:["Скасувати всю операцію"]},{msgid:"Choose",msgstr:["Вибрати"]},{msgid:"Choose {file}",msgstr:["Вибрати {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Вибрати %n файл","Вибрати %n файли","Вибрати %n файлів","Вибрати %n файлів"]},{msgid:"Confirm",msgstr:["Підтвердити"]},{msgid:"Continue",msgstr:["Продовжити"]},{msgid:"Copy",msgstr:["Копіювати"]},{msgid:"Copy to {target}",msgstr:["Копіювати до {target}"]},{msgid:"Could not create the new folder",msgstr:["Не вдалося створити новий каталог"]},{msgid:"Could not load files settings",msgstr:["Не вдалося завантажити налаштування файлів"]},{msgid:"Could not load files views",msgstr:["Не вдалося завантажити подання файлів"]},{msgid:"Create directory",msgstr:["Створити каталог"]},{msgid:"Current view selector",msgstr:["Вибір подання"]},{msgid:"Enter your name",msgstr:["Зазначте ваше ім'я"]},{msgid:"Existing version",msgstr:["Наявна версія"]},{msgid:"Failed to set nickname.",msgstr:["Не вдалося встановити псевдо."]},{msgid:"Favorites",msgstr:["Із зірочкою"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Тут показуватимуться файли та каталоги, які ви позначите зірочкою."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Тут показуватимуться файли та каталоги, які було нещодавно змінено."]},{msgid:"Filter file list",msgstr:["Фільтрувати список файлів"]},{msgid:'Folder names must not end with "{extension}".',msgstr:[`Ім'я каталогу не може закінчуватися на "{extension}".`]},{msgid:"Guest identification",msgstr:["Ім'я для гостя"]},{msgid:"Home",msgstr:["Домівка"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Якщо вибрати обидві версії, до назви вхідного файлу буде додано цифру. "]},{msgid:"Invalid folder name.",msgstr:["Недійсне ім'я каталогу."]},{msgid:"Invalid name.",msgstr:["Недійсне ім'я."]},{msgid:"Last modified date unknown",msgstr:["Дата останньої зміни невідома"]},{msgid:"Modified",msgstr:["Змінено"]},{msgid:"Move",msgstr:["Перемістити"]},{msgid:"Move to {target}",msgstr:["Перемістити до {target}"]},{msgid:"Name",msgstr:["Ім'я"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Імена мають мати довжину не більше 64 символів."]},{msgid:"Names must not be empty.",msgstr:["Ім'я не може бути порожнє."]},{msgid:'Names must not end with "{extension}".',msgstr:[`Ім'я не може закінчуватися на "{extension}".`]},{msgid:"Names must not start with a dot.",msgstr:["Ім'я не може починатися з крапки."]},{msgid:"New",msgstr:["Новий"]},{msgid:"New folder",msgstr:["Новий каталог"]},{msgid:"New folder name",msgstr:["Ім'я нового каталогу"]},{msgid:"New version",msgstr:["Нова версія"]},{msgid:"No files in here",msgstr:["Тут відсутні файли"]},{msgid:"No files matching your filter were found.",msgstr:["Відсутні збіги за фільтром."]},{msgid:"No matching files",msgstr:["Відсутні збіги файлів."]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Зазначте ім'я довжиною не менше 2 символів"]},{msgid:"Recent",msgstr:["Останні"]},{msgid:"Select all checkboxes",msgstr:["Вибрати всі прапорці"]},{msgid:"Select all entries",msgstr:["Вибрати всі записи"]},{msgid:"Select all existing files",msgstr:["Вибрати всі наявні файли"]},{msgid:"Select all new files",msgstr:["Вибрати всі нові файли"]},{msgid:"Select entry",msgstr:["Вибрати запис"]},{msgid:"Select the row for {nodename}",msgstr:["Вибрати рядок для {nodename}"]},{msgid:"Size",msgstr:["Розмір"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["Пропустити %n файл","Пропустити %n файли","Пропустити %n файлів","Пропустити %n файлів"]},{msgid:"Skip this file",msgstr:["Пропустити цей файл"]},{msgid:"Submit name",msgstr:["Встановити ім'я"]},{msgid:"Undo",msgstr:["Повернути"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Завантажте вміст або синхронізуйте з вашим пристроєм!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Коли вибрано вхідний каталог, будь-які файли з конфліктами буде також перезаписано."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Коли вибрано вхідний каталог, вміст буде записано до існуючого каталогу, а також виконано вирішення конфліктів всередині каталогу."]},{msgid:"Which files do you want to keep?",msgstr:["Які файли залишити?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Вас визначено як {nickname}."]},{msgid:"You are currently not identified.",msgstr:["Вас не ідентифіковано."]},{msgid:"You cannot leave the name empty.",msgstr:["Потрібно зазначити ім'я."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Треб вибрати щонайменше одне рішення конфлікту"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Треба вибрати щонайменше одну версію кожного файлу, щоби продовжити."]}]},{language:"uz",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['Nom ichida "{char}" ga ruxsat berilmagan.']},{msgid:'"{extension}" is not an allowed name.',msgstr:['"{extension}" ruxsat etilgan nom emas.']},{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" jild nomi yaroqsiz.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"{name}" ruxsat etilgan jild nomi emas']},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:['"{segment}" - zaxiralangan nom va ruxsat berilmaydi.']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/" papka nomi ichida ruxsat berilmaydi.']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n fayl ziddiyatli"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} da %n fayl ziddiyati"]},{msgid:"All files",msgstr:["Barcha fayllar"]},{msgid:"Cancel",msgstr:["Bekor qilish"]},{msgid:"Cancel the entire operation",msgstr:["Butun operatsiyani bekor qiling"]},{msgid:"Choose",msgstr:["Tanlang"]},{msgid:"Choose {file}",msgstr:["Tanlang {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Tanlang %n faylni"]},{msgid:"Confirm",msgstr:["Tasdiqlang"]},{msgid:"Continue",msgstr:["Davom eting"]},{msgid:"Copy",msgstr:["Nusxa"]},{msgid:"Copy to {target}",msgstr:[" {target} ga nusxa"]},{msgid:"Could not create the new folder",msgstr:["Yangi jild yaratib bo‘lmadi"]},{msgid:"Could not load files settings",msgstr:["Fayl sozlamalari yuklanmadi"]},{msgid:"Could not load files views",msgstr:["Fayllarni koʻrishni yuklab boʻlmadi"]},{msgid:"Create directory",msgstr:["Katalog yaratish"]},{msgid:"Current view selector",msgstr:["Joriy ko'rinish selektori"]},{msgid:"Enter your name",msgstr:["Ismingizni kiriting"]},{msgid:"Existing version",msgstr:["Mavjud versiya"]},{msgid:"Failed to set nickname.",msgstr:["Taxallusni o‘rnatib bo‘lmadi."]},{msgid:"Favorites",msgstr:["Tanlanganlar"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Tanlangan deb belgilagan fayl va papkalar shu yerda koʻrinadi."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Siz yaqinda oʻzgartirgan fayl va papkalar shu yerda koʻrinadi."]},{msgid:"Filter file list",msgstr:["Fayl ro'yxatini filtrlash"]},{msgid:"Folder name cannot be empty.",msgstr:["Jild nomi boʻsh boʻlishi mumkin emas."]},{msgid:"Guest identification",msgstr:["Foydalanuvchini identifikatsiyalash"]},{msgid:"Home",msgstr:["Uy"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi."]},{msgid:"Invalid name.",msgstr:["Nomi noto‘g‘ri."]},{msgid:"Last modified date unknown",msgstr:["Oxirgi tahrirlangan sana noma'lum"]},{msgid:"Modified",msgstr:["Modifikatsiyalangan"]},{msgid:"Move",msgstr:["Ko'chirish"]},{msgid:"Move to {target}",msgstr:[" {target} ga ko'chirish"]},{msgid:"Name",msgstr:["Nomi"]},{msgid:"Names may be at most 64 characters long.",msgstr:["Ismlar ko'pi bilan 64 ta belgidan iborat bo'lishi mumkin."]},{msgid:"Names must not be empty.",msgstr:["Ismlar bo'sh bo'lmasligi kerak."]},{msgid:'Names must not end with "{extension}".',msgstr:['Ismlar "{extension}" bilan tugamasligi kerak.']},{msgid:"Names must not start with a dot.",msgstr:["Ismlar nuqta bilan boshlanmasligi kerak."]},{msgid:"New",msgstr:["Yangi"]},{msgid:"New folder",msgstr:["Yangi jild"]},{msgid:"New folder name",msgstr:["Yangi jild nomi"]},{msgid:"New version",msgstr:["Yangi versiya"]},{msgid:"No files in here",msgstr:["Fayl mavjud emas"]},{msgid:"No files matching your filter were found.",msgstr:["Filtringizga mos keladigan fayl topilmadi."]},{msgid:"No matching files",msgstr:["Mos fayllar yo'q"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["Kamida 2 ta belgidan iborat nom kiriting."]},{msgid:"Recent",msgstr:["Yaqinda"]},{msgid:"Select all checkboxes",msgstr:["Barcha katakchalarni belgilang"]},{msgid:"Select all entries",msgstr:["Barcha yozuvlarni tanlang"]},{msgid:"Select all existing files",msgstr:["Barcha mavjud fayllarni tanlang"]},{msgid:"Select all new files",msgstr:["Barcha yangi fayllarni tanlang"]},{msgid:"Select entry",msgstr:["Yozuvni tanlang"]},{msgid:"Select the row for {nodename}",msgstr:["{nodename} uchun qatorni tanlang"]},{msgid:"Size",msgstr:["O`lcham"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["%n faylni oʻtkazib yuborish"]},{msgid:"Skip this file",msgstr:["Ushbu faylni o'tkazib yuboring"]},{msgid:"Submit name",msgstr:["Ismni tasdiqlang"]},{msgid:"Undo",msgstr:["Bekor qilish"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Qurilmangizga ba'zi kontentni yuklang yoki sinxronlang!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["Kiruvchi papka tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi."]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["Kiruvchi papka tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi."]},{msgid:"Which files do you want to keep?",msgstr:["Qaysi fayllarni saqlamoqchisiz?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["Siz hozirda {nickname} sifatida aniqlangansiz."]},{msgid:"You are currently not identified.",msgstr:["Siz hozirda identifikatsiyadan o'tmagansiz"]},{msgid:"You cannot leave the name empty.",msgstr:["Ism katagini bo'sh qoldirib bo'lmaydi."]},{msgid:"You need to choose at least one conflict solution",msgstr:["Siz kamida bitta mojaro yechimini tanlashingiz kerak"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak."]}]},{language:"vi",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:['"{name}" là tên thư mục không hợp lệ.']},{msgid:'"{name}" is not an allowed folder name',msgstr:['"1{name}"không phải là tên thư mục được cho phép']},{msgid:'"/" is not allowed inside a folder name.',msgstr:['"/"không được phép đặt trong tên thư mục.']},{msgid:"All files",msgstr:["Tất cả tệp"]},{msgid:"Choose",msgstr:["Chọn"]},{msgid:"Choose {file}",msgstr:["Chọn {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["Chọn %n tệp"]},{msgid:"Copy",msgstr:["Sao chép"]},{msgid:"Copy to {target}",msgstr:["Sao chép đến {target}"]},{msgid:"Could not create the new folder",msgstr:["Không thể tạo thư mục mới"]},{msgid:"Could not load files settings",msgstr:["Không thể tải tập tin cài đặt"]},{msgid:"Could not load files views",msgstr:["Không thể tải xuống tệp xem"]},{msgid:"Create directory",msgstr:["Tạo thư mục"]},{msgid:"Current view selector",msgstr:["Hiện tại chế độ xem của bộ chọn"]},{msgid:"Favorites",msgstr:["Yêu cầu thích"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["Các tập tin và thư mục bạn đánh dấu yêu thích sẽ hiển thị ở đây."]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["Các tập tin và thư mục bạn sửa đổi gần đây sẽ hiển thị ở đây."]},{msgid:"Filter file list",msgstr:["Filter list file"]},{msgid:"Folder name cannot be empty.",msgstr:["Thư mục tên không được để trống."]},{msgid:"Home",msgstr:["Trang chủ"]},{msgid:"Modified",msgstr:["Đã sửa đổi"]},{msgid:"Move",msgstr:["Di chuyển"]},{msgid:"Move to {target}",msgstr:["Di chuyển đến{target}"]},{msgid:"Name",msgstr:["Tên"]},{msgid:"New",msgstr:["Mới"]},{msgid:"New folder",msgstr:["New thư mục"]},{msgid:"New folder name",msgstr:["New thư mục tên"]},{msgid:"No files in here",msgstr:["No file at here"]},{msgid:"No files matching your filter were found.",msgstr:["Không tìm thấy tệp nào phù hợp với bộ lọc của bạn."]},{msgid:"No matching files",msgstr:["No file phù hợp"]},{msgid:"Recent",msgstr:["Gần đây"]},{msgid:"Select all entries",msgstr:["Choose all items"]},{msgid:"Select entry",msgstr:["Chọn mục nhập"]},{msgid:"Select the row for {nodename}",msgstr:["Choose hang cho{nodename}"]},{msgid:"Size",msgstr:["Kích cỡ"]},{msgid:"Undo",msgstr:["Hoàn tác"]},{msgid:"Upload some content or sync with your devices!",msgstr:["Tải lên một số nội dung hoặc đồng bộ hóa với thiết bị của bạn!"]}]},{language:"zh_CN",translations:[{msgid:'"{name}" is an invalid folder name.',msgstr:["“{name}” 是无效的文件夹名称。"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["“{name}” 不是允许的文件夹名称"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:["文件夹名称中不允许包含 “/”。"]},{msgid:"All files",msgstr:["所有文件"]},{msgid:"Choose",msgstr:["选择"]},{msgid:"Choose {file}",msgstr:["选择 {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["选择 %n 个文件"]},{msgid:"Copy",msgstr:["复制"]},{msgid:"Copy to {target}",msgstr:["复制到 {target}"]},{msgid:"Could not create the new folder",msgstr:["无法创建新文件夹"]},{msgid:"Could not load files settings",msgstr:["无法加载文件设置"]},{msgid:"Could not load files views",msgstr:["无法加载文件视图"]},{msgid:"Create directory",msgstr:["创建目录"]},{msgid:"Current view selector",msgstr:["当前视图选择器"]},{msgid:"Favorites",msgstr:["最爱"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["您标记为最爱的文件与文件夹会显示在这里"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["您最近修改的文件与文件夹会显示在这里"]},{msgid:"Filter file list",msgstr:["过滤文件列表"]},{msgid:"Folder name cannot be empty.",msgstr:["文件夹名称不能为空。"]},{msgid:"Home",msgstr:["主目录"]},{msgid:"Modified",msgstr:["已修改"]},{msgid:"Move",msgstr:["移动"]},{msgid:"Move to {target}",msgstr:["移动至 {target}"]},{msgid:"Name",msgstr:["名称"]},{msgid:"New",msgstr:["新建"]},{msgid:"New folder",msgstr:["新文件夹"]},{msgid:"New folder name",msgstr:["新文件夹名称"]},{msgid:"No files in here",msgstr:["此处无文件"]},{msgid:"No files matching your filter were found.",msgstr:["找不到符合您过滤条件的文件"]},{msgid:"No matching files",msgstr:["无符合的文件"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all entries",msgstr:["选择所有条目"]},{msgid:"Select entry",msgstr:["选择条目"]},{msgid:"Select the row for {nodename}",msgstr:["选择 {nodename} 的列"]},{msgid:"Size",msgstr:["大小"]},{msgid:"Undo",msgstr:[" 撤消"]},{msgid:"Upload some content or sync with your devices!",msgstr:["上传一些项目或与您的设备同步!"]}]},{language:"zh_HK",translations:[{msgid:'"{char}" is not allowed inside a name.',msgstr:['名稱中不能使用 "{char}"。']},{msgid:'"{extension}" is not an allowed name.',msgstr:["「{extension}」並非允許的名稱。"]},{msgid:'"{name}" is an invalid folder name.',msgstr:["「{name}」是無效的資料夾名稱。"]},{msgid:'"{name}" is not an allowed folder name',msgstr:["資料夾名稱「{name}」不符合允許的規範。"]},{msgid:'"{segment}" is a reserved name and not allowed.',msgstr:["「{segment}」是一個保留名稱,不能使用。"]},{msgid:'"/" is not allowed inside a folder name.',msgstr:['資料夾名稱中不允許使用 "/"。']},{msgid:"%n file conflict",msgid_plural:"%n files conflict",msgstr:["%n 檔案衝突"]},{msgid:"%n file conflict in {dirname}",msgid_plural:"%n file conflicts in {dirname}",msgstr:["{dirname} 中有 %n 個檔案衝突"]},{msgid:"All files",msgstr:["所有檔案"]},{msgid:"Cancel",msgstr:["取消"]},{msgid:"Cancel the entire operation",msgstr:["取消整個操作"]},{msgid:"Choose",msgstr:["選擇"]},{msgid:"Choose {file}",msgstr:["選擇 {file}"]},{msgid:"Choose %n file",msgid_plural:"Choose %n files",msgstr:["選擇 %n 個檔案"]},{msgid:"Confirm",msgstr:["確認"]},{msgid:"Continue",msgstr:["繼續"]},{msgid:"Copy",msgstr:["複製"]},{msgid:"Copy to {target}",msgstr:["複製到 {target}"]},{msgid:"Could not create the new folder",msgstr:["無法建立新資料夾"]},{msgid:"Could not load files settings",msgstr:["無法載入檔案設定"]},{msgid:"Could not load files views",msgstr:["無法載入檔案視圖"]},{msgid:"Create directory",msgstr:["建立目錄"]},{msgid:"Current view selector",msgstr:["目前視圖選擇器"]},{msgid:"Enter your name",msgstr:["輸入您的名字"]},{msgid:"Existing version",msgstr:["現有的版本"]},{msgid:"Failed to set nickname.",msgstr:["無法設置暱稱。"]},{msgid:"Favorites",msgstr:["最愛"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["您標記為最愛的檔案與資料夾將會顯示在此處。"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["您最近修改的檔案與資料夾將會顯示在此處。"]},{msgid:"Filter file list",msgstr:["過濾檔案清單"]},{msgid:"Folder name cannot be empty.",msgstr:["資料夾名稱不能為空。"]},{msgid:"Guest identification",msgstr:["訪客身份識別"]},{msgid:"Home",msgstr:["首頁"]},{msgid:"If you select both versions, the incoming file will have a number added to its name.",msgstr:["如果您選擇兩個版本,傳入的檔案名稱將會附加一個數字。"]},{msgid:"Invalid name.",msgstr:["無效的名字。"]},{msgid:"Last modified date unknown",msgstr:["最後的修改日期不詳"]},{msgid:"Modified",msgstr:["已修改"]},{msgid:"Move",msgstr:["移動"]},{msgid:"Move to {target}",msgstr:["移動至 {target}"]},{msgid:"Name",msgstr:["名稱"]},{msgid:"Names may be at most 64 characters long.",msgstr:["名稱長度最多為 64 個字元。"]},{msgid:"Names must not be empty.",msgstr:["名稱不能為空。"]},{msgid:'Names must not end with "{extension}".',msgstr:["名稱不得以「{extension}」結尾。"]},{msgid:"Names must not start with a dot.",msgstr:["名稱不得以點開頭。"]},{msgid:"New",msgstr:["新"]},{msgid:"New folder",msgstr:["新資料夾"]},{msgid:"New folder name",msgstr:["新資料夾名稱"]},{msgid:"New version",msgstr:["新版本"]},{msgid:"No files in here",msgstr:["此處無檔案"]},{msgid:"No files matching your filter were found.",msgstr:["找不到符合您過濾條件的檔案。"]},{msgid:"No matching files",msgstr:["沒有匹配的檔案"]},{msgid:"Please enter a name with at least 2 characters.",msgstr:["請輸入至少 2 個字符的名稱。"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all checkboxes",msgstr:["選擇所有復選框"]},{msgid:"Select all entries",msgstr:["選擇所有項目"]},{msgid:"Select all existing files",msgstr:["選擇所有現有的檔案"]},{msgid:"Select all new files",msgstr:["選擇所有新檔案"]},{msgid:"Select entry",msgstr:["選擇項目"]},{msgid:"Select the row for {nodename}",msgstr:["選擇 {nodename} 的列"]},{msgid:"Size",msgstr:["大小"]},{msgid:"Skip %n file",msgid_plural:"Skip %n files",msgstr:["跳過 %n 個檔案"]},{msgid:"Skip this file",msgstr:["跳過此檔案"]},{msgid:"Submit name",msgstr:["遞交名字"]},{msgid:"Undo",msgstr:["還原"]},{msgid:"Upload some content or sync with your devices!",msgstr:["上傳一些內容或與您的裝置同步!"]},{msgid:"When an incoming folder is selected, any conflicting files within it will also be overwritten.",msgstr:["選取傳入資料夾時,其中任何衝突的檔案也將被覆蓋。"]},{msgid:"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.",msgstr:["當選取傳入資料夾時,內容將寫入現有資料夾,並執行遞歸衝突解決。"]},{msgid:"Which files do you want to keep?",msgstr:["你想保留哪些檔案?"]},{msgid:"You are currently identified as {nickname}.",msgstr:["您目前被識別為 {nickname}。"]},{msgid:"You are currently not identified.",msgstr:["您目前尚未被識別。"]},{msgid:"You cannot leave the name empty.",msgstr:["名稱不能留空。"]},{msgid:"You need to choose at least one conflict solution",msgstr:["你需要選擇至少一種衝突解決方案。"]},{msgid:"You need to select at least one version of each file to continue.",msgstr:["您必須選擇每個文件的至少一個版本才能繼續。"]}]},{language:"zh_TW",translations:[{msgid:'"{name}" is an invalid file name.',msgstr:["「{name}」是無效的檔案名稱。"]},{msgid:'"{name}" is not an allowed filetype',msgstr:["「{name}」並非允許的檔案類型"]},{msgid:'"/" is not allowed inside a file name.',msgstr:["檔案名稱中不允許使用「/」。"]},{msgid:"All files",msgstr:["所有檔案"]},{msgid:"Choose",msgstr:["選擇"]},{msgid:"Choose {file}",msgstr:["選擇 {file}"]},{msgid:"Copy",msgstr:["複製"]},{msgid:"Copy to {target}",msgstr:["複製到 {target}"]},{msgid:"Could not create the new folder",msgstr:["無法建立新資料夾"]},{msgid:"Create directory",msgstr:["建立目錄"]},{msgid:"Current view selector",msgstr:["目前檢視選取器"]},{msgid:"Favorites",msgstr:["最愛"]},{msgid:"File name cannot be empty.",msgstr:["檔案名稱不能為空。"]},{msgid:"Filepicker sections",msgstr:["檔案挑選器選取"]},{msgid:"Files and folders you mark as favorite will show up here.",msgstr:["您標記為最愛的檔案與資料夾將會顯示在此處。"]},{msgid:"Files and folders you recently modified will show up here.",msgstr:["您最近修改的檔案與資料夾將會顯示在此處。"]},{msgid:"Filter file list",msgstr:["過濾檔案清單"]},{msgid:"Home",msgstr:["家"]},{msgid:"Mime type {mime}",msgstr:["Mime type {mime}"]},{msgid:"Modified",msgstr:["已修改"]},{msgid:"Move",msgstr:["移動"]},{msgid:"Move to {target}",msgstr:["移動至 {target}"]},{msgid:"Name",msgstr:["名稱"]},{msgid:"New",msgstr:["新"]},{msgid:"New folder",msgstr:["新資料夾"]},{msgid:"New folder name",msgstr:["新資料夾名稱"]},{msgid:"No files in here",msgstr:["此處無檔案"]},{msgid:"No files matching your filter were found.",msgstr:["找不到符合您過濾條件的檔案。"]},{msgid:"No matching files",msgstr:["無符合的檔案"]},{msgid:"Recent",msgstr:["最近"]},{msgid:"Select all entries",msgstr:["選取所有條目"]},{msgid:"Select entry",msgstr:["選取條目"]},{msgid:"Select the row for {nodename}",msgstr:["選取 {nodename} 的列"]},{msgid:"Size",msgstr:["大小"]},{msgid:"Undo",msgstr:["復原"]},{msgid:"unknown",msgstr:["未知"]},{msgid:"Upload some content or sync with your devices!",msgstr:["上傳一些內容或與您的裝置同步"]}]}]){const{language:e,translations:s}=i,t={headers:{},translations:{"":Object.fromEntries(s.map(n=>[n.msgid,n]))}};N.addTranslation(e,t)}const h=N.build(),$=h.ngettext.bind(h),l=h.gettext.bind(h),b=_().setApp("@nextcloud/dialogs").detectLogLevel().build();class X extends Error{}class uu{title;multiSelect;mimeTypeFilter;directoriesAllowed;noMenu;buttons;path;filter;canPick;container;disabledNavigation;constructor(e,s,t,n,o,u,m,g,a,r,d=!1){this.title=e,this.multiSelect=s,this.mimeTypeFilter=t,this.directoriesAllowed=n,this.noMenu=o,this.path=m,this.filter=g,this.canPick=a,this.buttons=u,this.container=r,this.disabledNavigation=d}async pickNodes(){const{default:e}=await M(async()=>{const{default:t}=await import("./FilePicker-C1yRZfLt-EGh9AiXK.chunk.mjs");return{default:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]),import.meta.url),s=await y(e,{allowPickDirectory:this.directoriesAllowed,noMenu:this.noMenu,buttons:this.buttons,name:this.title,path:this.path,mimetypeFilter:this.mimeTypeFilter,multiselect:this.multiSelect,filterFn:this.filter,canPickFn:this.canPick,disabledNavigation:this.disabledNavigation},{container:this.container});if(!Array.isArray(s)||s.length===0)throw new X("FilePicker: No nodes selected");return s}async pick(){const e=await this.pickNodes();return this.multiSelect?e.map(s=>s.path):e[0]?.path??"/"}}class eu{title;multiSelect=!1;mimeTypeFilter=[];directoriesAllowed=!1;noMenu=!1;path;filter;canPick;buttons=[];container;disabledNavigation=!1;constructor(e){this.title=e}setContainer(e){return this.container=e,this}setMultiSelect(e){return this.multiSelect=e,this}addMimeTypeFilter(e){return this.mimeTypeFilter.push(e),this}setMimeTypeFilter(e){return this.mimeTypeFilter=e,this}addButton(e){return typeof this.buttons=="function"&&(b.warn("FilePicker buttons were set to factory, now overwritten with button object."),this.buttons=[]),this.buttons.push(e),this}setButtonFactory(e){return this.buttons=e,this}setType(e){return this.buttons=(s,t)=>{const n=[],o=s[0]?.displayname||j(t);if(e===1){let u=l("Choose");s.length===1?u=l("Choose {file}",{file:o}):this.multiSelect&&(u=$("Choose %n file","Choose %n files",s.length)),n.push({callback:()=>{},label:u,variant:"primary"})}return(e===4||e===3)&&n.push({callback:()=>{},label:o?l("Copy to {target}",{target:o}):l("Copy"),icon:Q,variant:e===3?"primary":"secondary"}),(e===4||e===2)&&n.push({callback:()=>{},label:o?l("Move to {target}",{target:o}):l("Move"),icon:J,variant:"primary"}),n},this}allowDirectories(e=!0){return this.directoriesAllowed=e,this}setNoMenu(e=!0){return this.noMenu=e,this}startAt(e){return this.path=e,this}setFilter(e){return this.filter=e,this}setCanPick(e){return this.canPick=e,this}disableNavigation(){return this.disabledNavigation=!0,this}build(){return new uu(this.title,this.multiSelect,this.mimeTypeFilter,this.directoriesAllowed,this.noMenu,this.buttons,this.path,this.filter,this.canPick,this.container,this.disabledNavigation)}}function Bu(i){return new eu(i)}const su=`[n.msgid,n]))}};N.addTranslation(e,t)}const h=N.build(),$=h.ngettext.bind(h),l=h.gettext.bind(h),b=_().setApp("@nextcloud/dialogs").detectLogLevel().build();class X extends Error{}class uu{title;multiSelect;mimeTypeFilter;directoriesAllowed;noMenu;buttons;path;filter;canPick;container;disabledNavigation;constructor(e,s,t,n,o,u,m,g,a,r,d=!1){this.title=e,this.multiSelect=s,this.mimeTypeFilter=t,this.directoriesAllowed=n,this.noMenu=o,this.path=m,this.filter=g,this.canPick=a,this.buttons=u,this.container=r,this.disabledNavigation=d}async pickNodes(){const{default:e}=await M(async()=>{const{default:t}=await import("./FilePicker-C1yRZfLt-CN9xn7QG.chunk.mjs");return{default:t}},__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38]),import.meta.url),s=await y(e,{allowPickDirectory:this.directoriesAllowed,noMenu:this.noMenu,buttons:this.buttons,name:this.title,path:this.path,mimetypeFilter:this.mimeTypeFilter,multiselect:this.multiSelect,filterFn:this.filter,canPickFn:this.canPick,disabledNavigation:this.disabledNavigation},{container:this.container});if(!Array.isArray(s)||s.length===0)throw new X("FilePicker: No nodes selected");return s}async pick(){const e=await this.pickNodes();return this.multiSelect?e.map(s=>s.path):e[0]?.path??"/"}}class eu{title;multiSelect=!1;mimeTypeFilter=[];directoriesAllowed=!1;noMenu=!1;path;filter;canPick;buttons=[];container;disabledNavigation=!1;constructor(e){this.title=e}setContainer(e){return this.container=e,this}setMultiSelect(e){return this.multiSelect=e,this}addMimeTypeFilter(e){return this.mimeTypeFilter.push(e),this}setMimeTypeFilter(e){return this.mimeTypeFilter=e,this}addButton(e){return typeof this.buttons=="function"&&(b.warn("FilePicker buttons were set to factory, now overwritten with button object."),this.buttons=[]),this.buttons.push(e),this}setButtonFactory(e){return this.buttons=e,this}setType(e){return this.buttons=(s,t)=>{const n=[],o=s[0]?.displayname||j(t);if(e===1){let u=l("Choose");s.length===1?u=l("Choose {file}",{file:o}):this.multiSelect&&(u=$("Choose %n file","Choose %n files",s.length)),n.push({callback:()=>{},label:u,variant:"primary"})}return(e===4||e===3)&&n.push({callback:()=>{},label:o?l("Copy to {target}",{target:o}):l("Copy"),icon:Q,variant:e===3?"primary":"secondary"}),(e===4||e===2)&&n.push({callback:()=>{},label:o?l("Move to {target}",{target:o}):l("Move"),icon:J,variant:"primary"}),n},this}allowDirectories(e=!0){return this.directoriesAllowed=e,this}setNoMenu(e=!0){return this.noMenu=e,this}startAt(e){return this.path=e,this}setFilter(e){return this.filter=e,this}setCanPick(e){return this.canPick=e,this}disableNavigation(){return this.disabledNavigation=!0,this}build(){return new uu(this.title,this.multiSelect,this.mimeTypeFilter,this.directoriesAllowed,this.noMenu,this.buttons,this.path,this.filter,this.canPick,this.container,this.disabledNavigation)}}function Bu(i){return new eu(i)}const su=` @@ -8,4 +8,4 @@ import{b as j,_ as M}from"./index-BgmsSgl5.chunk.mjs";import{s as y,N as I}from" `,iu="off",tu="polite",nu="assertive";var F=(i=>(i[i.OFF=iu]="OFF",i[i.POLITE=tu]="POLITE",i[i.ASSERTIVE=nu]="ASSERTIVE",i))(F||{});const mu=7e3,ru=-1;function f(i,e){if(e={timeout:mu,isHTML:!1,type:void 0,selector:void 0,onRemove:()=>{},onClick:void 0,close:!0,...e},typeof i=="string"&&!e.isHTML){const u=document.createElement("div");u.innerHTML=i,i=u.innerText}let s=e.type??"";typeof e.onClick=="function"&&(s+=" toast-with-click ");const t=i instanceof Node;let n=F.POLITE;e.ariaLive?n=e.ariaLive:(e.type==="toast-error"||e.type==="toast-undo")&&(n=F.ASSERTIVE);const o=Z({[t?"node":"text"]:i,duration:e.timeout,callback:e.onRemove,onClick:e.onClick,close:e.close,gravity:"top",selector:e.selector,position:"right",backgroundColor:"",className:"dialogs "+s,escapeMarkup:!e.isHTML,ariaLive:n});return o.showToast(),o}function xu(i,e){return f(i,{...e,type:"toast-error"})}function vu(i,e){return f(i,{...e,type:"toast-warning"})}function Fu(i,e){return f(i,{...e,type:"toast-info"})}function pu(i,e){return f(i,{...e,type:"toast-success"})}function Du(i,e){const s=document.createElement("span");s.innerHTML=su,s.classList.add("toast-loader");const t=document.createElement("span");return t.classList.add("toast-loader-container"),t.innerText=i,t.appendChild(s),f(t,{...e,close:!1,timeout:ru,type:"toast-loading"})}const au=["textContent"],ou=["innerHTML"],du=U({__name:"GenericDialog",props:{name:{},text:{},html:{},buttons:{},severity:{}},emits:["close"],setup(i,{emit:e}){const s=i,t=e,n=O(()=>s.buttons?.map(u=>({...u,callback(){u.callback(),t("close",!0)}}))),o=()=>`${s.name}: ${s.text}`;return T(()=>window.addEventListener("unload",o)),L(()=>window.removeEventListener("unload",o)),(u,m)=>(x(),p(w(I),{dialogClasses:"nc-generic-dialog",buttons:n.value,name:i.name,message:i.text,"onUpdate:open":m[0]||(m[0]=g=>u.$emit("close",!1))},{default:D(()=>[i.severity?(x(),p(w(V),{key:0,type:i.severity},{default:D(()=>[q("p",{textContent:K(i.text)},null,8,au)]),_:1},8,["type"])):A("",!0),i.html?(x(),W("div",{key:1,innerHTML:i.html},null,8,ou)):A("",!0)]),_:1},8,["buttons","name","message"]))}});class S{#e;#s;#i;#u;constructor(e,s,t=[],n){this.#e=e,this.#s=s,this.#i=t,this.#u=n}async show(){if(!await y(du,{buttons:this.#i,name:this.#e,text:this.#s,severity:this.#u}))throw new Error("Dialog closed")}}class gu{#e;#s;#i;#u;constructor(e){this.#e=void 0,this.#s="",this.#i=e??"",this.#u=[]}setName(e){return this.#i=e,this}setText(e){return this.#s=e,this}setSeverity(e){return this.#e=e,this}setButtons(e){return this.#u.length>0&&b.warn("[@nextcloud/dialogs] Dialog buttons are already set - this overrides previous buttons."),this.#u=e,this}addButton(e){return this.#u.push(e),this}build(){return new S(this.#i,this.#s,this.#u,this.#e)}}function Au(i){return new gu(i)}async function wu(i){i={labelConfirm:l("Confirm"),...i};const{promise:e,resolve:s}=Promise.withResolvers(),t=[{label:i.labelConfirm,variant:"primary",callback(){s(!0)}}];return i.labelReject&&t.unshift({label:i.labelReject,callback(){s(!1)}}),await new S(i.name,i.text,t,i.severity).show(),e}export{xu as a,Fu as b,Du as c,pu as d,wu as e,Bu as f,Au as g,b as l,vu as s,l as t}; -//# sourceMappingURL=index-C1xmmKTZ-DKmPRT9t.chunk.mjs.map +//# sourceMappingURL=index-C1xmmKTZ-BfviRmbX.chunk.mjs.map diff --git a/dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs.license b/dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs.license similarity index 100% rename from dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs.license rename to dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs.license diff --git a/dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs.map b/dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs.map similarity index 99% rename from dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs.map rename to dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs.map index ba9ba423a3aa9..8d29ec05500cc 100644 --- a/dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs.map +++ b/dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"mappings":"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","names":["root","factory","module","this","global","Toastify","options","version","divElement","property","avatarElement","closeElement","event","width","self","x","getAxisOffsetAValue","y","xOffset","yOffset","rootElement","elementToInsert","toastElement","topLeftOffsetSize","topRightOffsetSize","offsetSize","allToasts","classUsed","i","containsClass","height","offset","axis","elem","yourClass","IconMove","IconCopy","gtBuilder","getGettextBuilder","data","language","translations","bundle","translation","gt","n","t","logger","getLoggerBuilder","FilePickerClosed","FilePicker","title","multiSelect","mimeTypeFilter","directoriesAllowed","noMenu","buttons","path","filter","canPick","container","disabledNavigation","FilePickerVue","__vitePreload","nodes","spawnDialog","node","FilePickerBuilder","ms","button","type","target","basename","label","allow","getFilePickerBuilder","LoaderSvg","TOAST_ARIA_LIVE_OFF","TOAST_ARIA_LIVE_POLITE","TOAST_ARIA_LIVE_ASSERTIVE","ToastAriaLive","ToastAriaLive2","TOAST_DEFAULT_TIMEOUT","TOAST_PERMANENT_TIMEOUT","showMessage","element","classes","isNode","ariaLive","toast","showError","text","showWarning","showInfo","showSuccess","showLoading","loader","loaderContent","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","__props","__emit","props","emit","dialogButtons","computed","handleUnload","onMounted","onUnmounted","_ctx","_cache","openBlock","createBlock","unref","NcDialog","$event","withCtx","NcNoteCard","createElementVNode","toDisplayString","createCommentVNode","createElementBlock","Dialog","#name","#text","#buttons","#severity","name","severity","DialogBuilder","getDialogBuilder","showConfirmation","promise","resolve"],"ignoreList":[0,1],"sources":["../node_modules/toastify-js/src/toastify.js","../node_modules/@nextcloud/dialogs/dist/chunks/index-C1xmmKTZ.mjs"],"sourcesContent":["/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n(function(root, factory) {\n if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.Toastify = factory();\n }\n})(this, function(global) {\n // Object initialization\n var Toastify = function(options) {\n // Returning a new init object\n return new Toastify.lib.init(options);\n },\n // Library version\n version = \"1.12.0\";\n\n // Set the default global options\n Toastify.defaults = {\n oldestFirst: true,\n text: \"Toastify is awesome!\",\n node: undefined,\n duration: 3000,\n selector: undefined,\n callback: function () {\n },\n destination: undefined,\n newWindow: false,\n close: false,\n gravity: \"toastify-top\",\n positionLeft: false,\n position: '',\n backgroundColor: '',\n avatar: \"\",\n className: \"\",\n stopOnFocus: true,\n onClick: function () {\n },\n offset: {x: 0, y: 0},\n escapeMarkup: true,\n ariaLive: 'polite',\n style: {background: ''}\n };\n\n // Defining the prototype of the object\n Toastify.lib = Toastify.prototype = {\n toastify: version,\n\n constructor: Toastify,\n\n // Initializing the object with required parameters\n init: function(options) {\n // Verifying and validating the input object\n if (!options) {\n options = {};\n }\n\n // Creating the options object\n this.options = {};\n\n this.toastElement = null;\n\n // Validating the options\n this.options.text = options.text || Toastify.defaults.text; // Display message\n this.options.node = options.node || Toastify.defaults.node; // Display content as node\n this.options.duration = options.duration === 0 ? 0 : options.duration || Toastify.defaults.duration; // Display duration\n this.options.selector = options.selector || Toastify.defaults.selector; // Parent selector\n this.options.callback = options.callback || Toastify.defaults.callback; // Callback after display\n this.options.destination = options.destination || Toastify.defaults.destination; // On-click destination\n this.options.newWindow = options.newWindow || Toastify.defaults.newWindow; // Open destination in new window\n this.options.close = options.close || Toastify.defaults.close; // Show toast close icon\n this.options.gravity = options.gravity === \"bottom\" ? \"toastify-bottom\" : Toastify.defaults.gravity; // toast position - top or bottom\n this.options.positionLeft = options.positionLeft || Toastify.defaults.positionLeft; // toast position - left or right\n this.options.position = options.position || Toastify.defaults.position; // toast position - left or right\n this.options.backgroundColor = options.backgroundColor || Toastify.defaults.backgroundColor; // toast background color\n this.options.avatar = options.avatar || Toastify.defaults.avatar; // img element src - url or a path\n this.options.className = options.className || Toastify.defaults.className; // additional class names for the toast\n this.options.stopOnFocus = options.stopOnFocus === undefined ? Toastify.defaults.stopOnFocus : options.stopOnFocus; // stop timeout on focus\n this.options.onClick = options.onClick || Toastify.defaults.onClick; // Callback after click\n this.options.offset = options.offset || Toastify.defaults.offset; // toast offset\n this.options.escapeMarkup = options.escapeMarkup !== undefined ? options.escapeMarkup : Toastify.defaults.escapeMarkup;\n this.options.ariaLive = options.ariaLive || Toastify.defaults.ariaLive;\n this.options.style = options.style || Toastify.defaults.style;\n if(options.backgroundColor) {\n this.options.style.background = options.backgroundColor;\n }\n\n // Returning the current object for chaining functions\n return this;\n },\n\n // Building the DOM element\n buildToast: function() {\n // Validating if the options are defined\n if (!this.options) {\n throw \"Toastify is not initialized\";\n }\n\n // Creating the DOM object\n var divElement = document.createElement(\"div\");\n divElement.className = \"toastify on \" + this.options.className;\n\n // Positioning toast to left or right or center\n if (!!this.options.position) {\n divElement.className += \" toastify-\" + this.options.position;\n } else {\n // To be depreciated in further versions\n if (this.options.positionLeft === true) {\n divElement.className += \" toastify-left\";\n console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.')\n } else {\n // Default position\n divElement.className += \" toastify-right\";\n }\n }\n\n // Assigning gravity of element\n divElement.className += \" \" + this.options.gravity;\n\n if (this.options.backgroundColor) {\n // This is being deprecated in favor of using the style HTML DOM property\n console.warn('DEPRECATION NOTICE: \"backgroundColor\" is being deprecated. Please use the \"style.background\" property.');\n }\n\n // Loop through our style object and apply styles to divElement\n for (var property in this.options.style) {\n divElement.style[property] = this.options.style[property];\n }\n\n // Announce the toast to screen readers\n if (this.options.ariaLive) {\n divElement.setAttribute('aria-live', this.options.ariaLive)\n }\n\n // Adding the toast message/node\n if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) {\n // If we have a valid node, we insert it\n divElement.appendChild(this.options.node)\n } else {\n if (this.options.escapeMarkup) {\n divElement.innerText = this.options.text;\n } else {\n divElement.innerHTML = this.options.text;\n }\n\n if (this.options.avatar !== \"\") {\n var avatarElement = document.createElement(\"img\");\n avatarElement.src = this.options.avatar;\n\n avatarElement.className = \"toastify-avatar\";\n\n if (this.options.position == \"left\" || this.options.positionLeft === true) {\n // Adding close icon on the left of content\n divElement.appendChild(avatarElement);\n } else {\n // Adding close icon on the right of content\n divElement.insertAdjacentElement(\"afterbegin\", avatarElement);\n }\n }\n }\n\n // Adding a close icon to the toast\n if (this.options.close === true) {\n // Create a span for close element\n var closeElement = document.createElement(\"button\");\n closeElement.type = \"button\";\n closeElement.setAttribute(\"aria-label\", \"Close\");\n closeElement.className = \"toast-close\";\n closeElement.innerHTML = \"✖\";\n\n // Triggering the removal of toast from DOM on close click\n closeElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.removeElement(this.toastElement);\n window.clearTimeout(this.toastElement.timeOutValue);\n }.bind(this)\n );\n\n //Calculating screen width\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Adding the close icon to the toast element\n // Display on the right if screen width is less than or equal to 360px\n if ((this.options.position == \"left\" || this.options.positionLeft === true) && width > 360) {\n // Adding close icon on the left of content\n divElement.insertAdjacentElement(\"afterbegin\", closeElement);\n } else {\n // Adding close icon on the right of content\n divElement.appendChild(closeElement);\n }\n }\n\n // Clear timeout while toast is focused\n if (this.options.stopOnFocus && this.options.duration > 0) {\n var self = this;\n // stop countdown\n divElement.addEventListener(\n \"mouseover\",\n function(event) {\n window.clearTimeout(divElement.timeOutValue);\n }\n )\n // add back the timeout\n divElement.addEventListener(\n \"mouseleave\",\n function() {\n divElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n self.removeElement(divElement);\n },\n self.options.duration\n )\n }\n )\n }\n\n // Adding an on-click destination path\n if (typeof this.options.destination !== \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n if (this.options.newWindow === true) {\n window.open(this.options.destination, \"_blank\");\n } else {\n window.location = this.options.destination;\n }\n }.bind(this)\n );\n }\n\n if (typeof this.options.onClick === \"function\" && typeof this.options.destination === \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.options.onClick();\n }.bind(this)\n );\n }\n\n // Adding offset\n if(typeof this.options.offset === \"object\") {\n\n var x = getAxisOffsetAValue(\"x\", this.options);\n var y = getAxisOffsetAValue(\"y\", this.options);\n\n var xOffset = this.options.position == \"left\" ? x : \"-\" + x;\n var yOffset = this.options.gravity == \"toastify-top\" ? y : \"-\" + y;\n\n divElement.style.transform = \"translate(\" + xOffset + \",\" + yOffset + \")\";\n\n }\n\n // Returning the generated element\n return divElement;\n },\n\n // Displaying the toast\n showToast: function() {\n // Creating the DOM object for the toast\n this.toastElement = this.buildToast();\n\n // Getting the root element to with the toast needs to be added\n var rootElement;\n if (typeof this.options.selector === \"string\") {\n rootElement = document.getElementById(this.options.selector);\n } else if (this.options.selector instanceof HTMLElement || (typeof ShadowRoot !== 'undefined' && this.options.selector instanceof ShadowRoot)) {\n rootElement = this.options.selector;\n } else {\n rootElement = document.body;\n }\n\n // Validating if root element is present in DOM\n if (!rootElement) {\n throw \"Root element is not defined\";\n }\n\n // Adding the DOM element\n var elementToInsert = Toastify.defaults.oldestFirst ? rootElement.firstChild : rootElement.lastChild;\n rootElement.insertBefore(this.toastElement, elementToInsert);\n\n // Repositioning the toasts in case multiple toasts are present\n Toastify.reposition();\n\n if (this.options.duration > 0) {\n this.toastElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n this.removeElement(this.toastElement);\n }.bind(this),\n this.options.duration\n ); // Binding `this` for function invocation\n }\n\n // Supporting function chaining\n return this;\n },\n\n hideToast: function() {\n if (this.toastElement.timeOutValue) {\n clearTimeout(this.toastElement.timeOutValue);\n }\n this.removeElement(this.toastElement);\n },\n\n // Removing the element from the DOM\n removeElement: function(toastElement) {\n // Hiding the element\n // toastElement.classList.remove(\"on\");\n toastElement.className = toastElement.className.replace(\" on\", \"\");\n\n // Removing the element from DOM after transition end\n window.setTimeout(\n function() {\n // remove options node if any\n if (this.options.node && this.options.node.parentNode) {\n this.options.node.parentNode.removeChild(this.options.node);\n }\n\n // Remove the element from the DOM, only when the parent node was not removed before.\n if (toastElement.parentNode) {\n toastElement.parentNode.removeChild(toastElement);\n }\n\n // Calling the callback function\n this.options.callback.call(toastElement);\n\n // Repositioning the toasts again\n Toastify.reposition();\n }.bind(this),\n 400\n ); // Binding `this` for function invocation\n },\n };\n\n // Positioning the toasts on the DOM\n Toastify.reposition = function() {\n\n // Top margins with gravity\n var topLeftOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var topRightOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var offsetSize = {\n top: 15,\n bottom: 15,\n };\n\n // Get all toast messages on the DOM\n var allToasts = document.getElementsByClassName(\"toastify\");\n\n var classUsed;\n\n // Modifying the position of each toast element\n for (var i = 0; i < allToasts.length; i++) {\n // Getting the applied gravity\n if (containsClass(allToasts[i], \"toastify-top\") === true) {\n classUsed = \"toastify-top\";\n } else {\n classUsed = \"toastify-bottom\";\n }\n\n var height = allToasts[i].offsetHeight;\n classUsed = classUsed.substr(9, classUsed.length-1)\n // Spacing between toasts\n var offset = 15;\n\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Show toast in center if screen with less than or equal to 360px\n if (width <= 360) {\n // Setting the position\n allToasts[i].style[classUsed] = offsetSize[classUsed] + \"px\";\n\n offsetSize[classUsed] += height + offset;\n } else {\n if (containsClass(allToasts[i], \"toastify-left\") === true) {\n // Setting the position\n allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + \"px\";\n\n topLeftOffsetSize[classUsed] += height + offset;\n } else {\n // Setting the position\n allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + \"px\";\n\n topRightOffsetSize[classUsed] += height + offset;\n }\n }\n }\n\n // Supporting function chaining\n return this;\n };\n\n // Helper function to get offset.\n function getAxisOffsetAValue(axis, options) {\n\n if(options.offset[axis]) {\n if(isNaN(options.offset[axis])) {\n return options.offset[axis];\n }\n else {\n return options.offset[axis] + 'px';\n }\n }\n\n return '0px';\n\n }\n\n function containsClass(elem, yourClass) {\n if (!elem || typeof yourClass !== \"string\") {\n return false;\n } else if (\n elem.className &&\n elem.className\n .trim()\n .split(/\\s+/gi)\n .indexOf(yourClass) > -1\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n // Setting up the prototype for the init object\n Toastify.lib.init.prototype = Toastify.lib;\n\n // Returning the Toastify function to be assigned to the window object/module\n return Toastify;\n});\n","import { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { defineAsyncComponent, defineComponent, computed, onMounted, onUnmounted, createBlock, openBlock, unref, withCtx, createCommentVNode, createElementBlock, createElementVNode, toDisplayString } from \"vue\";\nimport { basename } from \"@nextcloud/paths\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport Toastify from \"toastify-js\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcNoteCard from \"@nextcloud/vue/components/NcNoteCard\";\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-CWBf0soh.mjs\"));\n const incoming = [];\n const existing = [];\n for (const node of content) {\n if (isConflictingNode(node)) {\n existing.push(node);\n incoming.push(conflicts[indexOf(node)]);\n }\n }\n if (conflicts.length === 0 || content.length === 0) {\n throw new Error(\"ConflictPicker: files and conflicts must not be empty\");\n }\n if (conflicts.length !== content.length) {\n throw new Error(\"ConflictPicker: files and conflicts must have the same length. Make sure you filter out non conflicting files from the conflicts array.\");\n }\n return await spawnDialog(ConflictPicker, {\n dirname,\n existing,\n incoming,\n recursiveUpload: options?.recursive === true\n }, {\n container: options?.container\n });\n function isConflictingNode(node) {\n return conflicts.some((entry) => nodeIsConflict(node, entry));\n }\n function indexOf(node) {\n return conflicts.findIndex((entry) => nodeIsConflict(node, entry));\n }\n function nodeIsConflict(node, conflict) {\n if (\"basename\" in conflict) {\n return conflict.basename === node.basename;\n }\n return conflict.name === node.basename;\n }\n}\nconst IconMove = '';\nconst IconCopy = '';\nconst gtBuilder = getGettextBuilder().detectLanguage();\nfor (const data of [{ \"language\": \"ar\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" لا يصلح كاسم مجلد.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" غير مسموح به كاسم مجلد'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" غير مسموح به داخل اسم مجلد.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"كل الملفات\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"إختَر\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"إختر {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملفات\", \"إختَر %n ملف\", \"إختر %n ملف\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"نسخ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"نسخ إلى {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"تعذّر إنشاء المجلد الجديد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"يتعذّر تحميل إعدادات الملفات\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"تعذر تحميل عرض الملفات\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"إنشاء مجلد\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"محدد العرض الحالي\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"المفضلة\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"الملفات والمجلدات التي تحددها كمفضلة ستظهر هنا.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"الملفات و المجلدات التي قمت مؤخراً بتعديلها سوف تظهر هنا.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"تصفية قائمة الملفات\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"اسم المجلد لا يمكن أن يكون فارغاً.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"البداية\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"التعديل\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"نقل\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"نقل إلى {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"الاسم\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"مجلد جديد\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"اسم المجلد الجديد\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"لا توجد ملفات هنا\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"لا توجد ملفات تتطابق مع عامل التصفية الذي وضعته\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"لا توجد ملفات مطابقة\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"الحالي\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"حدد جميع الإدخالات\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"إختَر المدخل\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"إختر سطر الـ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"الحجم\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"تراجع\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"قم برفع بعض المحتوى أو المزامنة مع أجهزتك!\"] }] }, { \"language\": \"ast\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"Nun se permite'l caráuter «/» dientro'l nome de les carpetes.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tolos ficheros\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoyer\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoyer «{ficheru}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoyer %n ficheru\", \"Escoyer %n ficheros\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nun se pudo crear la carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nun se pudo cargar la configuración de los ficheros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nun se pudieron cargar les vistes de los ficheros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un direutoriu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de la vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Equí apaecen los ficheros y les carpetes que metas en Favoritos.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Equí apaecen los fichero y les carpetes que modificares apocayá.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Peñerar la llista de ficheros\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nome de la carpeta nun pue tar baleru.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Aniciu\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificóse\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nueva\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nome de carpeta nuevu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Equí nun hai nengún ficheru\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nun s'atopó nengún ficheru que concasare cola peñera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nun hai nengún ficheru que concase\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"De recién\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleicionar toles entraes\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleicionar la entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleicionar la filera de: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamañu\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Xubi dalgún elementu o sincroniza colos tos preseos!\"] }] }, { \"language\": \"ca\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`No és permès d'usar el caràcter \"{char}\" en un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no és un nom permès.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" és un mot reservat i no està permès com a nom.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [`\"/\" no està permès en el nom d'una carpeta.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflicte de fitxers\", \"%n conflictes de fitxers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n onflicte de fitxers a {dirname}\", \"%n conflictes de fitxers a {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tots els fitxers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar tota l'operació\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tria\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tria {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tria %n fitxer\", \"Tria %n fitxers\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirma\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No s'ha pogut crear la carpeta nova\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No es poden carregar fitxers de configuració\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No es poden carregar fitxers de vistes\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea un directori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de visualització actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Escriviu el vostre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versió existent\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"No s'ha pogut desar el sobrenom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferits\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes que marqueu com a favorits es mostraran aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes recentment modificats es mostraran aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar llistat de fitxers\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nom de la carpeta no pot estar buit.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificació com a convidat\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inici\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom no vàlid.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de l'última modificació desconeguda\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Data de modificació\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Desplaça\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Desplaça a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Els noms poden tenir com a màxim 64 caràcters.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Els noms no poden ser buits.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Els noms no poden acabar amb l'extensió \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Els noms no poden començar amb un punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Crea\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nova\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom de la carpeta nova\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hi ha cap fitxer\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No s'ha trobat cap fitxer que coincideixi amb el filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hi ha cap fitxer que coincideixi\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Si us plau, escriu un nom amb 2 caràcters com a mínim.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecciona totes les caselles de selecció\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecciona totes les entrades\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecciona tots els fitxers existents\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecciona tots els fitxers nous\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecciona l'entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecciona la fila per a {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mida\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omet %n fitxer\", \"Omet %n fitxers\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Entreu el nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfés\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Pugeu contingut o sincronitzeu-lo amb els vostres dispositius!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, també se sobreescriuran els fitxers que hi entrin en conflicte.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers voleu conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Actualment se us mostra com a {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Actualment no esteu identificat.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No podeu deixar el nom buit.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Heu de triar com a mínim una solució de conflicte\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar com a mínim una versió de cada fitxer per continuar.\"] }] }, { \"language\": \"cs_CZ\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"znak „{char}“ není možné použít uvnitř názvu složky.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ není možné použít uvnitř názvu.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ není možné použít jako název.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ je vyhrazeným názvem a není možné ho používat pro názvy složek.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ je vyhrazeným názvem a není možné ho použít.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n kolize souboru\", \"%n kolize souborů\", \"%n kolizí souborů\", \"%n kolize souborů\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n kolize souborů v {dirname}\", \"%n kolize souborů v {dirname}\", \"%n kolizí souborů v {dirname}\", \"%n kolize souborů v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Veškeré soubory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Storno\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Zvolit\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Zvolit {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Zvolte %n soubor\", \"Zvolte %n soubory\", \"Zvolte %n souborů\", \"Zvolte %n soubory\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdit\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Zkopírovat\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Zkopírovat do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Novou složku se nepodařilo vytvořit\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodařilo se načíst nastavení pro soubory\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodařilo se načíst pohledy souborů\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvořit složku\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výběr stávajícího zobrazení\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadejte své jméno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodařilo se nastavit přezdívku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Oblíbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které označíte jako oblíbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které jste nedávno pozměnili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovat seznam souborů\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Názvy složek nemohou končit na „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikace hosta\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domů\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, pak k názvu příchozího souboru bude přidáno číslo.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neplatný název složky.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatný název.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum poslední změny neznámé\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Změněno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Přesounout\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Přesunout do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Název\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Je třeba, aby délka jmen nepřesahovala 64 znaků.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Názvy je třeba vyplnit.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Názvy nemohou končit na „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Názvy nemohou začínat tečkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nová složka\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Název pro novou složku\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nejsou zde žádné soubory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenalezeny žádné soubory odpovídající vašemu filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žádné odpovídající soubory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadejte jméno dlouhé alespoň 2 znaky.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávné\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vybrat všechny zaškrtávací kolonky\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrat všechny položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat všechny existující soubory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat všechny nové soubory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrat položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vybrat řádek pro {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Přeskočit %n soubor\", \"Přeskočit %n soubory\", \"Přeskočit %n souborů\", \"Přeskočit %n soubory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Odeslat jméno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Zpět\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte sem nějaký obsah nebo proveďte synchronizaci se svými zařízeními!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, budou v ní také přepsány jakékoli kolidující soubory.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, je obsah zapsán do existující složky a je provedeno rekurzivní vyřešení kolizí.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory chcete ponechat?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"V tuto chvíli jste identifikováni jako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"V tuto chvíli nejste identifikovaní.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Jméno nelze ponechat nevyplněné.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Je třeba zvolit alespoň jedno z řešení kolize\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] }] }, { \"language\": \"da\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er et ugyldigt mappenavn.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ikke et tilladt mappenavn'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reserveret navn og er derfor ikke tilladt.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er ikke tilladt i et mappenavn.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n filkonflikt\", \"%n filer konflikter\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n filkonflikt i {dirname}\", \"%n filkonflikter i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annullér hele operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vælg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vælg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vælg %n fil\", \"Vælg %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekræft\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke oprette den nye mappe\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Filindstillingerne kunne ikke indlæses\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke indlæse filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opret mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuel visningsvælger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Indtast dit navn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Forsøg på at gemme kaldenavn mislykkedes.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper, du markerer som foretrukne, vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper, du for nylig har ændret, vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer fil liste\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mappenavnet må ikke være tomt.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gæsteidentifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldigt navn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senest ændret dato ukendt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ændret\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flyt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flyt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Navne kan højst være 64 tegn lange.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navne kan ikke være tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navne må ikke ende på \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navne skal starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ny mappe navn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Der blev ikke fundet nogen filer, der matcher dit filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen matchende filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Indtast et navn med mindst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Seneste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markér alle afkrydsningsfelter\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vælg alle poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vælg post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vælg rækken for {nodenavn}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størelse\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Spring %n fil over\", \"Spring %n filer over\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Indsend navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload noget indhold eller synkroniser med dine enheder!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil eventuelle modstridende filer i det også blive overskrevet.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, er indholdet skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du have?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er i øjeblikket identificeret som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er ikke identificeret.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke efterlade navnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du skal vælge mindst én konfliktløsning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] }] }, { \"language\": \"de\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Gib deinen Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du als Favorit markierst, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du kürzlich geändert hast, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die deinem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lade Inhalte hoch oder synchronisiere diese mit deinen Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du bist derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du bist momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kannst den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"de_DE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Geben Sie Ihren Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie als Favorit markieren, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie kürzlich geändert haben, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die Ihrem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Laden Sie Inhalte hoch oder synchronisieren Sie diese mit Ihren Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sie sind derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sie sind momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sie können den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"el\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"Το «{char}» δεν επιτρέπεται μέσα σε όνομα φακέλου.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" δεν επιτρέπεται μέσα σε ένα όνομα.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" δεν είναι επιτρεπτό όνομα.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"Το «{segment}» είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται για ονόματα φακέλων.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n σύγκρουση αρχείου\", \"%n σύγκρουση αρχείων\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n σύγκρουση αρχείου στο {dirname}\", \"%n σύγκρουση αρχείων στο {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Όλα τα αρχεία\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της διαδικασίας\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Επιλογή\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Επιλέξτε {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Επιλέξτε %n αρχείο\", \"Επιλέξτε %n αρχεία\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Επιβεβαίωση\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Αντιγραφή\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Αντιγραφή στο {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Αδυναμία δημιουργίας νέου φακέλου\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Αδυναμία φόρτωσης ρυθμίσεων αρχείων\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Αδυναμία φόρτωσης προβολών αρχείων\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Δημιουργία καταλόγου\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Επιλογέας τρέχουσας προβολής\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Εισάγετε το όνομά σας\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Υφιστάμενη έκδοση\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Αποτυχία στην ρύθμιση του ψευδώνυμου.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Αγαπημένα\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που επισημάνετε ως αγαπημένα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που τροποποιήσατε πρόσφατα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Φιλτράρισμα λίστας αρχείων\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Τα ονόματα των φακέλων δεν πρέπει να τελειώνουν με «{extension}».\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ταυτοποίηση επισκέπτη\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Αρχική\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Εάν επιλέξετε και τις δύο εκδόσεις, στο όνομα του εισερχόμενου αρχείου θα προστεθεί ένας αριθμός.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Μη έγκυρο όνομα φακέλου.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Μη έγκυρο όνομα.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Τροποποιήθηκε\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Μετακίνηση\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Μετακίνηση στο {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Όνομα\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Τα ονόματα μπορούν να έχουν μέγιστο μήκος 64 χαρακτήρες.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να είναι κενά.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Τα ονόματα δεν πρέπει να τελειώνουν με \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να ξεκινούν με τελεία.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Νέος φάκελος\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Όνομα νέου φακέλου\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Δεν υπάρχουν αρχεία εδώ\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Δεν βρέθηκαν αρχεία που να ταιριάζουν με το φίλτρο σας.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Κανένα αρχείο δεν ταιριάζει\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Παρακαλώ εισάγετε ένα όνομα με τουλάχιστον 2 χαρακτήρες.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Πρόσφατα\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλέξτε όλα τα πλαίσια ελέγχου\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Επιλογή όλων των καταχωρήσεων\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπάρχοντων αρχείων\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Επιλογή εγγραφής\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Επιλέξτε τη γραμμή για το {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Μέγεθος\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Παράλειψη ενός αρχείου\", \"Παράλειψη %n αρχείων\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παράλειψη αυτού το αρχείου\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Υποβολή ονόματος\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Αναίρεση\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ανεβάστε κάποιο περιεχόμενο ή συγχρονίστε με τις συσκευές σας!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας φάκελος εισερχομένων, όλα τα αρχεία που βρίσκονται σε σύγκρουση μέσα σε αυτόν θα αντικατασταθούν επίσης.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας φάκελος εισερχομένων, το περιεχόμενο εγγράφεται στον υπάρχοντα φάκελο και εκτελείται μια αναδρομική επίλυση σύγκρουσης.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Αυτή τη στιγμή έχετε αναγνωριστεί ως {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Δεν έχετε ταυτοποιηθεί.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Δεν μπορείτε να αφήσετε το όνομα κενό.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία λύση σύγκρουσης\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση από κάθε αρχείο για να συνεχίσετε.\"] }] }, { \"language\": \"en_GB\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" is not allowed inside a folder name.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" is not allowed inside a name.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is not an allowed name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" is a reserved name and cannot be used for folder names.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is a reserved name and not allowed.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n file conflict\", \"%n files conflict\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n file conflict in {dirname}\", \"%n file conflicts in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"All files\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choose\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choose {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choose %n file\", \"Choose %n files\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirm\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copy\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copy to {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Could not create the new folder\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Could not load files settings\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Could not load files views\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Create directory\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Current view selector\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Enter your name\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Failed to set nickname.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favourites\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Files and folders you mark as favourite will show up here.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Files and folders you recently modified will show up here.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter file list\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Folder names must not end with \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Guest identification\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Invalid folder name.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Invalid name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modified\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Move\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Move to {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Names may be at most 64 characters long.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Names must not be empty.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Names must not end with \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Names must not start with a dot.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New folder name\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No files in here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No files matching your filter were found.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No matching files\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Please enter a name with at least 2 characters.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Select all entries\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Select entry\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Select the row for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Size\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Skip %n file\", \"Skip %n files\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submit name\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undo\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload some content or sync with your devices!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"You are currently identified as {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"You are currently not identified.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"You cannot leave the name empty.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"You need to choose at least one conflict solution\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] }] }, { \"language\": \"es\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no es un nombre permitido.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta no válido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido dentro del nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elige %n archivo\", \"Elige %n archivos\", \"Seleccione %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudieron cargar los ajustes de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ingrese su nombre\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Fallo al establecer apodo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación de invitado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nombre inválido.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Los nombres no deben estar vacíos.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Los nombres no deben terminar con \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Los nombres no deben iniciar con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\" Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nuevo nombre de carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidiesen con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Por favor, ingrese un nombre con al menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nombre\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Ud. se encuentra identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Ud. no se encuentra identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No puede dejar el nombre vacío.\"] }] }, { \"language\": \"es_AR\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido en el nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Elegir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Elija {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elija %n archivo\", \"Elija %n archivos\", \"Elija %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }] }, { \"language\": \"es_MX\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre de carpeta'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no es un nombre permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido para nombres de carpetas'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflicto de archivo\", \"%n conflicto de archivos\", \"%n conflicto de archivos\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n conflicto de archivo en {dirname}\", \"%n conflictos de archivo en {dirname}\", \"%n conflictos de archivo en {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar la operación completa\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Seleccionar %n archivo\", \"Seleccionar %n archivos\", \"Seleccionar %n archivos\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear carpeta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ingresa tu nombre\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"No se pudo establecer el nickname\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Los nombres para carpeta no deben terminar con \"{extension}\"'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación de invitado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccionas ambas versiones, se le agregará al archivo que se está descargando, un número a su nombre.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nombre de carpeta no válido\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nombre no válido\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Los nombres pueden tener como máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Los nombres no deben estar vacíos.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Los nombres no deben terminar con \"{extension}\"'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Los nombres no deben comenzar con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Por favor ingrese un nombre con al menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccione todas las casillas de verificación\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccione todos los archivos que aparecen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccione todos los archivos nuevos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omitir %n archivo\", \"Omitir %n archivos\", \"Omitir %n archivos\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nombre\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Suba algún contenido o sincronice con sus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando se selecciona una carpeta en descarga, cualquier archivo conflictivo que contenga también se sobrescribirá.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando se selecciona una carpeta en descarga, el contenido se escribe en la carpeta existente y se realiza una resolución de conflicto recursiva.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos deseas conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Actualmente estás identificado como {nickname}\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"No estás identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No puedes dejar el nombre vacío.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Necesitas elegir al menos una solución al conflicto.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Necesitas seleccionar al menos una versión de cada archivo para continuar.\"] }] }, { \"language\": \"et_EE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"„{char}“ pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ pole nimes lubatud.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ pole lubatud nimi.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kasutamiseks lubatud.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fail on vastuolus\", \"%n faili on omavahel vastuolus\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fail on {dirname} kaustas vastuolus\", \"%n faili on omavahel {dirname} kaustas vastuolus\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kõik failid\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tee valik\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vali {file} fail\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vali %n fail\", \"Vali %n faili\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Kinnita\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopeeri\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopeeri sihtkohta „{target}“\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uut kausta ei saanud luua\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Failide seadistusi ei õnnestunud laadida\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Failide vaatamiskordi ei õnnestunud laadida\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Loo kaust\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Praeguse vaate valija\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Sisesta oma nimi\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Hüüdnime ei õnnestunud lisada\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Lemmikud\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failid ja kaustad, mida märgistad lemmikuks, kuvatakse siin.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siin kuvatakse hiljuti muudetud failid ja kaustad.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtreeri faililoendit\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Kausta nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Külalise tuvastamine\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Avaleht\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui valid mõlemad versioonid, siis uue faili nimele lisatakse number.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Vigane kausta nimi.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Vigane nimi.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muudetud\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Teisalda\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Teisalda kausta „{target}“\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimed võivad olla vaid kuni 64 tähemärki pikad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimi ei saa olla tühi.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nime alguses ei tohi olla punkt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uus kaust\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uue kausta nimi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Siin puuduvad failid\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Sinu filtrile vastavaid faile ei leidunud.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Puuduvad sobivad failid\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Palun sisesta vähemalt 2 tähemärki pikk nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Hiljutine\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vali kõik kirjed\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vali kirje\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vali rida „{nodename}“ jaoks\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Suurus\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Jäta %n fail vahele\", \"Jäta %n faili vahele\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta see fail vahele\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lisa nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tühista\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lisa mingit sisu või sünkrooni see oma seadmetest!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis kõik seal leiduvad vastuolus failid saavad üle kirjutatud.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja korraldatakse rekursiivne failikonfliktide lahendamine.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Missugused failid tahaksid alles jätta?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sa oled hetkel tuvastatav kui {nickname}..\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sa oled hetkel tuvastamata.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sa ei saa jätte nime tühjaks.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Sa pead valima vähemalt ühe failikonflikti lahenduse.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamaks pead valima igast failist vähemalt ühe versiooni.\"] }] }, { \"language\": \"fa\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} نام پوشه معتبر نیست\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} نام پوشه مجاز نیست\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" نمی‌تواند در نام پوشه استفاده شود.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"همه فایل‌ها\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"لغو\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"انتخاب\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"انتخاب {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"انتخاب %n فایل\", \"انتخاب %n فایل\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"رونوشت\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"رونوشت از {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"پوشه جدید ایجاد نشد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"تنظیمات فایل باز نشد\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"نمای فایل‌ها بارگیری نشد\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ایجاد فهرست\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"انتخابگر نماگر فعلی\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"نام خود را وارد کنید\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"تنظیم نام مستعار ناموفق بود.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"علایق\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که به‌عنوان مورد علاقه علامت‌گذاری می‌کنید در اینجا نشان داده می‌شوند.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که اخیراً تغییر داده‌اید در اینجا نمایش داده می‌شوند.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"فیلتر لیست فایل\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"نام پوشه نمی تواند خالی باشد.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"شناسایی مهمان\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"خانه\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"اصلاح شده\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"انتقال\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"انتقال به {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"نام\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"پوشه جدید\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"نام پوشه جدید\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"فایلی اینجا نیست\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"هیچ فایلی مطابق با فیلتر شما یافت نشد.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"فایل منطبقی وجود ندارد\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"لطفاً نامی با حداقل ۲ کاراکتر وارد کنید.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"اخیر\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"انتخاب همه ورودی ها\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"انتخاب ورودی\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"انتخاب ردیف برای {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"اندازه\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ارسال نام\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"بازگردانی\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"مقداری محتوا آپلود کنید یا با دستگاه های خود همگام سازی کنید!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"شما در حال حاضر شناسایی نشده‌اید.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"نمی‌توانید نام را خالی بگذارید.\"] }] }, { \"language\": \"fi_FI\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ei ole sallittu nimessä.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ei ole sallittu nimi.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" on virheellinen kansion nimi.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ei ole sallittu kansion nimi'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" on varattu nimi eikä se ole sallittu.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ei ole sallittu kansion nimessä.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kaikki tiedostot\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Valitse\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Valitse {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Valitse %n tiedosto\", \"Valitse %n tiedostoa\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopioi\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopioi sijaintiin {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uutta kansiota ei voitu luoda\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tiedoston asetuksia ei saa ladattua\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tiedoston näkymiä ei saa ladattua\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Luo kansio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nykyisen näkymän valinta\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Kirjoita nimesi\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kutsumanimen asettaminen epäonnistui.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Suosikit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, jotka merkitset suosikkeihisi, näkyvät täällä.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, joita muokkasit äskettäin, näkyvät täällä.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Suodata tiedostolistaa\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Kansion nimi ei voi olla tyhjä.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vieraan tunnistaminen\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Koti\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Virheellinen nimi.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muokattu\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Siirrä\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Siirrä sijaintiin {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimissä voi olla enintään 64 merkkiä.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimet eivät saa olla tyhjiä.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nimet eivät saa päättyä sanaan \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nimet eivät saa alkaa pisteellä.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uusi kansio\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uuden kansion nimi\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Täällä ei ole tiedostoja\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Suodatinta vastaavia tiedostoja ei löytynyt.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ei vastaavia tiedostoja\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kirjoita vähintään kaksi merkkiä sisältävä nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Viimeisimmät\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Valitse kaikki tietueet\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Valitse tietue\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Valitse rivi {nodename}:lle\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Koko\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lähetä nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Kumoa\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lähetä jotain sisältöä tai synkronoi laitteidesi kanssa!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sinut tunnetaan tällä hetkellä nimellä {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sinua ei ole tunnistettu.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nimeä ei voi jättää tyhjäksi.\"] }] }, { \"language\": \"fr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`\"{char}\" n'est pas autorisé dans un nom de dossier.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`\"{char}\" n'est pas autorisé dans un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" n'est pas un nom autorisé.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`\"{segment}\" est un nom réservé et n'est pas autorisé pour un nom de dossier.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" est un nom réservé et n'est pas autorisé.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflit de fichier\", \"%n conflit de fichiers\", \"%n conflit de fichiers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nconflit de fichier dans {dirname}\", \"%n conflit de fichiers dans {dirname}\", \"%nconflit de fichiers dans {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tous les fichiers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tout annuler \"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choisir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choisir {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choisir %n fichier\", \"Choisir %n fichiers\", \"Choisir %n fichiers \"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmer\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copier vers {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossible de créer le nouveau dossier\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Les paramètres des fichiers n'ont pas pu être chargés\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossible de charger les vues des fichiers\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Créer un répertoire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Sélecteur d'affichage actuel\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Entrez votre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Version actuelle \"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Échec de définition du surnom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoris\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Les fichiers et répertoires marqués en favoris apparaîtront ici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Les fichiers et répertoires modifiés récemment apparaîtront ici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer la liste des fichiers\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Les noms de dossiers ne doivent pas se terminer par \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identification d'invité\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Accueil\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous conservez les deux versions, le fichier reçu sera renommé avec un numéro.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nom de dossier invalide.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom invalide.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de modification inconnue\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifié\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Déplacer\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Déplacer vers {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Les noms peuvent comporter au maximum 64 caractères.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Les noms ne peuvent pas être vides.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Les noms ne doivent pas se terminer par \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Les noms ne peuvent pas commencer par un point.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nouveau dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom du nouveau dossier\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aucun fichier ici\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Aucun fichier trouvé correspondant à votre filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Aucun fichier correspondant\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Veuillez entrer un nom avec au moins 2 caractères.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Récents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tout sélectionner\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Sélectionner une entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Sélectionner la ligne correspondant à {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Taille\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorer %n fichier\", \"Ignorer %n fichiers \", \"Ignorer %n fichiers \"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Envoyer le nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Chargez du contenu ou synchronisez avec vos équipements !\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"En sélectionnant un dossier entrant, les fichiers en conflit qu’il contient seront automatiquement écrasés.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsque vous sélectionnez un dossier entrant, son contenu est ajouté au dossier existant et les conflits sont résolus automatiquement.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vous êtes actuellement identifié comme {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vous n'êtes pas identifié actuellement.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vous ne pouvez pas laisser le nom vide.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Vous devez choisir au moins une option pour résoudre le conflit\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sélectionnez au moins une version de chaque fichier pour continuer.\"] }] }, { \"language\": \"ga\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`Ní cheadaítear \"{char}\" laistigh d'ainm fillteáin.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`Ní cheadaítear \"{char}\" laistigh d'ainm.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['Ní ainm ceadaithe é \"{extension}\".'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`Is ainm curtha in áirithe é \"{segment}\" agus ní cheadaítear é d'ainmneacha fillteán.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['Is ainm curtha in áirithe é \"{segment}\" agus ní cheadaítear é.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n coimhlint comhaid\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n coimhlint comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Gach comhad\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht ar fad\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Roghnaigh\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Roghnaigh {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Roghnaigh %n comhad\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Deimhnigh\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Lean ar aghaidh\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Cóip\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Cóipeáil chuig {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Níorbh fhéidir an fillteán nua a chruthú\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Níorbh fhéidir socruithe comhaid a lódáil\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Níorbh fhéidir radhairc comhad a lódáil\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Cruthaigh eolaire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Roghnóir amhairc reatha\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Cuir isteach d'ainm\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan atá ann cheana féin\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Theip ar leasainm a shocrú.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ceanáin\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a d'athraigh tú le déanaí anseo.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Scag liosta comhad\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ní féidir ainmneacha fillteán a chríochnú le \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Aitheantas aoi\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Baile\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir le hainm an chomhaid atá ag teacht isteach.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ainm fillteáin neamhbhailí.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ainm neamhbhailí.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta an athraithe dheireanaigh anaithnid\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Athraithe\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Bog\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Bog go{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ainm\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ní fhéadfaidh ainmneacha a bheith níos mó ná 64 carachtar ar fhad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ní féidir ainmneacha a bheith folamh.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ní féidir ainmneacha a chríochnú le \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ní mór ainmneacha a bheith ag tosú le ponc.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Fillteán nua\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ainm fillteáin nua\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Níl aon chomhaid istigh anseo\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Níor aimsíodh aon chomhad a tháinig le do scagaire.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Gan comhaid meaitseála\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Cuir isteach ainm ina bhfuil 2 charachtar ar a laghad.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"le déanaí\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh na boscaí seiceála go léir\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Roghnaigh gach iontráil\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh na comhaid uile atá ann cheana\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Roghnaigh iontráil\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Roghnaigh an ró do {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méid\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Léim %n comhad\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Scipeáil an comhad seo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Cuir isteach ainm\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Uaslódáil roinnt ábhair nó sioncronaigh le do ghléasanna!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid choimhlinteacha ann a athscríobh freisin.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach sa fhillteán atá ann cheana féin agus déantar réiteach coinbhleachta athchúrsach.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Is é {nickname} an ainm atá ort faoi láthair.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Níl aitheantas tugtha duit faoi láthair.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ní féidir leat an t-ainm a fhágáil folamh.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Ní mór duit réiteach coinbhleachta amháin ar a laghad a roghnú\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú le leanúint ar aghaidh.\"] }] }, { \"language\": \"gl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"«{char}» non está permitido no nome dun cartafol.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"«{char}» non está permitido dentro dun nome.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"«{extension}» non é un nome permitido.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido para nomes de cartafoles.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro en conflito\", \"%n ficheiros en conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro en conflito en {dirname}\", \"%n ficheiros en conflito en {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operación\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoller\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoller {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoller %n ficheiro\", \"Escoller %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Non foi posíbel crear o novo cartafol\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Non foi posíbel cargar os axustes dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Non foi posíbel cargar as vistas dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Produciuse un fallo ao definir o alcume.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que modificou recentemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar a lista de ficheiros\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes de cartafol non deben rematar en «{extension}».\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación do convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"O nome de cartafol non é válido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome incorrecto\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover cara a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes poden ter unha lonxitude máxima de 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Os nomes non deben estar baleiros.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes non deben rematar en «{extension}».\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes non deben comezar cun punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novo cartafol\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome do cartafol\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aquí non hai ficheiros\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Non se atopou ningún ficheiro que coincida co filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Non hai ficheiros coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza un nome con polo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas as caixas\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar a entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccionar a fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omitir %n ficheiro\", \"Omitir %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar o nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Enviar algún contido ou sincronizalo cos seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, todos os ficheiros conflitivos dentro dela tamén serán sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e realízase unha resolución recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vde. está identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vde. non está identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vde. non pode deixar o nome baleiro.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É necesario escoller polo menos unha solución de conflito\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necesario seleccionar polo menos unha versión de cada ficheiro para continuar.\"] }] }, { \"language\": \"hr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"Znak „{char}” nije dopušten u nazivu mape.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"Znak „{char}” nije dopušten u nazivu.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nije dopušten u nazivu.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" je rezervirana riječ i nije dopušten u nazivu mape.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" je rezervirana riječ i nije dopušten.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"Sukobljava se %n datoteka\", \"Sukobljava se %n datoteke\", \"Sukobljava se %n datoteke\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n sukob datoteka u {dirname}\", \"%n sukoba datoteka u {dirname}\", \"%n sukoba datoteka u {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Sve datoteke\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Odustani\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Odustani od cijele operacije\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Odaberi\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Odaberi {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Odaberi %n datoteku\", \"Odaberi %n datoteka\", \"Odaberi %n datoteke\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdi\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Nastavi\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj u {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nije moguće stvoriti novu mapu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nije moguće učitati postavke datoteka\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nije moguće učitati prikaze datoteka\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Stvori mapu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Odabir trenutačnog prikaza\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Unesite vaše ime\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Postojeća verzija\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Neuspjelo postavljanje nadimka.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Ovdje se prikazuju datoteke i mape koje ste označili kao favoriti.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Ovdje se prikazuju datoteke i mape koje ste nedavno ažurirali.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtriranje liste datoteka\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nazivi mapa ne smiju završiti sa \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikacija gosta\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Naslovna\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ako odaberete obje verzije, dolaznoj datoteci bit će dodan broj u nazivu.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neispavan naziv mape.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neispravan naziv.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nepoznat datum zadnjeg ažuriranja\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ažurirano\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premjesti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premjesti u {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naziv\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nazivi mogu imati najviše 64 znaka.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nazivi ne smiju biti prazni.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nazivi ne smiju završiti sa \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nazivi ne smiju započinjati točkom.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova mapa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novi naziv mape\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova verzija\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ovdje nema datoteka\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nisu pronađene datoteke koje odgovaraju vašem filtru.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nema odgovarajućih datoteka.\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Unesite naziv s najmanje 2 znaka.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedavno\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označi sve potvrdne okvire\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Označi sve stavke\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi sve postojeće datoteke\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi sve nove datoteke\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Označi stavku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Označi red za{nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veličina\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Preskoči %n datoteku\", \"Preskoči %n datoteke\", \"Preskoči %n datoteke\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskoči ovu datoteku\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Pošalji naziv\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Poništi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Prenesite neki sadržaj ili sinkronizirajte sa svojim uređajima!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kada je odabrana dolazna mapa, sve datoteke unutar nje koje su u sukobu također će biti prepisane.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kada je odabrana dolazna mapa, sadržaj se upisuje u postojeću mapu i provodi se rekurzivno rješavanje sukoba.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Koje datoteke želite zadržati?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Trenutno ste identificirani kao {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Trenutno niste identificirani.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ne možete ostaviti naziv prazan.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Morate odabrati barem jedno rješenje sukoba\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Morate odabrati barem jednu verziju svake datoteke kako biste nastavili.\"] }] }, { \"language\": \"hu_HU\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nem engedélyezett névben.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nem engedélyezett név.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” érvénytelen mappanév.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” nem engedélyezett mappanév\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" foglalt név és nem engedélyezett.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” jel nem szerepelhet mappa nevében.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Minden fájl\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiválasztás\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} kiválasztása\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n fájl kiválasztása\", \"%n fájl kiválasztása\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Másolás\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Másolás ide: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Az új mappa létrehozása nem lehetséges\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Fájlbeállítások betöltése nem lehetséges\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Fájlnézetek betöltése nem lehetséges\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Mappa létrehozása\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Jelenlegi nézet választó\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Add meg a neved\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Becenév beállítás sikertelen.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Kedvencek\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"A kedvencként megjelölt fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"A nemrég módosított fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fájl lista szűrése\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"A mappa neve nem lehet üres.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vendég azonosítás\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Kezdőlap\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Érvénytelen név.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Módosítva\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mozgatás\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mozgatás ide: {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Név\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nevek nem lehetnek üresek.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nevek nem végződhetnek \"{extension}\"-re.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nevek nem kezdődhetnek ponttal.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Új mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Új mappa név\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Itt nincsenek fájlok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nincs a szűrési feltételeknek megfelelő fájl.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nincs ilyen fájl\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kérlek adj meg egy legalább 2 karakteres nevet.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Gyakori\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Minden bejegyzés kijelölése\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Bejegyzés kijelölése\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Válassz sort a következőnek: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méret\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Név beküldése\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Visszavonás\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Tölts fel tartalmat vagy szinkronizálj az eszközeiddel!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Jelenleg nem vagy azonosítva.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"A nevet nem hagyhatod üresen.\"] }] }, { \"language\": \"hy\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} սխալ թղթապանակի անվանում է\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} համարվում է անթույլատրելի թղթապանակի անվանում\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"/ չի թույլատրվում օգտագործել անվանման մեջ\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Բոլոր ֆայլերը\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Ընտրել\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Ընտրել {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Ընտրել %n ֆայլ\", \"Ընտրել %n ֆայլեր\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Պատճենել\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Պատճենել {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Չստացվեց ստեղծել նոր թղթապանակը\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլի կարգավորումները\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլերի դիտումները\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ստեղծել դիրեկտորիա\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Ընթացիկ դիտման ընտրիչ\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Նախընտրելիներ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք դուք նշել եք որպես նախընտրելիներ:\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք վերջերս փոխել եք:\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Ֆիլտրել ֆայլերի ցուցակը\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Թղթապանակի անունը չի կարող դատարկ լինել:\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Սկիզբ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Փոփոխված\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Տեղափոխել\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Տեղափոխել {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Անուն\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Նոր\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Նոր թղթապանակ\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Նոր թղթապանակի անվանում\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Այստեղ չկան ֆայլեր\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ձեր ֆիլտրին համապատասխանող ֆայլերը չեն գտնվել:\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Չկան համապատասխան ֆայլեր\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Վերջին\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Ընտրել բոլոր գրառումները\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Ընտրել բոլոր գրառումը\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Ընտրեք տողը {nodename}-ի համար \"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Չափ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ետարկել\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ներբեռնեք որոշ բովանդակություն կամ համաժամացրեք այն ձեր սարքերի հետ:\"] }] }, { \"language\": \"id\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" tidak diizinkan di dalam nama folder.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" tidak diizinkan di dalam nama.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" bukan nama yang diizinkan.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" adalah nama yang dicadangkan dan tidak diizinkan untuk nama folder.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" adalah nama yang dicadangkan dan tidak diizinkan.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n konflik file\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konflik file di {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua berkas\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Batal\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batalkan seluruh operasi\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih %n file\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Konfirmasi\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Salin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Salin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat membuat folder baru\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuat pengaturan file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuat tampilan file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Buat direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pemilih tampilan saat ini\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Masukkan nama Anda\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Gagal menetapkan nama panggilan.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda tandai sebagai favorit akan muncul di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda ubah baru-baru ini akan muncul di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Saring daftar berkas\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nama folder tidak boleh diakhiri dengan \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikasi tamu\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Beranda\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, file yang masuk akan ditambahkan angka pada namanya.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nama folder tidak valid.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nama tidak valid.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal modifikasi terakhir tidak diketahui\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Diubah\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pindahkan\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pindahkan ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Panjang nama maksimal 64 karakter.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nama tidak boleh kosong.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nama tidak boleh diakhiri dengan \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nama tidak boleh diawali dengan titik.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder baru\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baru\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tidak ada berkas di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tidak ada berkas yang cocok dengan penyaringan Anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tidak ada berkas yang cocok\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Silakan masukkan nama dengan minimal 2 karakter.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Terkini\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua file yang ada\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua file baru\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pilih baris untuk {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Ukuran\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Lewati %n file\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Lewati file ini\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Kirim nama\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tidak jadi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Unggah beberapa konten atau sinkronkan dengan perangkat Anda!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Saat folder yang masuk dipilih, semua file yang konflik di dalamnya juga akan ditimpa.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Saat folder yang masuk dipilih, konten ditulis ke dalam folder yang ada dan penyelesaian konflik rekursif dilakukan.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"File mana yang ingin Anda pertahankan?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Saat ini Anda teridentifikasi sebagai {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Saat ini Anda tidak teridentifikasi.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Anda tidak dapat membiarkan nama kosong.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Anda perlu memilih setidaknya satu solusi konflik\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih setidaknya satu versi dari setiap file untuk melanjutkan.\"] }] }, { \"language\": \"is\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er ógilt möppuheiti.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ekki leyfilegt möppuheiti'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er er ekki leyfilegt innan í skráarheiti.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Allar skrár\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Veldu\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Veldu {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Veldu %n skrá\", \"Veldu %n skrár\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Afrita\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Afrita í {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Get ekki búið til nýju möppuna\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tókst ekki að hlaða inn stillingum skráa\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tókst ekki að hlaða inn sýnum skráa\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Búa til möppu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Núverandi val sýnar\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Eftirlæti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú merkir sem eftirlæti birtast hér.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú breyttir nýlega birtast hér.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Sía skráalista\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Möppuheiti má ekki vera tómt.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Heim\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Breytt\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Færa\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Færa í {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Heiti\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ný mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Heiti nýrrar möppu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Engar skrár hér\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Engar skrár fundust sem passa við síuna.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Engar samsvarandi skrár\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nýlegt\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velja allar færslur\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velja færslu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Veldu röðina fyrir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Stærð\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Afturkalla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Sendu inn eitthvað efni eða samstilltu við tækin þín!\"] }] }, { \"language\": \"it\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`\"{char}\" non è consentito all'interno di un nome di cartella.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`\"{char}\" non è consentito all'interno di un nome.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" non è un nome consentito'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" è un nome riservato e non consentito per i nomi delle cartelle.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" è un nome riservato e non consentito.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n file in conflitto\", \"%n file in conflitto\", \"%n file in conflitto\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n file in conflitto in {dirname}\", \"%n file in conflitto in {dirname}\", \"%n file in conflitto in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tutti i file\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Scegli\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Scegli {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Scegli %n file\", \"Scegli %n file\", \"Scegli %n file\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Conferma\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia in {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossibile creare la nuova cartella\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Impossibile caricare le impostazioni dei file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossibile caricare le visualizzazioni dei file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea cartella\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selettore della vista attuale\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Inserisci il tuo nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Impossibile impostare lo pseudonimo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferiti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"I file e le cartelle contrassegnate come preferite saranno mostrate qui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"I file e le cartelle che hai modificato di recente saranno mostrate qui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtra l'elenco dei file\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['I nomi delle cartelle devono finire con \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificazione ospiti\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, al nome del file in arrivo verrà aggiunto un numero.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome cartella non valido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome non valido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data di ultima modifica sconosciuta\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificato\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Sposta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Sposta in {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"I nomi dovrebbero avere una lunghezza massima di 64 caratteri.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"I nomi non devono essere vuoti.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['I nomi devono finire con \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"I nomi non possono iniziare con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nuova cartella\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nome della nuova cartella\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nessun file qui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nessun file che corrisponde al tuo filtro è stato trovato.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nessun file corrispondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Digita un nome con almeno 2 caratteri.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Scegli tutte le voci\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleziona la voce\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleziona la riga per {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Dimensioni\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Salta %n file\", \"Salta %n file\", \"Salta %n file\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Invia nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annulla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Carica qualche contenuto o sincronizza con i tuoi dispositivi!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno saranno sovrascritti.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi conservare?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sei attualmente identificato come {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Attualmente non sei identificato.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Non puoi lasciare il nome vuoto.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Devi scegliere almeno una soluzione al conflitto\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Per continuare, è necessario selezionare almeno una versione di ciascun file.\"] }] }, { \"language\": \"ja_JP\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['フォルダー名に \"{char}\" を使用することはできません。'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名前に \"{char}\" を使用することはできません。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" は許可された名前ではありません。'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" は予約名のため、使用できません。'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" は予約名のため、使用できません。'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%nファイルが競合しています\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nディレクトリ{dirname}内のファイル競合\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"すべてのファイル\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセル\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選択\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} を選択\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n 個のファイルを選択\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"確認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"続行\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"コピー\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} にコピー\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"新しいフォルダーを作成できませんでした\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ファイル設定を読み込めませんでした\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ファイルビューを読み込めませんでした\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ディレクトリを作成\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"現在のビュー選択\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"名前を入力してください\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現行バージョン\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ニックネームの設定に失敗しました。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"お気に入り\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"お気に入りとしてマークしたファイルとフォルダーがここに表示されます。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"最近変更したファイルとフォルダーがここに表示されます。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ファイルのリストをフィルター\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['フォルダー名の末尾に \"{extension}\" を使用できません。'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ゲスト識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ホーム\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイル名には番号が追加されます。\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"フォルダー名が無効です。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無効な名前です。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"変更済み\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} に移動\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名前\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名前は最大64文字です。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名前は空にできません。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['名前の末尾に \"{extension}\" を使用できません。'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ドットで始まる名前は使用できません。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新しいフォルダー\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新しいフォルダーの名前\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新バージョン\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ファイルがありません\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"フィルターに一致するファイルは見つかりませんでした。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"一致するファイルはありません\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"名前は2文字以上を入力してください。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべてのチェックボックスを選択\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"すべてのエントリを選択\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"既存のファイルをすべて選択\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"エントリを選択\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} の行を選択\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"サイズ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n 個のファイルをスキップ\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップ\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"名前を送信する\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"元に戻す\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"コンテンツをアップロードするか、デバイスと同期してください!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダーを選択すると、そのフォルダー内の競合ファイルも上書きされます。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダーを選択すると、内容は既存のフォルダーに書き込まれ、再帰的な競合解決が実行されます。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを残しますか?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"現在、{nickname}として識別されています。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"現在あなたは識別されていません。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名前を空にすることはできません。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"少なくとも1つの競合ソリューションを選択する必要があります\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルのバージョンを少なくとも1つ選択する必要があります。\"] }] }, { \"language\": \"ko\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['폴더 이름 안에는 \"{char}\"를 사용할 수 없습니다.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\"는 이름 내에 사용할 수 없습니다.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\"은 허용되는 이름이 아닙니다.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\"는 예약된 이름이므로 폴더 이름으로 사용할 수 없습니다.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['같은 이름을 가진 \"{segment}\"이 이미 사용 중입니다.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n 파일 충돌\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 안의 %n 파일 충돌\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"모든 파일\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업 취소\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"선택\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} 선택\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n개의 파일 선택\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"확인\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"계속\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"복사\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target}으로 복사\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"새 폴더를 만들 수 없음\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"파일 설정을 불러오지 못함\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"파일 보기를 불러오지 못함\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"디렉토리 만들기\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"현재 뷰 선택자\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"이름을 입력하세요 \"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"기존 버전\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"닉네임을 설정하지 못했습니다.\\n \"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"즐겨찾기\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"즐겨찾기로 표시한 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"최근 수정한 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"파일 목록 필터링\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['폴더 이름은 \"{extension}\"로 끝나면 안됩니다.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"게스트 확인\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"홈\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"만약 두 버전 모두 선택한다면 들어오는 파일은 이름에 번호가 추가될 것입니다.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"폴더 이름이 잘못되었습니다.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"잘못된 이름입니다. \"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정 날짜 알 수 없음\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"수정됨\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"이동\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target}으로 이동\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"이름\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"이름은 아마도 최대 64글자 입니다.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"이름은 비어 있으면 안 됩니다.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['이름은 \"{extension}\"로 끝나지 않아야 합니다.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"이름은 점으로 시작해서는 안 됩니다.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"새 폴더\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"새 폴더명\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"새로운 버전\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"파일이 없습니다\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"선택한 필터에 해당하는 파일이 없습니다.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"일치하는 파일 없음\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"최소 2자 이상의 이름을 입력하십시오. \"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"최근\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"모두 선택\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"모든 기존 파일 선택\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"모든 새 파일 선택\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"항목 선택\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename}의 행 선택\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"크기\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n 파일 건너뜀\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뜀\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"이름 제출\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"되돌리기\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"기기에서 파일을 업로드 또는 동기화하세요!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택하면 해당 폴더 내의 충돌하는 파일도 덮어쓰여집니다.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더를 선택하면 해당 콘텐츠가 기존 폴더에 기록되고 재귀적 충돌 해결이 수행됩니다.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보관하시겠습니까?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname}로서 인증 상태 입니다.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"현재 인증되지 않았습니다.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"이름은 비워 둘 수 없습니다. \"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"최소한 하나의 갈등 해결 방안을 선택해야 합니다.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속 진행하려면 각 파일의 버전을 하나 이상 선택해야 합니다.\"] }] }, { \"language\": \"lb\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} ass en ongëlteg Dossier\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ass net en erlaabten Dossiernumm\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ass net an engem Dossier Numm erlaabt'] }, { \"msgid\": \"All files\", \"msgstr\": [\"All Dateien\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wielt\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wielt {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wielt %n Fichieren\", \"Wielt %n Fichier\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopie\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopie op {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Konnt den neien Dossier net erstellen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Konnt d'Dateienastellungen net lueden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Konnt d'Dateien net lueden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Erstellt Verzeechnes\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell Vue selector\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien an Ordner, déi Dir als Favorit markéiert, ginn hei gewisen\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien an Ordner déi Dir viru kuerzem geännert hutt ginn hei op\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter Datei Lëscht\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Dossier Numm kann net eidel sinn\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Wëllkomm\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geännert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Plënne\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Plënneren {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Numm\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nei\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neien dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neien dossier numm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Kee fichier hei\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Kee fichier deen äre filter passt gouf fonnt\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keng passende dateien\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Rezent\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wielt all entréen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wielt entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wielt d'zeil fir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Gréisst\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undoen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Luet en inhalt erop oder synchroniséiert mat ären apparater\"] }] }, { \"language\": \"lo\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{char}\" ພາຍໃນຊື່.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ບໍ່ແມ່ນຊື່ທີ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" ແມ່ນຊື່ໂຟນເດີທີ່ບໍ່ຖືກຕ້ອງ.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ບໍ່ແມ່ນຊື່ໂຟນເດີທີ່ໄດ້ຮັບອະນຸຍາດ'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"/\" ພາຍໃນຊື່ໂຟນເດີ.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການ\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການໃນ {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"ໄຟລ໌ທັງໝົດ\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"ເລືອກ\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"ເລືອກ {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"ເລືອກ %n ໄຟລ໌\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"ຢືນຢັນ\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"ຄັດລອກ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"ຄັດລອກໄປທີ່ {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"ບໍ່ສາມາດສ້າງໂຟນເດີໃໝ່ໄດ້\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດການຕັ້ງຄ່າໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດມຸມມອງໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ສ້າງໄດເຣັກທໍຣີ\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"ຕົວເລືອກມຸມມອງປັດຈຸບັນ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"ປ້ອນຊື່ຂອງທ່ານ\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"ເວີຊັນທີ່ມີຢູ່\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ຕັ້ງຊື່ຫຼິ້ນບໍ່ສຳເລັດ.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"ລາຍການທີ່ມັກ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານໝາຍວ່າເປັນລາຍການທີ່ມັກຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານແກ້ໄຂລ່າສຸດຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ກັ່ນຕອງລາຍການໄຟລ໌\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"ຊື່ໂຟນເດີຕ້ອງບໍ່ຫວ່າງເປົ່າ.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ການລະບຸຕົວຕົນຂອງແຂກ\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ໜ້າຫຼັກ\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງເວີຊັນ, ໄຟລ໌ທີ່ເຂົ້າມາຈະມີຕົວເລກເພີ່ມໃສ່ຊື່ຂອງມັນ.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"ຊື່ບໍ່ຖືກຕ້ອງ.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຮູ້ວັນທີແກ້ໄຂລ່າສຸດ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"ແກ້ໄຂເມື່ອ\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"ຍ້າຍ\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"ຍ້າຍໄປທີ່ {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"ຊື່\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"ຊື່ອາດມີຄວາມຍາວສູງສຸດ 64 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຫວ່າງເປົ່າ.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['ຊື່ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຈຸດ.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"ຊື່ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"ເວີຊັນໃໝ່\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ຢູ່ບ່ອນນີ້\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"ບໍ່ພົບໄຟລ໌ທີ່ກົງກັບການກັ່ນຕອງຂອງທ່ານ.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ທີ່ກົງກັນ\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"ກະລຸນາປ້ອນຊື່ທີ່ມີຢ່າງໜ້ອຍ 2 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"ລ່າສຸດ\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກກ່ອງໝາຍທັງໝົດ\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"ເລືອກທຸກລາຍການ\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ທັງໝົດ\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"ເລືອກລາຍການ\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"ເລືອກແຖວສຳລັບ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"ຂະໜາດ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"ຂ້າມ %n ໄຟລ໌\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ສົ່ງຊື່\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"ເອົາຄືນ\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"ອັບໂຫຼດເນື້ອຫາ ຫຼື ຊິງຄ໌ກັບອຸປະກອນຂອງທ່ານ!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ໄຟລ໌ໃດໆທີ່ຂັດກັນພາຍໃນໂຟນເດີນັ້ນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟນເດີທີ່ມີຢູ່ ແລະ ຈະມີການແກ້ໄຂຂໍ້ຂັດແຍ່ງແບບຕໍ່ເນື່ອງ.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຖືກລະບຸວ່າເປັນ {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຍັງບໍ່ໄດ້ຖືກລະບຸຕົວຕົນ.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"ທ່ານບໍ່ສາມາດປະຊື່ໃຫ້ຫວ່າງເປົ່າໄດ້.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກວິທີແກ້ໄຂຂໍ້ຂັດແຍ່ງຢ່າງໜ້ອຍໜຶ່ງຢ່າງ\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງເວີຊັນຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] }] }, { \"language\": \"lt_LT\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}“ yra netinkamas aplanko pavadinimas.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}“ yra neleidžiamas aplanko pavadinimas\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/“ yra neleidžiamas aplanko pavadinime.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visi failai\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Atšaukti\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pasirinkti\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pasirinkti {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pasirinkti %n failą\", \"Pasirinkti %n failus\", \"Pasirinkti %n failų\", \"Pasirinkti %n failą\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopijuoti\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopijuoti į {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepavyko sukurti naujo aplanko\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepavyko įkelti failų nustatymų\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepavyko įkelti failų peržiūrų\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Sukurti katalogą\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Dabartinis peržiūros pasirinkimas\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Įrašykite savo vardą\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepavyko nustatyti slapyvardžio\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Populiariausi\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failai ir aplankai, kuriuos pažymėsite kaip mėgstamiausius, bus rodomi čia.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Čia bus rodomi failai ir aplankai, kuriuos neseniai pakeitėte.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruoti failų sąrašą\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Aplanko pavadinimas negali būti tuščias.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Svečio identifikacija\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Pradžia\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Pakeista\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Perkelti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Perkelti į {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Vardas\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Naujas\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Naujas aplankas\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naujas aplanko pavadinimas\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Čia failų nėra\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nepavyko rasti failų pagal filtro nustatymus\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nėra atitinkančių failų\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Įrašykite vardą iš mažiausiai dviejų ženklų.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nauji\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Žymėti visus įrašus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Žymėti įrašą\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pasirinkite eilutę {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Dydis\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Patvirtinti vardą\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atšaukti\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Įkelkite turinio arba sinchronizuokite su savo įrenginiais!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Šiuo metu nesate identifikuotas.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Negalite palikti tuščio vardo lauko.\"] }] }, { \"language\": \"lv\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" nav derīgs mapes nosaukums.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nav atļauts mapes nosaukums'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nav atļauts mapes nosaukuma izmantošanā.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visas datnes\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izvēlieties\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izvēlieties {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izvēlēties %n datņu\", \"Izvēlēties %n datni\", \"Izvēlēties %n datnes\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopēt\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopēt uz {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nevarēja izveidot jaunu mapi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nevarēja ielādēt datņu iestatījumus\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nevarēja ielādēt datņu apskatījumus\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Izveidot direktoriju\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pašreizēja skata atlasītājs\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorīti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kas tiks atzīmētas kā iecienītas.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kuras nesen tika izmainītas.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Atlasīt datņu sarakstu\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mapes nosaukums nevar būt tukšs.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Sākums\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmaninīta\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pārvietot\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pārvietot uz {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nosaukums\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Jauna mape\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Jaunas mapes nosaukums\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Šeit nav datņu\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Netika atrasta neviena datne, kas atbilst atlasei.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nav atbilstošu datņu\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nesenās\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Atlasīt visus ierakstus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Atlasīt ierakstu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Atlasīt rindu {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Izmērs\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atsaukt\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Augšupielādē kādu saturu vai sinhronizē savās iekārtās!\"] }] }, { \"language\": \"mk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не е дозволено во име.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" не е дозволено име.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" не е валидно име за папка/'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" не е дозволено име за папка'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" е резервирано име и не е дозволено.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" не е дозволена во име на папка.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфликт со датотекa\", \"%n конфликти со датотеки\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфликт со датотека во {dirname}\", \"%n конфликти со датотеки vo {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сите датотеки\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Прекини ја целата операција\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Избери\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Избери {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Избери %n датотека\", \"Избери %n датотеки\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Потврди\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај во {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Неможе да се креира нова папка\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Неможе да се вчиаат параметрите за датотеките\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Неможе да се вчитаат погледите за датотеките\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај папка\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Избирач на тековен приказ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Внесете го вашето име\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Моментална верзија\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Неуспешно поставување прекар.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Фаворити\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Датотеките и папките кој ќе ги означите за омилени ќе се појават овде.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Датотеките и папките кој неодамна сте ги измениле ќе се појават овде.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Филтрирај листа на датотеки\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Името на папката неможе да биде празно.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостинска идентификација\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетна\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги избереш двете верзии, влезната датотека ќе добие број додаден на нејзиното име.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Невалидно име.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Датумот на последна измена е непознат\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Променето\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести во {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имињата можат да бидат најмногу со 64 карактери.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имињата неможе да бидат празни.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имињата неможе да завршуваат со \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имињата неможе да започнуваат со точка.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нова папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ново име на папка\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема датотеки\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Не се пронајдени датотеки што одговараат на вашиот филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема датотеки што се совпаѓаат\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Внесете име со најмалку 2 карактери.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Неодамнешни\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Избери ги сите полиња за избор\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изберете ги сите записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изберете ги сите постоечки датотеки\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изберете ги сите нови датотеки\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Избери запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Избери ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Големина\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Прескокни %n датотека\", \"Прескокни %n датотеки\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Испрати име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Врати\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Прикачи содржина или синхронизирај со ваши уреди!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога е избрана влезна папка, сите конфликтни датотеки во неа исто така ќе бидат препишани.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога е избрана влезна папка, содржината се запишува во постоечката папка и се извршува рекурсивно решавање на конфликти.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакаш да ги зачуваш?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Моментално сте идентификувани како {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Моментално не сте идентификувани.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Не можете да го оставите името празно.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Треба да избереш најмалку едно решение за конфликт\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да избереш најмалку една верзија за секоја датотека за да продолжи.\"] }] }, { \"language\": \"ms_MY\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" adalah nama folder yang tidak sesuai '] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nama folder yang tidak dibenarkan'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" tidak dibenarkan dalam nama folder'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua fail\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih fail %n\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"menyalin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"menyalin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat mewujudkan folder baharu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuatkan tetapan fail\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuatkan paparan fail\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"mewujudkan direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"pemilih pandangan semasa\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Pilihan\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fail dan folder yang anda tanda sebagai pilihan akan dipaparkan di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fail dan folder yang anda telah ubah suai baru-baru ini dipaparkan di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Menapis senarai fail\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Nama folder tidak boleh kosong.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Utama\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ubah suai\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"pindah\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"pindah ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder Baharu\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baharu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tiada fail di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tiada fail yang sepadan dengan tapisan anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tiada fail yang sepadan\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"baru-baru ini\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"memilih baris {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Saiz\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"buat asal\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Muat naik beberapa kandungan atau selaras dengan peranti anda!\"] }] }, { \"language\": \"nb_NO\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tillatt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke et tillatt navn.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» er ikke et gyldig mappenavn.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» er ikke et tillatt mappenavn.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reservert navn og er ikke tillatt.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er ikke tillatt inne i et mappenavn.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Velg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Velg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Velg %n fil\", \"Velg %n filer\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke opprette den nye mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunne ikke laste filinnstillinger\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke laste filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opprett mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nåværende visningsvelger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Skriv inn navnet ditt\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunne ikke lagre kallenavnet.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper du markerer som favoritter vil vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper du nylig har endret, vil vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer filliste\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mappenavn kan ikke være tomt.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gjesteidentifikasjon\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldig navn.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifisert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navn kan ikke være tomme.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navn kan ikke ende med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navn kan ikke starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappenavn\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer her\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ingen filer funnet med ditt filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen filer samsvarer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Vennligst angi et navn som har minst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nylige\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velg alle oppføringer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velg oppføring\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Velg raden for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størrelse\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Bekreft navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Angre\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Last opp innhold eller synkroniser med enhetene dine!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er akkurat nå identifisert som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er akkurat nå ikke identifisert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke la navnet være blankt.\"] }] }, { \"language\": \"nl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"{char}is niet toegestaan in een mapnaam.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" kan niet gebruikt worden in de benaming.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is geen toegestane naam.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" is een gereserveerde naam en niet toegestaan in mapnamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is een gereserveerde naam en niet toegestaan.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n bestanden conflicteren\", \"%nbestand bestanden conflicteren\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n bestand conflicteerd in {dirname}\", \"%nbestanden conflicteert in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle bestanden\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuleer de hele bewerking\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiezen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Kies {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Kies %n bestand\", \"Kies %n bestanden\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bevestigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiëren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiëren naar {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kon de nieuwe map niet maken\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kon de bestandsinstellingen niet laden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kon de bestandsweergaves niet laden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Map aanmaken\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Huidige weergave keuze\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Voer je naam in\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kon geen bijnaam instellen.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorieten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Bestanden en mappen die je als favoriet markeert, verschijnen hier.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Bestanden en mappen die je recentelijk hebt gewijzigd, verschijnen hier.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Bestandslijst filteren\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mapnamen mogen niet eindigen op \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gastenidentificatie\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Thuis\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als u beide versies selecteert wordt een nummer toegevoegd aan de naam van het binnenkomende bestand.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ongeldige mapnaam.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ongeldige naam.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatste wijzigingsdatum onbekend\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Gewijzigd\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verplaatsen\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Verplaatsen naar {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naam\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen mogen maximaal 64 tekens lang zijn.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen mogen niet leeg zijn.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen mogen niet eindigen met \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen mogen niet begonnen met een punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nieuwe map\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nieuwe mapnaam\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Geen bestanden hier\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Geen bestanden gevonden die voldoen aan je filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Geen overeenkomende bestanden\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Voer een naam in met minimaal 2 tekens.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecteer alle aanvinkopties\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle invoer selecteren\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecteer alle bestaande bestanden\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecteer alle nieuwe bestanden\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Invoer selecteren\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecteer de rij voor {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Grootte\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Sla %n bestand over\", \"Sla %n bestanden over\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Sla dit bestand over\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Naam indienen\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ongedaan maken\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload inhoud of synchroniseer met je apparaten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Als een inkomende map wordt geselecteerd, worden alle conflicterende bestanden daarin overschreven.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Als een inkomende map wordt geselecteerd, wordt de inhoud naar de bestaande map geschreven en wordt een recursieve conflict-oplossing uitgevoerd.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wilt u bewaren?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Je wordt momenteel geïdentificeerd als {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Je bent momenteel niet geïdentificeerd.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Je kunt de naam niet leeg laten.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"U moet in elk geval een conflictoplossing kiezen\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"U moet minstens een versie van elk bestand kiezen om door te gaan. \"] }] }, { \"language\": \"pl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['Znak \"{char}\" nie jest dozwolony w nazwie folderu.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie jest dozwolone w nazwie.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie jest dozwoloną nazwą.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" jest nazwą zastrzeżoną i nie jest dozwolona jako nazwa folderu.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" jest zastrzeżoną nazwą i nie jest dozwolone.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"Konflikt pliku\", \"Konflikt %n plików\", \"Konflikt %n plików\", \"Konflikt %n plików\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konfliktów pliku w {dirname}\", \"%n konfliktów plików w {dirname}\", \"%n konfliktów plików w {dirname}\", \"%n konfliktów plików w {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Wszystkie pliki\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wybierz\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wybierz {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wybierz %n plik\", \"Wybierz %n pliki\", \"Wybierz %n plików\", \"Wybierz %n plików\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potwierdź\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiuj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Skopiuj do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nie można utworzyć nowego folderu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nie można wczytać ustawień plików\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nie można wczytać widoków plików\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Utwórz katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Bieżący selektor widoku\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Wprowadź nazwę\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nie udało się utworzyć pseudonimu.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ulubione\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Pliki i foldery które oznaczysz jako ulubione będą wyświetlały się tutaj\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Pliki i foldery które ostatnio modyfikowałeś będą wyświetlały się tutaj\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruj listę plików\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nazwy folderów nie mogą kończyć się na \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identyfikacja gościa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Strona główna\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy przychodzącego pliku zostanie dodany numer.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nieprawidłowa nazwa folderu.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nieprawidłowa nazwa.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data ostatniej modyfikacji nieznana\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Zmodyfikowano\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Przenieś\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Przejdź do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nazwa\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nazwy mogą mieć maksymalnie 64 znaki.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nazwy nie mogą być puste.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nazwy nie mogą kończyć się na \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nazwy nie mogą zaczynać się od kropki.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nowy folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nowa nazwa folderu\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Brak plików\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nie znaleziono plików spełniających warunki filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Brak pasujących plików\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Wprowadź nazwę zawierającą minimum 2 znaki.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Ostatni\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wybierz wszystkie wpisy\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wybierz wpis\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wybierz wiersz dla {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Rozmiar\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Pomiń %n plik\", \"Pomiń %n plików\", \"Pomiń %n plików\", \"Pomiń %n plików\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pomiń ten plik\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zatwierdź nazwę\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cofnij\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Wyślij zawartość lub zsynchronizuj ze swoimi urządzeniami!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu przychodzącego folderu wszystkie konfliktujące pliki w jego obrębie również zostaną nadpisane.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu przychodzącego folderu jego zawartość zostanie zapisana w istniejącym folderze i zostanie przeprowadzone rekursywne rozwiązywanie konfliktów.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Obecnie jesteś zidentyfikowany jako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Użytkownik nie został uwierzytelniony.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nazwa nie może być pusta.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Musisz wybrać co najmniej jedno rozwiązanie konfliktu\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] }] }, { \"language\": \"pt_BR\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome de pasta.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" é um nome reservado e não permitido para nomes de pasta.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não permitido.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n arquivo conflita\", \"%n de arquivos conflitam\", \"%n arquivos conflitam\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n conflito de arquivo em {dirname}\", \"%n de conflitos de arquivos em {dirname}\", \"%n conflitos de arquivos em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os arquivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolher %n arquivo\", \"Escolher %n arquivos\", \"Escolher %n arquivos\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar configurações de arquivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar visualições de arquivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar diretório\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Digite seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir apelido.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os arquivos e pastas que você marca como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Arquivos e pastas que você modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de arquivos\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nomes de pasta não podem terminar com \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidados\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do arquivo recebido.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome de pasta inválido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nomes não podem estar vazios.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar com \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nomes não podem começar com um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome de pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nenhum arquivo aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenhum arquivo correspondente ao seu filtro foi encontrado.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum arquivo correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Digite um nome com pelo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os arquivos existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos arquivos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecionar a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n arquivo\", \"Ignorar %n de arquivos\", \"Ignorar %n arquivos\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este arquivo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfazer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Faça upload de algum conteúdo ou sincronize com seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer arquivos conflitantes dentro dela também serão sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução recursiva de conflitos é realizada.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Você está atualmente identificado como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"No momento, você não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Você não pode deixar o nome vazio.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Você precisa escolher pelo menos uma solução para o conflito\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] }] }, { \"language\": \"pt_PT\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" é um nome de pasta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" não é um nome de pasta permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não é permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" não é permitido dentro do nome de pasta.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro em conflito\", \"%n ficheiros em conflito\", \"%n ficheiros em conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolha %n ficheiro\", \"Escolha %n ficheiros\", \"Escolha %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta \"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar as definições dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar as visualizações dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar pasta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir o nome alternativo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que marcar como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de ficheiros\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"O nome da pasta não pode estar vazio.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do ficheiro recebido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"O nome não pode ficar em branco.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar em \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes não podem começar por um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome da pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Sem ficheiros aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Não foi encontrado nenhum ficheiro correspondente ao seu filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum ficheiro correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza um nome com, pelo menos, 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recentes\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos ficheiros\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecione a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n ficheiro\", \"Ignorar %n ficheiros\", \"Ignorar %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submeter nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anular\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Envie algum conteúdo ou sincronize com os seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer ficheiros conflituantes dentro da mesma serão também sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e é realizada uma resolução recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais os ficheiros que deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Atualmente está identificado como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Atualmente, não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Não pode deixar o nome em branco.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É preciso escolher pelo menos uma solução para o conflito.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necessário selecionar pelo menos uma versão de cada ficheiro para continuar.\"] }] }, { \"language\": \"ro\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" este un nume de director invalid.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nu este un nume de director permis'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nu este permis în numele unui director.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Toate fișierele\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Alege\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Alege {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Alege %n fișier\", \"Alege %n fișiere\", \"Alege %n fișiere\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiază\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiază în {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nu s-a putut crea noul director\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nu s-au putut încărca setările fișierelor\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nu s-au putut încărca vizualizările fișierelor\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Creează director\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selectorul curent al vizualizării\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorite\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le marcați ca favorite vor apărea aici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le-ați modificat recent vor apărea aici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrează lista de fișiere\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Numele de director nu poate fi necompletat.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Acasă\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificat\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mută\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mută către {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nume\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Director nou\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Numele noului director\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nu există fișiere\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nu există fișiere potrivite pentru filtrul selectat\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nu există fișiere potrivite\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selectează toate înregistrările\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selectează înregistrarea\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selectează rândul pentru {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mărime\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anulează\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Încărcați conținut sau sincronizați cu dispozitivele dumneavoastră!\"] }] }, { \"language\": \"ru\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не допускается внутри имени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" это не допустимое имя.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» — недопустимое имя папки.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» не является разрешенным именем папки\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" это зарезервированное имя и не допустимо.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"Символ «/» не допускается внутри имени папки.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Все файлы\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Отмена\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Выбрать\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Выбрать «{file}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Выбрать %n файл\", \"Выбрать %n файла\", \"Выбрать %n файлов\", \"Выбрать %n файлов\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копировать\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копировать в «{target}»\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не удалось создать новую папку\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не удалось загрузить настройки файлов\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не удалось загрузить конфигурацию просмотра файлов\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Создать папку\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Переключатель текущего вида\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Введите ваше имя\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не удалось задать никнейм.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Избранное\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы пометили как избранные.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фильтровать список файлов\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Имя папки не может быть пустым.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостевая идентификация\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домой\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Неверное имя.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Изменен\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Переместить\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Переместить в «{target}»\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Имя\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имена не могут быть длинее 64 символов.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не могут быть пустыми.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имена не могут оканчиваться на \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена должны начинаться с точки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новая папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Имя новой папки\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Здесь нет файлов\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Файлы, соответствующие вашему фильтру, не найдены.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нет подходящих файлов\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Пожалуйста введите имя длиной не менее 2 символов.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Недавний\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Выбрать все записи\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Выбрать запись\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Выбрать строку для «{nodename}»\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Размер\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Отправить имя\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Отменить\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Загрузите контент или синхронизируйте его со своими устройствами!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вы идентифицированы как {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"В данный момент вы не идентифицированы.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Вы не можете оставить имя пустым.\"] }] }, { \"language\": \"sk_SK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" nie je povolené v názve priečinka.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie je povolené v rámci mena.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie je povolený názov.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ je rezervované meno a nie je povolené na názvy priečinkov.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" je rezervované meno a nie je povolené.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n konflikt súborov\", \"%n konflikty súborov\", \"%n konfliktov súborov\", \"%n konflikty súborov\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konflikt súborov v {dirname}\", \"%n konflikty súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Všetky súbory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vybrať\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vybrať {súbor}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vybraný %n súbor\", \"Vybrané %n súbory\", \"Vybraných %n súborov\", \"Vybraných %n súborov\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdiť\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopírovať\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopírovať do {umiestnenia}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepodarilo sa vytvoriť nový priečinok\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodarilo sa načítať nastavenia súborov\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodarilo sa načítať pohľady súborov\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvoriť adresár\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výber aktuálneho zobrazenia\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadajte svoje meno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodarilo sa nastaviť prezývku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Obľúbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré označíte ako obľúbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré ste nedávno upravili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovať zoznam súborov\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Názvy priečinkov nesmú končiť na \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikácia hosťa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, prichádzajúci súbor bude mať k svojmu názvu pridané číslo.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neplatný názov priečinka.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatné meno.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Posledná zmena dátumu neznáma\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Upravené\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Prejsť\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Prejsť na {umiestnenie}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Názov\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Mená môžu mať maximálne 64 znakov.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Mená nesmú byť prázdne.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Mená nesmú končiť \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Mená nesmú začínať bodkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Pridať\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Pridať priečinok\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Pridať názov priečinka\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nie sú tu žiadne súbory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenašli sa žiadne súbory zodpovedajúce vášmu filtru.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žiadne zodpovedajúce súbory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadajte meno s aspoň 2 znakmi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávne\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vyberte všetky zaškrtávacie políčka\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrať všetky položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrať položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vyberte riadok pre {názov uzla}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veľkosť\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Preskočiť %n súbor\", \"Preskočiť %n súbory\", \"Preskočiť %n súborov\", \"Preskočiť %n súbory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zadať meno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Späť\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte nejaký obsah alebo synchronizujte so svojimi zariadeniami!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraná prichádzajúca složka, všetky konfliktné súbory v nej budú taktiež prepísané.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Keď je vybraná prichádzajúca zložka, obsah sa zapíše do existujúcej zložky a vykoná sa rekurzívne riešenie konfliktov.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete zachovať?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Momentálne ste identifikovaný ako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Momentálne nie ste identifikovaný.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nemôžete nechať meno prázdne.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Musíte si vybrať aspoň jedno riešenie konfliktu.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Musíte vybrať aspoň jednu verziu každého súboru, aby ste mohli pokračovať.\"] }] }, { \"language\": \"sl\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} je neveljavno ime mape.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ni dovoljeno ime mape\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ni dovoljen v imenu mape.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Vse datoteke\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izberi\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izberi {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izberi %n datoteko\", \"Izberi %n datoteki\", \"Izberi %n datotek\", \"Izberi %n datotek\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj v {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nisem mogel ustvariti nove mape\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"NIsem mogel naložiti nastavitev datotek\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nisem mogel naložiti pogledov datotek\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ustvari mapo\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Izbirnik trenutnega pogleda\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Priljubljene\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Datoteke in mape ki jih označite kot priljubljene se bodo prikazale tukaj.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Daoteke in mape ki ste jih pred kratkim spremenili se bodo prikazale tukaj.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtriraj seznam datotek\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Ime mape ne more biti prazno\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Spremenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premakni\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premakni v {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ime\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova mapa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo ime mape\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tukaj ni datotek\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ni bilo najdenih ujemajočih datotek glede na vaš filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ni ujemajočih datotek\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedavne\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izberi vse vnose\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izberi vnos\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izberi vrstico za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Razveljavi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Naloži nekaj vsebine ali sinhroniziraj s svojimi napravami!\"] }] }, { \"language\": \"sr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}” није дозвољено унутар имена.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}” није дозвољено име.\"] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” није исправно име фолдера.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” није дозвољено име за фолдер.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}” је резервисано име и није дозвољено.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” није дозвољено унутар имена фолдера.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сви фајлови\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Изаберите\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Изаберите {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Изаберите %n фајл\", \"Изаберите %n фајла\", \"Изаберите %n фајлова\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај у {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Није могао да се креира нови фолдер\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не могу да се учитају подешавања фајлова\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не могу да се учитају прикази фајлова\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај директоријум\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Бирач тренутног приказа\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Унесите своје име\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Није успело постављање надимка.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Омиљено\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери које сте означили као омиљене.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери који се се недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фитрирање листе фајлова\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Име фолдера не може бити празно.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Идентификација госта\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетак\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Неисправно име.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Измењено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести у {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Највећа дужина имена може бити 64 карактера.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не смеју да буду празна.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Имена не смеју да се завршавају на „{extension}”.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена не смеју да почињу тачком.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нови фолдер\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Име новог фолдера\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема фајлова\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Није пронађен ниједан фајл који задовољава ваш филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема таквих фајлова\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Молимо вас да унесете име од барем два карактера.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Скорашње\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изаберите све ставке\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Изаберите ставку\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Изаберите ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Величина\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Предај име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Поништи\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Отпремите нешто или синхронизујте са својим уређајима!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Тренутно се идентификујете као {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Тренутно немате идентификацију.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Име не можете да оставите празно.\"] }] }, { \"language\": \"sr@latin\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” je neispravan naziv foldera.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” je nedozvoljen naziv foldera.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” se ne može koristiti unutar naziva foldera.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Svi fajlovi\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izaberite\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izaberite {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izaberite %n fajl\", \"Izaberite %n fajla\", \"Izaberite %n fajlova\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj u {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Neuspešno kreiranje novog foldera\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Neuspešno učitavanje podešavanja fajlova\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Neuspešno učitavanje prikaza fajlova\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Kreiraj direktorijum\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Birač trenutnog prikaza\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Omiljeno\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Lista omiljenih fajlova i foldera.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Lista fajlova i foldera sa skorašnjim izmenama.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fitriranje liste fajlova\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Naziv foldera ne može biti prazan.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Početak\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premesti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premesti u {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naziv\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novi folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naziv novog foldera\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Bez fajlova\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nema fajlova koji zadovoljavaju uslove filtera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nema takvih fajlova\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Skorašnje\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izaberite sve stavke\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izaberite stavku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izaberite red za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veličina\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Vrati\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Otpremite sadržaj ili sinhronizujte sa svojim uređajima!\"] }] }, { \"language\": \"sv\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett mappnamn.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett namn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" är inte ett tillåtet namn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet mappnamn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fil är i konflikt\", \"%n filer är i konflikt\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fil är i konflikt i {dirname}\", \"%n filer är i konflikt i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alla filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Välj\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Välj {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Välj %n fil\", \"Välj %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekräfta\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiera\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiera till {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunde inte skapa den nya mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunde inte ladda filinställningar\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunde inte ladda filvyer\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Skapa katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell vyväljare\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ange ditt namn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunde inte ställa in smeknamn.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer och mappar som du markerar som favorit kommer att visas här.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer och mappar som du nyligen ändrat kommer att visas här.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrera fillistan\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mappnamn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gästidentifiering\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att få ett nummer tillagt i sitt namn.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ogiltigt mappnamn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ogiltigt namn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ändrad\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytta till {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Namn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namnen kan vara högst 64 tecken långa.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namn får inte vara tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namn får inte börja med en punkt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mapp\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappnamn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Inga filer här\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Inga filer som matchar ditt filter hittades.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Inga matchande filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ange ett namn med minst 2 tecken.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nyligen\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Välj alla poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Välj post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Välj raden för {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Storlek\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Hoppa över %n fil\", \"Hoppa över %n filer\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över den här filen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Skicka namn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ångra\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ladda upp lite innehåll eller synkronisera med dina enheter!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs kommer eventuella konflikterande filer i den också att skrivas över.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du är för närvarande identifierad som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du är för närvarande inte identifierad.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan inte lämna namnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du måste välja minst en konfliktlösning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] }] }, { \"language\": \"tr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" karakteri bir klasör adında kullanılamaz.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Bir ad içinde \"{char}\" karakteri kullanılamaz.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" adına izin verilmiyor.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan klasör adlarında kullanılamaz.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan kullanılamaz.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n dosya çakışıyor\", \"%n dosya çakışıyor\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} içindeki %n dosya çakışıyor\", \"{dirname} içindeki %n dosya çakışıyor\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tüm dosyalar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seçin\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} seçin\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n dosya seçin\", \"%n dosya seçin\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Onayla\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopyala\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} üzerine kopyala\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yeni klasör oluşturulamadı\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dosyalar uygulamasının ayarları yüklenemedi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dosyalar uygulamasının görünümleri yüklenemedi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Klasör oluştur\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Geçerli görünüm seçici\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Adınızı yazın\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Takma ad ayarlanamadı.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Sık kullanılanlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Sık kullanılan olarak seçtiğiniz dosyalar burada görüntülenir.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Son zamanlarda değiştirdiğiniz dosya ve klasörler burada görüntülenir.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dosya listesini süz\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Klasör adları \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Konuk kimliği\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Giriş\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Klasör adı geçersiz.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ad geçersiz.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Değiştirilme\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Taşı\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} üzerine taşı\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ad\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Adlar en fazla 64 karakter uzunluğunda olabilir.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ad boş olamaz.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ad \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ad nokta karakteri ile başlayamaz.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yeni klasör\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yeni klasör adı\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Burada herhangi bir dosya yok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Süzgece uyan bir dosya bulunamadı.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Eşleşen bir dosya yok\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ad en az 2 karakter uzunluğunda olmalıdır.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Son kullanılanlar\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tüm kayıtları seç\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Kaydı seç\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} satırını seçin\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Boyut\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n dosyayı atla\", \"%n dosyayı atla\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Adı gönder\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Geri al\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içerik var olan klasöre yazılır ve alt klasörlerle bir çakışma çözümü uygulanır.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname} olarak tanınıyorsunuz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Henüz kendinizi tanıtmadınız.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ad boş bırakılamaz.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"En az bir çakışma çözümü seçmelisiniz\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosaynın en az bir sürümünü seçmelisiniz.\"] }] }, { \"language\": \"uk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"{char} не дозволено всередині назви каталогу.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не дозволено всередині імени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" недозволене ім'я.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"{segment} є зарезервованим ім'ям і не дозволено для назви каталогу.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" зарезервоване ім'я і не дозволено для використання.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфлікт файлів\", \"%n конфлікти файлів\", \"%n конфліктів файлів\", \"%n конфліктів файлів\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфлікт файлів у каталозі {dirname}\", \"%n конфлікти файлів у каталозі {dirname}\", \"%n конфліктів файлів у каталозі {dirname}\", \"%n конфліктів файлів у каталозі {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Всі файли\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати всю операцію\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Вибрати\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Вибрати {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Вибрати %n файл\", \"Вибрати %n файли\", \"Вибрати %n файлів\", \"Вибрати %n файлів\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Підтвердити\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копіювати\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копіювати до {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не вдалося створити новий каталог\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не вдалося завантажити налаштування файлів\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не вдалося завантажити подання файлів\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Створити каталог\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Вибір подання\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Зазначте ваше ім'я\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Наявна версія\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не вдалося встановити псевдо.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Із зірочкою\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які ви позначите зірочкою.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які було нещодавно змінено.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фільтрувати список файлів\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [`Ім'я каталогу не може закінчуватися на \"{extension}\".`] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ім'я для гостя\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домівка\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо вибрати обидві версії, до назви вхідного файлу буде додано цифру. \"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Недійсне ім'я каталогу.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Недійсне ім'я.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Змінено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Перемістити\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Перемістити до {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ім'я\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Імена мають мати довжину не більше 64 символів.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ім'я не може бути порожнє.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Ім'я не може закінчуватися на \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ім'я не може починатися з крапки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новий\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новий каталог\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ім'я нового каталогу\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Тут відсутні файли\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Відсутні збіги за фільтром.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Відсутні збіги файлів.\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Зазначте ім'я довжиною не менше 2 символів\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Останні\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати всі прапорці\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Вибрати всі записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати всі наявні файли\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати всі нові файли\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Вибрати запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Вибрати рядок для {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Розмір\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Пропустити %n файл\", \"Пропустити %n файли\", \"Пропустити %n файлів\", \"Пропустити %n файлів\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Встановити ім'я\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Повернути\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Завантажте вміст або синхронізуйте з вашим пристроєм!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Коли вибрано вхідний каталог, будь-які файли з конфліктами буде також перезаписано.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Коли вибрано вхідний каталог, вміст буде записано до існуючого каталогу, а також виконано вирішення конфліктів всередині каталогу.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вас визначено як {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Вас не ідентифіковано.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Потрібно зазначити ім'я.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Треб вибрати щонайменше одне рішення конфлікту\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба вибрати щонайменше одну версію кожного файлу, щоби продовжити.\"] }] }, { \"language\": \"uz\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Nom ichida \"{char}\" ga ruxsat berilmagan.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ruxsat etilgan nom emas.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" jild nomi yaroqsiz.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ruxsat etilgan jild nomi emas'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" - zaxiralangan nom va ruxsat berilmaydi.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" papka nomi ichida ruxsat berilmaydi.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fayl ziddiyatli\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} da %n fayl ziddiyati\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Barcha fayllar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tanlang\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tanlang {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tanlang %n faylni\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Tasdiqlang\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Nusxa\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\" {target} ga nusxa\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yangi jild yaratib bo‘lmadi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Fayl sozlamalari yuklanmadi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Fayllarni koʻrishni yuklab boʻlmadi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Katalog yaratish\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Joriy ko'rinish selektori\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ismingizni kiriting\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Taxallusni o‘rnatib bo‘lmadi.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Tanlanganlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tanlangan deb belgilagan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siz yaqinda oʻzgartirgan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fayl ro'yxatini filtrlash\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Jild nomi boʻsh boʻlishi mumkin emas.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Foydalanuvchini identifikatsiyalash\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Uy\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nomi noto‘g‘ri.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifikatsiyalangan\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Ko'chirish\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\" {target} ga ko'chirish\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nomi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ismlar ko'pi bilan 64 ta belgidan iborat bo'lishi mumkin.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ismlar bo'sh bo'lmasligi kerak.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ismlar \"{extension}\" bilan tugamasligi kerak.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ismlar nuqta bilan boshlanmasligi kerak.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yangi jild\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yangi jild nomi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Fayl mavjud emas\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Filtringizga mos keladigan fayl topilmadi.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Mos fayllar yo'q\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kamida 2 ta belgidan iborat nom kiriting.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Yaqinda\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Barcha yozuvlarni tanlang\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Yozuvni tanlang\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} uchun qatorni tanlang\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"O`lcham\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n faylni oʻtkazib yuborish\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ushbu faylni o'tkazib yuboring\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Ismni tasdiqlang\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Qurilmangizga ba'zi kontentni yuklang yoki sinxronlang!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Siz hozirda {nickname} sifatida aniqlangansiz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Siz hozirda identifikatsiyadan o'tmagansiz\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ism katagini bo'sh qoldirib bo'lmaydi.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Siz kamida bitta mojaro yechimini tanlashingiz kerak\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] }] }, { \"language\": \"vi\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" là tên thư mục không hợp lệ.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"1{name}\"không phải là tên thư mục được cho phép'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\"không được phép đặt trong tên thư mục.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tất cả tệp\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Chọn\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Chọn {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Chọn %n tệp\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Sao chép\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Sao chép đến {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Không thể tạo thư mục mới\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Không thể tải tập tin cài đặt\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Không thể tải xuống tệp xem\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Tạo thư mục\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Hiện tại chế độ xem của bộ chọn\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Yêu cầu thích\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn đánh dấu yêu thích sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn sửa đổi gần đây sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter list file\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Thư mục tên không được để trống.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Trang chủ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Đã sửa đổi\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Di chuyển\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Di chuyển đến{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Tên\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Mới\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New thư mục\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New thư mục tên\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No file at here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Không tìm thấy tệp nào phù hợp với bộ lọc của bạn.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No file phù hợp\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Gần đây\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Choose all items\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Chọn mục nhập\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Choose hang cho{nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Kích cỡ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Hoàn tác\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Tải lên một số nội dung hoặc đồng bộ hóa với thiết bị của bạn!\"] }] }, { \"language\": \"zh_CN\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"“{name}” 是无效的文件夹名称。\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"“{name}” 不是允许的文件夹名称\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"文件夹名称中不允许包含 “/”。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有文件\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"选择\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"选择 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"选择 %n 个文件\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"复制\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"复制到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"无法创建新文件夹\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"无法加载文件设置\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"无法加载文件视图\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"创建目录\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"当前视图选择器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最爱\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您标记为最爱的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"过滤文件列表\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"文件夹名称不能为空。\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"主目录\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移动\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移动至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名称\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新文件夹\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新文件夹名称\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此处无文件\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您过滤条件的文件\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"无符合的文件\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"选择所有条目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"选择条目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"选择 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\" 撤消\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上传一些项目或与您的设备同步!\"] }] }, { \"language\": \"zh_HK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名稱中不能使用 \"{char}\"。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"「{extension}」並非允許的名稱。\"] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"「{name}」是無效的資料夾名稱。\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"資料夾名稱「{name}」不符合允許的規範。\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"「{segment}」是一個保留名稱,不能使用。\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['資料夾名稱中不允許使用 \"/\"。'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n 檔案衝突\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 %n 個檔案衝突\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"選擇 %n 個檔案\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"確認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"無法載入檔案設定\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"無法載入檔案視圖\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前視圖選擇器\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"輸入您的名字\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現有的版本\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"無法設置暱稱。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"資料夾名稱不能為空。\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"訪客身份識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"首頁\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果您選擇兩個版本,傳入的檔案名稱將會附加一個數字。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無效的名字。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後的修改日期不詳\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名稱長度最多為 64 個字元。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名稱不能為空。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"名稱不得以「{extension}」結尾。\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"名稱不得以點開頭。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"沒有匹配的檔案\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"請輸入至少 2 個字符的名稱。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選擇所有復選框\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選擇所有項目\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選擇所有現有的檔案\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"選擇所有新檔案\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選擇項目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選擇 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"跳過 %n 個檔案\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳過此檔案\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"遞交名字\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"還原\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾時,其中任何衝突的檔案也將被覆蓋。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"當選取傳入資料夾時,內容將寫入現有資料夾,並執行遞歸衝突解決。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你想保留哪些檔案?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"您目前被識別為 {nickname}。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"您目前尚未被識別。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名稱不能留空。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"你需要選擇至少一種衝突解決方案。\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須選擇每個文件的至少一個版本才能繼續。\"] }] }, { \"language\": \"zh_TW\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid file name.', \"msgstr\": [\"「{name}」是無效的檔案名稱。\"] }, { \"msgid\": '\"{name}\" is not an allowed filetype', \"msgstr\": [\"「{name}」並非允許的檔案類型\"] }, { \"msgid\": '\"/\" is not allowed inside a file name.', \"msgstr\": [\"檔案名稱中不允許使用「/」。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前檢視選取器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"File name cannot be empty.\", \"msgstr\": [\"檔案名稱不能為空。\"] }, { \"msgid\": \"Filepicker sections\", \"msgstr\": [\"檔案挑選器選取\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"家\"] }, { \"msgid\": \"Mime type {mime}\", \"msgstr\": [\"Mime type {mime}\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"無符合的檔案\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選取所有條目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選取條目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選取 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"復原\"] }, { \"msgid\": \"unknown\", \"msgstr\": [\"未知\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步\"] }] }]) {\n const { language, translations } = data;\n const bundle = {\n headers: {},\n translations: {\n \"\": Object.fromEntries(translations.map((translation) => [translation.msgid, translation]))\n }\n };\n gtBuilder.addTranslation(language, bundle);\n}\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/dialogs\").detectLogLevel().build();\nvar FilePickerType = /* @__PURE__ */ ((FilePickerType2) => {\n FilePickerType2[FilePickerType2[\"Choose\"] = 1] = \"Choose\";\n FilePickerType2[FilePickerType2[\"Move\"] = 2] = \"Move\";\n FilePickerType2[FilePickerType2[\"Copy\"] = 3] = \"Copy\";\n FilePickerType2[FilePickerType2[\"CopyMove\"] = 4] = \"CopyMove\";\n FilePickerType2[FilePickerType2[\"Custom\"] = 5] = \"Custom\";\n return FilePickerType2;\n})(FilePickerType || {});\nclass FilePickerClosed extends Error {\n}\nclass FilePicker {\n title;\n multiSelect;\n mimeTypeFilter;\n directoriesAllowed;\n noMenu;\n buttons;\n path;\n filter;\n canPick;\n container;\n disabledNavigation;\n constructor(title, multiSelect, mimeTypeFilter, directoriesAllowed, noMenu, buttons, path, filter, canPick, container, disabledNavigation = false) {\n this.title = title;\n this.multiSelect = multiSelect;\n this.mimeTypeFilter = mimeTypeFilter;\n this.directoriesAllowed = directoriesAllowed;\n this.noMenu = noMenu;\n this.path = path;\n this.filter = filter;\n this.canPick = canPick;\n this.buttons = buttons;\n this.container = container;\n this.disabledNavigation = disabledNavigation;\n }\n /**\n * Pick files using the FilePicker.\n *\n * @return Promise with array of picked files or rejected promise on close without picking\n */\n async pickNodes() {\n const { default: FilePickerVue } = await import(\"./FilePicker-C1yRZfLt.mjs\");\n const nodes = await spawnDialog(FilePickerVue, {\n allowPickDirectory: this.directoriesAllowed,\n noMenu: this.noMenu,\n buttons: this.buttons,\n name: this.title,\n path: this.path,\n mimetypeFilter: this.mimeTypeFilter,\n multiselect: this.multiSelect,\n filterFn: this.filter,\n canPickFn: this.canPick,\n disabledNavigation: this.disabledNavigation\n }, {\n container: this.container\n });\n if (!Array.isArray(nodes) || nodes.length === 0) {\n throw new FilePickerClosed(\"FilePicker: No nodes selected\");\n }\n return nodes;\n }\n /**\n * Pick files using the FilePicker\n *\n * @return Promise with array of paths of picked files or rejected promise on close without picking\n */\n async pick() {\n const nodes = await this.pickNodes();\n if (this.multiSelect) {\n return nodes.map((node) => node.path);\n }\n const path = nodes[0]?.path ?? \"/\";\n return path;\n }\n}\nclass FilePickerBuilder {\n title;\n multiSelect = false;\n mimeTypeFilter = [];\n directoriesAllowed = false;\n noMenu = false;\n path;\n filter;\n canPick;\n buttons = [];\n container;\n disabledNavigation = false;\n /**\n * Construct a new FilePicker\n *\n * @param title Title of the FilePicker\n */\n constructor(title) {\n this.title = title;\n }\n /**\n * Set the container where the FilePicker will be mounted\n * By default 'body' is used\n *\n * @param container The dialog container\n */\n setContainer(container) {\n this.container = container;\n return this;\n }\n /**\n * Enable or disable picking multiple files\n *\n * @param ms True to enable picking multiple files, false otherwise\n */\n setMultiSelect(ms) {\n this.multiSelect = ms;\n return this;\n }\n /**\n * Add allowed MIME type\n *\n * @param filter MIME type to allow\n */\n addMimeTypeFilter(filter) {\n this.mimeTypeFilter.push(filter);\n return this;\n }\n /**\n * Set allowed MIME types\n *\n * @param filter Array of allowed MIME types\n */\n setMimeTypeFilter(filter) {\n this.mimeTypeFilter = filter;\n return this;\n }\n /**\n * Add a button to the FilePicker\n * Note: This overrides any previous `setButtonFactory` call\n *\n * @param button The button\n */\n addButton(button) {\n if (typeof this.buttons === \"function\") {\n logger.warn(\"FilePicker buttons were set to factory, now overwritten with button object.\");\n this.buttons = [];\n }\n this.buttons.push(button);\n return this;\n }\n /**\n * Set the button factory which is used to generate buttons from current view, path and selected nodes\n * Note: This overrides any previous `addButton` call\n *\n * @param factory The button factory\n */\n setButtonFactory(factory) {\n this.buttons = factory;\n return this;\n }\n /**\n * Set FilePicker type based on legacy file picker types\n *\n * @param type The legacy filepicker type to emulate\n * @deprecated Use `addButton` or `setButtonFactory` instead as with setType you do not know which button was pressed\n */\n setType(type) {\n this.buttons = (nodes, path) => {\n const buttons = [];\n const node = nodes[0];\n const target = node?.displayname || basename(path);\n if (type === 1) {\n let label = t(\"Choose\");\n if (nodes.length === 1) {\n label = t(\"Choose {file}\", { file: target });\n } else if (this.multiSelect) {\n label = n(\"Choose %n file\", \"Choose %n files\", nodes.length);\n }\n buttons.push({\n callback: () => {\n },\n label,\n variant: \"primary\"\n });\n }\n if (type === 4 || type === 3) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Copy to {target}\", { target }) : t(\"Copy\"),\n icon: IconCopy,\n variant: type === 3 ? \"primary\" : \"secondary\"\n });\n }\n if (type === 4 || type === 2) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Move to {target}\", { target }) : t(\"Move\"),\n icon: IconMove,\n variant: \"primary\"\n // move is always primary - also on copy-move\n });\n }\n return buttons;\n };\n return this;\n }\n /**\n * Allow to pick directories besides files\n *\n * @param allow True to allow picking directories\n */\n allowDirectories(allow = true) {\n this.directoriesAllowed = allow;\n return this;\n }\n /**\n * Allow to create New folders\n *\n * @param noMenu True to hide menu\n */\n setNoMenu(noMenu = true) {\n this.noMenu = noMenu;\n return this;\n }\n /**\n * Set starting path of the FilePicker\n *\n * @param path Path to start from picking\n */\n startAt(path) {\n this.path = path;\n return this;\n }\n /**\n * Add filter function to filter file list of FilePicker\n *\n * @param filter Filter function to apply\n */\n setFilter(filter) {\n this.filter = filter;\n return this;\n }\n /**\n * Add function to allow or not picking a node\n *\n * @param canPick Function to decide if a node can be picked\n */\n setCanPick(canPick) {\n this.canPick = canPick;\n return this;\n }\n /**\n * Disable navigation (view selection)\n */\n disableNavigation() {\n this.disabledNavigation = true;\n return this;\n }\n /**\n * Construct the configured FilePicker\n */\n build() {\n return new FilePicker(\n this.title,\n this.multiSelect,\n this.mimeTypeFilter,\n this.directoriesAllowed,\n this.noMenu,\n this.buttons,\n this.path,\n this.filter,\n this.canPick,\n this.container,\n this.disabledNavigation\n );\n }\n}\nfunction getFilePickerBuilder(title) {\n return new FilePickerBuilder(title);\n}\nasync function showGuestUserPrompt(props) {\n const name = await spawnDialog(\n defineAsyncComponent(() => import(\"./PublicAuthPrompt-7_GNN76e.mjs\")),\n props\n );\n return name;\n}\nconst LoaderSvg = '\\n\t\\n\t\\n\\n';\nvar ToastType = /* @__PURE__ */ ((ToastType2) => {\n ToastType2[\"ERROR\"] = \"toast-error\";\n ToastType2[\"WARNING\"] = \"toast-warning\";\n ToastType2[\"INFO\"] = \"toast-info\";\n ToastType2[\"SUCCESS\"] = \"toast-success\";\n ToastType2[\"UNDO\"] = \"toast-undo\";\n ToastType2[\"LOADING\"] = \"toast-loading\";\n return ToastType2;\n})(ToastType || {});\nconst TOAST_ARIA_LIVE_OFF = \"off\";\nconst TOAST_ARIA_LIVE_POLITE = \"polite\";\nconst TOAST_ARIA_LIVE_ASSERTIVE = \"assertive\";\nvar ToastAriaLive = /* @__PURE__ */ ((ToastAriaLive2) => {\n ToastAriaLive2[ToastAriaLive2[\"OFF\"] = TOAST_ARIA_LIVE_OFF] = \"OFF\";\n ToastAriaLive2[ToastAriaLive2[\"POLITE\"] = TOAST_ARIA_LIVE_POLITE] = \"POLITE\";\n ToastAriaLive2[ToastAriaLive2[\"ASSERTIVE\"] = TOAST_ARIA_LIVE_ASSERTIVE] = \"ASSERTIVE\";\n return ToastAriaLive2;\n})(ToastAriaLive || {});\nconst TOAST_UNDO_TIMEOUT = 1e4;\nconst TOAST_DEFAULT_TIMEOUT = 7e3;\nconst TOAST_PERMANENT_TIMEOUT = -1;\nfunction showMessage(data, options) {\n options = {\n timeout: TOAST_DEFAULT_TIMEOUT,\n isHTML: false,\n type: void 0,\n // An undefined selector defaults to the body element\n selector: void 0,\n onRemove: () => {\n },\n onClick: void 0,\n close: true,\n ...options\n };\n if (typeof data === \"string\" && !options.isHTML) {\n const element = document.createElement(\"div\");\n element.innerHTML = data;\n data = element.innerText;\n }\n let classes = options.type ?? \"\";\n if (typeof options.onClick === \"function\") {\n classes += \" toast-with-click \";\n }\n const isNode = data instanceof Node;\n let ariaLive = ToastAriaLive.POLITE;\n if (options.ariaLive) {\n ariaLive = options.ariaLive;\n } else if (options.type === \"toast-error\" || options.type === \"toast-undo\") {\n ariaLive = ToastAriaLive.ASSERTIVE;\n }\n const toast = Toastify({\n [!isNode ? \"text\" : \"node\"]: data,\n duration: options.timeout,\n callback: options.onRemove,\n onClick: options.onClick,\n close: options.close,\n gravity: \"top\",\n selector: options.selector,\n position: \"right\",\n backgroundColor: \"\",\n className: \"dialogs \" + classes,\n escapeMarkup: !options.isHTML,\n ariaLive\n });\n toast.showToast();\n return toast;\n}\nfunction showError(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-error\"\n /* ERROR */\n });\n}\nfunction showWarning(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-warning\"\n /* WARNING */\n });\n}\nfunction showInfo(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-info\"\n /* INFO */\n });\n}\nfunction showSuccess(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-success\"\n /* SUCCESS */\n });\n}\nfunction showLoading(text, options) {\n const loader = document.createElement(\"span\");\n loader.innerHTML = LoaderSvg;\n loader.classList.add(\"toast-loader\");\n const loaderContent = document.createElement(\"span\");\n loaderContent.classList.add(\"toast-loader-container\");\n loaderContent.innerText = text;\n loaderContent.appendChild(loader);\n return showMessage(loaderContent, {\n ...options,\n close: false,\n timeout: TOAST_PERMANENT_TIMEOUT,\n type: \"toast-loading\"\n /* LOADING */\n });\n}\nfunction showUndo(text, onUndo, options) {\n if (!(onUndo instanceof Function)) {\n throw new Error(\"Please provide a valid onUndo method\");\n }\n options = Object.assign(options || {}, {\n // force 10 seconds of timeout\n timeout: TOAST_UNDO_TIMEOUT\n });\n const undoContent = document.createElement(\"span\");\n const undoButton = document.createElement(\"button\");\n undoContent.classList.add(\"toast-undo-container\");\n undoButton.classList.add(\"toast-undo-button\");\n undoButton.innerText = t(\"Undo\");\n undoContent.innerText = text;\n undoContent.appendChild(undoButton);\n const toast = showMessage(undoContent, {\n ...options,\n type: \"toast-undo\"\n /* UNDO */\n });\n undoButton.addEventListener(\"click\", function(event) {\n event.stopPropagation();\n onUndo(event);\n if (toast?.hideToast instanceof Function) {\n toast.hideToast();\n }\n });\n return toast;\n}\nconst _hoisted_1 = [\"textContent\"];\nconst _hoisted_2 = [\"innerHTML\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"GenericDialog\",\n props: {\n name: {},\n text: {},\n html: {},\n buttons: {},\n severity: {}\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const dialogButtons = computed(() => props.buttons?.map((button) => ({\n ...button,\n callback() {\n button.callback();\n emit(\"close\", true);\n }\n })));\n const handleUnload = () => `${props.name}: ${props.text}`;\n onMounted(() => window.addEventListener(\"unload\", handleUnload));\n onUnmounted(() => window.removeEventListener(\"unload\", handleUnload));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n dialogClasses: \"nc-generic-dialog\",\n buttons: dialogButtons.value,\n name: __props.name,\n message: __props.text,\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"close\", false))\n }, {\n default: withCtx(() => [\n __props.severity ? (openBlock(), createBlock(unref(NcNoteCard), {\n key: 0,\n type: __props.severity\n }, {\n default: withCtx(() => [\n createElementVNode(\"p\", {\n textContent: toDisplayString(__props.text)\n }, null, 8, _hoisted_1)\n ]),\n _: 1\n }, 8, [\"type\"])) : createCommentVNode(\"\", true),\n __props.html ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n innerHTML: __props.html\n }, null, 8, _hoisted_2)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"buttons\", \"name\", \"message\"]);\n };\n }\n});\nclass Dialog {\n #name;\n #text;\n #buttons;\n #severity;\n constructor(name, text, buttons = [], severity) {\n this.#name = name;\n this.#text = text;\n this.#buttons = buttons;\n this.#severity = severity;\n }\n /**\n * Spawn and show the dialog - if already open the previous instance will be destroyed\n *\n * @return Promise that resolves when the dialog is answered successfully and rejects on close\n */\n async show() {\n const result = await spawnDialog(\n _sfc_main,\n {\n buttons: this.#buttons,\n name: this.#name,\n text: this.#text,\n severity: this.#severity\n }\n );\n if (!result) {\n throw new Error(\"Dialog closed\");\n }\n }\n}\nclass DialogBuilder {\n #severity;\n #text;\n #name;\n #buttons;\n constructor(name) {\n this.#severity = void 0;\n this.#text = \"\";\n this.#name = name ?? \"\";\n this.#buttons = [];\n }\n /**\n * Set dialog name\n *\n * @param name The name or headline of the dialog\n */\n setName(name) {\n this.#name = name;\n return this;\n }\n /**\n * Set the dialog text\n *\n * @param text Main text of the dialog\n */\n setText(text) {\n this.#text = text;\n return this;\n }\n /**\n * Set the severity of the dialog\n *\n * @param severity Severity of the dialog\n */\n setSeverity(severity) {\n this.#severity = severity;\n return this;\n }\n /**\n * Set buttons from array\n *\n * @param buttons Either an array of dialog buttons\n */\n setButtons(buttons) {\n if (this.#buttons.length > 0) {\n logger.warn(\"[@nextcloud/dialogs] Dialog buttons are already set - this overrides previous buttons.\");\n }\n this.#buttons = buttons;\n return this;\n }\n /**\n * Add a single button\n *\n * @param button Button to add\n */\n addButton(button) {\n this.#buttons.push(button);\n return this;\n }\n build() {\n return new Dialog(this.#name, this.#text, this.#buttons, this.#severity);\n }\n}\nfunction getDialogBuilder(name) {\n return new DialogBuilder(name);\n}\nasync function showConfirmation(options) {\n options = {\n labelConfirm: t(\"Confirm\"),\n ...options\n };\n const { promise, resolve } = Promise.withResolvers();\n const buttons = [{\n label: options.labelConfirm,\n variant: \"primary\",\n callback() {\n resolve(true);\n }\n }];\n if (options.labelReject) {\n buttons.unshift({\n label: options.labelReject,\n callback() {\n resolve(false);\n }\n });\n }\n const dialog = new Dialog(\n options.name,\n options.text,\n buttons,\n options.severity\n );\n await dialog.show();\n return promise;\n}\nexport {\n Dialog as D,\n FilePicker as F,\n TOAST_ARIA_LIVE_ASSERTIVE as T,\n FilePickerBuilder as a,\n FilePickerClosed as b,\n FilePickerType as c,\n showGuestUserPrompt as d,\n showInfo as e,\n showLoading as f,\n getFilePickerBuilder as g,\n showMessage as h,\n showSuccess as i,\n showUndo as j,\n showWarning as k,\n logger as l,\n TOAST_ARIA_LIVE_OFF as m,\n n,\n openConflictPicker as o,\n TOAST_ARIA_LIVE_POLITE as p,\n TOAST_DEFAULT_TIMEOUT as q,\n TOAST_PERMANENT_TIMEOUT as r,\n showError as s,\n t,\n TOAST_UNDO_TIMEOUT as u,\n ToastAriaLive as v,\n ToastType as w,\n DialogBuilder as x,\n getDialogBuilder as y,\n showConfirmation as z\n};\n//# sourceMappingURL=index-C1xmmKTZ.mjs.map\n"],"file":"index-C1xmmKTZ-DKmPRT9t.chunk.mjs"} \ No newline at end of file +{"version":3,"mappings":"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","names":["root","factory","module","this","global","Toastify","options","version","divElement","property","avatarElement","closeElement","event","width","self","x","getAxisOffsetAValue","y","xOffset","yOffset","rootElement","elementToInsert","toastElement","topLeftOffsetSize","topRightOffsetSize","offsetSize","allToasts","classUsed","i","containsClass","height","offset","axis","elem","yourClass","IconMove","IconCopy","gtBuilder","getGettextBuilder","data","language","translations","bundle","translation","gt","n","t","logger","getLoggerBuilder","FilePickerClosed","FilePicker","title","multiSelect","mimeTypeFilter","directoriesAllowed","noMenu","buttons","path","filter","canPick","container","disabledNavigation","FilePickerVue","__vitePreload","nodes","spawnDialog","node","FilePickerBuilder","ms","button","type","target","basename","label","allow","getFilePickerBuilder","LoaderSvg","TOAST_ARIA_LIVE_OFF","TOAST_ARIA_LIVE_POLITE","TOAST_ARIA_LIVE_ASSERTIVE","ToastAriaLive","ToastAriaLive2","TOAST_DEFAULT_TIMEOUT","TOAST_PERMANENT_TIMEOUT","showMessage","element","classes","isNode","ariaLive","toast","showError","text","showWarning","showInfo","showSuccess","showLoading","loader","loaderContent","_hoisted_1","_hoisted_2","_sfc_main","defineComponent","__props","__emit","props","emit","dialogButtons","computed","handleUnload","onMounted","onUnmounted","_ctx","_cache","openBlock","createBlock","unref","NcDialog","$event","withCtx","NcNoteCard","createElementVNode","toDisplayString","createCommentVNode","createElementBlock","Dialog","#name","#text","#buttons","#severity","name","severity","DialogBuilder","getDialogBuilder","showConfirmation","promise","resolve"],"ignoreList":[0,1],"sources":["../node_modules/toastify-js/src/toastify.js","../node_modules/@nextcloud/dialogs/dist/chunks/index-C1xmmKTZ.mjs"],"sourcesContent":["/*!\n * Toastify js 1.12.0\n * https://github.com/apvarun/toastify-js\n * @license MIT licensed\n *\n * Copyright (C) 2018 Varun A P\n */\n(function(root, factory) {\n if (typeof module === \"object\" && module.exports) {\n module.exports = factory();\n } else {\n root.Toastify = factory();\n }\n})(this, function(global) {\n // Object initialization\n var Toastify = function(options) {\n // Returning a new init object\n return new Toastify.lib.init(options);\n },\n // Library version\n version = \"1.12.0\";\n\n // Set the default global options\n Toastify.defaults = {\n oldestFirst: true,\n text: \"Toastify is awesome!\",\n node: undefined,\n duration: 3000,\n selector: undefined,\n callback: function () {\n },\n destination: undefined,\n newWindow: false,\n close: false,\n gravity: \"toastify-top\",\n positionLeft: false,\n position: '',\n backgroundColor: '',\n avatar: \"\",\n className: \"\",\n stopOnFocus: true,\n onClick: function () {\n },\n offset: {x: 0, y: 0},\n escapeMarkup: true,\n ariaLive: 'polite',\n style: {background: ''}\n };\n\n // Defining the prototype of the object\n Toastify.lib = Toastify.prototype = {\n toastify: version,\n\n constructor: Toastify,\n\n // Initializing the object with required parameters\n init: function(options) {\n // Verifying and validating the input object\n if (!options) {\n options = {};\n }\n\n // Creating the options object\n this.options = {};\n\n this.toastElement = null;\n\n // Validating the options\n this.options.text = options.text || Toastify.defaults.text; // Display message\n this.options.node = options.node || Toastify.defaults.node; // Display content as node\n this.options.duration = options.duration === 0 ? 0 : options.duration || Toastify.defaults.duration; // Display duration\n this.options.selector = options.selector || Toastify.defaults.selector; // Parent selector\n this.options.callback = options.callback || Toastify.defaults.callback; // Callback after display\n this.options.destination = options.destination || Toastify.defaults.destination; // On-click destination\n this.options.newWindow = options.newWindow || Toastify.defaults.newWindow; // Open destination in new window\n this.options.close = options.close || Toastify.defaults.close; // Show toast close icon\n this.options.gravity = options.gravity === \"bottom\" ? \"toastify-bottom\" : Toastify.defaults.gravity; // toast position - top or bottom\n this.options.positionLeft = options.positionLeft || Toastify.defaults.positionLeft; // toast position - left or right\n this.options.position = options.position || Toastify.defaults.position; // toast position - left or right\n this.options.backgroundColor = options.backgroundColor || Toastify.defaults.backgroundColor; // toast background color\n this.options.avatar = options.avatar || Toastify.defaults.avatar; // img element src - url or a path\n this.options.className = options.className || Toastify.defaults.className; // additional class names for the toast\n this.options.stopOnFocus = options.stopOnFocus === undefined ? Toastify.defaults.stopOnFocus : options.stopOnFocus; // stop timeout on focus\n this.options.onClick = options.onClick || Toastify.defaults.onClick; // Callback after click\n this.options.offset = options.offset || Toastify.defaults.offset; // toast offset\n this.options.escapeMarkup = options.escapeMarkup !== undefined ? options.escapeMarkup : Toastify.defaults.escapeMarkup;\n this.options.ariaLive = options.ariaLive || Toastify.defaults.ariaLive;\n this.options.style = options.style || Toastify.defaults.style;\n if(options.backgroundColor) {\n this.options.style.background = options.backgroundColor;\n }\n\n // Returning the current object for chaining functions\n return this;\n },\n\n // Building the DOM element\n buildToast: function() {\n // Validating if the options are defined\n if (!this.options) {\n throw \"Toastify is not initialized\";\n }\n\n // Creating the DOM object\n var divElement = document.createElement(\"div\");\n divElement.className = \"toastify on \" + this.options.className;\n\n // Positioning toast to left or right or center\n if (!!this.options.position) {\n divElement.className += \" toastify-\" + this.options.position;\n } else {\n // To be depreciated in further versions\n if (this.options.positionLeft === true) {\n divElement.className += \" toastify-left\";\n console.warn('Property `positionLeft` will be depreciated in further versions. Please use `position` instead.')\n } else {\n // Default position\n divElement.className += \" toastify-right\";\n }\n }\n\n // Assigning gravity of element\n divElement.className += \" \" + this.options.gravity;\n\n if (this.options.backgroundColor) {\n // This is being deprecated in favor of using the style HTML DOM property\n console.warn('DEPRECATION NOTICE: \"backgroundColor\" is being deprecated. Please use the \"style.background\" property.');\n }\n\n // Loop through our style object and apply styles to divElement\n for (var property in this.options.style) {\n divElement.style[property] = this.options.style[property];\n }\n\n // Announce the toast to screen readers\n if (this.options.ariaLive) {\n divElement.setAttribute('aria-live', this.options.ariaLive)\n }\n\n // Adding the toast message/node\n if (this.options.node && this.options.node.nodeType === Node.ELEMENT_NODE) {\n // If we have a valid node, we insert it\n divElement.appendChild(this.options.node)\n } else {\n if (this.options.escapeMarkup) {\n divElement.innerText = this.options.text;\n } else {\n divElement.innerHTML = this.options.text;\n }\n\n if (this.options.avatar !== \"\") {\n var avatarElement = document.createElement(\"img\");\n avatarElement.src = this.options.avatar;\n\n avatarElement.className = \"toastify-avatar\";\n\n if (this.options.position == \"left\" || this.options.positionLeft === true) {\n // Adding close icon on the left of content\n divElement.appendChild(avatarElement);\n } else {\n // Adding close icon on the right of content\n divElement.insertAdjacentElement(\"afterbegin\", avatarElement);\n }\n }\n }\n\n // Adding a close icon to the toast\n if (this.options.close === true) {\n // Create a span for close element\n var closeElement = document.createElement(\"button\");\n closeElement.type = \"button\";\n closeElement.setAttribute(\"aria-label\", \"Close\");\n closeElement.className = \"toast-close\";\n closeElement.innerHTML = \"✖\";\n\n // Triggering the removal of toast from DOM on close click\n closeElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.removeElement(this.toastElement);\n window.clearTimeout(this.toastElement.timeOutValue);\n }.bind(this)\n );\n\n //Calculating screen width\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Adding the close icon to the toast element\n // Display on the right if screen width is less than or equal to 360px\n if ((this.options.position == \"left\" || this.options.positionLeft === true) && width > 360) {\n // Adding close icon on the left of content\n divElement.insertAdjacentElement(\"afterbegin\", closeElement);\n } else {\n // Adding close icon on the right of content\n divElement.appendChild(closeElement);\n }\n }\n\n // Clear timeout while toast is focused\n if (this.options.stopOnFocus && this.options.duration > 0) {\n var self = this;\n // stop countdown\n divElement.addEventListener(\n \"mouseover\",\n function(event) {\n window.clearTimeout(divElement.timeOutValue);\n }\n )\n // add back the timeout\n divElement.addEventListener(\n \"mouseleave\",\n function() {\n divElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n self.removeElement(divElement);\n },\n self.options.duration\n )\n }\n )\n }\n\n // Adding an on-click destination path\n if (typeof this.options.destination !== \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n if (this.options.newWindow === true) {\n window.open(this.options.destination, \"_blank\");\n } else {\n window.location = this.options.destination;\n }\n }.bind(this)\n );\n }\n\n if (typeof this.options.onClick === \"function\" && typeof this.options.destination === \"undefined\") {\n divElement.addEventListener(\n \"click\",\n function(event) {\n event.stopPropagation();\n this.options.onClick();\n }.bind(this)\n );\n }\n\n // Adding offset\n if(typeof this.options.offset === \"object\") {\n\n var x = getAxisOffsetAValue(\"x\", this.options);\n var y = getAxisOffsetAValue(\"y\", this.options);\n\n var xOffset = this.options.position == \"left\" ? x : \"-\" + x;\n var yOffset = this.options.gravity == \"toastify-top\" ? y : \"-\" + y;\n\n divElement.style.transform = \"translate(\" + xOffset + \",\" + yOffset + \")\";\n\n }\n\n // Returning the generated element\n return divElement;\n },\n\n // Displaying the toast\n showToast: function() {\n // Creating the DOM object for the toast\n this.toastElement = this.buildToast();\n\n // Getting the root element to with the toast needs to be added\n var rootElement;\n if (typeof this.options.selector === \"string\") {\n rootElement = document.getElementById(this.options.selector);\n } else if (this.options.selector instanceof HTMLElement || (typeof ShadowRoot !== 'undefined' && this.options.selector instanceof ShadowRoot)) {\n rootElement = this.options.selector;\n } else {\n rootElement = document.body;\n }\n\n // Validating if root element is present in DOM\n if (!rootElement) {\n throw \"Root element is not defined\";\n }\n\n // Adding the DOM element\n var elementToInsert = Toastify.defaults.oldestFirst ? rootElement.firstChild : rootElement.lastChild;\n rootElement.insertBefore(this.toastElement, elementToInsert);\n\n // Repositioning the toasts in case multiple toasts are present\n Toastify.reposition();\n\n if (this.options.duration > 0) {\n this.toastElement.timeOutValue = window.setTimeout(\n function() {\n // Remove the toast from DOM\n this.removeElement(this.toastElement);\n }.bind(this),\n this.options.duration\n ); // Binding `this` for function invocation\n }\n\n // Supporting function chaining\n return this;\n },\n\n hideToast: function() {\n if (this.toastElement.timeOutValue) {\n clearTimeout(this.toastElement.timeOutValue);\n }\n this.removeElement(this.toastElement);\n },\n\n // Removing the element from the DOM\n removeElement: function(toastElement) {\n // Hiding the element\n // toastElement.classList.remove(\"on\");\n toastElement.className = toastElement.className.replace(\" on\", \"\");\n\n // Removing the element from DOM after transition end\n window.setTimeout(\n function() {\n // remove options node if any\n if (this.options.node && this.options.node.parentNode) {\n this.options.node.parentNode.removeChild(this.options.node);\n }\n\n // Remove the element from the DOM, only when the parent node was not removed before.\n if (toastElement.parentNode) {\n toastElement.parentNode.removeChild(toastElement);\n }\n\n // Calling the callback function\n this.options.callback.call(toastElement);\n\n // Repositioning the toasts again\n Toastify.reposition();\n }.bind(this),\n 400\n ); // Binding `this` for function invocation\n },\n };\n\n // Positioning the toasts on the DOM\n Toastify.reposition = function() {\n\n // Top margins with gravity\n var topLeftOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var topRightOffsetSize = {\n top: 15,\n bottom: 15,\n };\n var offsetSize = {\n top: 15,\n bottom: 15,\n };\n\n // Get all toast messages on the DOM\n var allToasts = document.getElementsByClassName(\"toastify\");\n\n var classUsed;\n\n // Modifying the position of each toast element\n for (var i = 0; i < allToasts.length; i++) {\n // Getting the applied gravity\n if (containsClass(allToasts[i], \"toastify-top\") === true) {\n classUsed = \"toastify-top\";\n } else {\n classUsed = \"toastify-bottom\";\n }\n\n var height = allToasts[i].offsetHeight;\n classUsed = classUsed.substr(9, classUsed.length-1)\n // Spacing between toasts\n var offset = 15;\n\n var width = window.innerWidth > 0 ? window.innerWidth : screen.width;\n\n // Show toast in center if screen with less than or equal to 360px\n if (width <= 360) {\n // Setting the position\n allToasts[i].style[classUsed] = offsetSize[classUsed] + \"px\";\n\n offsetSize[classUsed] += height + offset;\n } else {\n if (containsClass(allToasts[i], \"toastify-left\") === true) {\n // Setting the position\n allToasts[i].style[classUsed] = topLeftOffsetSize[classUsed] + \"px\";\n\n topLeftOffsetSize[classUsed] += height + offset;\n } else {\n // Setting the position\n allToasts[i].style[classUsed] = topRightOffsetSize[classUsed] + \"px\";\n\n topRightOffsetSize[classUsed] += height + offset;\n }\n }\n }\n\n // Supporting function chaining\n return this;\n };\n\n // Helper function to get offset.\n function getAxisOffsetAValue(axis, options) {\n\n if(options.offset[axis]) {\n if(isNaN(options.offset[axis])) {\n return options.offset[axis];\n }\n else {\n return options.offset[axis] + 'px';\n }\n }\n\n return '0px';\n\n }\n\n function containsClass(elem, yourClass) {\n if (!elem || typeof yourClass !== \"string\") {\n return false;\n } else if (\n elem.className &&\n elem.className\n .trim()\n .split(/\\s+/gi)\n .indexOf(yourClass) > -1\n ) {\n return true;\n } else {\n return false;\n }\n }\n\n // Setting up the prototype for the init object\n Toastify.lib.init.prototype = Toastify.lib;\n\n // Returning the Toastify function to be assigned to the window object/module\n return Toastify;\n});\n","import { spawnDialog } from \"@nextcloud/vue/functions/dialog\";\nimport { defineAsyncComponent, defineComponent, computed, onMounted, onUnmounted, createBlock, openBlock, unref, withCtx, createCommentVNode, createElementBlock, createElementVNode, toDisplayString } from \"vue\";\nimport { basename } from \"@nextcloud/paths\";\nimport { getGettextBuilder } from \"@nextcloud/l10n/gettext\";\nimport { getLoggerBuilder } from \"@nextcloud/logger\";\nimport Toastify from \"toastify-js\";\nimport NcDialog from \"@nextcloud/vue/components/NcDialog\";\nimport NcNoteCard from \"@nextcloud/vue/components/NcNoteCard\";\n/*!\n * SPDX-FileCopyrightText: 2022 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nasync function openConflictPicker(dirname, conflicts, content, options) {\n const ConflictPicker = defineAsyncComponent(() => import(\"./ConflictPicker-CWBf0soh.mjs\"));\n const incoming = [];\n const existing = [];\n for (const node of content) {\n if (isConflictingNode(node)) {\n existing.push(node);\n incoming.push(conflicts[indexOf(node)]);\n }\n }\n if (conflicts.length === 0 || content.length === 0) {\n throw new Error(\"ConflictPicker: files and conflicts must not be empty\");\n }\n if (conflicts.length !== content.length) {\n throw new Error(\"ConflictPicker: files and conflicts must have the same length. Make sure you filter out non conflicting files from the conflicts array.\");\n }\n return await spawnDialog(ConflictPicker, {\n dirname,\n existing,\n incoming,\n recursiveUpload: options?.recursive === true\n }, {\n container: options?.container\n });\n function isConflictingNode(node) {\n return conflicts.some((entry) => nodeIsConflict(node, entry));\n }\n function indexOf(node) {\n return conflicts.findIndex((entry) => nodeIsConflict(node, entry));\n }\n function nodeIsConflict(node, conflict) {\n if (\"basename\" in conflict) {\n return conflict.basename === node.basename;\n }\n return conflict.name === node.basename;\n }\n}\nconst IconMove = '';\nconst IconCopy = '';\nconst gtBuilder = getGettextBuilder().detectLanguage();\nfor (const data of [{ \"language\": \"ar\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" لا يصلح كاسم مجلد.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" غير مسموح به كاسم مجلد'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" غير مسموح به داخل اسم مجلد.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"كل الملفات\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"إختَر\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"إختر {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملف\", \"إختَر %n ملفات\", \"إختَر %n ملف\", \"إختر %n ملف\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"نسخ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"نسخ إلى {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"تعذّر إنشاء المجلد الجديد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"يتعذّر تحميل إعدادات الملفات\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"تعذر تحميل عرض الملفات\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"إنشاء مجلد\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"محدد العرض الحالي\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"المفضلة\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"الملفات والمجلدات التي تحددها كمفضلة ستظهر هنا.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"الملفات و المجلدات التي قمت مؤخراً بتعديلها سوف تظهر هنا.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"تصفية قائمة الملفات\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"اسم المجلد لا يمكن أن يكون فارغاً.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"البداية\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"التعديل\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"نقل\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"نقل إلى {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"الاسم\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جديد\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"مجلد جديد\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"اسم المجلد الجديد\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"لا توجد ملفات هنا\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"لا توجد ملفات تتطابق مع عامل التصفية الذي وضعته\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"لا توجد ملفات مطابقة\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"الحالي\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"حدد جميع الإدخالات\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"إختَر المدخل\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"إختر سطر الـ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"الحجم\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"تراجع\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"قم برفع بعض المحتوى أو المزامنة مع أجهزتك!\"] }] }, { \"language\": \"ast\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» ye un nome de carpeta inválidu\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"Nun se permite'l caráuter «/» dientro'l nome de les carpetes.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tolos ficheros\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoyer\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoyer «{ficheru}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoyer %n ficheru\", \"Escoyer %n ficheros\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nun se pudo crear la carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nun se pudo cargar la configuración de los ficheros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nun se pudieron cargar les vistes de los ficheros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un direutoriu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de la vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Equí apaecen los ficheros y les carpetes que metas en Favoritos.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Equí apaecen los fichero y les carpetes que modificares apocayá.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Peñerar la llista de ficheros\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nome de la carpeta nun pue tar baleru.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Aniciu\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificóse\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nueva\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nome de carpeta nuevu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Equí nun hai nengún ficheru\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nun s'atopó nengún ficheru que concasare cola peñera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nun hai nengún ficheru que concase\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"De recién\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleicionar toles entraes\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleicionar la entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleicionar la filera de: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamañu\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Xubi dalgún elementu o sincroniza colos tos preseos!\"] }] }, { \"language\": \"ca\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`No és permès d'usar el caràcter \"{char}\" en un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no és un nom permès.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no és vàlid com a nom de carpeta'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" és un mot reservat i no està permès com a nom.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [`\"/\" no està permès en el nom d'una carpeta.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflicte de fitxers\", \"%n conflictes de fitxers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n onflicte de fitxers a {dirname}\", \"%n conflictes de fitxers a {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tots els fitxers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel·lar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel·lar tota l'operació\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tria\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tria {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tria %n fitxer\", \"Tria %n fitxers\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirma\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No s'ha pogut crear la carpeta nova\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No es poden carregar fitxers de configuració\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No es poden carregar fitxers de vistes\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea un directori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de visualització actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Escriviu el vostre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versió existent\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"No s'ha pogut desar el sobrenom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferits\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes que marqueu com a favorits es mostraran aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Els fitxers i les carpetes recentment modificats es mostraran aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar llistat de fitxers\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nom de la carpeta no pot estar buit.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificació com a convidat\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inici\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccioneu les dues versions, el fitxer entrant tindrà un número afegit al seu nom.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom no vàlid.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data de l'última modificació desconeguda\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Data de modificació\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Desplaça\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Desplaça a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Els noms poden tenir com a màxim 64 caràcters.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Els noms no poden ser buits.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Els noms no poden acabar amb l'extensió \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Els noms no poden començar amb un punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Crea\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Carpeta nova\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom de la carpeta nova\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versió\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hi ha cap fitxer\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No s'ha trobat cap fitxer que coincideixi amb el filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hi ha cap fitxer que coincideixi\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Si us plau, escriu un nom amb 2 caràcters com a mínim.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecciona totes les caselles de selecció\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecciona totes les entrades\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecciona tots els fitxers existents\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecciona tots els fitxers nous\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecciona l'entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecciona la fila per a {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mida\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omet %n fitxer\", \"Omet %n fitxers\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omet aquest fitxer\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Entreu el nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfés\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Pugeu contingut o sincronitzeu-lo amb els vostres dispositius!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, també se sobreescriuran els fitxers que hi entrin en conflicte.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quan es selecciona una carpeta entrant, el contingut s'escriu a la carpeta existent i es realitza una resolució recursiva de conflictes.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quins fitxers voleu conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Actualment se us mostra com a {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Actualment no esteu identificat.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No podeu deixar el nom buit.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Heu de triar com a mínim una solució de conflicte\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Heu de seleccionar com a mínim una versió de cada fitxer per continuar.\"] }] }, { \"language\": \"cs_CZ\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"znak „{char}“ není možné použít uvnitř názvu složky.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ není možné použít uvnitř názvu.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ není možné použít jako název.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ je vyhrazeným názvem a není možné ho používat pro názvy složek.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ je vyhrazeným názvem a není možné ho použít.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n kolize souboru\", \"%n kolize souborů\", \"%n kolizí souborů\", \"%n kolize souborů\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n kolize souborů v {dirname}\", \"%n kolize souborů v {dirname}\", \"%n kolizí souborů v {dirname}\", \"%n kolize souborů v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Veškeré soubory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Storno\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušit celou operaci\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Zvolit\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Zvolit {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Zvolte %n soubor\", \"Zvolte %n soubory\", \"Zvolte %n souborů\", \"Zvolte %n soubory\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdit\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovat\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Zkopírovat\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Zkopírovat do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Novou složku se nepodařilo vytvořit\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodařilo se načíst nastavení pro soubory\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodařilo se načíst pohledy souborů\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvořit složku\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výběr stávajícího zobrazení\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadejte své jméno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existující verze\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodařilo se nastavit přezdívku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Oblíbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které označíte jako oblíbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Zde se zobrazí soubory a složky, které jste nedávno pozměnili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovat seznam souborů\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Názvy složek nemohou končit na „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikace hosta\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domů\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Pokud vyberete obě verze, pak k názvu příchozího souboru bude přidáno číslo.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neplatný název složky.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatný název.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum poslední změny neznámé\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Změněno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Přesounout\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Přesunout do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Název\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Je třeba, aby délka jmen nepřesahovala 64 znaků.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Názvy je třeba vyplnit.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Názvy nemohou končit na „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Názvy nemohou začínat tečkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nové\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nová složka\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Název pro novou složku\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verze\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nejsou zde žádné soubory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenalezeny žádné soubory odpovídající vašemu filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žádné odpovídající soubory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadejte jméno dlouhé alespoň 2 znaky.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávné\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vybrat všechny zaškrtávací kolonky\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrat všechny položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrat všechny existující soubory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrat všechny nové soubory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrat položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vybrat řádek pro {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Přeskočit %n soubor\", \"Přeskočit %n soubory\", \"Přeskočit %n souborů\", \"Přeskočit %n soubory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Přeskočit tento soubor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Odeslat jméno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Zpět\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte sem nějaký obsah nebo proveďte synchronizaci se svými zařízeními!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, budou v ní také přepsány jakékoli kolidující soubory.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Pokud je vybrána příchozí složka, je obsah zapsán do existující složky a je provedeno rekurzivní vyřešení kolizí.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Které soubory chcete ponechat?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"V tuto chvíli jste identifikováni jako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"V tuto chvíli nejste identifikovaní.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Jméno nelze ponechat nevyplněné.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Je třeba zvolit alespoň jedno z řešení kolize\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby bylo možné pokračovat, je třeba vybrat alespoň jednu verzi od každého souboru.\"] }] }, { \"language\": \"da\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke tilladt i et navn.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er et ugyldigt mappenavn.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ikke et tilladt mappenavn'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reserveret navn og er derfor ikke tilladt.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er ikke tilladt i et mappenavn.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n filkonflikt\", \"%n filer konflikter\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n filkonflikt i {dirname}\", \"%n filkonflikter i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annullér hele operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vælg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vælg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vælg %n fil\", \"Vælg %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekræft\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsæt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke oprette den nye mappe\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Filindstillingerne kunne ikke indlæses\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke indlæse filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opret mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuel visningsvælger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Indtast dit navn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Eksisterende version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Forsøg på at gemme kaldenavn mislykkedes.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper, du markerer som foretrukne, vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper, du for nylig har ændret, vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer fil liste\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mappenavnet må ikke være tomt.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gæsteidentifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Hvis du vælger begge versioner, vil den indkommende fil have et nummer tilføjet til sit navn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldigt navn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senest ændret dato ukendt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ændret\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flyt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flyt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Navne kan højst være 64 tegn lange.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navne kan ikke være tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navne må ikke ende på \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navne skal starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ny mappe navn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Der blev ikke fundet nogen filer, der matcher dit filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen matchende filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Indtast et navn med mindst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Seneste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markér alle afkrydsningsfelter\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vælg alle poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vælg alle eksisterende filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vælg alle nye filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vælg post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vælg rækken for {nodenavn}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størelse\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Spring %n fil over\", \"Spring %n filer over\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Spring denne fil over\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Indsend navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Fortryd\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload noget indhold eller synkroniser med dine enheder!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Når en indkommende mappe er valgt, vil eventuelle modstridende filer i det også blive overskrevet.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Når en indkommende mappe er valgt, er indholdet skrevet ind i den eksisterende mappe og en rekursiv konfliktløsning udføres.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hvilke filer vil du have?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er i øjeblikket identificeret som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er ikke identificeret.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke efterlade navnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du skal vælge mindst én konfliktløsning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du skal vælge mindst én version af hver fil for at fortsætte.\"] }] }, { \"language\": \"de\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Gib deinen Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du als Favorit markierst, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die du kürzlich geändert hast, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die deinem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lade Inhalte hoch oder synchronisiere diese mit deinen Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du bist derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du bist momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kannst den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"de_DE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Ordnernamens nicht zulässig.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ist innerhalb eines Namens nicht zulässig.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ist kein zulässiger Name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig für Ordnernamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ist ein reservierter Name und nicht zulässig.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n Dateikonflikt\", \"%n Dateikonflikte\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n Dateikonflikt in {dirname}\", \"%n Dateikonflikte in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle Dateien\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Abbrechen\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Den gesamten Vorgang abbrechen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Auswählen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} auswählen\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n Datei auswählen\", \"%n Dateien auswählen\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bestätigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsetzen\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopieren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Nach {target} kopieren\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Der neue Ordner konnte nicht erstellt werden\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dateieinstellungen konnten nicht geladen werden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dateiansichten konnten nicht geladen werden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Verzeichnis erstellen\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuelle Ansichtsauswahl\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Geben Sie Ihren Namen ein\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Vorhandene Version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Spitzname konnte nicht gespeichert werden.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie als Favorit markieren, werden hier angezeigt.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien und Ordner, die Sie kürzlich geändert haben, werden hier angezeigt.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dateiliste filtern\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ordnernamen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gast-Identifikation\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Wenn beide Versionen ausgewählt werden, wird dem Namen der eingehenden Datei eine Nummer hinzugefügt.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ungültiger Ordnername.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ungültiger Name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Datum der letzten Änderung unbekannt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geändert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verschieben\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Nach {target} verschieben\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen dürfen maximal 64 Zeichen lang sein.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen dürfen nicht leer sein.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen dürfen nicht mit \"{extension}\" enden.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen dürfen nicht mit einem Punkt beginnen.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Neu\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neuer Ordner\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neuer Ordnername\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Neue Version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Hier sind keine Dateien\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Es wurden keine Dateien gefunden, die Ihrem Filter entsprechen.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keine passenden Dateien\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Bitte einen Namen mit mindestens zwei Zeichen eingeben.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Neueste\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Alle Kontrollkästchen aktivieren\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle Einträge auswählen\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Alle vorhandenen Dateien auswählen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Alle neuen Dateien auswählen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Eintrag auswählen\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Die Zeile für {nodename} auswählen.\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Größe\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n Datei überspringen\", \"%n Dateien überspringen\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Diese Datei überspringen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Namen senden\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Rückgängig machen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Laden Sie Inhalte hoch oder synchronisieren Sie diese mit Ihren Geräten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Wenn ein eingehender Ordner ausgewählt wird, werden auch alle darin enthaltenen Dateien mit Konflikten überschrieben.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bei Auswahl eines eingehenden Ordners wird der Inhalt in den vorhandenen Ordner geschrieben und eine rekursive Konfliktlösung durchgeführt.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welche Dateien sollen behalten werden?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sie sind derzeit als {nickname} identifiziert.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sie sind momentan nicht identifiziert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sie können den Namen nicht leer lassen.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Es muss mindestens eine Konfliktlösung gewählt werden\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Es muss mindestens eine Version jeder Datei ausgewählt werden, um fortzufahren.\"] }] }, { \"language\": \"el\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"Το «{char}» δεν επιτρέπεται μέσα σε όνομα φακέλου.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" δεν επιτρέπεται μέσα σε ένα όνομα.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" δεν είναι επιτρεπτό όνομα.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"Το «{segment}» είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται για ονόματα φακέλων.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" είναι ένα δεσμευμένο όνομα και δεν επιτρέπεται.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n σύγκρουση αρχείου\", \"%n σύγκρουση αρχείων\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n σύγκρουση αρχείου στο {dirname}\", \"%n σύγκρουση αρχείων στο {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Όλα τα αρχεία\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Ακύρωση\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Ακύρωση όλης της διαδικασίας\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Επιλογή\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Επιλέξτε {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Επιλέξτε %n αρχείο\", \"Επιλέξτε %n αρχεία\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Επιβεβαίωση\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Συνέχεια\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Αντιγραφή\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Αντιγραφή στο {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Αδυναμία δημιουργίας νέου φακέλου\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Αδυναμία φόρτωσης ρυθμίσεων αρχείων\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Αδυναμία φόρτωσης προβολών αρχείων\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Δημιουργία καταλόγου\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Επιλογέας τρέχουσας προβολής\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Εισάγετε το όνομά σας\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Υφιστάμενη έκδοση\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Αποτυχία στην ρύθμιση του ψευδώνυμου.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Αγαπημένα\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που επισημάνετε ως αγαπημένα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Τα αρχεία και οι φάκελοι που τροποποιήσατε πρόσφατα θα εμφανίζονται εδώ.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Φιλτράρισμα λίστας αρχείων\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Τα ονόματα των φακέλων δεν πρέπει να τελειώνουν με «{extension}».\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ταυτοποίηση επισκέπτη\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Αρχική\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Εάν επιλέξετε και τις δύο εκδόσεις, στο όνομα του εισερχόμενου αρχείου θα προστεθεί ένας αριθμός.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Μη έγκυρο όνομα φακέλου.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Μη έγκυρο όνομα.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Άγνωστη ημερομηνία τελευταίας τροποποίησης\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Τροποποιήθηκε\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Μετακίνηση\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Μετακίνηση στο {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Όνομα\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Τα ονόματα μπορούν να έχουν μέγιστο μήκος 64 χαρακτήρες.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να είναι κενά.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Τα ονόματα δεν πρέπει να τελειώνουν με \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Τα ονόματα δεν πρέπει να ξεκινούν με τελεία.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Νέο\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Νέος φάκελος\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Όνομα νέου φακέλου\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Νέα έκδοση\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Δεν υπάρχουν αρχεία εδώ\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Δεν βρέθηκαν αρχεία που να ταιριάζουν με το φίλτρο σας.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Κανένα αρχείο δεν ταιριάζει\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Παρακαλώ εισάγετε ένα όνομα με τουλάχιστον 2 χαρακτήρες.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Πρόσφατα\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Επιλέξτε όλα τα πλαίσια ελέγχου\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Επιλογή όλων των καταχωρήσεων\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Επιλογή όλων των υπάρχοντων αρχείων\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Επιλογή όλων των νέων αρχείων\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Επιλογή εγγραφής\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Επιλέξτε τη γραμμή για το {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Μέγεθος\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Παράλειψη ενός αρχείου\", \"Παράλειψη %n αρχείων\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Παράλειψη αυτού το αρχείου\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Υποβολή ονόματος\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Αναίρεση\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ανεβάστε κάποιο περιεχόμενο ή συγχρονίστε με τις συσκευές σας!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Όταν επιλέγεται ένας φάκελος εισερχομένων, όλα τα αρχεία που βρίσκονται σε σύγκρουση μέσα σε αυτόν θα αντικατασταθούν επίσης.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Όταν επιλέγεται ένας φάκελος εισερχομένων, το περιεχόμενο εγγράφεται στον υπάρχοντα φάκελο και εκτελείται μια αναδρομική επίλυση σύγκρουσης.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ποια αρχεία θέλετε να διατηρήσετε;\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Αυτή τη στιγμή έχετε αναγνωριστεί ως {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Δεν έχετε ταυτοποιηθεί.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Δεν μπορείτε να αφήσετε το όνομα κενό.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία λύση σύγκρουσης\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Πρέπει να επιλέξετε τουλάχιστον μία έκδοση από κάθε αρχείο για να συνεχίσετε.\"] }] }, { \"language\": \"en_GB\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" is not allowed inside a folder name.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" is not allowed inside a name.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is not an allowed name.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" is a reserved name and cannot be used for folder names.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is a reserved name and not allowed.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n file conflict\", \"%n files conflict\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n file conflict in {dirname}\", \"%n file conflicts in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"All files\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancel\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancel the entire operation\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choose\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choose {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choose %n file\", \"Choose %n files\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirm\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continue\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copy\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copy to {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Could not create the new folder\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Could not load files settings\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Could not load files views\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Create directory\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Current view selector\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Enter your name\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existing version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Failed to set nickname.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favourites\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Files and folders you mark as favourite will show up here.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Files and folders you recently modified will show up here.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter file list\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Folder names must not end with \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Guest identification\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"If you select both versions, the incoming file will have a number added to its name.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Invalid folder name.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Invalid name.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Last modified date unknown\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modified\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Move\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Move to {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Name\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Names may be at most 64 characters long.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Names must not be empty.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Names must not end with \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Names must not start with a dot.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"New\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New folder name\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"New version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No files in here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No files matching your filter were found.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No matching files\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Please enter a name with at least 2 characters.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Select all checkboxes\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Select all entries\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Select all existing files\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Select all new files\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Select entry\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Select the row for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Size\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Skip %n file\", \"Skip %n files\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Skip this file\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submit name\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undo\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload some content or sync with your devices!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"When an incoming folder is selected, any conflicting files within it will also be overwritten.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Which files do you want to keep?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"You are currently identified as {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"You are currently not identified.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"You cannot leave the name empty.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"You need to choose at least one conflict solution\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"You need to select at least one version of each file to continue.\"] }] }, { \"language\": \"es\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no es un nombre permitido.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta no válido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido dentro del nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elige %n archivo\", \"Elige %n archivos\", \"Seleccione %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudieron cargar los ajustes de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ingrese su nombre\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Fallo al establecer apodo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación de invitado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nombre inválido.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Los nombres no deben estar vacíos.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Los nombres no deben terminar con \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Los nombres no deben iniciar con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\" Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nuevo nombre de carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidiesen con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Por favor, ingrese un nombre con al menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nombre\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Ud. se encuentra identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Ud. no se encuentra identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No puede dejar el nombre vacío.\"] }] }, { \"language\": \"es_AR\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" es un nombre de carpeta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" no es un nombre de carpeta permitido'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" no está permitido en el nombre de una carpeta.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Elegir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Elija {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Elija %n archivo\", \"Elija %n archivos\", \"Elija %n archivos\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"El nombre de la carpeta no puede estar vacío.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Cargue algún contenido o sincronice con sus dispositivos!\"] }] }, { \"language\": \"es_MX\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre de carpeta'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" no está permitido dentro de un nombre'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" no es un nombre permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido para nombres de carpetas'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" es un nombre reservado y no está permitido'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflicto de archivo\", \"%n conflicto de archivos\", \"%n conflicto de archivos\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n conflicto de archivo en {dirname}\", \"%n conflictos de archivo en {dirname}\", \"%n conflictos de archivo en {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos los archivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar la operación completa\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seleccionar\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Seleccionar {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Seleccionar %n archivo\", \"Seleccionar %n archivos\", \"Seleccionar %n archivos\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar a {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"No se pudo crear la nueva carpeta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"No se pudo cargar la configuración de archivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"No se pudieron cargar las vistas de los archivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear carpeta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ingresa tu nombre\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"No se pudo establecer el nickname\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Los archivos y carpetas que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Los archivos y carpetas que modificó recientemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de archivos\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Los nombres para carpeta no deben terminar con \"{extension}\"'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación de invitado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si seleccionas ambas versiones, se le agregará al archivo que se está descargando, un número a su nombre.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nombre de carpeta no válido\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nombre no válido\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Última fecha de modificación desconocida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nombre\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Los nombres pueden tener como máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Los nombres no deben estar vacíos.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Los nombres no deben terminar con \"{extension}\"'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Los nombres no deben comenzar con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuevo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nueva carpeta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nombre de nueva carpeta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Versión nueva\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No hay archivos aquí\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"No se encontraron archivos que coincidan con su filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No hay archivos coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Por favor ingrese un nombre con al menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Reciente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccione todas las casillas de verificación\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas las entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccione todos los archivos que aparecen\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccione todos los archivos nuevos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccione la fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omitir %n archivo\", \"Omitir %n archivos\", \"Omitir %n archivos\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este archivo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nombre\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Deshacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"¡Suba algún contenido o sincronice con sus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cuando se selecciona una carpeta en descarga, cualquier archivo conflictivo que contenga también se sobrescribirá.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cuando se selecciona una carpeta en descarga, el contenido se escribe en la carpeta existente y se realiza una resolución de conflicto recursiva.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"¿Qué archivos deseas conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Actualmente estás identificado como {nickname}\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"No estás identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"No puedes dejar el nombre vacío.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Necesitas elegir al menos una solución al conflicto.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Necesitas seleccionar al menos una versión de cada archivo para continuar.\"] }] }, { \"language\": \"et_EE\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"„{char}“ pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}“ pole nimes lubatud.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}“ pole lubatud nimi.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kausta nimes lubatud.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}“ on reserveeritud nimi ja pole kasutamiseks lubatud.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fail on vastuolus\", \"%n faili on omavahel vastuolus\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fail on {dirname} kaustas vastuolus\", \"%n faili on omavahel {dirname} kaustas vastuolus\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kõik failid\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Katkesta\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Katkesta kogu tegevus\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tee valik\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vali {file} fail\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vali %n fail\", \"Vali %n faili\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Kinnita\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Jätka\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopeeri\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopeeri sihtkohta „{target}“\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uut kausta ei saanud luua\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Failide seadistusi ei õnnestunud laadida\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Failide vaatamiskordi ei õnnestunud laadida\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Loo kaust\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Praeguse vaate valija\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Sisesta oma nimi\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Olemasolev versioon\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Hüüdnime ei õnnestunud lisada\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Lemmikud\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failid ja kaustad, mida märgistad lemmikuks, kuvatakse siin.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siin kuvatakse hiljuti muudetud failid ja kaustad.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtreeri faililoendit\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Kausta nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Külalise tuvastamine\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Avaleht\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Kui valid mõlemad versioonid, siis uue faili nimele lisatakse number.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Vigane kausta nimi.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Vigane nimi.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Viimase muutmise kuupäev pole teada\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muudetud\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Teisalda\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Teisalda kausta „{target}“\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimed võivad olla vaid kuni 64 tähemärki pikad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimi ei saa olla tühi.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Nime lõpus ei tohi olla „{extension}“.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nime alguses ei tohi olla punkt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uus\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uus kaust\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uue kausta nimi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Uus versioon\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Siin puuduvad failid\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Sinu filtrile vastavaid faile ei leidunud.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Puuduvad sobivad failid\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Palun sisesta vähemalt 2 tähemärki pikk nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Hiljutine\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vali kõik märkeruudud\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vali kõik kirjed\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vali kõik olemasolevad failid\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vali kõik uued failid\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vali kirje\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vali rida „{nodename}“ jaoks\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Suurus\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Jäta %n fail vahele\", \"Jäta %n faili vahele\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Jäta see fail vahele\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lisa nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tühista\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lisa mingit sisu või sünkrooni see oma seadmetest!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis kõik seal leiduvad vastuolus failid saavad üle kirjutatud.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kui uute failide kaust on valitud, siis sisu kirjutatakse olemasolevasse kausta ja korraldatakse rekursiivne failikonfliktide lahendamine.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Missugused failid tahaksid alles jätta?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sa oled hetkel tuvastatav kui {nickname}..\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sa oled hetkel tuvastamata.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Sa ei saa jätte nime tühjaks.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Sa pead valima vähemalt ühe failikonflikti lahenduse.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Jätkamaks pead valima igast failist vähemalt ühe versiooni.\"] }] }, { \"language\": \"fa\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} نام پوشه معتبر نیست\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} نام پوشه مجاز نیست\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" نمی‌تواند در نام پوشه استفاده شود.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"همه فایل‌ها\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"لغو\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"انتخاب\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"انتخاب {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"انتخاب %n فایل\", \"انتخاب %n فایل\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"رونوشت\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"رونوشت از {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"پوشه جدید ایجاد نشد\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"تنظیمات فایل باز نشد\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"نمای فایل‌ها بارگیری نشد\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ایجاد فهرست\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"انتخابگر نماگر فعلی\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"نام خود را وارد کنید\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"تنظیم نام مستعار ناموفق بود.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"علایق\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که به‌عنوان مورد علاقه علامت‌گذاری می‌کنید در اینجا نشان داده می‌شوند.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"فایل‌ها و پوشه‌هایی که اخیراً تغییر داده‌اید در اینجا نمایش داده می‌شوند.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"فیلتر لیست فایل\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"نام پوشه نمی تواند خالی باشد.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"شناسایی مهمان\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"خانه\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"اصلاح شده\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"انتقال\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"انتقال به {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"نام\"] }, { \"msgid\": \"New\", \"msgstr\": [\"جدید\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"پوشه جدید\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"نام پوشه جدید\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"فایلی اینجا نیست\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"هیچ فایلی مطابق با فیلتر شما یافت نشد.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"فایل منطبقی وجود ندارد\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"لطفاً نامی با حداقل ۲ کاراکتر وارد کنید.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"اخیر\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"انتخاب همه ورودی ها\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"انتخاب ورودی\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"انتخاب ردیف برای {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"اندازه\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ارسال نام\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"بازگردانی\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"مقداری محتوا آپلود کنید یا با دستگاه های خود همگام سازی کنید!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"شما در حال حاضر شناسایی نشده‌اید.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"نمی‌توانید نام را خالی بگذارید.\"] }] }, { \"language\": \"fi_FI\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" ei ole sallittu nimessä.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ei ole sallittu nimi.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" on virheellinen kansion nimi.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ei ole sallittu kansion nimi'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" on varattu nimi eikä se ole sallittu.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ei ole sallittu kansion nimessä.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Kaikki tiedostot\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Peruuta\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Valitse\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Valitse {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Valitse %n tiedosto\", \"Valitse %n tiedostoa\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopioi\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopioi sijaintiin {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Uutta kansiota ei voitu luoda\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tiedoston asetuksia ei saa ladattua\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tiedoston näkymiä ei saa ladattua\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Luo kansio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nykyisen näkymän valinta\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Kirjoita nimesi\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kutsumanimen asettaminen epäonnistui.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Suosikit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, jotka merkitset suosikkeihisi, näkyvät täällä.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tiedostot ja kansiot, joita muokkasit äskettäin, näkyvät täällä.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Suodata tiedostolistaa\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Kansion nimi ei voi olla tyhjä.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vieraan tunnistaminen\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Koti\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Virheellinen nimi.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Muokattu\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Siirrä\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Siirrä sijaintiin {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nimi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nimissä voi olla enintään 64 merkkiä.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nimet eivät saa olla tyhjiä.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nimet eivät saa päättyä sanaan \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nimet eivät saa alkaa pisteellä.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Uusi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Uusi kansio\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Uuden kansion nimi\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Täällä ei ole tiedostoja\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Suodatinta vastaavia tiedostoja ei löytynyt.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ei vastaavia tiedostoja\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kirjoita vähintään kaksi merkkiä sisältävä nimi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Viimeisimmät\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Valitse kaikki tietueet\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Valitse tietue\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Valitse rivi {nodename}:lle\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Koko\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Lähetä nimi\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Kumoa\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Lähetä jotain sisältöä tai synkronoi laitteidesi kanssa!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sinut tunnetaan tällä hetkellä nimellä {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Sinua ei ole tunnistettu.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nimeä ei voi jättää tyhjäksi.\"] }] }, { \"language\": \"fr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`\"{char}\" n'est pas autorisé dans un nom de dossier.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`\"{char}\" n'est pas autorisé dans un nom.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" n'est pas un nom autorisé.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`\"{segment}\" est un nom réservé et n'est pas autorisé pour un nom de dossier.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" est un nom réservé et n'est pas autorisé.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n conflit de fichier\", \"%n conflit de fichiers\", \"%n conflit de fichiers\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nconflit de fichier dans {dirname}\", \"%n conflit de fichiers dans {dirname}\", \"%nconflit de fichiers dans {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tous les fichiers\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tout annuler \"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Choisir\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Choisir {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Choisir %n fichier\", \"Choisir %n fichiers\", \"Choisir %n fichiers \"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmer\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuer\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copier vers {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossible de créer le nouveau dossier\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Les paramètres des fichiers n'ont pas pu être chargés\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossible de charger les vues des fichiers\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Créer un répertoire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Sélecteur d'affichage actuel\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Entrez votre nom\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Version actuelle \"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Échec de définition du surnom.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoris\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Les fichiers et répertoires marqués en favoris apparaîtront ici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Les fichiers et répertoires modifiés récemment apparaîtront ici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer la liste des fichiers\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Les noms de dossiers ne doivent pas se terminer par \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identification d'invité\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Accueil\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Si vous conservez les deux versions, le fichier reçu sera renommé avec un numéro.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nom de dossier invalide.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nom invalide.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Date de modification inconnue\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifié\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Déplacer\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Déplacer vers {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nom\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Les noms peuvent comporter au maximum 64 caractères.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Les noms ne peuvent pas être vides.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Les noms ne doivent pas se terminer par \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Les noms ne peuvent pas commencer par un point.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nouveau\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nouveau dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nom du nouveau dossier\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nouvelle version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aucun fichier ici\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Aucun fichier trouvé correspondant à votre filtre.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Aucun fichier correspondant\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Veuillez entrer un nom avec au moins 2 caractères.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Récents\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Sélectionner toutes les cases à cocher\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tout sélectionner\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Sélectionner tous les fichiers existants\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Sélectionner tous les nouveaux fichiers\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Sélectionner une entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Sélectionner la ligne correspondant à {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Taille\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorer %n fichier\", \"Ignorer %n fichiers \", \"Ignorer %n fichiers \"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorer ce fichier\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Envoyer le nom\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annuler\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Chargez du contenu ou synchronisez avec vos équipements !\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"En sélectionnant un dossier entrant, les fichiers en conflit qu’il contient seront automatiquement écrasés.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Lorsque vous sélectionnez un dossier entrant, son contenu est ajouté au dossier existant et les conflits sont résolus automatiquement.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quels fichiers souhaitez-vous conserver ?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vous êtes actuellement identifié comme {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vous n'êtes pas identifié actuellement.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vous ne pouvez pas laisser le nom vide.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Vous devez choisir au moins une option pour résoudre le conflit\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Sélectionnez au moins une version de chaque fichier pour continuer.\"] }] }, { \"language\": \"ga\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`Ní cheadaítear \"{char}\" laistigh d'ainm fillteáin.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`Ní cheadaítear \"{char}\" laistigh d'ainm.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['Ní ainm ceadaithe é \"{extension}\".'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [`Is ainm curtha in áirithe é \"{segment}\" agus ní cheadaítear é d'ainmneacha fillteán.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['Is ainm curtha in áirithe é \"{segment}\" agus ní cheadaítear é.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n coimhlint comhaid\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\", \"%n coimhlint comhad\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n coimhlint comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\", \"%n coimhlintí comhaid i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Gach comhad\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cealaigh an oibríocht ar fad\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Roghnaigh\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Roghnaigh {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Roghnaigh %n comhad\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\", \"Roghnaigh %n comhaid\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Deimhnigh\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Lean ar aghaidh\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Cóip\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Cóipeáil chuig {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Níorbh fhéidir an fillteán nua a chruthú\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Níorbh fhéidir socruithe comhaid a lódáil\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Níorbh fhéidir radhairc comhad a lódáil\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Cruthaigh eolaire\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Roghnóir amhairc reatha\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Cuir isteach d'ainm\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Leagan atá ann cheana féin\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Theip ar leasainm a shocrú.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ceanáin\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a mharcálann tú mar is fearr leat anseo.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Taispeánfar comhaid agus fillteáin a d'athraigh tú le déanaí anseo.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Scag liosta comhad\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Ní féidir ainmneacha fillteán a chríochnú le \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Aitheantas aoi\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Baile\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Má roghnaíonn tú an dá leagan, cuirfear uimhir le hainm an chomhaid atá ag teacht isteach.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ainm fillteáin neamhbhailí.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ainm neamhbhailí.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Dáta an athraithe dheireanaigh anaithnid\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Athraithe\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Bog\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Bog go{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ainm\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ní fhéadfaidh ainmneacha a bheith níos mó ná 64 carachtar ar fhad.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ní féidir ainmneacha a bheith folamh.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ní féidir ainmneacha a chríochnú le \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ní mór ainmneacha a bheith ag tosú le ponc.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nua\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Fillteán nua\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ainm fillteáin nua\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Leagan nua\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Níl aon chomhaid istigh anseo\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Níor aimsíodh aon chomhad a tháinig le do scagaire.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Gan comhaid meaitseála\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Cuir isteach ainm ina bhfuil 2 charachtar ar a laghad.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"le déanaí\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Roghnaigh na boscaí seiceála go léir\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Roghnaigh gach iontráil\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Roghnaigh na comhaid uile atá ann cheana\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Roghnaigh gach comhad nua\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Roghnaigh iontráil\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Roghnaigh an ró do {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méid\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Léim %n comhad\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\", \"Léim %n comhaid\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Scipeáil an comhad seo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Cuir isteach ainm\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cealaigh\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Uaslódáil roinnt ábhair nó sioncronaigh le do ghléasanna!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, déanfar aon chomhaid choimhlinteacha ann a athscríobh freisin.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Nuair a roghnaítear fillteán isteach, scríobhtar an t-ábhar isteach sa fhillteán atá ann cheana féin agus déantar réiteach coinbhleachta athchúrsach.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Cé na comhaid ar mhaith leat a choinneáil?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Is é {nickname} an ainm atá ort faoi láthair.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Níl aitheantas tugtha duit faoi láthair.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ní féidir leat an t-ainm a fhágáil folamh.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Ní mór duit réiteach coinbhleachta amháin ar a laghad a roghnú\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Ní mór duit leagan amháin ar a laghad de gach comhad a roghnú le leanúint ar aghaidh.\"] }] }, { \"language\": \"gl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"«{char}» non está permitido no nome dun cartafol.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"«{char}» non está permitido dentro dun nome.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"«{extension}» non é un nome permitido.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido para nomes de cartafoles.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"«{segment}» é un nome reservado e non está permitido.\"] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro en conflito\", \"%n ficheiros en conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro en conflito en {dirname}\", \"%n ficheiros en conflito en {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operación\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escoller\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escoller {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escoller %n ficheiro\", \"Escoller %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar en {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Non foi posíbel crear o novo cartafol\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Non foi posíbel cargar os axustes dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Non foi posíbel cargar as vistas dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crear un directorio\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selector de vista actual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versión existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Produciuse un fallo ao definir o alcume.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que marque como favoritos aparecerán aquí.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e cartafoles que modificou recentemente aparecerán aquí.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar a lista de ficheiros\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes de cartafol non deben rematar en «{extension}».\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificación do convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Inicio\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selecciona ambas as versións, o ficheiro entrante terá un número engadido ao seu nome.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"O nome de cartafol non é válido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome incorrecto\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificación descoñecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover cara a {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes poden ter unha lonxitude máxima de 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Os nomes non deben estar baleiros.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Os nomes non deben rematar en «{extension}».\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes non deben comezar cun punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novo cartafol\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome do cartafol\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versión\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Aquí non hai ficheiros\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Non se atopou ningún ficheiro que coincida co filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Non hai ficheiros coincidentes\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza un nome con polo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleccionar todas as caixas\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Seleccionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleccionar todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleccionar todos os ficheiros novos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleccionar a entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleccionar a fila para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamaño\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Omitir %n ficheiro\", \"Omitir %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Omitir este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar o nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfacer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Enviar algún contido ou sincronizalo cos seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, todos os ficheiros conflitivos dentro dela tamén serán sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Cando se selecciona un cartafol entrante, o contido escríbese no cartafol existente e realízase unha resolución recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Que ficheiros quere conservar?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Vde. está identificado actualmente como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Vde. non está identificado actualmente.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Vde. non pode deixar o nome baleiro.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É necesario escoller polo menos unha solución de conflito\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necesario seleccionar polo menos unha versión de cada ficheiro para continuar.\"] }] }, { \"language\": \"hr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"Znak „{char}” nije dopušten u nazivu mape.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"Znak „{char}” nije dopušten u nazivu.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nije dopušten u nazivu.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" je rezervirana riječ i nije dopušten u nazivu mape.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" je rezervirana riječ i nije dopušten.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"Sukobljava se %n datoteka\", \"Sukobljava se %n datoteke\", \"Sukobljava se %n datoteke\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n sukob datoteka u {dirname}\", \"%n sukoba datoteka u {dirname}\", \"%n sukoba datoteka u {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Sve datoteke\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Odustani\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Odustani od cijele operacije\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Odaberi\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Odaberi {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Odaberi %n datoteku\", \"Odaberi %n datoteka\", \"Odaberi %n datoteke\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdi\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Nastavi\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj u {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nije moguće stvoriti novu mapu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nije moguće učitati postavke datoteka\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nije moguće učitati prikaze datoteka\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Stvori mapu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Odabir trenutačnog prikaza\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Unesite vaše ime\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Postojeća verzija\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Neuspjelo postavljanje nadimka.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Ovdje se prikazuju datoteke i mape koje ste označili kao favoriti.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Ovdje se prikazuju datoteke i mape koje ste nedavno ažurirali.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtriranje liste datoteka\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nazivi mapa ne smiju završiti sa \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikacija gosta\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Naslovna\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ako odaberete obje verzije, dolaznoj datoteci bit će dodan broj u nazivu.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neispavan naziv mape.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neispravan naziv.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Nepoznat datum zadnjeg ažuriranja\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ažurirano\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premjesti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premjesti u {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naziv\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nazivi mogu imati najviše 64 znaka.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nazivi ne smiju biti prazni.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nazivi ne smiju završiti sa \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nazivi ne smiju započinjati točkom.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova mapa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novi naziv mape\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova verzija\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ovdje nema datoteka\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nisu pronađene datoteke koje odgovaraju vašem filtru.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nema odgovarajućih datoteka.\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Unesite naziv s najmanje 2 znaka.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedavno\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Označi sve potvrdne okvire\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Označi sve stavke\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Označi sve postojeće datoteke\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Označi sve nove datoteke\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Označi stavku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Označi red za{nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veličina\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Preskoči %n datoteku\", \"Preskoči %n datoteke\", \"Preskoči %n datoteke\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskoči ovu datoteku\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Pošalji naziv\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Poništi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Prenesite neki sadržaj ili sinkronizirajte sa svojim uređajima!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kada je odabrana dolazna mapa, sve datoteke unutar nje koje su u sukobu također će biti prepisane.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kada je odabrana dolazna mapa, sadržaj se upisuje u postojeću mapu i provodi se rekurzivno rješavanje sukoba.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Koje datoteke želite zadržati?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Trenutno ste identificirani kao {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Trenutno niste identificirani.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ne možete ostaviti naziv prazan.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Morate odabrati barem jedno rješenje sukoba\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Morate odabrati barem jednu verziju svake datoteke kako biste nastavili.\"] }] }, { \"language\": \"hu_HU\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nem engedélyezett névben.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nem engedélyezett név.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” érvénytelen mappanév.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” nem engedélyezett mappanév\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" foglalt név és nem engedélyezett.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” jel nem szerepelhet mappa nevében.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Minden fájl\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Mégse\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiválasztás\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} kiválasztása\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n fájl kiválasztása\", \"%n fájl kiválasztása\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Másolás\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Másolás ide: {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Az új mappa létrehozása nem lehetséges\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Fájlbeállítások betöltése nem lehetséges\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Fájlnézetek betöltése nem lehetséges\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Mappa létrehozása\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Jelenlegi nézet választó\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Add meg a neved\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Becenév beállítás sikertelen.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Kedvencek\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"A kedvencként megjelölt fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"A nemrég módosított fájlok és mappák itt jelennek meg.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fájl lista szűrése\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"A mappa neve nem lehet üres.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Vendég azonosítás\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Kezdőlap\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Érvénytelen név.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Módosítva\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mozgatás\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mozgatás ide: {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Név\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nevek nem lehetnek üresek.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nevek nem végződhetnek \"{extension}\"-re.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nevek nem kezdődhetnek ponttal.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Új\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Új mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Új mappa név\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Itt nincsenek fájlok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nincs a szűrési feltételeknek megfelelő fájl.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nincs ilyen fájl\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kérlek adj meg egy legalább 2 karakteres nevet.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Gyakori\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Minden bejegyzés kijelölése\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Bejegyzés kijelölése\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Válassz sort a következőnek: {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Méret\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Név beküldése\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Visszavonás\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Tölts fel tartalmat vagy szinkronizálj az eszközeiddel!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Jelenleg nem vagy azonosítva.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"A nevet nem hagyhatod üresen.\"] }] }, { \"language\": \"hy\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} սխալ թղթապանակի անվանում է\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} համարվում է անթույլատրելի թղթապանակի անվանում\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"/ չի թույլատրվում օգտագործել անվանման մեջ\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Բոլոր ֆայլերը\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Ընտրել\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Ընտրել {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Ընտրել %n ֆայլ\", \"Ընտրել %n ֆայլեր\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Պատճենել\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Պատճենել {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Չստացվեց ստեղծել նոր թղթապանակը\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլի կարգավորումները\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Չստացվեց բեռնել ֆայլերի դիտումները\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ստեղծել դիրեկտորիա\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Ընթացիկ դիտման ընտրիչ\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Նախընտրելիներ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք դուք նշել եք որպես նախընտրելիներ:\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Այստեղ կցուցադրվեն այն ֆայլերն ու պանակները, որոնք վերջերս փոխել եք:\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Ֆիլտրել ֆայլերի ցուցակը\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Թղթապանակի անունը չի կարող դատարկ լինել:\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Սկիզբ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Փոփոխված\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Տեղափոխել\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Տեղափոխել {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Անուն\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Նոր\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Նոր թղթապանակ\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Նոր թղթապանակի անվանում\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Այստեղ չկան ֆայլեր\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ձեր ֆիլտրին համապատասխանող ֆայլերը չեն գտնվել:\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Չկան համապատասխան ֆայլեր\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Վերջին\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Ընտրել բոլոր գրառումները\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Ընտրել բոլոր գրառումը\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Ընտրեք տողը {nodename}-ի համար \"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Չափ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ետարկել\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ներբեռնեք որոշ բովանդակություն կամ համաժամացրեք այն ձեր սարքերի հետ:\"] }] }, { \"language\": \"id\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" tidak diizinkan di dalam nama folder.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" tidak diizinkan di dalam nama.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" bukan nama yang diizinkan.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" adalah nama yang dicadangkan dan tidak diizinkan untuk nama folder.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" adalah nama yang dicadangkan dan tidak diizinkan.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n konflik file\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konflik file di {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua berkas\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Batal\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Batalkan seluruh operasi\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih %n file\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Konfirmasi\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Lanjutkan\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Salin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Salin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat membuat folder baru\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuat pengaturan file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuat tampilan file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Buat direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pemilih tampilan saat ini\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Masukkan nama Anda\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versi yang ada\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Gagal menetapkan nama panggilan.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorit\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda tandai sebagai favorit akan muncul di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Berkas dan folder yang Anda ubah baru-baru ini akan muncul di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Saring daftar berkas\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nama folder tidak boleh diakhiri dengan \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikasi tamu\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Beranda\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jika Anda memilih kedua versi, file yang masuk akan ditambahkan angka pada namanya.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nama folder tidak valid.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nama tidak valid.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Tanggal modifikasi terakhir tidak diketahui\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Diubah\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pindahkan\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pindahkan ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Panjang nama maksimal 64 karakter.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nama tidak boleh kosong.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nama tidak boleh diakhiri dengan \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nama tidak boleh diawali dengan titik.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder baru\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baru\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Versi baru\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tidak ada berkas di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tidak ada berkas yang cocok dengan penyaringan Anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tidak ada berkas yang cocok\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Silakan masukkan nama dengan minimal 2 karakter.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Terkini\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Pilih semua kotak centang\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Pilih semua file yang ada\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Pilih semua file baru\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pilih baris untuk {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Ukuran\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Lewati %n file\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Lewati file ini\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Kirim nama\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Tidak jadi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Unggah beberapa konten atau sinkronkan dengan perangkat Anda!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Saat folder yang masuk dipilih, semua file yang konflik di dalamnya juga akan ditimpa.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Saat folder yang masuk dipilih, konten ditulis ke dalam folder yang ada dan penyelesaian konflik rekursif dilakukan.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"File mana yang ingin Anda pertahankan?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Saat ini Anda teridentifikasi sebagai {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Saat ini Anda tidak teridentifikasi.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Anda tidak dapat membiarkan nama kosong.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Anda perlu memilih setidaknya satu solusi konflik\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Anda perlu memilih setidaknya satu versi dari setiap file untuk melanjutkan.\"] }] }, { \"language\": \"is\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" er ógilt möppuheiti.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" er ekki leyfilegt möppuheiti'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er er ekki leyfilegt innan í skráarheiti.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Allar skrár\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Veldu\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Veldu {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Veldu %n skrá\", \"Veldu %n skrár\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Afrita\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Afrita í {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Get ekki búið til nýju möppuna\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tókst ekki að hlaða inn stillingum skráa\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tókst ekki að hlaða inn sýnum skráa\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Búa til möppu\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Núverandi val sýnar\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Eftirlæti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú merkir sem eftirlæti birtast hér.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Skrár og möppur sem þú breyttir nýlega birtast hér.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Sía skráalista\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Möppuheiti má ekki vera tómt.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Heim\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Breytt\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Færa\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Færa í {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Heiti\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nýtt\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ný mappa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Heiti nýrrar möppu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Engar skrár hér\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Engar skrár fundust sem passa við síuna.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Engar samsvarandi skrár\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nýlegt\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velja allar færslur\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velja færslu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Veldu röðina fyrir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Stærð\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Afturkalla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Sendu inn eitthvað efni eða samstilltu við tækin þín!\"] }] }, { \"language\": \"it\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [`\"{char}\" non è consentito all'interno di un nome di cartella.`] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [`\"{char}\" non è consentito all'interno di un nome.`] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" non è un nome consentito'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" è un nome riservato e non consentito per i nomi delle cartelle.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" è un nome riservato e non consentito.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n file in conflitto\", \"%n file in conflitto\", \"%n file in conflitto\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n file in conflitto in {dirname}\", \"%n file in conflitto in {dirname}\", \"%n file in conflitto in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tutti i file\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annulla\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annulla l'intera operazione\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Scegli\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Scegli {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Scegli %n file\", \"Scegli %n file\", \"Scegli %n file\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Conferma\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continua\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copia\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copia in {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Impossibile creare la nuova cartella\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Impossibile caricare le impostazioni dei file\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Impossibile caricare le visualizzazioni dei file\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Crea cartella\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selettore della vista attuale\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Inserisci il tuo nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versione esistente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Impossibile impostare lo pseudonimo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Preferiti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"I file e le cartelle contrassegnate come preferite saranno mostrate qui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"I file e le cartelle che hai modificato di recente saranno mostrate qui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtra l'elenco dei file\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['I nomi delle cartelle devono finire con \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificazione ospiti\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Home\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se selezioni entrambe le versioni, al nome del file in arrivo verrà aggiunto un numero.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome cartella non valido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome non valido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data di ultima modifica sconosciuta\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificato\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Sposta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Sposta in {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"I nomi dovrebbero avere una lunghezza massima di 64 caratteri.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"I nomi non devono essere vuoti.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['I nomi devono finire con \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"I nomi non possono iniziare con un punto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nuovo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nuova cartella\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nome della nuova cartella\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nuova versione\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nessun file qui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nessun file che corrisponde al tuo filtro è stato trovato.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nessun file corrispondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Digita un nome con almeno 2 caratteri.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Seleziona tutte le caselle\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Scegli tutte le voci\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Seleziona tutti i file esistenti\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Seleziona tutti i nuovi file\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Seleziona la voce\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Seleziona la riga per {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Dimensioni\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Salta %n file\", \"Salta %n file\", \"Salta %n file\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Salta questo file\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Invia nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Annulla\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Carica qualche contenuto o sincronizza con i tuoi dispositivi!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, anche tutti i file in conflitto al suo interno saranno sovrascritti.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando si seleziona una cartella in arrivo, il contenuto viene scritto nella cartella esistente e viene eseguita una risoluzione ricorsiva dei conflitti.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quali file vuoi conservare?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Sei attualmente identificato come {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Attualmente non sei identificato.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Non puoi lasciare il nome vuoto.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Devi scegliere almeno una soluzione al conflitto\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Per continuare, è necessario selezionare almeno una versione di ciascun file.\"] }] }, { \"language\": \"ja_JP\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['フォルダー名に \"{char}\" を使用することはできません。'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名前に \"{char}\" を使用することはできません。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" は許可された名前ではありません。'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" は予約名のため、使用できません。'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" は予約名のため、使用できません。'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%nファイルが競合しています\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%nディレクトリ{dirname}内のファイル競合\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"すべてのファイル\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"キャンセル\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"すべての操作をキャンセル\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選択\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} を選択\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n 個のファイルを選択\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"確認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"続行\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"コピー\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} にコピー\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"新しいフォルダーを作成できませんでした\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ファイル設定を読み込めませんでした\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ファイルビューを読み込めませんでした\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ディレクトリを作成\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"現在のビュー選択\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"名前を入力してください\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現行バージョン\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ニックネームの設定に失敗しました。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"お気に入り\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"お気に入りとしてマークしたファイルとフォルダーがここに表示されます。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"最近変更したファイルとフォルダーがここに表示されます。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ファイルのリストをフィルター\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['フォルダー名の末尾に \"{extension}\" を使用できません。'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ゲスト識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ホーム\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"両方のバージョンを選択した場合、受信ファイル名には番号が追加されます。\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"フォルダー名が無効です。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無効な名前です。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最終更新日不明\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"変更済み\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} に移動\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名前\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名前は最大64文字です。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名前は空にできません。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['名前の末尾に \"{extension}\" を使用できません。'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ドットで始まる名前は使用できません。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新規作成\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新しいフォルダー\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新しいフォルダーの名前\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新バージョン\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ファイルがありません\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"フィルターに一致するファイルは見つかりませんでした。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"一致するファイルはありません\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"名前は2文字以上を入力してください。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"すべてのチェックボックスを選択\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"すべてのエントリを選択\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"既存のファイルをすべて選択\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"すべての新規ファイルを選択\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"エントリを選択\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} の行を選択\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"サイズ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n 個のファイルをスキップ\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"このファイルをスキップ\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"名前を送信する\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"元に戻す\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"コンテンツをアップロードするか、デバイスと同期してください!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"受信フォルダーを選択すると、そのフォルダー内の競合ファイルも上書きされます。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"受信フォルダーを選択すると、内容は既存のフォルダーに書き込まれ、再帰的な競合解決が実行されます。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"どのファイルを残しますか?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"現在、{nickname}として識別されています。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"現在あなたは識別されていません。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名前を空にすることはできません。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"少なくとも1つの競合ソリューションを選択する必要があります\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"続行するには、各ファイルのバージョンを少なくとも1つ選択する必要があります。\"] }] }, { \"language\": \"ko\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['폴더 이름 안에는 \"{char}\"를 사용할 수 없습니다.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\"는 이름 내에 사용할 수 없습니다.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\"은 허용되는 이름이 아닙니다.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\"는 예약된 이름이므로 폴더 이름으로 사용할 수 없습니다.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['같은 이름을 가진 \"{segment}\"이 이미 사용 중입니다.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n 파일 충돌\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 안의 %n 파일 충돌\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"모든 파일\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"취소\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"전체 작업 취소\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"선택\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} 선택\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n개의 파일 선택\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"확인\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"계속\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"복사\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target}으로 복사\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"새 폴더를 만들 수 없음\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"파일 설정을 불러오지 못함\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"파일 보기를 불러오지 못함\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"디렉토리 만들기\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"현재 뷰 선택자\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"이름을 입력하세요 \"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"기존 버전\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"닉네임을 설정하지 못했습니다.\\n \"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"즐겨찾기\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"즐겨찾기로 표시한 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"최근 수정한 파일 및 폴더가 이곳에 표시됩니다.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"파일 목록 필터링\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['폴더 이름은 \"{extension}\"로 끝나면 안됩니다.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"게스트 확인\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"홈\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"만약 두 버전 모두 선택한다면 들어오는 파일은 이름에 번호가 추가될 것입니다.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"폴더 이름이 잘못되었습니다.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"잘못된 이름입니다. \"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"최근 수정 날짜 알 수 없음\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"수정됨\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"이동\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target}으로 이동\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"이름\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"이름은 아마도 최대 64글자 입니다.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"이름은 비어 있으면 안 됩니다.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['이름은 \"{extension}\"로 끝나지 않아야 합니다.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"이름은 점으로 시작해서는 안 됩니다.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"새로 만들기\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"새 폴더\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"새 폴더명\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"새로운 버전\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"파일이 없습니다\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"선택한 필터에 해당하는 파일이 없습니다.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"일치하는 파일 없음\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"최소 2자 이상의 이름을 입력하십시오. \"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"최근\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"모든 체크박스 선택\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"모두 선택\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"모든 기존 파일 선택\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"모든 새 파일 선택\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"항목 선택\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename}의 행 선택\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"크기\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n 파일 건너뜀\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"이 파일 건너뜀\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"이름 제출\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"되돌리기\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"기기에서 파일을 업로드 또는 동기화하세요!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"들어오는 폴더를 선택하면 해당 폴더 내의 충돌하는 파일도 덮어쓰여집니다.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"들어오는 폴더를 선택하면 해당 콘텐츠가 기존 폴더에 기록되고 재귀적 충돌 해결이 수행됩니다.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"어떤 파일을 보관하시겠습니까?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname}로서 인증 상태 입니다.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"현재 인증되지 않았습니다.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"이름은 비워 둘 수 없습니다. \"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"최소한 하나의 갈등 해결 방안을 선택해야 합니다.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"계속 진행하려면 각 파일의 버전을 하나 이상 선택해야 합니다.\"] }] }, { \"language\": \"lb\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} ass en ongëlteg Dossier\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ass net en erlaabten Dossiernumm\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ass net an engem Dossier Numm erlaabt'] }, { \"msgid\": \"All files\", \"msgstr\": [\"All Dateien\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wielt\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wielt {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wielt %n Fichieren\", \"Wielt %n Fichier\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopie\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopie op {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Konnt den neien Dossier net erstellen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Konnt d'Dateienastellungen net lueden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Konnt d'Dateien net lueden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Erstellt Verzeechnes\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell Vue selector\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Dateien an Ordner, déi Dir als Favorit markéiert, ginn hei gewisen\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Dateien an Ordner déi Dir viru kuerzem geännert hutt ginn hei op\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter Datei Lëscht\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Dossier Numm kann net eidel sinn\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Wëllkomm\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Geännert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Plënne\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Plënneren {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Numm\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nei\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Neien dossier\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Neien dossier numm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Kee fichier hei\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Kee fichier deen äre filter passt gouf fonnt\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Keng passende dateien\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Rezent\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wielt all entréen\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wielt entrée\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wielt d'zeil fir {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Gréisst\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Undoen\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Luet en inhalt erop oder synchroniséiert mat ären apparater\"] }] }, { \"language\": \"lo\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"{char}\" ພາຍໃນຊື່.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ບໍ່ແມ່ນຊື່ທີ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" ແມ່ນຊື່ໂຟນເດີທີ່ບໍ່ຖືກຕ້ອງ.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ບໍ່ແມ່ນຊື່ໂຟນເດີທີ່ໄດ້ຮັບອະນຸຍາດ'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" ແມ່ນຊື່ທີ່ສະຫງວນໄວ້ ແລະ ບໍ່ໄດ້ຮັບອະນຸຍາດ.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['ບໍ່ອະນຸຍາດໃຫ້ມີ \"/\" ພາຍໃນຊື່ໂຟນເດີ.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການ\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"ໄຟລ໌ຂັດກັນ %n ລາຍການໃນ {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"ໄຟລ໌ທັງໝົດ\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"ຍົກເລີກ\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"ຍົກເລີກການດຳເນີນການທັງໝົດ\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"ເລືອກ\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"ເລືອກ {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"ເລືອກ %n ໄຟລ໌\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"ຢືນຢັນ\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"ດຳເນີນການຕໍ່\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"ຄັດລອກ\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"ຄັດລອກໄປທີ່ {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"ບໍ່ສາມາດສ້າງໂຟນເດີໃໝ່ໄດ້\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດການຕັ້ງຄ່າໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"ບໍ່ສາມາດໂຫຼດມຸມມອງໄຟລ໌ໄດ້\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"ສ້າງໄດເຣັກທໍຣີ\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"ຕົວເລືອກມຸມມອງປັດຈຸບັນ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"ປ້ອນຊື່ຂອງທ່ານ\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"ເວີຊັນທີ່ມີຢູ່\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"ຕັ້ງຊື່ຫຼິ້ນບໍ່ສຳເລັດ.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"ລາຍການທີ່ມັກ\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານໝາຍວ່າເປັນລາຍການທີ່ມັກຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"ໄຟລ໌ ແລະ ໂຟນເດີທີ່ທ່ານແກ້ໄຂລ່າສຸດຈະສະແດງຢູ່ບ່ອນນີ້.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"ກັ່ນຕອງລາຍການໄຟລ໌\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"ຊື່ໂຟນເດີຕ້ອງບໍ່ຫວ່າງເປົ່າ.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"ການລະບຸຕົວຕົນຂອງແຂກ\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"ໜ້າຫຼັກ\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"ຖ້າທ່ານເລືອກທັງສອງເວີຊັນ, ໄຟລ໌ທີ່ເຂົ້າມາຈະມີຕົວເລກເພີ່ມໃສ່ຊື່ຂອງມັນ.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"ຊື່ບໍ່ຖືກຕ້ອງ.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"ບໍ່ຮູ້ວັນທີແກ້ໄຂລ່າສຸດ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"ແກ້ໄຂເມື່ອ\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"ຍ້າຍ\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"ຍ້າຍໄປທີ່ {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"ຊື່\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"ຊື່ອາດມີຄວາມຍາວສູງສຸດ 64 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຫວ່າງເປົ່າ.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['ຊື່ຕ້ອງບໍ່ລົງທ້າຍດ້ວຍ \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"ຊື່ຕ້ອງບໍ່ຂຶ້ນຕົ້ນດ້ວຍຈຸດ.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"ໃໝ່\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"ຊື່ໂຟນເດີໃໝ່\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"ເວີຊັນໃໝ່\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ຢູ່ບ່ອນນີ້\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"ບໍ່ພົບໄຟລ໌ທີ່ກົງກັບການກັ່ນຕອງຂອງທ່ານ.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"ບໍ່ມີໄຟລ໌ທີ່ກົງກັນ\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"ກະລຸນາປ້ອນຊື່ທີ່ມີຢ່າງໜ້ອຍ 2 ຕົວອັກສອນ.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"ລ່າສຸດ\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"ເລືອກກ່ອງໝາຍທັງໝົດ\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"ເລືອກທຸກລາຍການ\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"ເລືອກໄຟລ໌ທີ່ມີຢູ່ທັງໝົດ\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"ເລືອກໄຟລ໌ໃໝ່ທັງໝົດ\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"ເລືອກລາຍການ\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"ເລືອກແຖວສຳລັບ {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"ຂະໜາດ\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"ຂ້າມ %n ໄຟລ໌\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"ຂ້າມໄຟລ໌ນີ້\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"ສົ່ງຊື່\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"ເອົາຄືນ\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"ອັບໂຫຼດເນື້ອຫາ ຫຼື ຊິງຄ໌ກັບອຸປະກອນຂອງທ່ານ!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ໄຟລ໌ໃດໆທີ່ຂັດກັນພາຍໃນໂຟນເດີນັ້ນກໍຈະຖືກຂຽນທັບເຊັ່ນກັນ.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"ເມື່ອເລືອກໂຟນເດີທີ່ເຂົ້າມາ, ເນື້ອຫາຈະຖືກຂຽນລົງໃນໂຟນເດີທີ່ມີຢູ່ ແລະ ຈະມີການແກ້ໄຂຂໍ້ຂັດແຍ່ງແບບຕໍ່ເນື່ອງ.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"ທ່ານຕ້ອງການເກັບໄຟລ໌ໃດໄວ້?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຖືກລະບຸວ່າເປັນ {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"ຕອນນີ້ທ່ານຍັງບໍ່ໄດ້ຖືກລະບຸຕົວຕົນ.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"ທ່ານບໍ່ສາມາດປະຊື່ໃຫ້ຫວ່າງເປົ່າໄດ້.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກວິທີແກ້ໄຂຂໍ້ຂັດແຍ່ງຢ່າງໜ້ອຍໜຶ່ງຢ່າງ\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"ທ່ານຈຳເປັນຕ້ອງເລືອກຢ່າງໜ້ອຍໜຶ່ງເວີຊັນຂອງແຕ່ລະໄຟລ໌ເພື່ອດຳເນີນການຕໍ່.\"] }] }, { \"language\": \"lt_LT\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}“ yra netinkamas aplanko pavadinimas.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}“ yra neleidžiamas aplanko pavadinimas\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/“ yra neleidžiamas aplanko pavadinime.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visi failai\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Atšaukti\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pasirinkti\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pasirinkti {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pasirinkti %n failą\", \"Pasirinkti %n failus\", \"Pasirinkti %n failų\", \"Pasirinkti %n failą\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopijuoti\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopijuoti į {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepavyko sukurti naujo aplanko\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepavyko įkelti failų nustatymų\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepavyko įkelti failų peržiūrų\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Sukurti katalogą\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Dabartinis peržiūros pasirinkimas\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Įrašykite savo vardą\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepavyko nustatyti slapyvardžio\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Populiariausi\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Failai ir aplankai, kuriuos pažymėsite kaip mėgstamiausius, bus rodomi čia.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Čia bus rodomi failai ir aplankai, kuriuos neseniai pakeitėte.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruoti failų sąrašą\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Aplanko pavadinimas negali būti tuščias.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Svečio identifikacija\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Pradžia\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Pakeista\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Perkelti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Perkelti į {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Vardas\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Naujas\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Naujas aplankas\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naujas aplanko pavadinimas\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Čia failų nėra\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nepavyko rasti failų pagal filtro nustatymus\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nėra atitinkančių failų\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Įrašykite vardą iš mažiausiai dviejų ženklų.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nauji\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Žymėti visus įrašus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Žymėti įrašą\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Pasirinkite eilutę {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Dydis\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Patvirtinti vardą\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atšaukti\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Įkelkite turinio arba sinchronizuokite su savo įrenginiais!\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Šiuo metu nesate identifikuotas.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Negalite palikti tuščio vardo lauko.\"] }] }, { \"language\": \"lv\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" nav derīgs mapes nosaukums.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nav atļauts mapes nosaukums'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nav atļauts mapes nosaukuma izmantošanā.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Visas datnes\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izvēlieties\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izvēlieties {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izvēlēties %n datņu\", \"Izvēlēties %n datni\", \"Izvēlēties %n datnes\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopēt\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopēt uz {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nevarēja izveidot jaunu mapi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nevarēja ielādēt datņu iestatījumus\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nevarēja ielādēt datņu apskatījumus\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Izveidot direktoriju\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Pašreizēja skata atlasītājs\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorīti\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kas tiks atzīmētas kā iecienītas.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Šeit parādīsies datnes un mapes, kuras nesen tika izmainītas.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Atlasīt datņu sarakstu\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mapes nosaukums nevar būt tukšs.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Sākums\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmaninīta\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Pārvietot\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Pārvietot uz {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nosaukums\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Jauns\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Jauna mape\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Jaunas mapes nosaukums\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Šeit nav datņu\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Netika atrasta neviena datne, kas atbilst atlasei.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nav atbilstošu datņu\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nesenās\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Atlasīt visus ierakstus\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Atlasīt ierakstu\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Atlasīt rindu {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Izmērs\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Atsaukt\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Augšupielādē kādu saturu vai sinhronizē savās iekārtās!\"] }] }, { \"language\": \"mk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не е дозволено во име.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" не е дозволено име.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" не е валидно име за папка/'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" не е дозволено име за папка'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" е резервирано име и не е дозволено.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" не е дозволена во име на папка.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфликт со датотекa\", \"%n конфликти со датотеки\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфликт со датотека во {dirname}\", \"%n конфликти со датотеки vo {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сите датотеки\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Прекини ја целата операција\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Избери\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Избери {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Избери %n датотека\", \"Избери %n датотеки\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Потврди\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продолжи\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај во {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Неможе да се креира нова папка\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Неможе да се вчиаат параметрите за датотеките\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Неможе да се вчитаат погледите за датотеките\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај папка\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Избирач на тековен приказ\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Внесете го вашето име\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Моментална верзија\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Неуспешно поставување прекар.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Фаворити\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Датотеките и папките кој ќе ги означите за омилени ќе се појават овде.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Датотеките и папките кој неодамна сте ги измениле ќе се појават овде.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Филтрирај листа на датотеки\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Името на папката неможе да биде празно.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостинска идентификација\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетна\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ако ги избереш двете верзии, влезната датотека ќе добие број додаден на нејзиното име.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Невалидно име.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Датумот на последна измена е непознат\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Променето\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести во {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имињата можат да бидат најмногу со 64 карактери.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имињата неможе да бидат празни.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имињата неможе да завршуваат со \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имињата неможе да започнуваат со точка.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Нова\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нова папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ново име на папка\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Нова верзија\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема датотеки\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Не се пронајдени датотеки што одговараат на вашиот филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема датотеки што се совпаѓаат\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Внесете име со најмалку 2 карактери.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Неодамнешни\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Избери ги сите полиња за избор\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изберете ги сите записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Изберете ги сите постоечки датотеки\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Изберете ги сите нови датотеки\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Избери запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Избери ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Големина\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Прескокни %n датотека\", \"Прескокни %n датотеки\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Прескокни ја оваа датотека\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Испрати име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Врати\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Прикачи содржина или синхронизирај со ваши уреди!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Кога е избрана влезна папка, сите конфликтни датотеки во неа исто така ќе бидат препишани.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Кога е избрана влезна папка, содржината се запишува во постоечката папка и се извршува рекурсивно решавање на конфликти.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Кој датотеки сакаш да ги зачуваш?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Моментално сте идентификувани како {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Моментално не сте идентификувани.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Не можете да го оставите името празно.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Треба да избереш најмалку едно решение за конфликт\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба да избереш најмалку една верзија за секоја датотека за да продолжи.\"] }] }, { \"language\": \"ms_MY\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" adalah nama folder yang tidak sesuai '] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nama folder yang tidak dibenarkan'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" tidak dibenarkan dalam nama folder'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Semua fail\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Pilih\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Pilih {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Pilih fail %n\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"menyalin\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"menyalin ke {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Tidak dapat mewujudkan folder baharu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Tidak dapat memuatkan tetapan fail\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Tidak dapat memuatkan paparan fail\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"mewujudkan direktori\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"pemilih pandangan semasa\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Pilihan\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fail dan folder yang anda tanda sebagai pilihan akan dipaparkan di sini.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fail dan folder yang anda telah ubah suai baru-baru ini dipaparkan di sini.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Menapis senarai fail\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Nama folder tidak boleh kosong.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Utama\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ubah suai\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"pindah\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"pindah ke {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nama\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Baru\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Folder Baharu\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nama folder baharu\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tiada fail di sini\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Tiada fail yang sepadan dengan tapisan anda.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Tiada fail yang sepadan\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"baru-baru ini\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Pilih semua entri\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Pilih entri\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"memilih baris {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Saiz\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"buat asal\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Muat naik beberapa kandungan atau selaras dengan peranti anda!\"] }] }, { \"language\": \"nb_NO\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" er ikke tillatt i et navn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" er ikke et tillatt navn.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» er ikke et gyldig mappenavn.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» er ikke et tillatt mappenavn.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" er et reservert navn og er ikke tillatt.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" er ikke tillatt inne i et mappenavn.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Velg\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Velg {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Velg %n fil\", \"Velg %n filer\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopier\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopier til {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunne ikke opprette den nye mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunne ikke laste filinnstillinger\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunne ikke laste filvisninger\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Opprett mappe\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Nåværende visningsvelger\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Skriv inn navnet ditt\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunne ikke lagre kallenavnet.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer og mapper du markerer som favoritter vil vises her.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer og mapper du nylig har endret, vil vises her.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrer filliste\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Mappenavn kan ikke være tomt.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gjesteidentifikasjon\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hjem\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ugyldig navn.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifisert\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytt\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytt til {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Navn\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Navn kan ikke være tomme.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Navn kan ikke ende med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Navn kan ikke starte med et punktum.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mappe\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappenavn\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Ingen filer her\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ingen filer funnet med ditt filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ingen filer samsvarer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Vennligst angi et navn som har minst 2 tegn.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nylige\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Velg alle oppføringer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Velg oppføring\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Velg raden for {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Størrelse\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Bekreft navn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Angre\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Last opp innhold eller synkroniser med enhetene dine!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du er akkurat nå identifisert som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du er akkurat nå ikke identifisert.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan ikke la navnet være blankt.\"] }] }, { \"language\": \"nl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"{char}is niet toegestaan in een mapnaam.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" kan niet gebruikt worden in de benaming.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" is geen toegestane naam.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" is een gereserveerde naam en niet toegestaan in mapnamen.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" is een gereserveerde naam en niet toegestaan.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n bestanden conflicteren\", \"%nbestand bestanden conflicteren\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n bestand conflicteerd in {dirname}\", \"%nbestanden conflicteert in {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alle bestanden\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Annuleren\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Annuleer de hele bewerking\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Kiezen\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Kies {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Kies %n bestand\", \"Kies %n bestanden\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bevestigen\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Doorgaan\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiëren\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiëren naar {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kon de nieuwe map niet maken\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kon de bestandsinstellingen niet laden\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kon de bestandsweergaves niet laden\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Map aanmaken\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Huidige weergave keuze\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Voer je naam in\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Bestaande versie\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kon geen bijnaam instellen.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorieten\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Bestanden en mappen die je als favoriet markeert, verschijnen hier.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Bestanden en mappen die je recentelijk hebt gewijzigd, verschijnen hier.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Bestandslijst filteren\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mapnamen mogen niet eindigen op \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gastenidentificatie\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Thuis\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Als u beide versies selecteert wordt een nummer toegevoegd aan de naam van het binnenkomende bestand.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ongeldige mapnaam.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ongeldige naam.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Laatste wijzigingsdatum onbekend\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Gewijzigd\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Verplaatsen\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Verplaatsen naar {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naam\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namen mogen maximaal 64 tekens lang zijn.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namen mogen niet leeg zijn.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namen mogen niet eindigen met \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namen mogen niet begonnen met een punt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nieuw\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nieuwe map\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nieuwe mapnaam\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nieuwe versie\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Geen bestanden hier\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Geen bestanden gevonden die voldoen aan je filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Geen overeenkomende bestanden\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Voer een naam in met minimaal 2 tekens.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recent\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecteer alle aanvinkopties\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Alle invoer selecteren\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecteer alle bestaande bestanden\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecteer alle nieuwe bestanden\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Invoer selecteren\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecteer de rij voor {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Grootte\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Sla %n bestand over\", \"Sla %n bestanden over\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Sla dit bestand over\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Naam indienen\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ongedaan maken\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Upload inhoud of synchroniseer met je apparaten!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Als een inkomende map wordt geselecteerd, worden alle conflicterende bestanden daarin overschreven.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Als een inkomende map wordt geselecteerd, wordt de inhoud naar de bestaande map geschreven en wordt een recursieve conflict-oplossing uitgevoerd.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Welke bestanden wilt u bewaren?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Je wordt momenteel geïdentificeerd als {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Je bent momenteel niet geïdentificeerd.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Je kunt de naam niet leeg laten.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"U moet in elk geval een conflictoplossing kiezen\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"U moet minstens een versie van elk bestand kiezen om door te gaan. \"] }] }, { \"language\": \"pl\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['Znak \"{char}\" nie jest dozwolony w nazwie folderu.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie jest dozwolone w nazwie.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie jest dozwoloną nazwą.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" jest nazwą zastrzeżoną i nie jest dozwolona jako nazwa folderu.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" jest zastrzeżoną nazwą i nie jest dozwolone.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"Konflikt pliku\", \"Konflikt %n plików\", \"Konflikt %n plików\", \"Konflikt %n plików\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konfliktów pliku w {dirname}\", \"%n konfliktów plików w {dirname}\", \"%n konfliktów plików w {dirname}\", \"%n konfliktów plików w {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Wszystkie pliki\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Anuluj\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Anuluj całą operację\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Wybierz\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Wybierz {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Wybierz %n plik\", \"Wybierz %n pliki\", \"Wybierz %n plików\", \"Wybierz %n plików\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potwierdź\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Kontynuuj\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiuj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Skopiuj do {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nie można utworzyć nowego folderu\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nie można wczytać ustawień plików\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nie można wczytać widoków plików\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Utwórz katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Bieżący selektor widoku\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Wprowadź nazwę\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Istniejąca wersja\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nie udało się utworzyć pseudonimu.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Ulubione\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Pliki i foldery które oznaczysz jako ulubione będą wyświetlały się tutaj\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Pliki i foldery które ostatnio modyfikowałeś będą wyświetlały się tutaj\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtruj listę plików\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nazwy folderów nie mogą kończyć się na \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identyfikacja gościa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Strona główna\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Jeśli wybierzesz obie wersje, do nazwy przychodzącego pliku zostanie dodany numer.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nieprawidłowa nazwa folderu.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nieprawidłowa nazwa.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data ostatniej modyfikacji nieznana\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Zmodyfikowano\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Przenieś\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Przejdź do {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nazwa\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Nazwy mogą mieć maksymalnie 64 znaki.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nazwy nie mogą być puste.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nazwy nie mogą kończyć się na \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nazwy nie mogą zaczynać się od kropki.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nowy\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nowy folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nowa nazwa folderu\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nowa wersja\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Brak plików\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nie znaleziono plików spełniających warunki filtru\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Brak pasujących plików\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Wprowadź nazwę zawierającą minimum 2 znaki.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Ostatni\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Zaznacz wszystkie pola wyboru\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Wybierz wszystkie wpisy\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Zaznacz wszystkie istniejące pliki\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Zaznacz wszystkie nowe pliki\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Wybierz wpis\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Wybierz wiersz dla {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Rozmiar\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Pomiń %n plik\", \"Pomiń %n plików\", \"Pomiń %n plików\", \"Pomiń %n plików\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Pomiń ten plik\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zatwierdź nazwę\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Cofnij\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Wyślij zawartość lub zsynchronizuj ze swoimi urządzeniami!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Po wybraniu przychodzącego folderu wszystkie konfliktujące pliki w jego obrębie również zostaną nadpisane.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Po wybraniu przychodzącego folderu jego zawartość zostanie zapisana w istniejącym folderze i zostanie przeprowadzone rekursywne rozwiązywanie konfliktów.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Które pliki chcesz zachować?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Obecnie jesteś zidentyfikowany jako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Użytkownik nie został uwierzytelniony.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nazwa nie może być pusta.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Musisz wybrać co najmniej jedno rozwiązanie konfliktu\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Aby kontynuować, musisz wybrać co najmniej jedną wersję każdego pliku.\"] }] }, { \"language\": \"pt_BR\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome de pasta.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" é um nome reservado e não permitido para nomes de pasta.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não permitido.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n arquivo conflita\", \"%n de arquivos conflitam\", \"%n arquivos conflitam\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n conflito de arquivo em {dirname}\", \"%n de conflitos de arquivos em {dirname}\", \"%n conflitos de arquivos em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os arquivos\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolher %n arquivo\", \"Escolher %n arquivos\", \"Escolher %n arquivos\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar configurações de arquivos\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar visualições de arquivos\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar diretório\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Digite seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir apelido.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os arquivos e pastas que você marca como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Arquivos e pastas que você modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de arquivos\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Nomes de pasta não podem terminar com \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidados\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do arquivo recebido.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Nome de pasta inválido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Nomes não podem estar vazios.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar com \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Nomes não podem começar com um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome de pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nenhum arquivo aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenhum arquivo correspondente ao seu filtro foi encontrado.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum arquivo correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Digite um nome com pelo menos 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os arquivos existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos arquivos\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecionar a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n arquivo\", \"Ignorar %n de arquivos\", \"Ignorar %n arquivos\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este arquivo\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Enviar nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Desfazer\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Faça upload de algum conteúdo ou sincronize com seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer arquivos conflitantes dentro dela também serão sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e uma resolução recursiva de conflitos é realizada.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais arquivos você deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Você está atualmente identificado como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"No momento, você não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Você não pode deixar o nome vazio.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Você precisa escolher pelo menos uma solução para o conflito\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Você precisa selecionar pelo menos uma versão de cada arquivo para continuar.\"] }] }, { \"language\": \"pt_PT\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" não é permitido dentro de um nome.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" não é um nome permitido.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" é um nome de pasta inválido.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" não é um nome de pasta permitido'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" é um nome reservado e não é permitido.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" não é permitido dentro do nome de pasta.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n ficheiro em conflito\", \"%n ficheiros em conflito\", \"%n ficheiros em conflito\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n ficheiro em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\", \"%n ficheiros em conflito em {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Todos os ficheiros\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Cancelar\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Cancelar toda a operação\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Escolher\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Escolher {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Escolha %n ficheiro\", \"Escolha %n ficheiros\", \"Escolha %n ficheiros\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Confirmar\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Continuar\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiar\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiar para {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Não foi possível criar a nova pasta \"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Não foi possível carregar as definições dos ficheiros\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Não foi possível carregar as visualizações dos ficheiros\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Criar pasta\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Seletor de visualização atual\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Introduza o seu nome\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Versão existente\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Falha ao definir o nome alternativo.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoritos\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que marcar como favoritos aparecerão aqui.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Os ficheiros e as pastas que modificou recentemente aparecerão aqui.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrar lista de ficheiros\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"O nome da pasta não pode estar vazio.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identificação de convidado\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Início\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Se você selecionar ambas as versões, um número será adicionado ao nome do ficheiro recebido.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nome inválido.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Data da última modificação desconhecida\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificado\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mover\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mover para {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nome\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Os nomes podem ter no máximo 64 caracteres.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"O nome não pode ficar em branco.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Nomes não podem terminar em \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Os nomes não podem começar por um ponto.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova pasta\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo nome da pasta\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nova versão\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Sem ficheiros aqui\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Não foi encontrado nenhum ficheiro correspondente ao seu filtro.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nenhum ficheiro correspondente\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Introduza um nome com, pelo menos, 2 caracteres.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recentes\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Selecione todas as caixas de seleção\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selecionar todas as entradas\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Selecione todos os ficheiros existentes\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Selecione todos os novos ficheiros\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selecionar entrada\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selecione a linha para {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Tamanho\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Ignorar %n ficheiro\", \"Ignorar %n ficheiros\", \"Ignorar %n ficheiros\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ignorar este ficheiro\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Submeter nome\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anular\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Envie algum conteúdo ou sincronize com os seus dispositivos!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Ao selecionar uma pasta de entrada, quaisquer ficheiros conflituantes dentro da mesma serão também sobrescritos.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Quando uma pasta de entrada é selecionada, o conteúdo é gravado na pasta existente e é realizada uma resolução recursiva de conflitos.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Quais os ficheiros que deseja manter?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Atualmente está identificado como {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Atualmente, não está identificado.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Não pode deixar o nome em branco.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"É preciso escolher pelo menos uma solução para o conflito.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"É necessário selecionar pelo menos uma versão de cada ficheiro para continuar.\"] }] }, { \"language\": \"ro\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" este un nume de director invalid.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" nu este un nume de director permis'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" nu este permis în numele unui director.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Toate fișierele\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Alege\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Alege {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Alege %n fișier\", \"Alege %n fișiere\", \"Alege %n fișiere\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Copiază\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Copiază în {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nu s-a putut crea noul director\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nu s-au putut încărca setările fișierelor\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nu s-au putut încărca vizualizările fișierelor\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Creează director\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Selectorul curent al vizualizării\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favorite\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le marcați ca favorite vor apărea aici.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Fișiere și directoare pe care le-ați modificat recent vor apărea aici.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrează lista de fișiere\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Numele de director nu poate fi necompletat.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Acasă\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modificat\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Mută\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Mută către {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nume\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nou\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Director nou\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Numele noului director\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nu există fișiere\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nu există fișiere potrivite pentru filtrul selectat\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nu există fișiere potrivite\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Recente\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Selectează toate înregistrările\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Selectează înregistrarea\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Selectează rândul pentru {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Mărime\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Anulează\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Încărcați conținut sau sincronizați cu dispozitivele dumneavoastră!\"] }] }, { \"language\": \"ru\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не допускается внутри имени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" это не допустимое имя.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"«{name}» — недопустимое имя папки.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"«{name}» не является разрешенным именем папки\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" это зарезервированное имя и не допустимо.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"Символ «/» не допускается внутри имени папки.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Все файлы\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Отмена\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Выбрать\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Выбрать «{file}»\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Выбрать %n файл\", \"Выбрать %n файла\", \"Выбрать %n файлов\", \"Выбрать %n файлов\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копировать\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копировать в «{target}»\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не удалось создать новую папку\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не удалось загрузить настройки файлов\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не удалось загрузить конфигурацию просмотра файлов\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Создать папку\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Переключатель текущего вида\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Введите ваше имя\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не удалось задать никнейм.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Избранное\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы пометили как избранные.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Здесь будут отображаться файлы и папки, которые вы недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фильтровать список файлов\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Имя папки не может быть пустым.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Гостевая идентификация\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домой\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Неверное имя.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Изменен\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Переместить\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Переместить в «{target}»\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Имя\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Имена не могут быть длинее 64 символов.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не могут быть пустыми.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Имена не могут оканчиваться на \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена должны начинаться с точки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новый\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новая папка\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Имя новой папки\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Здесь нет файлов\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Файлы, соответствующие вашему фильтру, не найдены.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нет подходящих файлов\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Пожалуйста введите имя длиной не менее 2 символов.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Недавний\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Выбрать все записи\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Выбрать запись\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Выбрать строку для «{nodename}»\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Размер\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Отправить имя\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Отменить\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Загрузите контент или синхронизируйте его со своими устройствами!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вы идентифицированы как {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"В данный момент вы не идентифицированы.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Вы не можете оставить имя пустым.\"] }] }, { \"language\": \"sk_SK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" nie je povolené v názve priečinka.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" nie je povolené v rámci mena.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" nie je povolený názov.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"„{segment}“ je rezervované meno a nie je povolené na názvy priečinkov.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" je rezervované meno a nie je povolené.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n konflikt súborov\", \"%n konflikty súborov\", \"%n konfliktov súborov\", \"%n konflikty súborov\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n konflikt súborov v {dirname}\", \"%n konflikty súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\", \"%n konfliktov súborov v {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Všetky súbory\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Zrušiť\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Zrušiť celú operáciu\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Vybrať\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Vybrať {súbor}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Vybraný %n súbor\", \"Vybrané %n súbory\", \"Vybraných %n súborov\", \"Vybraných %n súborov\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Potvrdiť\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Pokračovať\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopírovať\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopírovať do {umiestnenia}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nepodarilo sa vytvoriť nový priečinok\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Nepodarilo sa načítať nastavenia súborov\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nepodarilo sa načítať pohľady súborov\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Vytvoriť adresár\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Výber aktuálneho zobrazenia\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Zadajte svoje meno\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Existujúca verzia\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Nepodarilo sa nastaviť prezývku.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Obľúbené\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré označíte ako obľúbené.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Tu sa zobrazia súbory a priečinky, ktoré ste nedávno upravili.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrovať zoznam súborov\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Názvy priečinkov nesmú končiť na \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Identifikácia hosťa\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Ak vyberiete obe verzie, prichádzajúci súbor bude mať k svojmu názvu pridané číslo.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Neplatný názov priečinka.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Neplatné meno.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Posledná zmena dátumu neznáma\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Upravené\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Prejsť\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Prejsť na {umiestnenie}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Názov\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Mená môžu mať maximálne 64 znakov.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Mená nesmú byť prázdne.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Mená nesmú končiť \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Mená nesmú začínať bodkou.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Pridať\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Pridať priečinok\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Pridať názov priečinka\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Nová verzia\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Nie sú tu žiadne súbory\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nenašli sa žiadne súbory zodpovedajúce vášmu filtru.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Žiadne zodpovedajúce súbory\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Zadajte meno s aspoň 2 znakmi.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedávne\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Vyberte všetky zaškrtávacie políčka\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Vybrať všetky položky\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Vybrať všetky existujúce súbory\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Vybrať všetky nové súbory\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Vybrať položku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Vyberte riadok pre {názov uzla}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veľkosť\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Preskočiť %n súbor\", \"Preskočiť %n súbory\", \"Preskočiť %n súborov\", \"Preskočiť %n súbory\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Preskočiť tento súbor\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Zadať meno\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Späť\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Nahrajte nejaký obsah alebo synchronizujte so svojimi zariadeniami!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Keď je vybraná prichádzajúca složka, všetky konfliktné súbory v nej budú taktiež prepísané.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Keď je vybraná prichádzajúca zložka, obsah sa zapíše do existujúcej zložky a vykoná sa rekurzívne riešenie konfliktov.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Ktoré súbory chcete zachovať?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Momentálne ste identifikovaný ako {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Momentálne nie ste identifikovaný.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Nemôžete nechať meno prázdne.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Musíte si vybrať aspoň jedno riešenie konfliktu.\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Musíte vybrať aspoň jednu verziu každého súboru, aby ste mohli pokračovať.\"] }] }, { \"language\": \"sl\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"{name} je neveljavno ime mape.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"{name} ni dovoljeno ime mape\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" ni dovoljen v imenu mape.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Vse datoteke\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izberi\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izberi {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izberi %n datoteko\", \"Izberi %n datoteki\", \"Izberi %n datotek\", \"Izberi %n datotek\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj v {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Nisem mogel ustvariti nove mape\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"NIsem mogel naložiti nastavitev datotek\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Nisem mogel naložiti pogledov datotek\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Ustvari mapo\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Izbirnik trenutnega pogleda\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Priljubljene\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Datoteke in mape ki jih označite kot priljubljene se bodo prikazale tukaj.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Daoteke in mape ki ste jih pred kratkim spremenili se bodo prikazale tukaj.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtriraj seznam datotek\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Ime mape ne more biti prazno\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Domov\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Spremenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premakni\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premakni v {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ime\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Nov\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Nova mapa\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Novo ime mape\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Tukaj ni datotek\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Ni bilo najdenih ujemajočih datotek glede na vaš filter.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Ni ujemajočih datotek\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nedavne\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izberi vse vnose\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izberi vnos\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izberi vrstico za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Velikost\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Razveljavi\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Naloži nekaj vsebine ali sinhroniziraj s svojimi napravami!\"] }] }, { \"language\": \"sr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": [\"„{char}” није дозвољено унутар имена.\"] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"„{extension}” није дозвољено име.\"] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” није исправно име фолдера.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” није дозвољено име за фолдер.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"„{segment}” је резервисано име и није дозвољено.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” није дозвољено унутар имена фолдера.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Сви фајлови\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Откажи\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Изаберите\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Изаберите {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Изаберите %n фајл\", \"Изаберите %n фајла\", \"Изаберите %n фајлова\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копирај\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копирај у {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Није могао да се креира нови фолдер\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не могу да се учитају подешавања фајлова\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не могу да се учитају прикази фајлова\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Креирај директоријум\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Бирач тренутног приказа\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Унесите своје име\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Није успело постављање надимка.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Омиљено\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери које сте означили као омиљене.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Овде ће се појавити фајлови и фолдери који се се недавно изменили.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фитрирање листе фајлова\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Име фолдера не може бити празно.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Идентификација госта\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Почетак\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Неисправно име.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Измењено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Премести\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Премести у {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Име\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Највећа дужина имена може бити 64 карактера.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Имена не смеју да буду празна.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"Имена не смеју да се завршавају на „{extension}”.\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Имена не смеју да почињу тачком.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ново\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Нови фолдер\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Име новог фолдера\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Овде нема фајлова\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Није пронађен ниједан фајл који задовољава ваш филтер.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Нема таквих фајлова\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Молимо вас да унесете име од барем два карактера.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Скорашње\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Изаберите све ставке\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Изаберите ставку\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Изаберите ред за {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Величина\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Предај име\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Поништи\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Отпремите нешто или синхронизујте са својим уређајима!\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Тренутно се идентификујете као {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Тренутно немате идентификацију.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Име не можете да оставите празно.\"] }] }, { \"language\": \"sr@latin\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"„{name}” je neispravan naziv foldera.\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"„{name}” je nedozvoljen naziv foldera.\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"„/” se ne može koristiti unutar naziva foldera.\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Svi fajlovi\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Izaberite\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Izaberite {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Izaberite %n fajl\", \"Izaberite %n fajla\", \"Izaberite %n fajlova\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiraj\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiraj u {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Neuspešno kreiranje novog foldera\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Neuspešno učitavanje podešavanja fajlova\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Neuspešno učitavanje prikaza fajlova\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Kreiraj direktorijum\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Birač trenutnog prikaza\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Omiljeno\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Lista omiljenih fajlova i foldera.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Lista fajlova i foldera sa skorašnjim izmenama.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fitriranje liste fajlova\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Naziv foldera ne može biti prazan.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Početak\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Izmenjeno\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Premesti\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Premesti u {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Naziv\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Novo\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Novi folder\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Naziv novog foldera\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Bez fajlova\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Nema fajlova koji zadovoljavaju uslove filtera.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Nema takvih fajlova\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Skorašnje\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Izaberite sve stavke\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Izaberite stavku\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Izaberite red za {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Veličina\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Vrati\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Otpremite sadržaj ili sinhronizujte sa svojim uređajima!\"] }] }, { \"language\": \"sv\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett mappnamn.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" är inte tillåtet i ett namn.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" är inte ett tillåtet namn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet mappnamn.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" är ett reserverat namn och inte tillåtet.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fil är i konflikt\", \"%n filer är i konflikt\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n fil är i konflikt i {dirname}\", \"%n filer är i konflikt i {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Alla filer\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Avbryt\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Avbryt hela operationen\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Välj\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Välj {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Välj %n fil\", \"Välj %n filer\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Bekräfta\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Fortsätt\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopiera\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Kopiera till {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Kunde inte skapa den nya mappen\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Kunde inte ladda filinställningar\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Kunde inte ladda filvyer\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Skapa katalog\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Aktuell vyväljare\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ange ditt namn\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Nuvarande version\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Kunde inte ställa in smeknamn.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Favoriter\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Filer och mappar som du markerar som favorit kommer att visas här.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Filer och mappar som du nyligen ändrat kommer att visas här.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filtrera fillistan\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Mappnamn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Gästidentifiering\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Hem\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Om du väljer båda versionerna kommer den inkommande filen att få ett nummer tillagt i sitt namn.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Ogiltigt mappnamn.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ogiltigt namn.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Senaste ändringsdatum okänt\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Ändrad\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Flytta\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Flytta till {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Namn\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Namnen kan vara högst 64 tecken långa.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Namn får inte vara tomt.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Namn får inte sluta med \"{extension}\".'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Namn får inte börja med en punkt.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Ny\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Ny mapp\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Nytt mappnamn\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Ny version\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Inga filer här\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Inga filer som matchar ditt filter hittades.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Inga matchande filer\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ange ett namn med minst 2 tecken.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Nyligen\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Markera alla kryssrutor\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Välj alla poster\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Välj alla befintliga filer\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Välj alla nya filer\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Välj post\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Välj raden för {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Storlek\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Hoppa över %n fil\", \"Hoppa över %n filer\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Hoppa över den här filen\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Skicka namn\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Ångra\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Ladda upp lite innehåll eller synkronisera med dina enheter!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"När en inkommande mapp väljs kommer eventuella konflikterande filer i den också att skrivas över.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"När en inkommande mapp väljs skrivs innehållet in i den befintliga mappen och en rekursiv konfliktlösning utförs.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Vilka filer vill du behålla?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Du är för närvarande identifierad som {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Du är för närvarande inte identifierad.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Du kan inte lämna namnet tomt.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Du måste välja minst en konfliktlösning\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Du måste välja minst en version av varje fil för att fortsätta.\"] }] }, { \"language\": \"tr\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": ['\"{char}\" karakteri bir klasör adında kullanılamaz.'] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Bir ad içinde \"{char}\" karakteri kullanılamaz.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" adına izin verilmiyor.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan klasör adlarında kullanılamaz.'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" adı sistem için ayrılmış olduğundan kullanılamaz.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n dosya çakışıyor\", \"%n dosya çakışıyor\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} içindeki %n dosya çakışıyor\", \"{dirname} içindeki %n dosya çakışıyor\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tüm dosyalar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"İptal\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Tüm işlemi iptal et\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Seçin\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"{file} seçin\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"%n dosya seçin\", \"%n dosya seçin\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Onayla\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"İlerle\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Kopyala\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"{target} üzerine kopyala\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yeni klasör oluşturulamadı\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Dosyalar uygulamasının ayarları yüklenemedi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Dosyalar uygulamasının görünümleri yüklenemedi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Klasör oluştur\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Geçerli görünüm seçici\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Adınızı yazın\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Var olan sürüm\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Takma ad ayarlanamadı.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Sık kullanılanlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Sık kullanılan olarak seçtiğiniz dosyalar burada görüntülenir.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Son zamanlarda değiştirdiğiniz dosya ve klasörler burada görüntülenir.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Dosya listesini süz\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": ['Klasör adları \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Konuk kimliği\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Giriş\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"İki sürümü de seçerseniz, gelen dosyanın adına bir sayı eklenir.\"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Klasör adı geçersiz.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Ad geçersiz.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Son değiştirilme tarihi bilinmiyor.\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Değiştirilme\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Taşı\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"{target} üzerine taşı\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ad\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Adlar en fazla 64 karakter uzunluğunda olabilir.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ad boş olamaz.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ad \"{extension}\" ile bitemez.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ad nokta karakteri ile başlayamaz.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yeni\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yeni klasör\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yeni klasör adı\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yeni sürüm\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Burada herhangi bir dosya yok\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Süzgece uyan bir dosya bulunamadı.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Eşleşen bir dosya yok\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Ad en az 2 karakter uzunluğunda olmalıdır.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Son kullanılanlar\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Tüm kutuları işaretle\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Tüm kayıtları seç\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Tüm var olan dosyaları seç\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Tüm yeni dosyaları seç\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Kaydı seç\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} satırını seçin\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Boyut\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n dosyayı atla\", \"%n dosyayı atla\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Bu dosyayı atla\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Adı gönder\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Geri al\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Bazı içerikler yükleyin ya da aygıtlarınızla eşitleyin!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içindeki çakışan dosyaların da üzerine yazılır.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Bir gelen klasör seçildiğinde, içerik var olan klasöre yazılır ve alt klasörlerle bir çakışma çözümü uygulanır.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Hangi dosyaları tutmak istiyorsunuz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"{nickname} olarak tanınıyorsunuz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Henüz kendinizi tanıtmadınız.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ad boş bırakılamaz.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"En az bir çakışma çözümü seçmelisiniz\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"İlerlemek için her dosaynın en az bir sürümünü seçmelisiniz.\"] }] }, { \"language\": \"uk\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a folder name.', \"msgstr\": [\"{char} не дозволено всередині назви каталогу.\"] }, { \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['\"{char}\" не дозволено всередині імени.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [`\"{extension}\" недозволене ім'я.`] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed for folder names.', \"msgstr\": [\"{segment} є зарезервованим ім'ям і не дозволено для назви каталогу.\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [`\"{segment}\" зарезервоване ім'я і не дозволено для використання.`] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n конфлікт файлів\", \"%n конфлікти файлів\", \"%n конфліктів файлів\", \"%n конфліктів файлів\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"%n конфлікт файлів у каталозі {dirname}\", \"%n конфлікти файлів у каталозі {dirname}\", \"%n конфліктів файлів у каталозі {dirname}\", \"%n конфліктів файлів у каталозі {dirname}\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Всі файли\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Скасувати\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Скасувати всю операцію\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Вибрати\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Вибрати {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Вибрати %n файл\", \"Вибрати %n файли\", \"Вибрати %n файлів\", \"Вибрати %n файлів\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Підтвердити\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Продовжити\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Копіювати\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Копіювати до {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Не вдалося створити новий каталог\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Не вдалося завантажити налаштування файлів\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Не вдалося завантажити подання файлів\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Створити каталог\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Вибір подання\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Зазначте ваше ім'я\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Наявна версія\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Не вдалося встановити псевдо.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Із зірочкою\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які ви позначите зірочкою.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Тут показуватимуться файли та каталоги, які було нещодавно змінено.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Фільтрувати список файлів\"] }, { \"msgid\": 'Folder names must not end with \"{extension}\".', \"msgstr\": [`Ім'я каталогу не може закінчуватися на \"{extension}\".`] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Ім'я для гостя\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Домівка\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Якщо вибрати обидві версії, до назви вхідного файлу буде додано цифру. \"] }, { \"msgid\": \"Invalid folder name.\", \"msgstr\": [\"Недійсне ім'я каталогу.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Недійсне ім'я.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Дата останньої зміни невідома\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Змінено\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Перемістити\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Перемістити до {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Ім'я\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Імена мають мати довжину не більше 64 символів.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ім'я не може бути порожнє.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [`Ім'я не може закінчуватися на \"{extension}\".`] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ім'я не може починатися з крапки.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Новий\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Новий каталог\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Ім'я нового каталогу\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Нова версія\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Тут відсутні файли\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Відсутні збіги за фільтром.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Відсутні збіги файлів.\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Зазначте ім'я довжиною не менше 2 символів\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Останні\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Вибрати всі прапорці\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Вибрати всі записи\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Вибрати всі наявні файли\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Вибрати всі нові файли\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Вибрати запис\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Вибрати рядок для {nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Розмір\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"Пропустити %n файл\", \"Пропустити %n файли\", \"Пропустити %n файлів\", \"Пропустити %n файлів\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Пропустити цей файл\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Встановити ім'я\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Повернути\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Завантажте вміст або синхронізуйте з вашим пристроєм!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Коли вибрано вхідний каталог, будь-які файли з конфліктами буде також перезаписано.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Коли вибрано вхідний каталог, вміст буде записано до існуючого каталогу, а також виконано вирішення конфліктів всередині каталогу.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Які файли залишити?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Вас визначено як {nickname}.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Вас не ідентифіковано.\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Потрібно зазначити ім'я.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Треб вибрати щонайменше одне рішення конфлікту\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Треба вибрати щонайменше одну версію кожного файлу, щоби продовжити.\"] }] }, { \"language\": \"uz\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['Nom ichida \"{char}\" ga ruxsat berilmagan.'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": ['\"{extension}\" ruxsat etilgan nom emas.'] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" jild nomi yaroqsiz.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"{name}\" ruxsat etilgan jild nomi emas'] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": ['\"{segment}\" - zaxiralangan nom va ruxsat berilmaydi.'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\" papka nomi ichida ruxsat berilmaydi.'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n fayl ziddiyatli\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} da %n fayl ziddiyati\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"Barcha fayllar\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"Butun operatsiyani bekor qiling\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Tanlang\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Tanlang {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Tanlang %n faylni\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"Tasdiqlang\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"Davom eting\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Nusxa\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\" {target} ga nusxa\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Yangi jild yaratib bo‘lmadi\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Fayl sozlamalari yuklanmadi\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Fayllarni koʻrishni yuklab boʻlmadi\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Katalog yaratish\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Joriy ko'rinish selektori\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"Ismingizni kiriting\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"Mavjud versiya\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"Taxallusni o‘rnatib bo‘lmadi.\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Tanlanganlar\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Tanlangan deb belgilagan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Siz yaqinda oʻzgartirgan fayl va papkalar shu yerda koʻrinadi.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Fayl ro'yxatini filtrlash\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Jild nomi boʻsh boʻlishi mumkin emas.\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"Foydalanuvchini identifikatsiyalash\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Uy\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"Agar siz ikkala versiyani tanlasangiz, kiruvchi fayl nomiga qo'shilgan raqamga ega bo'ladi.\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"Nomi noto‘g‘ri.\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"Oxirgi tahrirlangan sana noma'lum\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Modifikatsiyalangan\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Ko'chirish\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\" {target} ga ko'chirish\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Nomi\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"Ismlar ko'pi bilan 64 ta belgidan iborat bo'lishi mumkin.\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"Ismlar bo'sh bo'lmasligi kerak.\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": ['Ismlar \"{extension}\" bilan tugamasligi kerak.'] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"Ismlar nuqta bilan boshlanmasligi kerak.\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Yangi\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"Yangi jild\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"Yangi jild nomi\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"Yangi versiya\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"Fayl mavjud emas\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Filtringizga mos keladigan fayl topilmadi.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"Mos fayllar yo'q\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"Kamida 2 ta belgidan iborat nom kiriting.\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Yaqinda\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"Barcha katakchalarni belgilang\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Barcha yozuvlarni tanlang\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"Barcha mavjud fayllarni tanlang\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"Barcha yangi fayllarni tanlang\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Yozuvni tanlang\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"{nodename} uchun qatorni tanlang\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"O`lcham\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"%n faylni oʻtkazib yuborish\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"Ushbu faylni o'tkazib yuboring\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"Ismni tasdiqlang\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Bekor qilish\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Qurilmangizga ba'zi kontentni yuklang yoki sinxronlang!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, undagi har qanday ziddiyatli fayllar ham ustiga yoziladi.\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"Kiruvchi papka tanlanganda, kontent mavjud jildga yoziladi va nizolarni rekursiv hal qilish amalga oshiriladi.\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"Qaysi fayllarni saqlamoqchisiz?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"Siz hozirda {nickname} sifatida aniqlangansiz.\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"Siz hozirda identifikatsiyadan o'tmagansiz\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"Ism katagini bo'sh qoldirib bo'lmaydi.\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"Siz kamida bitta mojaro yechimini tanlashingiz kerak\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"Davom etish uchun har bir faylning kamida bitta versiyasini tanlashingiz kerak.\"] }] }, { \"language\": \"vi\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": ['\"{name}\" là tên thư mục không hợp lệ.'] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": ['\"1{name}\"không phải là tên thư mục được cho phép'] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['\"/\"không được phép đặt trong tên thư mục.'] }, { \"msgid\": \"All files\", \"msgstr\": [\"Tất cả tệp\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"Chọn\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"Chọn {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"Chọn %n tệp\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"Sao chép\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"Sao chép đến {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"Không thể tạo thư mục mới\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"Không thể tải tập tin cài đặt\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"Không thể tải xuống tệp xem\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"Tạo thư mục\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"Hiện tại chế độ xem của bộ chọn\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"Yêu cầu thích\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn đánh dấu yêu thích sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"Các tập tin và thư mục bạn sửa đổi gần đây sẽ hiển thị ở đây.\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"Filter list file\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"Thư mục tên không được để trống.\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"Trang chủ\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"Đã sửa đổi\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"Di chuyển\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"Di chuyển đến{target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"Tên\"] }, { \"msgid\": \"New\", \"msgstr\": [\"Mới\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"New thư mục\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"New thư mục tên\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"No file at here\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"Không tìm thấy tệp nào phù hợp với bộ lọc của bạn.\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"No file phù hợp\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"Gần đây\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"Choose all items\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"Chọn mục nhập\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"Choose hang cho{nodename}\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"Kích cỡ\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"Hoàn tác\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"Tải lên một số nội dung hoặc đồng bộ hóa với thiết bị của bạn!\"] }] }, { \"language\": \"zh_CN\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"“{name}” 是无效的文件夹名称。\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"“{name}” 不是允许的文件夹名称\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": [\"文件夹名称中不允许包含 “/”。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有文件\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"选择\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"选择 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"选择 %n 个文件\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"复制\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"复制到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"无法创建新文件夹\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"无法加载文件设置\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"无法加载文件视图\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"创建目录\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"当前视图选择器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最爱\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您标记为最爱的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的文件与文件夹会显示在这里\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"过滤文件列表\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"文件夹名称不能为空。\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"主目录\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移动\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移动至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名称\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新建\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新文件夹\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新文件夹名称\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此处无文件\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您过滤条件的文件\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"无符合的文件\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"选择所有条目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"选择条目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"选择 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\" 撤消\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上传一些项目或与您的设备同步!\"] }] }, { \"language\": \"zh_HK\", \"translations\": [{ \"msgid\": '\"{char}\" is not allowed inside a name.', \"msgstr\": ['名稱中不能使用 \"{char}\"。'] }, { \"msgid\": '\"{extension}\" is not an allowed name.', \"msgstr\": [\"「{extension}」並非允許的名稱。\"] }, { \"msgid\": '\"{name}\" is an invalid folder name.', \"msgstr\": [\"「{name}」是無效的資料夾名稱。\"] }, { \"msgid\": '\"{name}\" is not an allowed folder name', \"msgstr\": [\"資料夾名稱「{name}」不符合允許的規範。\"] }, { \"msgid\": '\"{segment}\" is a reserved name and not allowed.', \"msgstr\": [\"「{segment}」是一個保留名稱,不能使用。\"] }, { \"msgid\": '\"/\" is not allowed inside a folder name.', \"msgstr\": ['資料夾名稱中不允許使用 \"/\"。'] }, { \"msgid\": \"%n file conflict\", \"msgid_plural\": \"%n files conflict\", \"msgstr\": [\"%n 檔案衝突\"] }, { \"msgid\": \"%n file conflict in {dirname}\", \"msgid_plural\": \"%n file conflicts in {dirname}\", \"msgstr\": [\"{dirname} 中有 %n 個檔案衝突\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Cancel\", \"msgstr\": [\"取消\"] }, { \"msgid\": \"Cancel the entire operation\", \"msgstr\": [\"取消整個操作\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Choose %n file\", \"msgid_plural\": \"Choose %n files\", \"msgstr\": [\"選擇 %n 個檔案\"] }, { \"msgid\": \"Confirm\", \"msgstr\": [\"確認\"] }, { \"msgid\": \"Continue\", \"msgstr\": [\"繼續\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Could not load files settings\", \"msgstr\": [\"無法載入檔案設定\"] }, { \"msgid\": \"Could not load files views\", \"msgstr\": [\"無法載入檔案視圖\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前視圖選擇器\"] }, { \"msgid\": \"Enter your name\", \"msgstr\": [\"輸入您的名字\"] }, { \"msgid\": \"Existing version\", \"msgstr\": [\"現有的版本\"] }, { \"msgid\": \"Failed to set nickname.\", \"msgstr\": [\"無法設置暱稱。\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": \"Folder name cannot be empty.\", \"msgstr\": [\"資料夾名稱不能為空。\"] }, { \"msgid\": \"Guest identification\", \"msgstr\": [\"訪客身份識別\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"首頁\"] }, { \"msgid\": \"If you select both versions, the incoming file will have a number added to its name.\", \"msgstr\": [\"如果您選擇兩個版本,傳入的檔案名稱將會附加一個數字。\"] }, { \"msgid\": \"Invalid name.\", \"msgstr\": [\"無效的名字。\"] }, { \"msgid\": \"Last modified date unknown\", \"msgstr\": [\"最後的修改日期不詳\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"Names may be at most 64 characters long.\", \"msgstr\": [\"名稱長度最多為 64 個字元。\"] }, { \"msgid\": \"Names must not be empty.\", \"msgstr\": [\"名稱不能為空。\"] }, { \"msgid\": 'Names must not end with \"{extension}\".', \"msgstr\": [\"名稱不得以「{extension}」結尾。\"] }, { \"msgid\": \"Names must not start with a dot.\", \"msgstr\": [\"名稱不得以點開頭。\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"New version\", \"msgstr\": [\"新版本\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"沒有匹配的檔案\"] }, { \"msgid\": \"Please enter a name with at least 2 characters.\", \"msgstr\": [\"請輸入至少 2 個字符的名稱。\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all checkboxes\", \"msgstr\": [\"選擇所有復選框\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選擇所有項目\"] }, { \"msgid\": \"Select all existing files\", \"msgstr\": [\"選擇所有現有的檔案\"] }, { \"msgid\": \"Select all new files\", \"msgstr\": [\"選擇所有新檔案\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選擇項目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選擇 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Skip %n file\", \"msgid_plural\": \"Skip %n files\", \"msgstr\": [\"跳過 %n 個檔案\"] }, { \"msgid\": \"Skip this file\", \"msgstr\": [\"跳過此檔案\"] }, { \"msgid\": \"Submit name\", \"msgstr\": [\"遞交名字\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"還原\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步!\"] }, { \"msgid\": \"When an incoming folder is selected, any conflicting files within it will also be overwritten.\", \"msgstr\": [\"選取傳入資料夾時,其中任何衝突的檔案也將被覆蓋。\"] }, { \"msgid\": \"When an incoming folder is selected, the content is written into the existing folder and a recursive conflict resolution is performed.\", \"msgstr\": [\"當選取傳入資料夾時,內容將寫入現有資料夾,並執行遞歸衝突解決。\"] }, { \"msgid\": \"Which files do you want to keep?\", \"msgstr\": [\"你想保留哪些檔案?\"] }, { \"msgid\": \"You are currently identified as {nickname}.\", \"msgstr\": [\"您目前被識別為 {nickname}。\"] }, { \"msgid\": \"You are currently not identified.\", \"msgstr\": [\"您目前尚未被識別。\"] }, { \"msgid\": \"You cannot leave the name empty.\", \"msgstr\": [\"名稱不能留空。\"] }, { \"msgid\": \"You need to choose at least one conflict solution\", \"msgstr\": [\"你需要選擇至少一種衝突解決方案。\"] }, { \"msgid\": \"You need to select at least one version of each file to continue.\", \"msgstr\": [\"您必須選擇每個文件的至少一個版本才能繼續。\"] }] }, { \"language\": \"zh_TW\", \"translations\": [{ \"msgid\": '\"{name}\" is an invalid file name.', \"msgstr\": [\"「{name}」是無效的檔案名稱。\"] }, { \"msgid\": '\"{name}\" is not an allowed filetype', \"msgstr\": [\"「{name}」並非允許的檔案類型\"] }, { \"msgid\": '\"/\" is not allowed inside a file name.', \"msgstr\": [\"檔案名稱中不允許使用「/」。\"] }, { \"msgid\": \"All files\", \"msgstr\": [\"所有檔案\"] }, { \"msgid\": \"Choose\", \"msgstr\": [\"選擇\"] }, { \"msgid\": \"Choose {file}\", \"msgstr\": [\"選擇 {file}\"] }, { \"msgid\": \"Copy\", \"msgstr\": [\"複製\"] }, { \"msgid\": \"Copy to {target}\", \"msgstr\": [\"複製到 {target}\"] }, { \"msgid\": \"Could not create the new folder\", \"msgstr\": [\"無法建立新資料夾\"] }, { \"msgid\": \"Create directory\", \"msgstr\": [\"建立目錄\"] }, { \"msgid\": \"Current view selector\", \"msgstr\": [\"目前檢視選取器\"] }, { \"msgid\": \"Favorites\", \"msgstr\": [\"最愛\"] }, { \"msgid\": \"File name cannot be empty.\", \"msgstr\": [\"檔案名稱不能為空。\"] }, { \"msgid\": \"Filepicker sections\", \"msgstr\": [\"檔案挑選器選取\"] }, { \"msgid\": \"Files and folders you mark as favorite will show up here.\", \"msgstr\": [\"您標記為最愛的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Files and folders you recently modified will show up here.\", \"msgstr\": [\"您最近修改的檔案與資料夾將會顯示在此處。\"] }, { \"msgid\": \"Filter file list\", \"msgstr\": [\"過濾檔案清單\"] }, { \"msgid\": \"Home\", \"msgstr\": [\"家\"] }, { \"msgid\": \"Mime type {mime}\", \"msgstr\": [\"Mime type {mime}\"] }, { \"msgid\": \"Modified\", \"msgstr\": [\"已修改\"] }, { \"msgid\": \"Move\", \"msgstr\": [\"移動\"] }, { \"msgid\": \"Move to {target}\", \"msgstr\": [\"移動至 {target}\"] }, { \"msgid\": \"Name\", \"msgstr\": [\"名稱\"] }, { \"msgid\": \"New\", \"msgstr\": [\"新\"] }, { \"msgid\": \"New folder\", \"msgstr\": [\"新資料夾\"] }, { \"msgid\": \"New folder name\", \"msgstr\": [\"新資料夾名稱\"] }, { \"msgid\": \"No files in here\", \"msgstr\": [\"此處無檔案\"] }, { \"msgid\": \"No files matching your filter were found.\", \"msgstr\": [\"找不到符合您過濾條件的檔案。\"] }, { \"msgid\": \"No matching files\", \"msgstr\": [\"無符合的檔案\"] }, { \"msgid\": \"Recent\", \"msgstr\": [\"最近\"] }, { \"msgid\": \"Select all entries\", \"msgstr\": [\"選取所有條目\"] }, { \"msgid\": \"Select entry\", \"msgstr\": [\"選取條目\"] }, { \"msgid\": \"Select the row for {nodename}\", \"msgstr\": [\"選取 {nodename} 的列\"] }, { \"msgid\": \"Size\", \"msgstr\": [\"大小\"] }, { \"msgid\": \"Undo\", \"msgstr\": [\"復原\"] }, { \"msgid\": \"unknown\", \"msgstr\": [\"未知\"] }, { \"msgid\": \"Upload some content or sync with your devices!\", \"msgstr\": [\"上傳一些內容或與您的裝置同步\"] }] }]) {\n const { language, translations } = data;\n const bundle = {\n headers: {},\n translations: {\n \"\": Object.fromEntries(translations.map((translation) => [translation.msgid, translation]))\n }\n };\n gtBuilder.addTranslation(language, bundle);\n}\nconst gt = gtBuilder.build();\nconst n = gt.ngettext.bind(gt);\nconst t = gt.gettext.bind(gt);\n/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nconst logger = getLoggerBuilder().setApp(\"@nextcloud/dialogs\").detectLogLevel().build();\nvar FilePickerType = /* @__PURE__ */ ((FilePickerType2) => {\n FilePickerType2[FilePickerType2[\"Choose\"] = 1] = \"Choose\";\n FilePickerType2[FilePickerType2[\"Move\"] = 2] = \"Move\";\n FilePickerType2[FilePickerType2[\"Copy\"] = 3] = \"Copy\";\n FilePickerType2[FilePickerType2[\"CopyMove\"] = 4] = \"CopyMove\";\n FilePickerType2[FilePickerType2[\"Custom\"] = 5] = \"Custom\";\n return FilePickerType2;\n})(FilePickerType || {});\nclass FilePickerClosed extends Error {\n}\nclass FilePicker {\n title;\n multiSelect;\n mimeTypeFilter;\n directoriesAllowed;\n noMenu;\n buttons;\n path;\n filter;\n canPick;\n container;\n disabledNavigation;\n constructor(title, multiSelect, mimeTypeFilter, directoriesAllowed, noMenu, buttons, path, filter, canPick, container, disabledNavigation = false) {\n this.title = title;\n this.multiSelect = multiSelect;\n this.mimeTypeFilter = mimeTypeFilter;\n this.directoriesAllowed = directoriesAllowed;\n this.noMenu = noMenu;\n this.path = path;\n this.filter = filter;\n this.canPick = canPick;\n this.buttons = buttons;\n this.container = container;\n this.disabledNavigation = disabledNavigation;\n }\n /**\n * Pick files using the FilePicker.\n *\n * @return Promise with array of picked files or rejected promise on close without picking\n */\n async pickNodes() {\n const { default: FilePickerVue } = await import(\"./FilePicker-C1yRZfLt.mjs\");\n const nodes = await spawnDialog(FilePickerVue, {\n allowPickDirectory: this.directoriesAllowed,\n noMenu: this.noMenu,\n buttons: this.buttons,\n name: this.title,\n path: this.path,\n mimetypeFilter: this.mimeTypeFilter,\n multiselect: this.multiSelect,\n filterFn: this.filter,\n canPickFn: this.canPick,\n disabledNavigation: this.disabledNavigation\n }, {\n container: this.container\n });\n if (!Array.isArray(nodes) || nodes.length === 0) {\n throw new FilePickerClosed(\"FilePicker: No nodes selected\");\n }\n return nodes;\n }\n /**\n * Pick files using the FilePicker\n *\n * @return Promise with array of paths of picked files or rejected promise on close without picking\n */\n async pick() {\n const nodes = await this.pickNodes();\n if (this.multiSelect) {\n return nodes.map((node) => node.path);\n }\n const path = nodes[0]?.path ?? \"/\";\n return path;\n }\n}\nclass FilePickerBuilder {\n title;\n multiSelect = false;\n mimeTypeFilter = [];\n directoriesAllowed = false;\n noMenu = false;\n path;\n filter;\n canPick;\n buttons = [];\n container;\n disabledNavigation = false;\n /**\n * Construct a new FilePicker\n *\n * @param title Title of the FilePicker\n */\n constructor(title) {\n this.title = title;\n }\n /**\n * Set the container where the FilePicker will be mounted\n * By default 'body' is used\n *\n * @param container The dialog container\n */\n setContainer(container) {\n this.container = container;\n return this;\n }\n /**\n * Enable or disable picking multiple files\n *\n * @param ms True to enable picking multiple files, false otherwise\n */\n setMultiSelect(ms) {\n this.multiSelect = ms;\n return this;\n }\n /**\n * Add allowed MIME type\n *\n * @param filter MIME type to allow\n */\n addMimeTypeFilter(filter) {\n this.mimeTypeFilter.push(filter);\n return this;\n }\n /**\n * Set allowed MIME types\n *\n * @param filter Array of allowed MIME types\n */\n setMimeTypeFilter(filter) {\n this.mimeTypeFilter = filter;\n return this;\n }\n /**\n * Add a button to the FilePicker\n * Note: This overrides any previous `setButtonFactory` call\n *\n * @param button The button\n */\n addButton(button) {\n if (typeof this.buttons === \"function\") {\n logger.warn(\"FilePicker buttons were set to factory, now overwritten with button object.\");\n this.buttons = [];\n }\n this.buttons.push(button);\n return this;\n }\n /**\n * Set the button factory which is used to generate buttons from current view, path and selected nodes\n * Note: This overrides any previous `addButton` call\n *\n * @param factory The button factory\n */\n setButtonFactory(factory) {\n this.buttons = factory;\n return this;\n }\n /**\n * Set FilePicker type based on legacy file picker types\n *\n * @param type The legacy filepicker type to emulate\n * @deprecated Use `addButton` or `setButtonFactory` instead as with setType you do not know which button was pressed\n */\n setType(type) {\n this.buttons = (nodes, path) => {\n const buttons = [];\n const node = nodes[0];\n const target = node?.displayname || basename(path);\n if (type === 1) {\n let label = t(\"Choose\");\n if (nodes.length === 1) {\n label = t(\"Choose {file}\", { file: target });\n } else if (this.multiSelect) {\n label = n(\"Choose %n file\", \"Choose %n files\", nodes.length);\n }\n buttons.push({\n callback: () => {\n },\n label,\n variant: \"primary\"\n });\n }\n if (type === 4 || type === 3) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Copy to {target}\", { target }) : t(\"Copy\"),\n icon: IconCopy,\n variant: type === 3 ? \"primary\" : \"secondary\"\n });\n }\n if (type === 4 || type === 2) {\n buttons.push({\n callback: () => {\n },\n label: target ? t(\"Move to {target}\", { target }) : t(\"Move\"),\n icon: IconMove,\n variant: \"primary\"\n // move is always primary - also on copy-move\n });\n }\n return buttons;\n };\n return this;\n }\n /**\n * Allow to pick directories besides files\n *\n * @param allow True to allow picking directories\n */\n allowDirectories(allow = true) {\n this.directoriesAllowed = allow;\n return this;\n }\n /**\n * Allow to create New folders\n *\n * @param noMenu True to hide menu\n */\n setNoMenu(noMenu = true) {\n this.noMenu = noMenu;\n return this;\n }\n /**\n * Set starting path of the FilePicker\n *\n * @param path Path to start from picking\n */\n startAt(path) {\n this.path = path;\n return this;\n }\n /**\n * Add filter function to filter file list of FilePicker\n *\n * @param filter Filter function to apply\n */\n setFilter(filter) {\n this.filter = filter;\n return this;\n }\n /**\n * Add function to allow or not picking a node\n *\n * @param canPick Function to decide if a node can be picked\n */\n setCanPick(canPick) {\n this.canPick = canPick;\n return this;\n }\n /**\n * Disable navigation (view selection)\n */\n disableNavigation() {\n this.disabledNavigation = true;\n return this;\n }\n /**\n * Construct the configured FilePicker\n */\n build() {\n return new FilePicker(\n this.title,\n this.multiSelect,\n this.mimeTypeFilter,\n this.directoriesAllowed,\n this.noMenu,\n this.buttons,\n this.path,\n this.filter,\n this.canPick,\n this.container,\n this.disabledNavigation\n );\n }\n}\nfunction getFilePickerBuilder(title) {\n return new FilePickerBuilder(title);\n}\nasync function showGuestUserPrompt(props) {\n const name = await spawnDialog(\n defineAsyncComponent(() => import(\"./PublicAuthPrompt-7_GNN76e.mjs\")),\n props\n );\n return name;\n}\nconst LoaderSvg = '\\n\t\\n\t\\n\\n';\nvar ToastType = /* @__PURE__ */ ((ToastType2) => {\n ToastType2[\"ERROR\"] = \"toast-error\";\n ToastType2[\"WARNING\"] = \"toast-warning\";\n ToastType2[\"INFO\"] = \"toast-info\";\n ToastType2[\"SUCCESS\"] = \"toast-success\";\n ToastType2[\"UNDO\"] = \"toast-undo\";\n ToastType2[\"LOADING\"] = \"toast-loading\";\n return ToastType2;\n})(ToastType || {});\nconst TOAST_ARIA_LIVE_OFF = \"off\";\nconst TOAST_ARIA_LIVE_POLITE = \"polite\";\nconst TOAST_ARIA_LIVE_ASSERTIVE = \"assertive\";\nvar ToastAriaLive = /* @__PURE__ */ ((ToastAriaLive2) => {\n ToastAriaLive2[ToastAriaLive2[\"OFF\"] = TOAST_ARIA_LIVE_OFF] = \"OFF\";\n ToastAriaLive2[ToastAriaLive2[\"POLITE\"] = TOAST_ARIA_LIVE_POLITE] = \"POLITE\";\n ToastAriaLive2[ToastAriaLive2[\"ASSERTIVE\"] = TOAST_ARIA_LIVE_ASSERTIVE] = \"ASSERTIVE\";\n return ToastAriaLive2;\n})(ToastAriaLive || {});\nconst TOAST_UNDO_TIMEOUT = 1e4;\nconst TOAST_DEFAULT_TIMEOUT = 7e3;\nconst TOAST_PERMANENT_TIMEOUT = -1;\nfunction showMessage(data, options) {\n options = {\n timeout: TOAST_DEFAULT_TIMEOUT,\n isHTML: false,\n type: void 0,\n // An undefined selector defaults to the body element\n selector: void 0,\n onRemove: () => {\n },\n onClick: void 0,\n close: true,\n ...options\n };\n if (typeof data === \"string\" && !options.isHTML) {\n const element = document.createElement(\"div\");\n element.innerHTML = data;\n data = element.innerText;\n }\n let classes = options.type ?? \"\";\n if (typeof options.onClick === \"function\") {\n classes += \" toast-with-click \";\n }\n const isNode = data instanceof Node;\n let ariaLive = ToastAriaLive.POLITE;\n if (options.ariaLive) {\n ariaLive = options.ariaLive;\n } else if (options.type === \"toast-error\" || options.type === \"toast-undo\") {\n ariaLive = ToastAriaLive.ASSERTIVE;\n }\n const toast = Toastify({\n [!isNode ? \"text\" : \"node\"]: data,\n duration: options.timeout,\n callback: options.onRemove,\n onClick: options.onClick,\n close: options.close,\n gravity: \"top\",\n selector: options.selector,\n position: \"right\",\n backgroundColor: \"\",\n className: \"dialogs \" + classes,\n escapeMarkup: !options.isHTML,\n ariaLive\n });\n toast.showToast();\n return toast;\n}\nfunction showError(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-error\"\n /* ERROR */\n });\n}\nfunction showWarning(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-warning\"\n /* WARNING */\n });\n}\nfunction showInfo(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-info\"\n /* INFO */\n });\n}\nfunction showSuccess(text, options) {\n return showMessage(text, {\n ...options,\n type: \"toast-success\"\n /* SUCCESS */\n });\n}\nfunction showLoading(text, options) {\n const loader = document.createElement(\"span\");\n loader.innerHTML = LoaderSvg;\n loader.classList.add(\"toast-loader\");\n const loaderContent = document.createElement(\"span\");\n loaderContent.classList.add(\"toast-loader-container\");\n loaderContent.innerText = text;\n loaderContent.appendChild(loader);\n return showMessage(loaderContent, {\n ...options,\n close: false,\n timeout: TOAST_PERMANENT_TIMEOUT,\n type: \"toast-loading\"\n /* LOADING */\n });\n}\nfunction showUndo(text, onUndo, options) {\n if (!(onUndo instanceof Function)) {\n throw new Error(\"Please provide a valid onUndo method\");\n }\n options = Object.assign(options || {}, {\n // force 10 seconds of timeout\n timeout: TOAST_UNDO_TIMEOUT\n });\n const undoContent = document.createElement(\"span\");\n const undoButton = document.createElement(\"button\");\n undoContent.classList.add(\"toast-undo-container\");\n undoButton.classList.add(\"toast-undo-button\");\n undoButton.innerText = t(\"Undo\");\n undoContent.innerText = text;\n undoContent.appendChild(undoButton);\n const toast = showMessage(undoContent, {\n ...options,\n type: \"toast-undo\"\n /* UNDO */\n });\n undoButton.addEventListener(\"click\", function(event) {\n event.stopPropagation();\n onUndo(event);\n if (toast?.hideToast instanceof Function) {\n toast.hideToast();\n }\n });\n return toast;\n}\nconst _hoisted_1 = [\"textContent\"];\nconst _hoisted_2 = [\"innerHTML\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"GenericDialog\",\n props: {\n name: {},\n text: {},\n html: {},\n buttons: {},\n severity: {}\n },\n emits: [\"close\"],\n setup(__props, { emit: __emit }) {\n const props = __props;\n const emit = __emit;\n const dialogButtons = computed(() => props.buttons?.map((button) => ({\n ...button,\n callback() {\n button.callback();\n emit(\"close\", true);\n }\n })));\n const handleUnload = () => `${props.name}: ${props.text}`;\n onMounted(() => window.addEventListener(\"unload\", handleUnload));\n onUnmounted(() => window.removeEventListener(\"unload\", handleUnload));\n return (_ctx, _cache) => {\n return openBlock(), createBlock(unref(NcDialog), {\n dialogClasses: \"nc-generic-dialog\",\n buttons: dialogButtons.value,\n name: __props.name,\n message: __props.text,\n \"onUpdate:open\": _cache[0] || (_cache[0] = ($event) => _ctx.$emit(\"close\", false))\n }, {\n default: withCtx(() => [\n __props.severity ? (openBlock(), createBlock(unref(NcNoteCard), {\n key: 0,\n type: __props.severity\n }, {\n default: withCtx(() => [\n createElementVNode(\"p\", {\n textContent: toDisplayString(__props.text)\n }, null, 8, _hoisted_1)\n ]),\n _: 1\n }, 8, [\"type\"])) : createCommentVNode(\"\", true),\n __props.html ? (openBlock(), createElementBlock(\"div\", {\n key: 1,\n innerHTML: __props.html\n }, null, 8, _hoisted_2)) : createCommentVNode(\"\", true)\n ]),\n _: 1\n }, 8, [\"buttons\", \"name\", \"message\"]);\n };\n }\n});\nclass Dialog {\n #name;\n #text;\n #buttons;\n #severity;\n constructor(name, text, buttons = [], severity) {\n this.#name = name;\n this.#text = text;\n this.#buttons = buttons;\n this.#severity = severity;\n }\n /**\n * Spawn and show the dialog - if already open the previous instance will be destroyed\n *\n * @return Promise that resolves when the dialog is answered successfully and rejects on close\n */\n async show() {\n const result = await spawnDialog(\n _sfc_main,\n {\n buttons: this.#buttons,\n name: this.#name,\n text: this.#text,\n severity: this.#severity\n }\n );\n if (!result) {\n throw new Error(\"Dialog closed\");\n }\n }\n}\nclass DialogBuilder {\n #severity;\n #text;\n #name;\n #buttons;\n constructor(name) {\n this.#severity = void 0;\n this.#text = \"\";\n this.#name = name ?? \"\";\n this.#buttons = [];\n }\n /**\n * Set dialog name\n *\n * @param name The name or headline of the dialog\n */\n setName(name) {\n this.#name = name;\n return this;\n }\n /**\n * Set the dialog text\n *\n * @param text Main text of the dialog\n */\n setText(text) {\n this.#text = text;\n return this;\n }\n /**\n * Set the severity of the dialog\n *\n * @param severity Severity of the dialog\n */\n setSeverity(severity) {\n this.#severity = severity;\n return this;\n }\n /**\n * Set buttons from array\n *\n * @param buttons Either an array of dialog buttons\n */\n setButtons(buttons) {\n if (this.#buttons.length > 0) {\n logger.warn(\"[@nextcloud/dialogs] Dialog buttons are already set - this overrides previous buttons.\");\n }\n this.#buttons = buttons;\n return this;\n }\n /**\n * Add a single button\n *\n * @param button Button to add\n */\n addButton(button) {\n this.#buttons.push(button);\n return this;\n }\n build() {\n return new Dialog(this.#name, this.#text, this.#buttons, this.#severity);\n }\n}\nfunction getDialogBuilder(name) {\n return new DialogBuilder(name);\n}\nasync function showConfirmation(options) {\n options = {\n labelConfirm: t(\"Confirm\"),\n ...options\n };\n const { promise, resolve } = Promise.withResolvers();\n const buttons = [{\n label: options.labelConfirm,\n variant: \"primary\",\n callback() {\n resolve(true);\n }\n }];\n if (options.labelReject) {\n buttons.unshift({\n label: options.labelReject,\n callback() {\n resolve(false);\n }\n });\n }\n const dialog = new Dialog(\n options.name,\n options.text,\n buttons,\n options.severity\n );\n await dialog.show();\n return promise;\n}\nexport {\n Dialog as D,\n FilePicker as F,\n TOAST_ARIA_LIVE_ASSERTIVE as T,\n FilePickerBuilder as a,\n FilePickerClosed as b,\n FilePickerType as c,\n showGuestUserPrompt as d,\n showInfo as e,\n showLoading as f,\n getFilePickerBuilder as g,\n showMessage as h,\n showSuccess as i,\n showUndo as j,\n showWarning as k,\n logger as l,\n TOAST_ARIA_LIVE_OFF as m,\n n,\n openConflictPicker as o,\n TOAST_ARIA_LIVE_POLITE as p,\n TOAST_DEFAULT_TIMEOUT as q,\n TOAST_PERMANENT_TIMEOUT as r,\n showError as s,\n t,\n TOAST_UNDO_TIMEOUT as u,\n ToastAriaLive as v,\n ToastType as w,\n DialogBuilder as x,\n getDialogBuilder as y,\n showConfirmation as z\n};\n//# sourceMappingURL=index-C1xmmKTZ.mjs.map\n"],"file":"index-C1xmmKTZ-BfviRmbX.chunk.mjs"} \ No newline at end of file diff --git a/dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs.map.license b/dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs.map.license similarity index 100% rename from dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs.map.license rename to dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs.map.license diff --git a/dist/index-CEtX00Aw.chunk.css b/dist/index-CEtX00Aw.chunk.css new file mode 100644 index 0000000000000..bd430e3049b67 --- /dev/null +++ b/dist/index-CEtX00Aw.chunk.css @@ -0,0 +1,7 @@ +.material-design-icon[data-v-6a2b8de0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.nc-button-group-base>div[data-v-6a2b8de0]{text-align:center;color:var(--color-text-maxcontrast)}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0]{display:flex;gap:4px;justify-content:space-between}.nc-button-group-base ul.nc-button-group-content li[data-v-6a2b8de0-s]{flex:1 1}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button{padding:0!important;width:100%;display:flex;justify-content:center}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button.action-button--active{background-color:var(--color-primary-element);border-radius:var(--border-radius-element);color:var(--color-primary-element-text)}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button.action-button--active:hover,.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button.action-button--active:focus,.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button.action-button--active:focus-within{background-color:var(--color-primary-element-hover)}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button .action-button__pressed-icon{display:none}.material-design-icon[data-v-1009e96c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-caption[data-v-1009e96c]{color:var(--color-text-maxcontrast);line-height:var(--default-clickable-area);white-space:nowrap;text-overflow:ellipsis;box-shadow:none!important;-webkit-user-select:none;user-select:none;pointer-events:none;margin-inline-start:12px;padding-inline-end:14px;height:var(--default-clickable-area);display:flex;align-items:center}.material-design-icon[data-v-2947bc3b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-2947bc3b]:hover,li.action.active[data-v-2947bc3b]{border-radius:6px;padding:0}li.action[data-v-2947bc3b]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-2947bc3b]{pointer-events:none;opacity:.5}.action--disabled[data-v-2947bc3b]:hover,.action--disabled[data-v-2947bc3b]:focus{cursor:default;opacity:.5}.action--disabled[data-v-2947bc3b] *{opacity:1!important}.action-checkbox[data-v-2947bc3b]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-checkbox>span[data-v-2947bc3b]{cursor:pointer;white-space:nowrap}.action-checkbox__icon[data-v-2947bc3b]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-checkbox[data-v-2947bc3b] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-checkbox[data-v-2947bc3b] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-checkbox__longtext-wrapper[data-v-2947bc3b],.action-checkbox__longtext[data-v-2947bc3b]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-checkbox__longtext[data-v-2947bc3b]{cursor:pointer;white-space:pre-wrap!important}.action-checkbox__name[data-v-2947bc3b]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-checkbox__description[data-v-2947bc3b]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-checkbox__menu-icon[data-v-2947bc3b]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action[data-v-2947bc3b]:has(:focus-visible){outline:2px solid currentColor}.action-checkbox__icon[data-v-2947bc3b]{color:var(--color-primary-element)}.action-checkbox__input[data-v-2947bc3b]{width:20px;height:20px;margin:auto;position:absolute;z-index:-1;opacity:0!important}.material-design-icon[data-v-6c208ddd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-6c208ddd]:hover,li.action.active[data-v-6c208ddd]{border-radius:6px;padding:0}li.action[data-v-6c208ddd]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-6c208ddd]{pointer-events:none;opacity:.5}.action--disabled[data-v-6c208ddd]:hover,.action--disabled[data-v-6c208ddd]:focus{cursor:default;opacity:.5}.action--disabled[data-v-6c208ddd] *{opacity:1!important}.action-radio[data-v-6c208ddd]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-radio>span[data-v-6c208ddd]{cursor:pointer;white-space:nowrap}.action-radio__icon[data-v-6c208ddd]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-radio[data-v-6c208ddd] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-radio[data-v-6c208ddd] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-radio__longtext-wrapper[data-v-6c208ddd],.action-radio__longtext[data-v-6c208ddd]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-radio__longtext[data-v-6c208ddd]{cursor:pointer;white-space:pre-wrap!important}.action-radio__name[data-v-6c208ddd]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-radio__description[data-v-6c208ddd]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-radio__menu-icon[data-v-6c208ddd]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action[data-v-6c208ddd]:has(:focus-visible){outline:2px solid currentColor}.action-radio__icon[data-v-6c208ddd]{color:var(--color-primary-element)}.action-radio__input[data-v-6c208ddd]{width:20px;height:20px;margin:auto;position:absolute;z-index:-1;opacity:0!important}.material-design-icon[data-v-3e2324b7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-separator[data-v-3e2324b7]{height:0;margin:5px 10px 5px 15px;border-bottom:1px solid var(--color-border-dark);cursor:default}.material-design-icon[data-v-24e8b746]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}button[data-v-24e8b746]:not(.button-vue),input[data-v-24e8b746]:not([type=range]),textarea[data-v-24e8b746]{margin:0;padding:7px 6px;cursor:text;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius-element);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-24e8b746]:not(.button-vue):not(:disabled):not(.primary):hover,button[data-v-24e8b746]:not(.button-vue):not(:disabled):not(.primary):focus,button:not(.button-vue):not(:disabled):not(.primary).active[data-v-24e8b746],input[data-v-24e8b746]:not([type=range]):not(:disabled):not(.primary):hover,input[data-v-24e8b746]:not([type=range]):not(:disabled):not(.primary):focus,input:not([type=range]):not(:disabled):not(.primary).active[data-v-24e8b746],textarea[data-v-24e8b746]:not(:disabled):not(.primary):hover,textarea[data-v-24e8b746]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-24e8b746]{border-color:var(--color-primary-element);outline:none}button[data-v-24e8b746]:not(.button-vue):not(:disabled):not(.primary):active,input[data-v-24e8b746]:not([type=range]):not(:disabled):not(.primary):active,textarea[data-v-24e8b746]:not(:disabled):not(.primary):active{color:var(--color-main-text);outline:none;background-color:var(--color-main-background)}button[data-v-24e8b746]:not(.button-vue):disabled,input[data-v-24e8b746]:not([type=range]):disabled,textarea[data-v-24e8b746]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-24e8b746]:not(.button-vue):required,input[data-v-24e8b746]:not([type=range]):required,textarea[data-v-24e8b746]:required{box-shadow:none}button[data-v-24e8b746]:not(.button-vue):invalid,input[data-v-24e8b746]:not([type=range]):invalid,textarea[data-v-24e8b746]:invalid{border-color:var(--color-border-error, var(--color-error));box-shadow:none!important}button:not(.button-vue).primary[data-v-24e8b746],input:not([type=range]).primary[data-v-24e8b746],textarea.primary[data-v-24e8b746]{cursor:pointer;color:var(--color-primary-element-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button:not(.button-vue).primary[data-v-24e8b746]:not(:disabled):hover,button:not(.button-vue).primary[data-v-24e8b746]:not(:disabled):focus,button:not(.button-vue).primary[data-v-24e8b746]:not(:disabled):active,input:not([type=range]).primary[data-v-24e8b746]:not(:disabled):hover,input:not([type=range]).primary[data-v-24e8b746]:not(:disabled):focus,input:not([type=range]).primary[data-v-24e8b746]:not(:disabled):active,textarea.primary[data-v-24e8b746]:not(:disabled):hover,textarea.primary[data-v-24e8b746]:not(:disabled):focus,textarea.primary[data-v-24e8b746]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button:not(.button-vue).primary[data-v-24e8b746]:not(:disabled):active,input:not([type=range]).primary[data-v-24e8b746]:not(:disabled):active,textarea.primary[data-v-24e8b746]:not(:disabled):active{color:var(--color-primary-element-text-dark)}button:not(.button-vue).primary[data-v-24e8b746]:disabled,input:not([type=range]).primary[data-v-24e8b746]:disabled,textarea.primary[data-v-24e8b746]:disabled{cursor:default;color:var(--color-primary-element-text-dark);background-color:var(--color-primary-element)}li.action[data-v-24e8b746]:hover,li.action.active[data-v-24e8b746]{border-radius:6px;padding:0}li.action[data-v-24e8b746]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-24e8b746]{pointer-events:none;opacity:.5}.action--disabled[data-v-24e8b746]:hover,.action--disabled[data-v-24e8b746]:focus{cursor:default;opacity:.5}.action--disabled[data-v-24e8b746] *{opacity:1!important}.action-text-editable[data-v-24e8b746]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;line-height:var(--default-clickable-area)}.action-text-editable>span[data-v-24e8b746]{cursor:pointer;white-space:nowrap}.action-text-editable__icon[data-v-24e8b746]{min-width:0;min-height:0;padding:calc(var(--default-clickable-area) / 2) 0 calc(var(--default-clickable-area) / 2) var(--default-clickable-area);background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px}.action-text-editable[data-v-24e8b746] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-text-editable[data-v-24e8b746] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-text-editable__form[data-v-24e8b746]{display:flex;flex:1 1 auto;flex-direction:column;position:relative;margin:4px 0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.action-text-editable__submit[data-v-24e8b746]{position:absolute;inset-inline-start:0;top:auto;width:1px;height:1px;overflow:hidden;z-index:-1;opacity:0}.action-text-editable__label[data-v-24e8b746]{display:flex;align-items:center;justify-content:center;position:absolute;inset-inline-end:calc((var(--default-clickable-area) - 16px) / 2 + 1px);bottom:1px;width:calc(var(--default-clickable-area) - 8px);height:calc(var(--default-clickable-area) - 8px);box-sizing:border-box;margin:0;padding:7px 6px;border:0;border-radius:50%;background-color:var(--color-main-background);background-clip:padding-box}.action-text-editable__label[data-v-24e8b746],.action-text-editable__label[data-v-24e8b746] *{cursor:pointer}.action-text-editable__textarea[data-v-24e8b746]{flex:1 1 auto;color:inherit;border-color:var(--color-border-maxcontrast);min-height:calc(var(--default-clickable-area) * 2 - 8px);max-height:calc(var(--default-clickable-area) * 3 - 8px);min-width:calc(var(--default-clickable-area) * 4);width:100%!important;margin:0}.action-text-editable__textarea[data-v-24e8b746]:disabled{cursor:default}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid+.action-text-editable__label[data-v-24e8b746]{background-color:var(--color-error)}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-24e8b746]:active,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-24e8b746]:hover,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-24e8b746]:focus{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.action-text-editable__textarea:active:not(:disabled)+.action-text-editable__label[data-v-24e8b746],.action-text-editable__textarea:hover:not(:disabled)+.action-text-editable__label[data-v-24e8b746],.action-text-editable__textarea:focus:not(:disabled)+.action-text-editable__label[data-v-24e8b746]{z-index:2;border-color:var(--color-primary-element);border-inline-start-color:transparent}li:last-child>.action-text-editable[data-v-24e8b746]{margin-bottom:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}li:first-child>.action-text-editable[data-v-24e8b746]{margin-top:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}.material-design-icon[data-v-5a15295d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-toggle-wrapper[data-v-5a15295d]{position:absolute;top:var(--app-navigation-padding);inset-inline-end:calc(0px - var(--app-navigation-padding));margin-inline-end:calc(-1 * var(--default-clickable-area))}button.app-navigation-toggle[data-v-5a15295d]{background-color:var(--color-main-background)}.app-navigation,.app-content{--app-navigation-padding: calc(var(--default-grid-baseline, 4px) * 2)}.material-design-icon[data-v-d5ce90cd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation[data-v-d5ce90cd]{--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-text-maxcontrast-default));transition:transform var(--animation-quick),margin var(--animation-quick);width:300px;--app-navigation-max-width: calc(100vw - (var(--app-navigation-padding) + var(--default-clickable-area) + var(--default-grid-baseline)));max-width:var(--app-navigation-max-width);position:relative;top:0;inset-inline-start:0;padding:0;z-index:1800;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-grow:0;flex-shrink:0;background-color:var(--color-main-background-blur, var(--color-main-background));-webkit-backdrop-filter:var(--filter-background-blur, none);backdrop-filter:var(--filter-background-blur, none)}.app-navigation--closed[data-v-d5ce90cd]{margin-inline-start:calc(-1*min(300px,var(--app-navigation-max-width)))}.app-navigation__search[data-v-d5ce90cd]{width:100%}.app-navigation__body[data-v-d5ce90cd]{overflow-y:scroll}.app-navigation__content>ul[data-v-d5ce90cd]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.app-navigation .app-navigation__list[data-v-d5ce90cd]{height:100%}.app-navigation__body--no-list[data-v-d5ce90cd]{flex:1 1 auto;overflow:auto;height:100%}.app-navigation__content[data-v-d5ce90cd]{height:100%;display:flex;flex-direction:column}[data-themes*=highcontrast] .app-navigation[data-v-d5ce90cd]{border-inline-end:1px solid var(--color-border)}@media only screen and (max-width:1024px){.app-navigation[data-v-d5ce90cd]{position:absolute;border-inline-end:1px solid var(--color-border)}}@media only screen and (max-width:512px){.app-navigation[data-v-d5ce90cd]{z-index:1400}}.material-design-icon[data-v-d72957ed]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-list[data-v-d72957ed]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.material-design-icon[data-v-21e6b451]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-caption[data-v-21e6b451]{display:flex;justify-content:space-between}.app-navigation-caption--heading[data-v-21e6b451]{padding:var(--app-navigation-padding)}.app-navigation-caption--heading[data-v-21e6b451]:not(:first-child):not(:last-child){padding:0 var(--app-navigation-padding)}.app-navigation-caption__name[data-v-21e6b451]{font-weight:700;color:var(--color-main-text);font-size:var(--default-font-size);line-height:var(--default-clickable-area);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:none!important;flex-shrink:0;padding-block:0;padding-inline:calc(var(--default-grid-baseline, 4px) * 2) 0;margin-top:0;margin-bottom:var(--default-grid-baseline)}.app-navigation-caption__actions[data-v-21e6b451]{flex:0 0 var(--default-clickable-area)}.app-navigation-caption[data-v-21e6b451]:not(:first-child){margin-top:calc(var(--default-clickable-area) / 2)}.material-design-icon[data-v-04a313f4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry__icon-bullet[data-v-04a313f4]{display:block;padding:calc((var(--default-clickable-area) - 16px) / 2 + 1px)}.app-navigation-entry__icon-bullet div[data-v-04a313f4]{width:14px;height:14px;cursor:pointer;transition:background .1s ease-in-out;border:none;border-radius:50%}.material-design-icon[data-v-e6236e50]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-collapse[data-v-e6236e50]{position:relative;inset-inline-end:0}.icon-collapse[data-v-e6236e50]:hover{background-color:var(--color-background-dark)!important}.icon-collapse--active[data-v-e6236e50]:hover{background-color:var(--color-primary-element)!important}.material-design-icon[data-v-f925f8d0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry[data-v-f925f8d0]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%;min-height:var(--default-clickable-area);transition:background-color var(--animation-quick) ease-in-out;transition:background-color .2s ease-in-out;border-radius:var(--border-radius-element)}.app-navigation-entry-wrapper[data-v-f925f8d0]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%}.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened)>ul[data-v-f925f8d0]{display:none}.app-navigation-entry.active[data-v-f925f8d0]{background-color:var(--color-primary-element)!important}.app-navigation-entry.active[data-v-f925f8d0]:hover{background-color:var(--color-primary-element-hover)!important}.app-navigation-entry.active .app-navigation-entry-link[data-v-f925f8d0],.app-navigation-entry.active .app-navigation-entry-button[data-v-f925f8d0]{color:var(--color-primary-element-text)!important}.app-navigation-entry[data-v-f925f8d0]:focus-within,.app-navigation-entry[data-v-f925f8d0]:hover{background-color:var(--color-background-hover)}.app-navigation-entry.active .app-navigation-entry__children[data-v-f925f8d0],.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-f925f8d0],.app-navigation-entry:hover .app-navigation-entry__children[data-v-f925f8d0]{background-color:var(--color-main-background)}.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0],.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0],.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0],.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0],.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0]{display:inline-block}.app-navigation-entry .app-navigation-entry__actions[data-v-f925f8d0]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry.active .app-navigation-entry__actions[data-v-f925f8d0]:hover .button-vue{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--deleted>ul[data-v-f925f8d0]{display:none}.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-f925f8d0],.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-f925f8d0]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.app-navigation-entry .app-navigation-entry-link[data-v-f925f8d0],.app-navigation-entry .app-navigation-entry-button[data-v-f925f8d0]{z-index:100;display:flex;overflow:hidden;flex:1 1 0;min-height:var(--default-clickable-area);padding:0;white-space:nowrap;color:var(--color-main-text);background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px 16px;line-height:var(--default-clickable-area)}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-f925f8d0],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-f925f8d0]{display:flex;align-items:center;flex:0 0 var(--default-clickable-area);justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);background-size:16px 16px;background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-f925f8d0],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-f925f8d0]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis}.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-f925f8d0],.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-f925f8d0]{width:calc(100% - var(--default-clickable-area));margin:auto}.app-navigation-entry .app-navigation-entry-link[data-v-f925f8d0]:focus-visible,.app-navigation-entry .app-navigation-entry-button[data-v-f925f8d0]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background);outline:2px solid var(--color-main-text);border-radius:var(--border-radius-element)}.app-navigation-entry__children[data-v-f925f8d0]{--app-navigation-item-child-offset: 10px;position:relative;display:flex;flex:0 1 auto;flex-direction:column;width:100%;gap:var(--default-grid-baseline, 4px);padding-inline-start:var(--app-navigation-item-child-offset)}.app-navigation-entry__children .app-navigation-entry[data-v-f925f8d0]{display:inline-flex;flex-wrap:wrap}.app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children[data-v-f925f8d0]{--app-navigation-item-child-offset: 0}.app-navigation-entry__deleted[data-v-f925f8d0]{display:inline-flex;flex:1 1 0;padding-inline-start:calc(var(--default-clickable-area) - (var(--default-clickable-area) - 16px) / 2)!important}.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-f925f8d0]{position:relative;overflow:hidden;flex:1 1 0;white-space:nowrap;text-overflow:ellipsis;line-height:var(--default-clickable-area)}.app-navigation-entry__utils[data-v-f925f8d0]{display:flex;min-width:var(--default-clickable-area);align-items:center;flex:0 1 auto;justify-content:flex-end}.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-f925f8d0]{display:inline-block}.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-f925f8d0]{margin-inline-end:calc(var(--default-grid-baseline) * 2);display:flex;align-items:center;flex:0 1 auto}.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-f925f8d0]{display:none}.app-navigation-entry--editing .app-navigation-entry-edit[data-v-f925f8d0]{z-index:250;opacity:1}.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-f925f8d0]{z-index:250;transform:translate(0)}.app-navigation-entry--pinned[data-v-f925f8d0]{order:2;margin-top:auto}.app-navigation-entry--pinned~.app-navigation-entry--pinned[data-v-f925f8d0]{margin-top:0}[data-themes*=highcontrast] .app-navigation-entry[data-v-f925f8d0]:active{background-color:var(--color-primary-element-light-hover)!important}.material-design-icon[data-v-dd457d48]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-input-confirm[data-v-dd457d48]{flex:1 0 100%;width:100%}.app-navigation-input-confirm form[data-v-dd457d48]{display:flex}.app-navigation-input-confirm__input[data-v-dd457d48]{height:34px;flex:1 1 100%;font-size:100%!important;margin:5px!important;margin-inline-start:-8px!important;padding:7px!important}.app-navigation-input-confirm__input[data-v-dd457d48]:active,.app-navigation-input-confirm__input[data-v-dd457d48]:focus,.app-navigation-input-confirm__input[data-v-dd457d48]:hover{outline:none;background-color:var(--color-main-background);color:var(--color-main-text);border-color:var(--color-primary-element)}.material-design-icon[data-v-0ba6c9df]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-new[data-v-0ba6c9df]{display:block;padding:calc(var(--default-grid-baseline, 4px) * 2)}.app-navigation-new button[data-v-0ba6c9df]{width:100%}.material-design-icon[data-v-ee07f8f8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry[data-v-ee07f8f8]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%;min-height:var(--default-clickable-area);transition:background-color var(--animation-quick) ease-in-out;transition:background-color .2s ease-in-out;border-radius:var(--border-radius-element)}.app-navigation-entry-wrapper[data-v-ee07f8f8]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%}.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened)>ul[data-v-ee07f8f8]{display:none}.app-navigation-entry.active[data-v-ee07f8f8]{background-color:var(--color-primary-element)!important}.app-navigation-entry.active[data-v-ee07f8f8]:hover{background-color:var(--color-primary-element-hover)!important}.app-navigation-entry.active .app-navigation-entry-link[data-v-ee07f8f8],.app-navigation-entry.active .app-navigation-entry-button[data-v-ee07f8f8]{color:var(--color-primary-element-text)!important}.app-navigation-entry[data-v-ee07f8f8]:focus-within,.app-navigation-entry[data-v-ee07f8f8]:hover{background-color:var(--color-background-hover)}.app-navigation-entry.active .app-navigation-entry__children[data-v-ee07f8f8],.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-ee07f8f8],.app-navigation-entry:hover .app-navigation-entry__children[data-v-ee07f8f8]{background-color:var(--color-main-background)}.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8]{display:inline-block}.app-navigation-entry .app-navigation-entry__actions[data-v-ee07f8f8]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry.active .app-navigation-entry__actions[data-v-ee07f8f8]:hover .button-vue{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--deleted>ul[data-v-ee07f8f8]{display:none}.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-ee07f8f8],.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-ee07f8f8]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.app-navigation-entry .app-navigation-entry-link[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button[data-v-ee07f8f8]{z-index:100;display:flex;overflow:hidden;flex:1 1 0;min-height:var(--default-clickable-area);padding:0;white-space:nowrap;color:var(--color-main-text);background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px 16px;line-height:var(--default-clickable-area)}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-ee07f8f8]{display:flex;align-items:center;flex:0 0 var(--default-clickable-area);justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);background-size:16px 16px;background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-ee07f8f8]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis}.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-ee07f8f8]{width:calc(100% - var(--default-clickable-area));margin:auto}.app-navigation-entry .app-navigation-entry-link[data-v-ee07f8f8]:focus-visible,.app-navigation-entry .app-navigation-entry-button[data-v-ee07f8f8]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background);outline:2px solid var(--color-main-text);border-radius:var(--border-radius-element)}.app-navigation-entry__children[data-v-ee07f8f8]{--app-navigation-item-child-offset: 10px;position:relative;display:flex;flex:0 1 auto;flex-direction:column;width:100%;gap:var(--default-grid-baseline, 4px);padding-inline-start:var(--app-navigation-item-child-offset)}.app-navigation-entry__children .app-navigation-entry[data-v-ee07f8f8]{display:inline-flex;flex-wrap:wrap}.app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children[data-v-ee07f8f8]{--app-navigation-item-child-offset: 0}.app-navigation-entry__deleted[data-v-ee07f8f8]{display:inline-flex;flex:1 1 0;padding-inline-start:calc(var(--default-clickable-area) - (var(--default-clickable-area) - 16px) / 2)!important}.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-ee07f8f8]{position:relative;overflow:hidden;flex:1 1 0;white-space:nowrap;text-overflow:ellipsis;line-height:var(--default-clickable-area)}.app-navigation-entry__utils[data-v-ee07f8f8]{display:flex;min-width:var(--default-clickable-area);align-items:center;flex:0 1 auto;justify-content:flex-end}.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-ee07f8f8]{display:inline-block}.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-ee07f8f8]{margin-inline-end:calc(var(--default-grid-baseline) * 2);display:flex;align-items:center;flex:0 1 auto}.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-ee07f8f8]{display:none}.app-navigation-entry--editing .app-navigation-entry-edit[data-v-ee07f8f8]{z-index:250;opacity:1}.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-ee07f8f8]{z-index:250;transform:translate(0)}.app-navigation-entry--pinned[data-v-ee07f8f8]{order:2;margin-top:auto}.app-navigation-entry--pinned~.app-navigation-entry--pinned[data-v-ee07f8f8]{margin-top:0}[data-themes*=highcontrast] .app-navigation-entry[data-v-ee07f8f8]:active{background-color:var(--color-primary-element-light-hover)!important}.app-navigation-new-item__name[data-v-ee07f8f8]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis;padding-inline-start:7px;font-size:14px}.newItemContainer[data-v-ee07f8f8]{width:calc(100% - var(--default-clickable-area));margin:auto}.material-design-icon[data-v-9f5c0794]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-search[data-v-9f5c0794]{display:flex;gap:var(--app-navigation-padding);padding:var(--app-navigation-padding)}.app-navigation-search--has-actions .app-navigation-search__input[data-v-9f5c0794]{flex-grow:1;z-index:3}.app-navigation-search__actions[data-v-9f5c0794]{display:flex;gap:var(--default-grid-baseline);margin-inline-start:0;max-width:calc(2 * var(--default-clickable-area) + var(--default-grid-baseline));max-height:var(--default-clickable-area);transition:margin-inline-start var(--animation-quick)}.app-navigation-search__actions--hidden[data-v-9f5c0794]{margin-inline-start:calc(-1 * var(--default-clickable-area))}._container_RFk6U{margin-top:auto;padding:var(--default-grid-baseline)}._header_2CtDS{margin-block:0 var(--default-grid-baseline);margin-inline:var(--default-grid-baseline)}._button_tAyis{padding-inline:0 calc((var(--default-clickable-area) - 16px) / 2)!important;.button-vue__text{font-weight:400}}._content_--KYD{display:block;padding:10px;margin-bottom:calc(-1 * var(--default-grid-baseline));max-height:300px;overflow-y:auto}._animationActive_DAG1p{transition-duration:var(--animation-slow);transition-property:max-height,padding;overflow-y:hidden!important}._animationStop_fWYQj{max-height:0!important;padding:0 10px!important}.app-navigation-spacer[data-v-277fa710]{flex-shrink:0;height:22px}._material-design-icon_qDIHA{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._appSettingsDialogVersion_8Xr7R{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));color:var(--color-text-maxcontrast);margin-block-end:calc(8 * var(--default-grid-baseline));margin-inline:var(--form-element-label-offset)}._appSettingsDialogVersion__legacy_7MO71{margin-inline:0}.material-design-icon[data-v-9445186a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings[data-v-9445186a] .app-settings__navigation{min-width:200px;margin-inline-end:calc(4 * var(--default-grid-baseline));overflow-x:hidden;overflow-y:auto;position:relative}.app-settings[data-v-9445186a] .app-settings__content{padding-inline:calc(4 * var(--default-grid-baseline))}.navigation-list[data-v-9445186a]{height:100%;overflow-y:auto;padding:calc(3 * var(--default-grid-baseline))}.navigation-list__link[data-v-9445186a]{display:flex;align-content:center;font-size:16px;height:var(--default-clickable-area);margin:4px 0;line-height:var(--default-clickable-area);border-radius:var(--border-radius-element);font-weight:700;padding:0 calc(4 * var(--default-grid-baseline));cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;background-color:transparent;border:none}.navigation-list__link[data-v-9445186a]:hover,.navigation-list__link[data-v-9445186a]:focus{background-color:var(--color-background-hover)}.navigation-list__link--active[data-v-9445186a]{background-color:var(--color-primary-element-light)!important}.navigation-list__link--icon[data-v-9445186a]{padding-inline-start:calc(2 * var(--default-grid-baseline));gap:var(--default-grid-baseline)}.navigation-list__link-icon[data-v-9445186a]{display:flex;justify-content:center;align-content:center;width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));max-width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}@media only screen and (max-width:512px){.app-settings[data-v-9445186a] .dialog__name{padding-inline-start:16px}}.material-design-icon[data-v-4095bb7f]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings-section[data-v-4095bb7f]{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));--app-settings-section-text-offset: var(--form-element-label-offset);--app-settings-section-content-gap: calc(6 * var(--default-grid-baseline));margin-block-end:calc(8 * var(--default-grid-baseline))}.app-settings-section__name[data-v-4095bb7f]{margin:0;padding-inline:var(--app-settings-section-text-offset);padding-block:0;font-size:20px;font-weight:700}.app-settings-section__description[data-v-4095bb7f]{padding-inline:var(--app-settings-section-text-offset);color:var(--color-text-maxcontrast)}.app-settings-section__content[data-v-4095bb7f]{margin-block-start:calc(2 * var(--default-grid-baseline));display:flex;flex-direction:column;justify-content:stretch;gap:var(--app-settings-section-content-gap)}.app-settings-section__legacy[data-v-4095bb7f]{--app-settings-section-text-offset: 0;--app-settings-section-content-gap: 0}._appSettingsSectionShortcuts_RqpkA{display:flex;flex-direction:column;gap:calc(4 * var(--default-grid-baseline))}._material-design-icon_m4vbX{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._sidebarTabsButton_6hxfz{border:none;border-bottom:var(--default-grid-baseline) solid transparent!important;border-radius:var(--border-radius-small);background-color:var(--color-main-background);color:var(--color-main-text);font-size:var(--default-font-size);cursor:pointer;display:flex;flex-direction:column;gap:var(--default-grid-baseline);padding:var(--border-radius-small);transition:background-color var(--animation-quick),border-bottom-color var(--animation-quick);min-width:var(--default-clickable-area)}._sidebarTabsButton_6hxfz:hover{background-color:var(--color-background-hover)!important}._sidebarTabsButton_6hxfz:active,._sidebarTabsButton_6hxfz:focus{background-color:var(--color-main-background)!important}._sidebarTabsButton_6hxfz *{cursor:pointer}._sidebarTabsButton_selected_eBHM-{border-bottom-color:var(--color-primary-element)!important;border-bottom-left-radius:0;border-bottom-right-radius:0;cursor:default}._sidebarTabsButton_selected_eBHM-:hover{background-color:var(--color-primary-element-light-hover)!important;color:var(--color-primary-element-light-text)!important}._sidebarTabsButton_selected_eBHM- *{cursor:default}._sidebarTabsButton__name_YlW5S{font-weight:400;overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}._sidebarTabsButton_selected_eBHM- ._sidebarTabsButton__name_YlW5S{font-weight:700}._sidebarTabsButton__icon_MPS-D{display:inline-flex;align-items:center;justify-content:center}._sidebarTabsButton__legacyIcon_rzPOu{background-size:20px;display:flex;align-items:center;justify-content:center}.material-design-icon[data-v-1e2d5bfb]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar-tabs[data-v-1e2d5bfb]{display:flex;flex-direction:column;min-height:0;flex:1 1 100%}.app-sidebar-tabs__nav[data-v-1e2d5bfb]{display:flex;justify-content:stretch;margin:10px 8px 0;border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__tab[data-v-1e2d5bfb]{flex:1 1 1px}.app-sidebar-tabs__content[data-v-1e2d5bfb]{position:relative;min-height:256px;height:100%}.app-sidebar-tabs__content--multiple[data-v-1e2d5bfb]>:not(section){display:none}.material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}@property --app-sidebar-offset{syntax: ""; initial-value: 0; inherits: true;}body{--app-sidebar-padding: calc(var(--default-grid-baseline, 4px) * 2);--app-sidebar-offset: 0;transition:--app-sidebar-offset 0ms!important}body:has(.app-sidebar.slide-right-enter-active),body:has(.app-sidebar.slide-right-leave-active){transition:--app-sidebar-offset var(--animation-quick)}body:has(.app-sidebar__toggle){--app-sidebar-offset: calc(var(--app-sidebar-padding) + var(--default-clickable-area))}.material-design-icon[data-v-d66d2f51]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar[data-v-d66d2f51]{--app-sidebar-width: clamp(300px, 27vw, 500px);--app-sidebar-padding: calc(var(--default-grid-baseline, 4px) * 2);width:var(--app-sidebar-width);z-index:1500;top:0;inset-inline-end:0;display:flex;overflow-x:hidden;overflow-y:auto;flex-direction:column;flex-shrink:0;height:100%;border-inline-start:1px solid var(--color-border);background:var(--color-main-background);position:relative}.app-sidebar__toggle[data-v-d66d2f51]{position:absolute!important;inset-block-start:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-padding);z-index:1001}.app-sidebar .app-sidebar-header[data-v-d66d2f51]{--app-sidebar-close-button-offset: calc(var(--default-clickable-area) + var(--app-sidebar-padding))}.app-sidebar .app-sidebar-header>.app-sidebar__close[data-v-d66d2f51]{position:absolute;z-index:100;top:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-padding);width:var(--default-clickable-area);height:var(--default-clickable-area)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info[data-v-d66d2f51]{flex-direction:row}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__figure[data-v-d66d2f51]{--figure-size: calc(52px + var(--app-sidebar-padding));z-index:2;width:var(--figure-size);height:var(--figure-size);margin:calc(var(--app-sidebar-padding) / 2);border-radius:3px;flex:0 0 auto}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc[data-v-d66d2f51]{padding-inline-start:0;flex:1 1 auto;min-width:0;padding-inline-end:calc(var(--default-clickable-area) + var(--app-sidebar-close-button-offset));padding-top:var(--app-sidebar-padding)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-d66d2f51]{padding-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-d66d2f51]{z-index:3;position:absolute;top:calc(var(--app-sidebar-padding) / 2);inset-inline-start:calc(-1 * var(--default-clickable-area));gap:0}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__menu[data-v-d66d2f51]{top:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-close-button-offset);position:absolute}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__menu[data-v-d66d2f51]{position:absolute;top:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc[data-v-d66d2f51]{padding-inline-end:calc(var(--default-clickable-area) + var(--app-sidebar-close-button-offset))}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-d66d2f51]{padding-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header .app-sidebar-header__info[data-v-d66d2f51]{display:flex;flex-direction:column}.app-sidebar .app-sidebar-header__figure[data-v-d66d2f51]{width:100%;height:250px;max-height:250px;background-repeat:no-repeat;background-position:center;background-size:contain}.app-sidebar .app-sidebar-header__figure--with-action[data-v-d66d2f51]{cursor:pointer}.app-sidebar .app-sidebar-header__desc[data-v-d66d2f51]{position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center;padding-inline:var(--app-sidebar-padding);padding-block:var(--app-sidebar-padding) calc(var(--app-sidebar-padding) / 2);gap:0 4px}.app-sidebar .app-sidebar-header__desc--with-tertiary-action[data-v-d66d2f51]{padding-inline-start:6px}.app-sidebar .app-sidebar-header__desc--editable .app-sidebar-header__mainname-form[data-v-d66d2f51],.app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__mainname-form[data-v-d66d2f51]{margin-top:-2px;margin-bottom:-2px}.app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__subname[data-v-d66d2f51]{margin-top:-2px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-d66d2f51]{display:flex;height:var(--default-clickable-area);width:var(--default-clickable-area);justify-content:center;flex:0 0 auto}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-d66d2f51]{box-shadow:none}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-d66d2f51]:not([aria-pressed=true]):hover{box-shadow:none;background-color:var(--color-background-hover)}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container[data-v-d66d2f51]{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;min-width:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container[data-v-d66d2f51]{display:flex;align-items:center;min-height:var(--default-clickable-area)}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-d66d2f51]{padding:0;min-height:30px;font-size:20px;line-height:30px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-d66d2f51] .linkified{cursor:pointer;text-decoration:underline;margin:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form[data-v-d66d2f51]{display:flex;flex:1 1 auto;align-items:center}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form input.app-sidebar-header__mainname-input[data-v-d66d2f51]{flex:1 1 auto;margin:0;padding:7px;font-size:20px;font-weight:700}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__menu[data-v-d66d2f51]{margin-inline-start:5px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname[data-v-d66d2f51],.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-d66d2f51]{overflow:hidden;width:100%;margin:0;white-space:nowrap;text-overflow:ellipsis}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-d66d2f51]{color:var(--color-text-maxcontrast);font-size:var(--default-font-size);padding:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-d66d2f51] *{vertical-align:text-bottom}.app-sidebar .app-sidebar-header .app-sidebar-header__mainname--hidden[data-v-d66d2f51]{position:absolute;top:0;inset-inline-start:0;margin:0;width:1px;height:1px;overflow:hidden}.app-sidebar .app-sidebar-header__description[data-v-d66d2f51]{display:flex;align-items:center;margin:0 10px}@media only screen and (max-width:512px){.app-sidebar[data-v-d66d2f51]{position:absolute;--app-sidebar-width: 100vw}}.slide-right-leave-active[data-v-d66d2f51],.slide-right-enter-active[data-v-d66d2f51]{transition-duration:var(--animation-quick);transition-property:margin-inline-end}.slide-right-enter-to[data-v-d66d2f51],.slide-right-leave[data-v-d66d2f51]{margin-inline-end:0}.slide-right-enter-from[data-v-d66d2f51],.slide-right-leave-to[data-v-d66d2f51]{margin-inline-end:calc(-1 * var(--app-sidebar-width))}.material-design-icon[data-v-dba10798]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar__tab[data-v-dba10798]{display:none;padding:10px;min-height:100%;max-height:100%;height:100%;overflow:auto}.app-sidebar__tab[data-v-dba10798]:focus{border-color:var(--color-primary-element);box-shadow:0 0 .2em var(--color-primary-element);outline:0}.app-sidebar__tab--active[data-v-dba10798]{display:block}._material-design-icon_M4rJ-{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantButton_BP0M8{--assistant-button-color: var(--color-element-assistant, linear-gradient(238deg, #A569D3 12%, #00679E 39%, #422083 86%));--assistant-button-background-color: var(--color-background-assistant, #F6F5FF);background-image:var(--color-border-assistant, linear-gradient(125deg, #7398FE 50%, #6104A4 125%));border-radius:var(--border-radius-element);height:var(--default-clickable-area);width:fit-content;padding-inline:1px;padding-block:1px 2px}._assistantButton_disabled_UipGr{filter:saturate(.5);opacity:.5}._assistantButton_primary_-LVsB{--assistant-button-color: white;--assistant-button-background-color: var(--color-element-assistant,linear-gradient(238deg, #A569D3 12%, #00679E 39%, #422083 86%))}._assistantButton_primary_-LVsB ._assistantButton__icon_fQ0PP,._assistantButton_primary_-LVsB ._assistantButton__text_3VzI1{color:#fff!important}._assistantButton__button_FAn7N{--button-size: calc(var(--default-clickable-area) - 3px) !important;background-color:var(--assistant-button-background-color)!important;background-image:var(--assistant-button-background-color)!important;border:none!important}._assistantButton__button_FAn7N:hover{filter:brightness(120%)}._assistantButton__text_3VzI1{background-image:var(--assistant-button-color);color:transparent!important;background-clip:text}._material-design-icon_mH0R6{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantIcon_2koBz{display:inline-flex;align-items:center;justify-content:center}._assistantIcon_2koBz:not(._assistantIcon_inline_kJSUg){display:flex;min-height:var(--default-clickable-area);min-width:var(--default-clickable-area)}._assistantIcon__svg_V8CXC{display:inline-block;width:var(--6629513e);height:var(--6629513e);max-width:var(--6629513e);max-height:var(--6629513e)}._material-design-icon_nSUHm{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantContent_xKBtA{background-image:var(--color-border-assistant, linear-gradient(125deg, #7398FE 50%, #6104A4 125%));border-radius:var(--border-radius-container);padding:2px}._assistantContent__inner_DqkVC{background-color:var(--color-background-assistant, #F6F5FF);border-radius:calc(var(--border-radius-container) - 1px);color:var(--color-main-text);padding:calc(var(--border-radius-container) - 1px);height:100%;width:100%}._fadeTransition_hVFAH{transition:all var(--animation-quick) ease}._fadeTransitionActive_XmkdB{opacity:0;position:absolute}.material-design-icon[data-v-8ebb9fc1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.fade-enter-active[data-v-8ebb9fc1],.fade-leave-active[data-v-8ebb9fc1]{transition:opacity .3s ease}.fade-enter[data-v-8ebb9fc1],.fade-leave-to[data-v-8ebb9fc1]{opacity:0}.linked-icons[data-v-8ebb9fc1]{display:flex}.linked-icons img[data-v-8ebb9fc1]{padding:12px;height:var(--default-clickable-area);display:block;background-repeat:no-repeat;background-position:center;opacity:.7}.linked-icons img[data-v-8ebb9fc1]:hover{opacity:1}.popovermenu[data-v-8ebb9fc1]{display:none}.popovermenu.open[data-v-8ebb9fc1]{display:block}li.collection-list-item[data-v-8ebb9fc1]{flex-wrap:wrap;height:auto;cursor:pointer;margin-bottom:0!important}li.collection-list-item .collection-avatar[data-v-8ebb9fc1]{margin-top:0}li.collection-list-item form[data-v-8ebb9fc1],li.collection-list-item .collection-item-name[data-v-8ebb9fc1]{flex-basis:10%;flex-grow:1;display:flex}li.collection-list-item .collection-item-name[data-v-8ebb9fc1]{padding:12px 9px}li.collection-list-item input[data-v-8ebb9fc1]{margin-top:4px;border-color:var(--color-border-maxcontrast)}li.collection-list-item input[type=text][data-v-8ebb9fc1]{flex-grow:1}li.collection-list-item .error[data-v-8ebb9fc1],li.collection-list-item .resource-list-details[data-v-8ebb9fc1]{flex-basis:100%;width:100%}li.collection-list-item .resource-list-details li[data-v-8ebb9fc1]{display:flex;margin-inline-start:var(--default-clickable-area);border-radius:3px;cursor:pointer}li.collection-list-item .resource-list-details li[data-v-8ebb9fc1]:hover{background-color:var(--color-background-dark)}li.collection-list-item .resource-list-details li a[data-v-8ebb9fc1]{flex-grow:1;padding:3px;max-width:calc(100% - 30px);display:flex}li.collection-list-item .resource-list-details span[data-v-8ebb9fc1]{display:inline-block;vertical-align:top;margin-inline-end:10px}li.collection-list-item .resource-list-details span.resource-name[data-v-8ebb9fc1]{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top;white-space:nowrap;flex-grow:1;padding:4px}li.collection-list-item .resource-list-details img[data-v-8ebb9fc1]{width:24px;height:24px}li.collection-list-item .resource-list-details .icon-close[data-v-8ebb9fc1]{opacity:.7}li.collection-list-item .resource-list-details .icon-close[data-v-8ebb9fc1]:hover,li.collection-list-item .resource-list-details .icon-close[data-v-8ebb9fc1]:focus{opacity:1}.should-shake[data-v-8ebb9fc1]{animation:shake-8ebb9fc1 .6s 1 linear}@keyframes shake-8ebb9fc1{0%{transform:translate(15px)}20%{transform:translate(-15px)}40%{transform:translate(7px)}60%{transform:translate(-7px)}80%{transform:translate(3px)}to{transform:translate(0)}}.material-design-icon[data-v-0e169eff]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.collection-list[data-v-0e169eff] *{box-sizing:border-box}.collection-list>li[data-v-0e169eff]{display:flex;align-items:center;gap:12px}.collection-list>li>.avatar[data-v-0e169eff]{margin-top:0}#collection-select-container[data-v-0e169eff]{display:flex;flex-direction:column}.v-select span.avatar[data-v-0e169eff]{display:block;padding:16px;opacity:.7;background-repeat:no-repeat;background-position:center}.v-select span.avatar[data-v-0e169eff]:hover{opacity:1}p.hint[data-v-0e169eff]{z-index:1;margin-top:-16px;padding:8px;color:var(--color-text-maxcontrast);line-height:normal}div.avatar[data-v-0e169eff]{width:32px;height:32px;margin:30px 0 0;padding:8px;background-color:var(--color-background-dark)}.icon-projects[data-v-0e169eff]{display:block;padding:8px;background-repeat:no-repeat;background-position:center}.option__wrapper[data-v-0e169eff]{display:flex}.option__wrapper .avatar[data-v-0e169eff]{display:block;width:32px;height:32px;background-color:var(--color-background-darker)!important}.option__wrapper .option__title[data-v-0e169eff]{padding:4px}.fade-enter-active[data-v-0e169eff],.fade-leave-active[data-v-0e169eff]{transition:opacity .5s}.fade-enter[data-v-0e169eff],.fade-leave-to[data-v-0e169eff]{opacity:0}.material-design-icon[data-v-8dabc003]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.dashboard-widget[data-v-8dabc003] .empty-content{text-align:center;padding-top:5vh}.dashboard-widget[data-v-8dabc003] .empty-content.half-screen{padding-top:0;margin-bottom:1vh}.more[data-v-8dabc003]{display:block;text-align:center;color:var(--color-text-maxcontrast);line-height:60px;cursor:pointer}.more[data-v-8dabc003]:hover,.more[data-v-8dabc003]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-element);color:var(--color-main-text)}.item-list__entry[data-v-8dabc003]{display:flex;align-items:flex-start;padding:8px}.item-list__entry .item-avatar[data-v-8dabc003]{position:relative;margin-block:auto;background-color:var(--color-background-dark)!important}.item-list__entry .item__details[data-v-8dabc003]{padding-inline-start:8px;max-height:var(--default-clickable-area);flex-grow:1;overflow:hidden;display:flex;flex-direction:column}.item-list__entry .item__details h3[data-v-8dabc003],.item-list__entry .item__details .message[data-v-8dabc003]{white-space:nowrap;background-color:var(--color-background-dark)}.item-list__entry .item__details h3[data-v-8dabc003]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-8dabc003]{width:80%;height:15px;margin-top:5px}.material-design-icon[data-v-2c8b617b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.item-list__entry[data-v-2c8b617b]{display:flex;align-items:center;position:relative;padding:8px}.item-list__entry[data-v-2c8b617b]:hover,.item-list__entry[data-v-2c8b617b]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-element)}.item-list__entry .item-avatar[data-v-2c8b617b]{position:relative;margin-top:auto;margin-bottom:auto}.item-list__entry .item__details[data-v-2c8b617b]{padding-inline-start:8px;max-height:fit-content;flex-grow:1;overflow:hidden;display:flex;flex-direction:column;justify-content:center;min-height:var(--default-clickable-area)}.item-list__entry .item__details h3[data-v-2c8b617b],.item-list__entry .item__details .message[data-v-2c8b617b]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-list__entry .item__details .message span[data-v-2c8b617b]{width:10px;display:inline-block;margin-bottom:-3px}.item-list__entry .item__details h3[data-v-2c8b617b]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-2c8b617b]{width:100%;color:var(--color-text-maxcontrast)}.item-list__entry .item-icon[data-v-2c8b617b]{position:relative;width:14px;height:14px;margin-top:25px;margin-inline:-10px -2px}.item-list__entry button.primary[data-v-2c8b617b]{padding:21px;margin:0}.material-design-icon[data-v-e6654786]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-date-time-picker__wrapper[data-v-e6654786]{--dp-common-transition: all var(--animation-quick) ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: var(--animation-quick);--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transtion: all .2s ease-in;--dp-font-family: var(--font-face);--dp-border-radius: var(--border-radius-element);--dp-cell-border-radius: var(--border-radius-small);--dp-transition-length: 22px;--dp-transition-timing-general: var(--animation-quick);--dp-button-height: var(--default-clickable-area);--dp-month-year-row-height: var(--default-clickable-area);--dp-month-year-row-button-size: var(--clickable-area-small);--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: var(--default-clickable-area);--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: var(--default-clickable-area);--dp-input-padding: 6px 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: .5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: var(--default-clickable-area);--dp-font-size: 1rem;--dp-preview-font-size: var(--font-size-small);--dp-time-font-size: 2rem;--dp-action-button-height: var(--clickable-area-small);--dp-action-row-padding: 8px;--dp-direction: ltr}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_wrap{position:relative;width:100%;box-sizing:unset}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_wrap:focus{border-color:var(--dp-border-color-hover);outline:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_valid{box-shadow:0 0 var(--dp-border-radius) var(--dp-success-color);border-color:var(--dp-success-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_valid:hover{border-color:var(--dp-success-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_invalid{box-shadow:0 0 var(--dp-border-radius) var(--dp-danger-color);border-color:var(--dp-danger-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_invalid:hover{border-color:var(--dp-danger-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input{background-color:var(--dp-background-color);border-radius:var(--dp-border-radius);font-family:var(--dp-font-family);border:1px solid var(--dp-border-color);outline:none;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size) * 1.5);padding:var(--dp-input-padding);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input::placeholder{opacity:.7}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input:hover:not(.dp__input_focus){border-color:var(--dp-border-color-hover)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_not_clearable{padding-inline-end:var(--dp-input-not-clearable-padding)!important}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_reg{caret-color:#0000}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_focus{border-color:var(--dp-border-color-focus)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__disabled{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__disabled::placeholder{color:var(--dp-disabled-color-text)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_icons{display:inline-block;width:var(--dp-font-size);height:var(--dp-font-size);stroke-width:0;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size) * 1.5);padding:6px 12px;color:var(--dp-icon-color);box-sizing:content-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_icon{cursor:pointer;position:absolute;top:50%;inset-inline-start:0;transform:translateY(-50%);color:var(--dp-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--clear-btn{position:absolute;top:50%;inset-inline-end:0;transform:translateY(-50%);cursor:pointer;color:var(--dp-icon-color);background:#0000;border:none;display:inline-flex;align-items:center;padding:0;margin:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_icon_pad{padding-inline-start:var(--dp-input-icon-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu{background:var(--dp-background-color);border-radius:var(--dp-border-radius);min-width:var(--dp-menu-min-width);font-family:var(--dp-font-family);font-size:var(--dp-font-size);-webkit-user-select:none;user-select:none;border:1px solid var(--dp-menu-border-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu:after{box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu:before{box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu:focus{border:1px solid var(--dp-menu-border-color);outline:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu-wrapper{position:absolute;z-index:99999}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_inner{padding:var(--dp-menu-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu--inner-stretched{padding:6px 0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_index{z-index:99999}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-loading,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_readonly,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_disabled{position:absolute;inset:0;z-index:999999}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_disabled{background:#ffffff80;cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_readonly{background:#0000;cursor:default}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-loading{background:#ffffff80;cursor:default}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu-load-container{display:flex;height:100%;width:100%;justify-content:center;align-items:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu-loader{width:48px;height:48px;border:var(--dp-loader);border-bottom-color:#0000;border-radius:50%;display:inline-block;box-sizing:border-box;animation:dp-load-rotation-e6654786 1s linear infinite;position:absolute}@keyframes dp-load-rotation-e6654786{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__arrow_top{left:var(--dp-arrow-left);top:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-top:1px solid var(--dp-menu-border-color);transform:translate(-50%,-50%) rotate(-45deg)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__arrow_bottom{left:var(--dp-arrow-left);bottom:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-bottom:1px solid var(--dp-menu-border-color);transform:translate(-50%,50%) rotate(45deg)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_extra{text-align:center;padding:2px 0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-dates{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-dates[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-dates-collapsed{display:flex;align-self:center;border:none;overflow-x:auto;max-width:calc(var(--dp-menu-width) - var(--dp-action-row-padding) * 2)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__sidebar_left{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__sidebar_right{padding:5px;margin-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range{display:block;width:100%;padding:5px;text-align:left;white-space:nowrap;color:var(--dp-text-color);border-radius:var(--dp-border-radius);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range:hover{background-color:var(--dp-hover-color);color:var(--dp-hover-text-color);cursor:pointer}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range[data-dp-mobile]{border:1px solid var(--dp-border-color);margin:0 3px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range[data-dp-mobile]:first-child{margin-left:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range[data-dp-mobile]:last-child{margin-right:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range-collapsed{border:1px solid var(--dp-border-color);margin:0 3px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range-collapsed:first-child{margin-left:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range-collapsed:last-child{margin-right:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_content_wrapper{display:flex}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_content_wrapper[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu-content-wrapper-collapsed{flex-direction:column-reverse}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_header{position:relative;display:flex;justify-content:center;align-items:center;color:var(--dp-text-color);white-space:nowrap;font-weight:700}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_header_item{text-align:center;flex-grow:1;height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_row{display:flex;justify-content:center;align-items:center;margin:var(--dp-row-margin)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_item{text-align:center;flex-grow:1;box-sizing:border-box;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar{position:relative}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_header_cell{border-bottom:thin solid var(--dp-border-color);padding:var(--dp-calendar-header-cell-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_inner{display:flex;align-items:center;text-align:center;justify-content:center;border-radius:var(--dp-cell-border-radius);height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);border:1px solid rgba(0,0,0,0);box-sizing:border-box;position:relative}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_inner:hover{transition:all .2s}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range_start,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover_start:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_start{border-end-end-radius:0;border-start-end-radius:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range_end,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover_end:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_end{border-end-start-radius:0;border-start-start-radius:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_end,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_start,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__active_date{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover_end:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover_start:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_offset{color:var(--dp-secondary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_disabled{color:var(--dp-secondary-color);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_between{background:var(--dp-range-between-dates-background-color);color:var(--dp-range-between-dates-text-color);border-radius:0;border:1px solid var(--dp-range-between-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_between_week{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border-radius:0;border-top:1px solid var(--dp-primary-color);border-bottom:1px solid var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__today{border:1px solid var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__week_num{color:var(--dp-secondary-color);text-align:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range{border-radius:0;border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range_start{border-start-start-radius:var(--dp-cell-border-radius);border-end-start-radius:var(--dp-cell-border-radius);border-inline-start:1px dashed var(--dp-primary-color);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range_end{border-start-end-radius:var(--dp-cell-border-radius);border-end-end-radius:var(--dp-cell-border-radius);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color);border-inline-end:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_header_separator{width:100%;height:1px;background:var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_next{margin-inline-start:var(--dp-multi-calendars-spacing)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_line,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_dot{height:5px;background-color:var(--dp-marker-color);position:absolute;bottom:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_dot{width:5px;border-radius:50%;left:50%;transform:translate(-50%)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_line{width:100%;left:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_tooltip{position:absolute;border-radius:var(--dp-border-radius);background-color:var(--dp-tooltip-color);padding:5px;border:1px solid var(--dp-border-color);z-index:99999;box-sizing:border-box;cursor:default}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tooltip_content{white-space:nowrap}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tooltip_text{display:flex;align-items:center;flex-flow:row nowrap;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tooltip_mark{height:5px;width:5px;border-radius:50%;background-color:var(--dp-text-color);color:var(--dp-text-color);margin-inline-end:5px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__arrow_bottom_tp{bottom:0;height:8px;width:8px;background-color:var(--dp-tooltip-color);position:absolute;border-inline-end:1px solid var(--dp-border-color);border-bottom:1px solid var(--dp-border-color);transform:translate(-50%,50%) rotate(45deg)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__instance_calendar{position:relative;width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex_display[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-e6654786] .dp--flex-display-collapsed{flex-direction:column}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_highlight{background-color:var(--dp-highlight-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_row{display:flex;align-items:center;height:var(--dp-month-year-row-height);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav{display:flex;align-items:center;justify-content:center;cursor:pointer;height:var(--dp-month-year-row-button-size);width:var(--dp-month-year-row-button-size);color:var(--dp-icon-color);text-align:center;border-radius:50%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav svg{height:var(--dp-button-icon-height);width:var(--dp-button-icon-height)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] [dir=rtl] .dp__inner_nav{transform:rotate(180deg)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav_disabled:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav_disabled{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--year-select,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_select{text-align:center;cursor:pointer;height:var(--dp-month-year-row-height);display:flex;align-items:center;justify-content:center;border-radius:var(--dp-border-radius);box-sizing:border-box;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--year-select:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_select:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_select{width:50%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--year-select{width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_wrap{display:flex;flex-direction:row;width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__year_disable_select{justify-content:space-around}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--header-wrap{display:flex;width:100%;flex-direction:column}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay{width:100%;background:var(--dp-background-color);transition:opacity 1s ease-out;z-index:99999;font-family:var(--dp-font-family);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--overlay-absolute{position:absolute;height:100%;top:0;left:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--overlay-relative{position:relative}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_container::-webkit-scrollbar-track{box-shadow:var(--dp-scroll-bar-background);background-color:var(--dp-scroll-bar-background)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_container::-webkit-scrollbar{width:5px;background-color:var(--dp-scroll-bar-background)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_container::-webkit-scrollbar-thumb{background-color:var(--dp-scroll-bar-color);border-radius:10px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay:focus{border:none;outline:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__container_flex{display:flex}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__container_block{display:block}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_container{flex-direction:column;overflow-y:auto;height:var(--dp-overlay-height)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_picker_overlay_container{height:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_row{padding:0;box-sizing:border-box;display:flex;margin-inline:auto;flex-wrap:wrap;max-width:100%;width:100%;align-items:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex_row{flex:1}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_col{box-sizing:border-box;width:33%;padding:var(--dp-overlay-col-padding);white-space:nowrap}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_pad{padding:var(--dp-common-padding) 0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_active{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center;background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_in_between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__over_action_scroll{right:5px;box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_disabled:hover{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_active_disabled{cursor:not-allowed;background:var(--dp-primary-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_active_disabled:hover{background:var(--dp-primary-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn,.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn,.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-overlay-btn,.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-invalid{border:none;font:inherit;transition:var(--dp-common-transition);line-height:normal}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--year-mode-picker{display:flex;width:100%;align-items:center;justify-content:space-between;height:var(--dp-cell-size)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--tp-wrap{max-width:var(--dp-menu-min-width)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--tp-wrap[data-dp-mobile]{max-width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_input{width:100%;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;font-family:var(--dp-font-family);color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_reg_block{padding:0 20px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_reg_inline{padding:0 10px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_reg_with_button{padding:0 15px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_reg_with_button[data-compact~=true]{padding:0 5px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_sec{padding:0 10px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_sec_with_button{padding:0 5px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_sec_with_button[data-collapsed~=true]{padding:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_block{font-size:var(--dp-time-font-size)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_display_block{padding:0 3px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_display_inline{padding:5px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_picker_inline_container{display:flex;width:100%;justify-content:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button{padding:5px;margin:0;height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%;color:var(--dp-icon-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button svg{height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_display{cursor:pointer;color:var(--dp-text-color);border-radius:var(--dp-border-radius);display:flex;align-items:center;justify-content:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_display:hover:enabled{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button_inline{width:100%;padding:0;height:8px;cursor:pointer;display:flex;align-items:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button_disabled,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button_disabled:hover{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__pm_am_button{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border:none;padding:var(--dp-common-padding);border-radius:var(--dp-border-radius);cursor:pointer}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__pm_am_button[data-compact~=true]{padding:7px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_bar{width:100%;height:4px;background-color:var(--dp-secondary-color);transition:var(--dp-common-transition);border-collapse:collapse}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_top:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_top:hover .dp__tp_btn_in_l,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(-12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_l{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-overlay-btn{background:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-invalid{background-color:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_row{display:flex;align-items:center;width:100%;padding:var(--dp-action-row-padding);box-sizing:border-box;color:var(--dp-text-color);flex-flow:row nowrap}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_row svg{height:var(--dp-button-icon-height);width:auto}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__selection_preview{display:block;color:var(--dp-text-color);font-size:var(--dp-preview-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_buttons{display:flex;flex:0;white-space:nowrap;align-items:center;justify-content:flex-end;margin-inline-start:auto}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_button{display:inline-flex;align-items:center;background:#0000;border:1px solid rgba(0,0,0,0);padding:var(--dp-action-buttons-padding);line-height:var(--dp-action-button-height);margin-inline-start:3px;height:var(--dp-action-button-height);cursor:pointer;border-radius:var(--dp-border-radius);font-size:var(--dp-preview-font-size);font-family:var(--dp-font-family)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_cancel{color:var(--dp-text-color);border:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_cancel:hover{border-color:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_buttons .dp__action_select{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_buttons .dp__action_select:hover{background:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_buttons .dp__action_select:disabled{background:var(--dp-primary-disabled-color);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-quarter-picker-wrap{display:flex;flex-direction:column;height:100%;min-width:var(--dp-menu-min-width)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn-disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn-disabled:hover{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn{width:100%;padding:var(--dp-common-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn:not(.dp--highlighted,.dp--qr-btn-active,.dp--qr-btn-disabled,.dp--qr-btn-between){background:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn:hover:not(.dp--qr-btn-active,.dp--qr-btn-disabled){background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--quarter-items{display:flex;flex-direction:column;flex:1;width:100%;height:100%;justify-content:space-evenly}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn-active{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn-between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] :root{--dp-common-transition: all .1s ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: .1s;--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transition: all .2s ease-in;--dp-font-family: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen, ubuntu, cantarell, "Open Sans", "Helvetica Neue", sans-serif;--dp-border-radius: 4px;--dp-cell-border-radius: 4px;--dp-transition-length: 22px;--dp-transition-timing-general: .1s;--dp-button-height: 35px;--dp-month-year-row-height: 35px;--dp-month-year-row-button-size: 25px;--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: 35px;--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: 35px;--dp-input-padding: 6px 30px 6px 12px;--dp-input-not-clearable-padding: 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: .5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: 32px;--dp-font-size: 1rem;--dp-preview-font-size: .8rem;--dp-time-font-size: 2rem;--dp-action-button-height: 22px;--dp-action-row-padding: 8px;--dp-direction: ltr}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__theme_dark{--dp-background-color: #212121;--dp-text-color: #fff;--dp-hover-color: #484848;--dp-hover-text-color: #fff;--dp-hover-icon-color: #959595;--dp-primary-color: #005cb2;--dp-primary-disabled-color: #61a8ea;--dp-primary-text-color: #fff;--dp-secondary-color: #a9a9a9;--dp-border-color: #2d2d2d;--dp-menu-border-color: #2d2d2d;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #737373;--dp-disabled-color-text: #d0d0d0;--dp-scroll-bar-background: #212121;--dp-scroll-bar-color: #484848;--dp-success-color: #00701a;--dp-success-color-disabled: #428f59;--dp-icon-color: #959595;--dp-danger-color: #e53935;--dp-marker-color: #e53935;--dp-tooltip-color: #3e3e3e;--dp-highlight-color: rgb(0 92 178 / 20%);--dp-range-between-dates-background-color: var(--dp-hover-color, #484848);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #fff);--dp-range-between-border-color: var(--dp-hover-color, #fff);--dp-loader: 5px solid #005cb2}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__theme_light{--dp-background-color: #fff;--dp-text-color: #212121;--dp-hover-color: #f3f3f3;--dp-hover-text-color: #212121;--dp-hover-icon-color: #959595;--dp-primary-color: #1976d2;--dp-primary-disabled-color: #6bacea;--dp-primary-text-color: #fff;--dp-secondary-color: #c0c4cc;--dp-border-color: #ddd;--dp-menu-border-color: #ddd;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #f6f6f6;--dp-scroll-bar-background: #f3f3f3;--dp-scroll-bar-color: #959595;--dp-success-color: #76d275;--dp-success-color-disabled: #a3d9b1;--dp-icon-color: #959595;--dp-danger-color: #ff6f60;--dp-marker-color: #ff6f60;--dp-tooltip-color: #fafafa;--dp-disabled-color-text: #8e8e8e;--dp-highlight-color: rgb(25 118 210 / 10%);--dp-range-between-dates-background-color: var(--dp-hover-color, #f3f3f3);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #212121);--dp-range-between-border-color: var(--dp-hover-color, #f3f3f3);--dp-loader: 5px solid #1976d2}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex{display:flex;align-items:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn{background:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__main{font-family:var(--dp-font-family);-webkit-user-select:none;user-select:none;box-sizing:border-box;position:relative;width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__main *{direction:var(--dp-direction, ltr)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__pointer{cursor:pointer}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__icon{stroke:currentcolor;fill:currentcolor}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button{width:100%;text-align:center;color:var(--dp-icon-color);cursor:pointer;display:flex;align-items:center;place-content:center center;padding:var(--dp-common-padding);box-sizing:border-box;height:var(--dp-button-height)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button.dp__overlay_action{position:absolute;bottom:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button svg{height:var(--dp-button-icon-height);width:auto}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button_bottom{border-bottom-left-radius:var(--dp-border-radius);border-bottom-right-radius:var(--dp-border-radius)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex_display{display:flex}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex_display_with_input{flex-direction:column;align-items:flex-start}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__relative{position:relative}.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-next-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-next-leave-active,.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-prev-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-prev-leave-active{transition:all var(--dp-transition-timing-general) ease-out}.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-next-enter-from{opacity:0;transform:translate(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-next-leave-to,.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-prev-enter-from{opacity:0;transform:translate(calc(var(--dp-transition-length) * -1))}.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-prev-leave-to{opacity:0;transform:translate(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-bottom-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-bottom-leave-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-top-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-top-leave-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-up-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-up-leave-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-down-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-down-leave-active{transition:all var(--dp-animation-duration) var(--dp-transition-timing)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-top-enter-from,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-top-leave-to,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-down-leave-to,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-up-enter-from{opacity:0;transform:translateY(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-bottom-enter-from,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-bottom-leave-to,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-down-enter-from,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-up-leave-to{opacity:0;transform:translateY(calc(var(--dp-transition-length) * -1))}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--arrow-btn-nav{transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--highlighted{background-color:var(--dp-highlight-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--hidden-el{visibility:hidden}.vue-date-time-picker__wrapper.vue-date-time-picker__wrapper--teleport[data-v-e6654786] .dp--menu-wrapper{z-index:100001}.vue-date-time-picker__wrapper .vue-date-time-picker--clearable[data-v-e6654786] .dp__input{padding-inline-end:var(--default-clickable-area)}.vue-date-time-picker__wrapper .vue-date-time-picker__timezone[data-v-e6654786]{min-width:unset;width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .icon-vue{opacity:1!important}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--tp-wrap,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_extra{padding:var(--dp-menu-padding);padding-top:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay.dp--overlay-absolute{padding:var(--dp-menu-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay.dp--overlay-absolute .dp__btn.dp__button.dp__button_bottom{inset-block-end:6px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn.dp__button.dp__button_bottom,.vue-date-time-picker__wrapper[data-v-e6654786] .dp--tp-wrap .dp__button{width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn.dp__button.dp__overlay_action{width:calc(100% - 16px)}.vue-date-time-picker__wrapper[data-v-e6654786] input{padding-inline-start:var(--dp-input-icon-padding)!important}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn{margin:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav{height:fit-content;width:fit-content}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn.dp__button.dp__button_bottom{color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--header-wrap .dp__btn:not(.dp__button_bottom),.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col .dp__btn{background-color:var(--color-main-background)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--header-wrap .dp__btn:not(.dp__button_bottom):hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col .dp__btn:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_select{flex:1}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-overlay-btn{font-size:calc(2 * var(--default-font-size))!important}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_input .dp__time_col_reg_block{padding:0 calc(4 * var(--default-grid-baseline))}.vue-date-time-picker__wrapper .vue-date-time-picker.dp__theme_dark[data-v-e6654786],.vue-date-time-picker__wrapper .vue-date-time-picker.dp__theme_light[data-v-e6654786],.vue-date-time-picker__wrapper[data-v-e6654786] .dp__theme_dark,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__theme_light{--dp-background-color: var(--color-main-background);--dp-text-color: var(--color-main-text);--dp-hover-color: var(--color-primary-element-light-hover);--dp-hover-text-color: var(--color-primary-element-light-text);--dp-hover-icon-color: var(--color-primary-element-light-text);--dp-primary-color: var(--color-primary-element);--dp-primary-disabled-color: var(--color-primary-element-hover);--dp-primary-text-color: var(--color-primary-element-text);--dp-secondary-color: var(--color-text-maxcontrast);--dp-border-color: var(--color-border);--dp-menu-border-color: var(--color-border-dark);--dp-border-color-hover: var(--color-border-maxcontrast);--dp-border-color-focus: var(--color-border-maxcontrast);--dp-disabled-color: var(--color-background-dark);--dp-disabled-color-text: var(--color-text-maxcontrast);--dp-scroll-bar-background: var(--color-scrollbar);--dp-scroll-bar-color: var(--color-scrollbar);--dp-success-color: var(--color-success);--dp-success-color-disabled: var(--color-success-hover);--dp-icon-color: var(--color-main-text);--dp-danger-color: var(--color-error);--dp-marker-color: var(--color-text-error, var(--color-error));--dp-tooltip-color: var(--color-main-text);--dp-highlight-color: var(--color-main-text)}._filePicker_UHtO-{display:inline-flex;align-items:center;height:var(--default-clickable-area)}._material-design-icon_mubdv{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._ncFormBox_TawZT{display:flex;flex-direction:column;gap:calc(1 * var(--default-grid-baseline))}._ncFormBox_TawZT._ncFormBox_row_ZnhfS{flex-direction:row}._ncFormBox__item_7zc34{border-radius:var(--border-radius-small)!important}._ncFormBox_col_wHCZx{flex-direction:column}._ncFormBox_col_wHCZx ._ncFormBox__item_7zc34:first-child{border-start-start-radius:var(--border-radius-element)!important;border-start-end-radius:var(--border-radius-element)!important}._ncFormBox_col_wHCZx ._ncFormBox__item_7zc34:last-child{border-end-start-radius:var(--border-radius-element)!important;border-end-end-radius:var(--border-radius-element)!important}._ncFormBox_row_ZnhfS{flex-direction:row}._ncFormBox_row_ZnhfS ._ncFormBox__item_7zc34{flex:1 1}._ncFormBox_row_ZnhfS ._ncFormBox__item_7zc34:first-child{border-start-start-radius:var(--border-radius-element)!important;border-end-start-radius:var(--border-radius-element)!important}._ncFormBox_row_ZnhfS ._ncFormBox__item_7zc34:last-child{border-end-end-radius:var(--border-radius-element)!important;border-start-end-radius:var(--border-radius-element)!important}._material-design-icon_RoXMm{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._formBoxButton_qQIni{background:unset;border:none;color:inherit;font-size:inherit;font-weight:inherit;text-decoration:none;text-align:inherit;line-height:inherit;padding:0;margin:0;outline:none}._material-design-icon_D2F-K{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._formBoxItem_74l6r{--nc-form-box-item-border-width: 1px;--nc-form-box-item-min-height: 40px;--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));--form-element-label-padding: calc(var(--form-element-label-offset) - var(--nc-form-box-item-border-width));--color-primary-element-extra-light: hsl(from var(--color-primary-element-light) h s calc(l*1.045) );--color-primary-element-extra-light-hover: hsl(from var(--color-primary-element-light-hover) h s calc(l*1.045) );position:relative;display:flex;align-items:center;gap:calc(2 * var(--default-grid-baseline));min-height:var(--nc-form-box-item-min-height);padding-inline:var(--form-element-label-padding);border:1px solid var(--color-primary-element-extra-light-hover);border-bottom-width:2px;border-radius:var(--border-radius-element);background-color:var(--color-primary-element-extra-light);color:var(--color-main-text);transition-property:color,border-color,background-color;transition-duration:var(--animation-quick);transition-timing-function:linear;-webkit-user-select:none;user-select:none;cursor:pointer}._formBoxItem_74l6r *{cursor:inherit}._formBoxItem_74l6r:has(:disabled){cursor:default;opacity:.5}._formBoxItem_74l6r:hover:not(:has(:disabled)){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-extra-light-hover)}._formBoxItem_74l6r:has(:focus-visible){outline:2px solid var(--color-main-text);box-shadow:0 0 0 4px var(--color-main-background)}._formBoxItem_74l6r._formBoxItem_legacy_IgNr3{--nc-form-box-item-border-width: 0px;border:none}._formBoxItem_74l6r._formBoxItem_inverted_9GGkh ._formBoxItem__element_YEZDA{color:var(--color-text-maxcontrast)}._formBoxItem_74l6r._formBoxItem_inverted_9GGkh ._formBoxItem__description_1GjPD{color:inherit}._formBoxItem__content_CcZbG{flex:1;display:flex;flex-direction:column;padding-block:calc(2 * var(--default-grid-baseline));overflow-wrap:anywhere}._formBoxItem__element_YEZDA:after{content:"";position:absolute;inset:0}._formBoxItem__description_1GjPD{color:var(--color-text-maxcontrast)}._formBoxItem__icon_eZXNE{display:flex;align-items:center;justify-content:flex-end}._material-design-icon_YAxyJ{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}input._formBoxSwitch__input_e7y7s{margin:0;width:var(--default-clickable-area);position:absolute;inset-block:0;inset-inline-end:var(--form-element-label-offset);z-index:-1;opacity:0!important;height:auto;cursor:inherit}._material-design-icon_QhThW{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._formGroup_sNzER{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));--form-group-content-gap: calc(2 * var(--default-grid-baseline))}._formGroup_sNzER._formGroup_noGap_ChojB{--form-group-content-gap: 0}._formGroup__label_Z81k5{padding-inline:var(--form-element-label-offset);font-size:var(--font-size);font-weight:700}._formGroup__description_xWRa-{padding-inline:var(--form-element-label-offset);color:var(--color-text-maxcontrast)}._formGroup__content_wHRjf{display:flex;flex-direction:column;gap:var(--form-group-content-gap);margin-block-start:calc(2.5 * var(--default-grid-baseline))}._formGroup__content_wHRjf._formGroup__content_only_VejcN{margin-block-start:0}.material-design-icon[data-v-92fb182d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.header-menu[data-v-92fb182d]{position:relative;width:var(--header-height);height:var(--header-height)}.header-menu .header-menu__trigger[data-v-92fb182d]{--button-size: var(--header-height) !important;height:var(--header-height);opacity:.85;filter:none!important;color:var(--color-background-plain-text, var(--color-primary-text))!important}.header-menu .header-menu__trigger[data-v-92fb182d]:focus-visible{outline:none!important;box-shadow:none!important}.header-menu .header-menu__trigger[data-v-92fb182d] .button-vue__icon svg,.header-menu .header-menu__trigger[data-v-92fb182d] .button-vue__icon:not(:has(svg)){mask:var(--header-menu-icon-mask, none)}.header-menu--opened .header-menu__trigger[data-v-92fb182d],.header-menu__trigger[data-v-92fb182d]:hover,.header-menu__trigger[data-v-92fb182d]:focus,.header-menu__trigger[data-v-92fb182d]:active{opacity:1}@media only screen and (max-width:512px){.header-menu[data-v-92fb182d]{width:var(--default-clickable-area)}.header-menu .header-menu__trigger[data-v-92fb182d]{--button-size: var(--default-clickable-area) !important}}.material-design-icon[data-v-d45c5788]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}/*! + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */.header-menu[data-v-d45c5788]{position:relative;width:var(--header-height);height:var(--header-height)}.header-menu .header-menu__trigger[data-v-d45c5788]{--button-size: var(--header-height) !important;height:var(--header-height);opacity:.85;filter:none!important;color:var(--color-background-plain-text, var(--color-primary-text))!important}.header-menu .header-menu__trigger[data-v-d45c5788]:focus-visible{outline:none!important;box-shadow:none!important}.header-menu .header-menu__trigger[data-v-d45c5788] .button-vue__icon svg,.header-menu .header-menu__trigger[data-v-d45c5788] .button-vue__icon:not(:has(svg)){mask:var(--header-menu-icon-mask, none)}.header-menu--opened .header-menu__trigger[data-v-d45c5788],.header-menu__trigger[data-v-d45c5788]:hover,.header-menu__trigger[data-v-d45c5788]:focus,.header-menu__trigger[data-v-d45c5788]:active{opacity:1}@media only screen and (max-width:512px){.header-menu[data-v-d45c5788]{width:var(--default-clickable-area)}.header-menu .header-menu__trigger[data-v-d45c5788]{--button-size: var(--default-clickable-area) !important}}.header-menu__wrapper[data-v-d45c5788]{position:fixed;z-index:2000;top:var(--header-height);inset-inline-end:0;box-sizing:border-box;margin:0 8px;border-radius:var(--border-radius-element);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow))}.header-menu__caret[data-v-d45c5788]{position:absolute;z-index:2001;bottom:0;inset-inline-start:calc(50% - 10px);width:0;height:0;content:" ";pointer-events:none;border:10px solid transparent;border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-d45c5788]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:calc(var(--default-clickable-area) * 1.5);max-height:calc(100vh - var(--header-height) * 2)}.header-menu__content[data-v-d45c5788] .empty-content{margin:12vh 10px}._material-design-icon_yC3vd{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._hotkey_ohHBi{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));display:flex;flex-direction:row-reverse;align-items:stretch;padding-inline:var(--form-element-label-offset)}._hotkey_ohHBi:first-child ._hotkey__label_au-to,._hotkey_ohHBi:first-child ._hotkey__keys_4Mi3z{border-block-start:none}._hotkey__label_au-to,._hotkey__keys_4Mi3z{display:flex;align-items:center;padding-block:calc(2 * var(--default-grid-baseline));border-block-start:1px solid var(--color-border)}._hotkey__label_au-to{flex:1 1 200px}._hotkey__keys_4Mi3z{flex:1 1 auto;flex-wrap:wrap;justify-content:end;row-gap:calc(1 * var(--default-grid-baseline))}._material-design-icon_FHHYV{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._kbd_3V7rw{display:inline-flex;align-items:center;justify-content:center;min-width:var(--default-clickable-area);height:var(--default-clickable-area);padding-inline:calc(2 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline));border:2px solid var(--color-primary-element-light);border-block-end-width:4px;border-radius:var(--border-radius-element);box-shadow:none;font-family:var(--font-family);line-height:1;white-space:nowrap}._kbd_3V7rw+._kbd_3V7rw{margin-inline-start:calc(1 * var(--default-grid-baseline))}._hotkeyList_xNXCh{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline))}._hotkeyList__heading_j6G86{font-weight:700;margin-inline:var(--form-element-label-offset)}.material-design-icon[data-v-0ee94269]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.option[data-v-0ee94269]{display:flex;align-items:center;width:100%;height:var(--height);cursor:inherit}.option__avatar[data-v-0ee94269]{margin-inline-end:var(--margin)}.option__details[data-v-0ee94269]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__lineone[data-v-0ee94269]{color:var(--color-main-text)}.option__linetwo[data-v-0ee94269]{color:var(--color-text-maxcontrast)}.option__lineone[data-v-0ee94269],.option__linetwo[data-v-0ee94269]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2}.option__lineone strong[data-v-0ee94269],.option__linetwo strong[data-v-0ee94269]{font-weight:700}.option--compact .option__lineone[data-v-0ee94269]{font-size:14px}.option--compact .option__linetwo[data-v-0ee94269]{font-size:11px;line-height:1.5;margin-top:-4px}.option__icon[data-v-0ee94269]{width:var(--default-clickable-area);height:var(--default-clickable-area);color:var(--color-text-maxcontrast)}.option__icon.icon[data-v-0ee94269]{flex:0 0 var(--default-clickable-area);opacity:.7;background-position:center;background-size:16px}.option__details[data-v-0ee94269],.option__lineone[data-v-0ee94269],.option__linetwo[data-v-0ee94269],.option__icon[data-v-0ee94269]{cursor:inherit}.material-design-icon[data-v-353fa414]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.progress-bar[data-v-353fa414]{display:block;height:var(--progress-bar-height);--progress-bar-color: var(--3a86fec2);--progress-bar-height: var(--57442460)}.progress-bar--linear[data-v-353fa414]{width:100%;overflow:hidden;border:0;padding:0;background:var(--color-background-dark);border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--linear[data-v-353fa414]::-webkit-progress-bar{height:var(--progress-bar-height);background-color:transparent}.progress-bar--linear[data-v-353fa414]::-webkit-progress-value{background:var(--progress-bar-color, var(--gradient-primary-background));border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--linear[data-v-353fa414]::-moz-progress-bar{background:var(--progress-bar-color, var(--gradient-primary-background));border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--circular[data-v-353fa414]{width:var(--progress-bar-height);color:var(--progress-bar-color)}.progress-bar--error[data-v-353fa414]{color:var(--color-text-error, var(--color-error))!important}.progress-bar--error[data-v-353fa414]::-moz-progress-bar{background:var(--color-text-error, var(--color-error))!important}.progress-bar--error[data-v-353fa414]::-webkit-progress-value{background:var(--color-text-error, var(--color-error))!important}.progress-bar-container[data-v-353fa414]{display:flex;align-items:center;gap:calc(2 * var(--default-grid-baseline))}.progress-bar__value[data-v-353fa414]{font-size:var(--font-size-small, 13px);font-variant-numeric:tabular-nums;min-width:4ch;text-align:end}._material-design-icon_Sx-eY{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._radioGroup_checkboxRadioContainer_XfI2u .checkbox-content{max-width:unset!important}._material-design-icon_q-qLD{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._radioGroupButton_FB-C-{--radio-group-button--border-radius: var(--border-radius-small);--radio-group-button--border-width: 1px;--radio-group-button--color: var(--color-primary-element-light-text);--radio-group-button--background-color: var(--color-primary-element-light);--radio-group-button--background-color-hover: var(--color-primary-element-light-hover);--radio-group-button--padding: 1px;cursor:pointer;color:var(--radio-group-button--color);background-color:var(--radio-group-button--background-color);transition:var(--animation-quick) background-color;border:var(--radio-group-button--border-width) solid var(--radio-group-button--background-color-hover);border-bottom-width:2px;border-radius:var(--radio-group-button--border-radius);display:flex;flex-direction:row;align-items:center;justify-content:center;text-align:center;min-height:var(--default-clickable-area);padding-block:var(--radio-group-button--padding) 0;padding-inline:var(--radio-group-button--padding)}._radioGroupButton_FB-C- *{cursor:pointer}._radioGroupButton_FB-C-:has(._radioGroupButton__label_gjGCq){padding-inline:calc(var(--radio-group-button--padding) + var(--border-radius-element))}._radioGroupButton_FB-C-:has(._radioGroupButton__icon_lWzM4){padding-inline-start:var(--radio-group-button--padding)}._radioGroupButton_FB-C-:hover:not(._radioGroupButton_disabled_08iwH){background-color:var(--radio-group-button--background-color-hover)}._radioGroupButton_FB-C-:focus-within{--radio-group-button--border-width: 2px;--radio-group-button--padding: 0px;border:var(--radio-group-button--border-width) solid var(--color-main-text)!important;outline:calc(var(--default-grid-baseline) / 2) var(--color-main-background)}._radioGroupButton_active_KS1Ru{--radio-group-button--color: var(--color-primary-element-text);--radio-group-button--background-color: var(--color-primary-element);--radio-group-button--background-color-hover: var(--color-primary-element-hover)}._radioGroupButton__label_gjGCq{font-weight:700}._radioGroupButton_disabled_08iwH{filter:saturate(.7);opacity:.5;cursor:default}._radioGroupButton_disabled_08iwH *{cursor:default}._radioGroupButton__icon_lWzM4{--radio-group-button--icon-size: calc(var(--default-clickable-area) - 4px);display:flex;align-items:center;justify-content:center;height:100%;width:var(--radio-group-button--icon-size)}._radioGroupButton__icon_lWzM4 *{--default-clickable-area: var(--radio-group-button--icon-size)}.material-design-icon[data-v-8db55138]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resource[data-v-8db55138]{display:flex;align-items:center;height:var(--default-clickable-area)}.resource__button[data-v-8db55138]{width:100%!important;justify-content:flex-start!important;padding:0!important}.resource__button[data-v-8db55138] .button-vue__wrapper{justify-content:flex-start!important}.resource__button[data-v-8db55138] .button-vue__wrapper .button-vue__text{font-weight:400!important;margin-inline-start:2px!important}.resource__icon[data-v-8db55138]{width:32px;height:32px;background-color:var(--color-text-maxcontrast);border-radius:50%;display:flex;align-items:center;justify-content:center}.resource__icon img[data-v-8db55138]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.material-design-icon[data-v-a0203ee5]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.team-resources__header[data-v-a0203ee5]{font-weight:700;margin-bottom:6px}.related-team[data-v-a0203ee5]{border-radius:var(--border-radius-container);border:2px solid var(--color-border-dark);margin-bottom:6px}.related-team__open[data-v-a0203ee5]{border-color:var(--color-primary-element)}.related-team__header[data-v-a0203ee5]{padding:6px;padding-inline-end:24px;display:flex;gap:12px}.related-team__name[data-v-a0203ee5]{display:flex;flex-grow:1;align-items:center;gap:12px;padding:6px 12px;font-weight:700;margin:0}.related-team .related-team-provider[data-v-a0203ee5]{padding:6px 12px}.related-team .related-team-provider__name[data-v-a0203ee5]{font-weight:700;margin-bottom:3px}.related-team .related-team-provider__link[data-v-a0203ee5]{display:flex;gap:12px;padding:6px 12px;font-weight:700}.related-team .related-team-resource__link[data-v-a0203ee5]{display:flex;gap:12px;height:var(--default-clickable-area);align-items:center;border-radius:var(--border-radius-element)}.related-team .related-team-resource__link[data-v-a0203ee5]:hover{background-color:var(--color-background-hover)}.related-team .related-team-resource__link[data-v-a0203ee5]:focus{background-color:var(--color-background-hover);outline:2px solid var(--color-primary-element)}.related-team .related-team-resource .resource__icon[data-v-a0203ee5]{width:var(--default-clickable-area);height:var(--default-clickable-area);display:flex;align-items:center;justify-content:center;text-align:center}.related-team .related-team-resource .resource__icon>img[data-v-a0203ee5]{border-radius:var(--border-radius-pill);overflow:hidden;width:32px;height:32px}.material-design-icon[data-v-a1a23691]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.related-resources__header h5[data-v-a1a23691]{font-weight:700;margin-bottom:6px}.related-resources__header p[data-v-a1a23691]{color:var(--color-text-maxcontrast)}.material-design-icon[data-v-ca83b679]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.autocomplete-result[data-v-ca83b679]{display:flex;align-items:center;gap:var(--default-grid-baseline);line-height:1.2;--auto-complete-result-avatar-size: var(--default-clickable-area)}.autocomplete-result__icon[data-v-ca83b679]{position:relative;flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);min-width:var(--default-clickable-area);height:var(--default-clickable-area);border-radius:var(--default-clickable-area);background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:contain}.autocomplete-result__icon--with-avatar[data-v-ca83b679]{color:inherit;background-size:cover}.autocomplete-result__status[data-v-ca83b679]{--auto-complete-result-status-icon-size: clamp(14px, var(--auto-complete-result-avatar-size) * .4, 18px);--auto-complete-result-status-icon-position: calc(var(--auto-complete-result-avatar-size) / 2 * (1 - 1 / sqrt(2)) - var(--auto-complete-result-status-icon-size) / 2);box-sizing:border-box;position:absolute;inset-inline-end:var(--auto-complete-result-status-icon-position);bottom:var(--auto-complete-result-status-icon-position);height:var(--auto-complete-result-status-icon-size);width:var(--auto-complete-result-status-icon-size);border:2px solid var(--color-main-background);border-radius:50%;background-color:var(--color-main-background);font-size:calc(var(--auto-complete-result-status-icon-size) / 1.2);line-height:1.2;background-repeat:no-repeat;background-size:var(--auto-complete-result-status-icon-size);background-position:center}.autocomplete-result__status--icon[data-v-ca83b679]{border:none;background-color:transparent}.autocomplete-result__content[data-v-ca83b679]{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0}.autocomplete-result__title[data-v-ca83b679],.autocomplete-result__subline[data-v-ca83b679]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-result__subline[data-v-ca83b679]{color:var(--color-text-maxcontrast)}.material-design-icon[data-v-426785d7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.rich-contenteditable[data-v-426785d7]{--contenteditable-block-offset: calc(2 * var(--default-grid-baseline));--contenteditable-inline-start-offset: calc(2 * var(--default-grid-baseline));--contenteditable-inline-end-offset: calc(2 * var(--default-grid-baseline));position:relative;width:auto}.rich-contenteditable__label[data-v-426785d7]{position:absolute;margin-inline:14px;max-width:fit-content;inset-block-start:11px;inset-inline:0;color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.rich-contenteditable__input:focus+.rich-contenteditable__label[data-v-426785d7],.rich-contenteditable__input:not(.rich-contenteditable__input--empty)+.rich-contenteditable__label[data-v-426785d7]{inset-block-start:-10px;line-height:1.5;font-size:13px;font-weight:500;border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:5px;margin-inline:9px;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.rich-contenteditable__input[data-v-426785d7]{overflow-y:auto;width:auto;margin:0;padding-block:var(--contenteditable-block-offset);padding-inline:var(--contenteditable-inline-start-offset) var(--contenteditable-inline-end-offset);cursor:text;white-space:pre-wrap;overflow-wrap:break-word;color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);border-radius:var(--border-radius-element);outline:none;background-color:var(--color-main-background);font-family:var(--font-face);font-size:inherit;tab-size:4;min-height:var(--default-clickable-area);max-height:calc(var(--default-clickable-area) * 5.5)}.rich-contenteditable__input--has-label[data-v-426785d7]{margin-top:10px}.rich-contenteditable__input--empty[data-v-426785d7]:focus:before,.rich-contenteditable__input--empty[data-v-426785d7]:not(.rich-contenteditable__input--has-label):before{content:attr(aria-placeholder);color:var(--color-text-maxcontrast);position:absolute;width:calc(100% - var(--contenteditable-inline-start-offset) - var(--contenteditable-inline-end-offset));height:calc(100% - 2 * var(--contenteditable-block-offset));overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.rich-contenteditable__input[contenteditable=false][data-v-426785d7]:not(.rich-contenteditable__input--disabled){cursor:default;background-color:transparent;color:var(--color-main-text);border-color:transparent;opacity:1;border-radius:0}.rich-contenteditable__input--multiline[data-v-426785d7]{min-height:calc(var(--default-clickable-area) * 3);max-height:none}.rich-contenteditable__input--disabled[data-v-426785d7]{opacity:.5;color:var(--color-text-maxcontrast);border:2px solid var(--color-background-darker);border-radius:var(--border-radius-small);background-color:var(--color-background-dark)}.rich-contenteditable__input--overflow[data-v-426785d7],.rich-contenteditable__input--overflow[data-v-426785d7]:hover{border-color:var(--color-border-error, var(--color-error))!important}._material-design-icon_UrExO{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._tribute-container_aTO5r{z-index:9000;overflow:auto;position:absolute;left:-100vw;margin:var(--default-grid-baseline) 0;padding:var(--default-grid-baseline);color:var(--color-text-maxcontrast);border-radius:var(--border-radius-element);background:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow)}._tribute-container_aTO5r,._tribute-container_aTO5r *{box-sizing:border-box}._tribute-container_aTO5r ul{display:flex;flex-direction:column;gap:var(--default-grid-baseline)}._tribute-container_aTO5r ._tribute-container__item_EHZ07{color:var(--color-text-maxcontrast);border-radius:var(--border-radius-small);padding:var(--default-grid-baseline);cursor:pointer;min-height:var(--clickable-area-small, auto)}._tribute-container_aTO5r ._tribute-container__item_EHZ07.highlight{color:var(--color-main-text);background:var(--color-background-hover)}._tribute-container_aTO5r ._tribute-container__item_EHZ07.highlight,._tribute-container_aTO5r ._tribute-container__item_EHZ07.highlight *{cursor:pointer}._tribute-container_aTO5r._tribute-container--focus-visible_GHsDW .highlight._tribute-container__item_EHZ07{outline:2px solid var(--color-main-text)!important}._tribute-container-autocomplete_YNk1h{min-width:250px;max-width:300px;max-height:calc((var(--default-clickable-area) + 3 * var(--default-grid-baseline)) * 4.5 - 1.5 * var(--default-grid-baseline))}._tribute-container-emoji_jWgZX,._tribute-container-link_1b7mc{min-width:200px;max-width:200px;max-height:calc((24px + 3 * var(--default-grid-baseline)) * 5.5 - 1.5 * var(--default-grid-baseline))}._tribute-container-emoji_jWgZX ._tribute-item_p5sRT,._tribute-container-link_1b7mc ._tribute-item_p5sRT{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._tribute-container-link_1b7mc{min-width:200px;max-width:300px}._tribute-container-link_1b7mc ._tribute-item_p5sRT{display:flex;align-items:center}._tribute-container-link_1b7mc ._tribute-item__title_VPcy9{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._tribute-container-link_1b7mc ._tribute-item__icon_aTxCU{margin:auto 0;width:20px;height:20px;object-fit:contain;padding-inline-end:var(--default-grid-baseline);filter:var(--background-invert-if-dark)}.nc-select-users[data-v-e8e18fd3] .vs__selected{padding-inline:0 5px!important}.material-design-icon[data-v-f2b71592]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.select-group-error[data-v-f2b71592]{color:var(--color-text-error, var(--color-error));font-size:13px;padding-inline-start:var(--border-radius-element)}.material-design-icon[data-v-657c47f8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}/*! + * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */.textarea[data-v-657c47f8]{--input-border-color: var(--color-border-maxcontrast);--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));position:relative;width:100%;border-radius:var(--border-radius-element);margin-block-start:6px;resize:vertical}.textarea--disabled[data-v-657c47f8]{opacity:.7;filter:saturate(.7)}.textarea__main-wrapper[data-v-657c47f8]{padding:var(--border-width-input-focused, 2px);position:relative}.textarea__input[data-v-657c47f8]{margin:0;padding-block:var(--border-radius-element);padding-inline:10px;width:100%;font-size:var(--default-font-size);text-overflow:ellipsis;cursor:pointer;min-height:calc(var(--default-clickable-area) * 2);min-width:calc(var(--default-clickable-area) * 2);max-width:100%;background-color:var(--color-main-background);color:var(--color-main-text);--input-border-box-shadow-light: 0 -1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow-dark: 0 1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow: var(--input-border-box-shadow-light);border:none;border-radius:var(--border-radius-element);box-shadow:var(--input-border-box-shadow)}.textarea__input[data-v-657c47f8]:hover:not([disabled]){box-shadow:0 0 0 1px var(--input-border-color)}@media(prefers-color-scheme:dark){.textarea__input .textarea__input[data-v-657c47f8]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}}[data-theme-dark] .textarea__input[data-v-657c47f8]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}[data-theme-light] .textarea__input[data-v-657c47f8]{--input-border-box-shadow: var(--input-border-box-shadow-light)}.textarea--legacy .textarea__input[data-v-657c47f8]{box-shadow:0 0 0 1px var(--input-border-color)}.textarea--legacy .textarea__input[data-v-657c47f8]:hover:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color)}.textarea__input[data-v-657c47f8]:focus-within:not([disabled]),.textarea__input[data-v-657c47f8]:active:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color),0 0 0 4px var(--color-main-background)!important}.textarea__input[data-v-657c47f8]:active:not([disabled]),.textarea__input[data-v-657c47f8]:focus:not([disabled]){--input-border-width-offset: 0px;--input-border-color: var(--color-main-text)}.textarea__input[data-v-657c47f8]:not(:focus,.textarea__input--label-outside)::placeholder{opacity:0}.textarea__input[data-v-657c47f8]:focus{cursor:text}.textarea__input[data-v-657c47f8]:disabled{cursor:default}.textarea__input[data-v-657c47f8]:focus-visible{box-shadow:unset!important}.textarea__input--success[data-v-657c47f8]{--input-border-color: var(--color-border-success, var(--color-success)) !important}.textarea__input--success[data-v-657c47f8]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.textarea__input--error[data-v-657c47f8]{--input-border-color: var(--color-border-error, var(--color-error)) !important}.textarea__input--error[data-v-657c47f8]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.textarea__label[data-v-657c47f8]{position:absolute;margin-inline:12px 0;max-width:fit-content;inset-block-start:11px;inset-inline:0;color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.textarea__input:focus+.textarea__label[data-v-657c47f8],.textarea__input:not(:placeholder-shown)+.textarea__label[data-v-657c47f8]{inset-block-start:-10px;line-height:1.5;font-size:13px;font-weight:500;color:var(--color-main-text);background-color:var(--color-main-background);padding-inline:4px;margin-inline-start:8px;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.textarea__helper-text-message[data-v-657c47f8]{padding-block:4px;display:flex;align-items:center}.textarea__helper-text-message__icon[data-v-657c47f8]{margin-inline-end:8px}.textarea__helper-text-message--error[data-v-657c47f8]{color:var(--color-error-text)}.textarea__helper-text-message--success[data-v-657c47f8]{color:var(--color-success-text)} diff --git a/dist/index-DxCeSeyt.chunk.css b/dist/index-DxCeSeyt.chunk.css deleted file mode 100644 index 7f9eb6832194c..0000000000000 --- a/dist/index-DxCeSeyt.chunk.css +++ /dev/null @@ -1,7 +0,0 @@ -.material-design-icon[data-v-6a2b8de0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.nc-button-group-base>div[data-v-6a2b8de0]{text-align:center;color:var(--color-text-maxcontrast)}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0]{display:flex;gap:4px;justify-content:space-between}.nc-button-group-base ul.nc-button-group-content li[data-v-6a2b8de0-s]{flex:1 1}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button{padding:0!important;width:100%;display:flex;justify-content:center}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button.action-button--active{background-color:var(--color-primary-element);border-radius:var(--border-radius-element);color:var(--color-primary-element-text)}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button.action-button--active:hover,.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button.action-button--active:focus,.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button.action-button--active:focus-within{background-color:var(--color-primary-element-hover)}.nc-button-group-base ul.nc-button-group-content[data-v-6a2b8de0] .action-button .action-button__pressed-icon{display:none}.material-design-icon[data-v-1009e96c]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-caption[data-v-1009e96c]{color:var(--color-text-maxcontrast);line-height:var(--default-clickable-area);white-space:nowrap;text-overflow:ellipsis;box-shadow:none!important;-webkit-user-select:none;user-select:none;pointer-events:none;margin-inline-start:12px;padding-inline-end:14px;height:var(--default-clickable-area);display:flex;align-items:center}.material-design-icon[data-v-2947bc3b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-2947bc3b]:hover,li.action.active[data-v-2947bc3b]{border-radius:6px;padding:0}li.action[data-v-2947bc3b]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-2947bc3b]{pointer-events:none;opacity:.5}.action--disabled[data-v-2947bc3b]:hover,.action--disabled[data-v-2947bc3b]:focus{cursor:default;opacity:.5}.action--disabled[data-v-2947bc3b] *{opacity:1!important}.action-checkbox[data-v-2947bc3b]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-checkbox>span[data-v-2947bc3b]{cursor:pointer;white-space:nowrap}.action-checkbox__icon[data-v-2947bc3b]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-checkbox[data-v-2947bc3b] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-checkbox[data-v-2947bc3b] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-checkbox__longtext-wrapper[data-v-2947bc3b],.action-checkbox__longtext[data-v-2947bc3b]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-checkbox__longtext[data-v-2947bc3b]{cursor:pointer;white-space:pre-wrap!important}.action-checkbox__name[data-v-2947bc3b]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-checkbox__description[data-v-2947bc3b]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-checkbox__menu-icon[data-v-2947bc3b]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action[data-v-2947bc3b]:has(:focus-visible){outline:2px solid currentColor}.action-checkbox__icon[data-v-2947bc3b]{color:var(--color-primary-element)}.action-checkbox__input[data-v-2947bc3b]{width:20px;height:20px;margin:auto;position:absolute;z-index:-1;opacity:0!important}.material-design-icon[data-v-6c208ddd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}li.action[data-v-6c208ddd]:hover,li.action.active[data-v-6c208ddd]{border-radius:6px;padding:0}li.action[data-v-6c208ddd]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-6c208ddd]{pointer-events:none;opacity:.5}.action--disabled[data-v-6c208ddd]:hover,.action--disabled[data-v-6c208ddd]:focus{cursor:default;opacity:.5}.action--disabled[data-v-6c208ddd] *{opacity:1!important}.action-radio[data-v-6c208ddd]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2);box-sizing:border-box;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;font-size:var(--default-font-size);line-height:var(--default-clickable-area)}.action-radio>span[data-v-6c208ddd]{cursor:pointer;white-space:nowrap}.action-radio__icon[data-v-6c208ddd]{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px;background-repeat:no-repeat}.action-radio[data-v-6c208ddd] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-radio[data-v-6c208ddd] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-radio__longtext-wrapper[data-v-6c208ddd],.action-radio__longtext[data-v-6c208ddd]{max-width:220px;line-height:1.6em;padding:calc((var(--default-clickable-area) - 1.6em) / 2) 0;cursor:pointer;text-align:start;overflow:hidden;text-overflow:ellipsis}.action-radio__longtext[data-v-6c208ddd]{cursor:pointer;white-space:pre-wrap!important}.action-radio__name[data-v-6c208ddd]{font-weight:700;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;max-width:100%;display:block}.action-radio__description[data-v-6c208ddd]{display:block;white-space:pre-wrap;font-size:var(--font-size-small);line-height:var(--default-line-height);color:var(--color-text-maxcontrast);cursor:pointer}.action-radio__menu-icon[data-v-6c208ddd]{margin-inline:auto calc((var(--default-clickable-area) - 16px) / 2 * -1)}.action[data-v-6c208ddd]:has(:focus-visible){outline:2px solid currentColor}.action-radio__icon[data-v-6c208ddd]{color:var(--color-primary-element)}.action-radio__input[data-v-6c208ddd]{width:20px;height:20px;margin:auto;position:absolute;z-index:-1;opacity:0!important}.material-design-icon[data-v-3e2324b7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.action-separator[data-v-3e2324b7]{height:0;margin:5px 10px 5px 15px;border-bottom:1px solid var(--color-border-dark);cursor:default}.material-design-icon[data-v-24e8b746]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}button[data-v-24e8b746]:not(.button-vue),input[data-v-24e8b746]:not([type=range]),textarea[data-v-24e8b746]{margin:0;padding:7px 6px;cursor:text;color:var(--color-main-text);border:1px solid var(--color-border-dark);border-radius:var(--border-radius-element);outline:none;background-color:var(--color-main-background);font-size:13px}button[data-v-24e8b746]:not(.button-vue):not(:disabled):not(.primary):hover,button[data-v-24e8b746]:not(.button-vue):not(:disabled):not(.primary):focus,button:not(.button-vue):not(:disabled):not(.primary).active[data-v-24e8b746],input[data-v-24e8b746]:not([type=range]):not(:disabled):not(.primary):hover,input[data-v-24e8b746]:not([type=range]):not(:disabled):not(.primary):focus,input:not([type=range]):not(:disabled):not(.primary).active[data-v-24e8b746],textarea[data-v-24e8b746]:not(:disabled):not(.primary):hover,textarea[data-v-24e8b746]:not(:disabled):not(.primary):focus,textarea:not(:disabled):not(.primary).active[data-v-24e8b746]{border-color:var(--color-primary-element);outline:none}button[data-v-24e8b746]:not(.button-vue):not(:disabled):not(.primary):active,input[data-v-24e8b746]:not([type=range]):not(:disabled):not(.primary):active,textarea[data-v-24e8b746]:not(:disabled):not(.primary):active{color:var(--color-main-text);outline:none;background-color:var(--color-main-background)}button[data-v-24e8b746]:not(.button-vue):disabled,input[data-v-24e8b746]:not([type=range]):disabled,textarea[data-v-24e8b746]:disabled{cursor:default;opacity:.5;color:var(--color-text-maxcontrast);background-color:var(--color-background-dark)}button[data-v-24e8b746]:not(.button-vue):required,input[data-v-24e8b746]:not([type=range]):required,textarea[data-v-24e8b746]:required{box-shadow:none}button[data-v-24e8b746]:not(.button-vue):invalid,input[data-v-24e8b746]:not([type=range]):invalid,textarea[data-v-24e8b746]:invalid{border-color:var(--color-border-error, var(--color-error));box-shadow:none!important}button:not(.button-vue).primary[data-v-24e8b746],input:not([type=range]).primary[data-v-24e8b746],textarea.primary[data-v-24e8b746]{cursor:pointer;color:var(--color-primary-element-text);border-color:var(--color-primary-element);background-color:var(--color-primary-element)}button:not(.button-vue).primary[data-v-24e8b746]:not(:disabled):hover,button:not(.button-vue).primary[data-v-24e8b746]:not(:disabled):focus,button:not(.button-vue).primary[data-v-24e8b746]:not(:disabled):active,input:not([type=range]).primary[data-v-24e8b746]:not(:disabled):hover,input:not([type=range]).primary[data-v-24e8b746]:not(:disabled):focus,input:not([type=range]).primary[data-v-24e8b746]:not(:disabled):active,textarea.primary[data-v-24e8b746]:not(:disabled):hover,textarea.primary[data-v-24e8b746]:not(:disabled):focus,textarea.primary[data-v-24e8b746]:not(:disabled):active{border-color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}button:not(.button-vue).primary[data-v-24e8b746]:not(:disabled):active,input:not([type=range]).primary[data-v-24e8b746]:not(:disabled):active,textarea.primary[data-v-24e8b746]:not(:disabled):active{color:var(--color-primary-element-text-dark)}button:not(.button-vue).primary[data-v-24e8b746]:disabled,input:not([type=range]).primary[data-v-24e8b746]:disabled,textarea.primary[data-v-24e8b746]:disabled{cursor:default;color:var(--color-primary-element-text-dark);background-color:var(--color-primary-element)}li.action[data-v-24e8b746]:hover,li.action.active[data-v-24e8b746]{border-radius:6px;padding:0}li.action[data-v-24e8b746]:hover{background-color:var(--color-background-hover)}.action--disabled[data-v-24e8b746]{pointer-events:none;opacity:.5}.action--disabled[data-v-24e8b746]:hover,.action--disabled[data-v-24e8b746]:focus{cursor:default;opacity:.5}.action--disabled[data-v-24e8b746] *{opacity:1!important}.action-text-editable[data-v-24e8b746]{display:flex;align-items:flex-start;width:100%;height:auto;margin:0;padding:0;cursor:pointer;white-space:nowrap;color:var(--color-main-text);border:0;border-radius:0;background-color:transparent;box-shadow:none;font-weight:400;line-height:var(--default-clickable-area)}.action-text-editable>span[data-v-24e8b746]{cursor:pointer;white-space:nowrap}.action-text-editable__icon[data-v-24e8b746]{min-width:0;min-height:0;padding:calc(var(--default-clickable-area) / 2) 0 calc(var(--default-clickable-area) / 2) var(--default-clickable-area);background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px}.action-text-editable[data-v-24e8b746] .material-design-icon{width:var(--default-clickable-area);height:var(--default-clickable-area);opacity:1}.action-text-editable[data-v-24e8b746] .material-design-icon .material-design-icon__svg{vertical-align:middle}.action-text-editable__form[data-v-24e8b746]{display:flex;flex:1 1 auto;flex-direction:column;position:relative;margin:4px 0;padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.action-text-editable__submit[data-v-24e8b746]{position:absolute;inset-inline-start:0;top:auto;width:1px;height:1px;overflow:hidden;z-index:-1;opacity:0}.action-text-editable__label[data-v-24e8b746]{display:flex;align-items:center;justify-content:center;position:absolute;inset-inline-end:calc((var(--default-clickable-area) - 16px) / 2 + 1px);bottom:1px;width:calc(var(--default-clickable-area) - 8px);height:calc(var(--default-clickable-area) - 8px);box-sizing:border-box;margin:0;padding:7px 6px;border:0;border-radius:50%;background-color:var(--color-main-background);background-clip:padding-box}.action-text-editable__label[data-v-24e8b746],.action-text-editable__label[data-v-24e8b746] *{cursor:pointer}.action-text-editable__textarea[data-v-24e8b746]{flex:1 1 auto;color:inherit;border-color:var(--color-border-maxcontrast);min-height:calc(var(--default-clickable-area) * 2 - 8px);max-height:calc(var(--default-clickable-area) * 3 - 8px);min-width:calc(var(--default-clickable-area) * 4);width:100%!important;margin:0}.action-text-editable__textarea[data-v-24e8b746]:disabled{cursor:default}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):invalid+.action-text-editable__label[data-v-24e8b746]{background-color:var(--color-error)}.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-24e8b746]:active,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-24e8b746]:hover,.action-text-editable__textarea:not(:active):not(:hover):not(:focus):not(:disabled)+.action-text-editable__label[data-v-24e8b746]:focus{background-color:var(--color-primary-element);color:var(--color-primary-element-text)}.action-text-editable__textarea:active:not(:disabled)+.action-text-editable__label[data-v-24e8b746],.action-text-editable__textarea:hover:not(:disabled)+.action-text-editable__label[data-v-24e8b746],.action-text-editable__textarea:focus:not(:disabled)+.action-text-editable__label[data-v-24e8b746]{z-index:2;border-color:var(--color-primary-element);border-inline-start-color:transparent}li:last-child>.action-text-editable[data-v-24e8b746]{margin-bottom:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}li:first-child>.action-text-editable[data-v-24e8b746]{margin-top:calc((var(--default-clickable-area) - 16px) / 2 - 4px)}.material-design-icon[data-v-5a15295d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-toggle-wrapper[data-v-5a15295d]{position:absolute;top:var(--app-navigation-padding);inset-inline-end:calc(0px - var(--app-navigation-padding));margin-inline-end:calc(-1 * var(--default-clickable-area))}button.app-navigation-toggle[data-v-5a15295d]{background-color:var(--color-main-background)}.app-navigation,.app-content{--app-navigation-padding: calc(var(--default-grid-baseline, 4px) * 2)}.material-design-icon[data-v-d5ce90cd]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation[data-v-d5ce90cd]{--color-text-maxcontrast: var(--color-text-maxcontrast-background-blur, var(--color-text-maxcontrast-default));transition:transform var(--animation-quick),margin var(--animation-quick);width:300px;--app-navigation-max-width: calc(100vw - (var(--app-navigation-padding) + var(--default-clickable-area) + var(--default-grid-baseline)));max-width:var(--app-navigation-max-width);position:relative;top:0;inset-inline-start:0;padding:0;z-index:1800;height:100%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;flex-grow:0;flex-shrink:0;background-color:var(--color-main-background-blur, var(--color-main-background));-webkit-backdrop-filter:var(--filter-background-blur, none);backdrop-filter:var(--filter-background-blur, none)}.app-navigation--closed[data-v-d5ce90cd]{margin-inline-start:calc(-1*min(300px,var(--app-navigation-max-width)))}.app-navigation__search[data-v-d5ce90cd]{width:100%}.app-navigation__body[data-v-d5ce90cd]{overflow-y:scroll}.app-navigation__content>ul[data-v-d5ce90cd]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.app-navigation .app-navigation__list[data-v-d5ce90cd]{height:100%}.app-navigation__body--no-list[data-v-d5ce90cd]{flex:1 1 auto;overflow:auto;height:100%}.app-navigation__content[data-v-d5ce90cd]{height:100%;display:flex;flex-direction:column}[data-themes*=highcontrast] .app-navigation[data-v-d5ce90cd]{border-inline-end:1px solid var(--color-border)}@media only screen and (max-width:1024px){.app-navigation[data-v-d5ce90cd]{position:absolute;border-inline-end:1px solid var(--color-border)}}@media only screen and (max-width:512px){.app-navigation[data-v-d5ce90cd]{z-index:1400}}.material-design-icon[data-v-d72957ed]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-list[data-v-d72957ed]{position:relative;width:100%;overflow-x:hidden;overflow-y:auto;display:flex;flex-direction:column;gap:var(--default-grid-baseline, 4px);padding:var(--app-navigation-padding)}.material-design-icon[data-v-21e6b451]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-caption[data-v-21e6b451]{display:flex;justify-content:space-between}.app-navigation-caption--heading[data-v-21e6b451]{padding:var(--app-navigation-padding)}.app-navigation-caption--heading[data-v-21e6b451]:not(:first-child):not(:last-child){padding:0 var(--app-navigation-padding)}.app-navigation-caption__name[data-v-21e6b451]{font-weight:700;color:var(--color-main-text);font-size:var(--default-font-size);line-height:var(--default-clickable-area);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:none!important;flex-shrink:0;padding-block:0;padding-inline:calc(var(--default-grid-baseline, 4px) * 2) 0;margin-top:0;margin-bottom:var(--default-grid-baseline)}.app-navigation-caption__actions[data-v-21e6b451]{flex:0 0 var(--default-clickable-area)}.app-navigation-caption[data-v-21e6b451]:not(:first-child){margin-top:calc(var(--default-clickable-area) / 2)}.material-design-icon[data-v-04a313f4]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry__icon-bullet[data-v-04a313f4]{display:block;padding:calc((var(--default-clickable-area) - 16px) / 2 + 1px)}.app-navigation-entry__icon-bullet div[data-v-04a313f4]{width:14px;height:14px;cursor:pointer;transition:background .1s ease-in-out;border:none;border-radius:50%}.material-design-icon[data-v-e6236e50]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.icon-collapse[data-v-e6236e50]{position:relative;inset-inline-end:0}.icon-collapse[data-v-e6236e50]:hover{background-color:var(--color-background-dark)!important}.icon-collapse--active[data-v-e6236e50]:hover{background-color:var(--color-primary-element)!important}.material-design-icon[data-v-f925f8d0]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry[data-v-f925f8d0]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%;min-height:var(--default-clickable-area);transition:background-color var(--animation-quick) ease-in-out;transition:background-color .2s ease-in-out;border-radius:var(--border-radius-element)}.app-navigation-entry-wrapper[data-v-f925f8d0]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%}.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened)>ul[data-v-f925f8d0]{display:none}.app-navigation-entry.active[data-v-f925f8d0]{background-color:var(--color-primary-element)!important}.app-navigation-entry.active[data-v-f925f8d0]:hover{background-color:var(--color-primary-element-hover)!important}.app-navigation-entry.active .app-navigation-entry-link[data-v-f925f8d0],.app-navigation-entry.active .app-navigation-entry-button[data-v-f925f8d0]{color:var(--color-primary-element-text)!important}.app-navigation-entry[data-v-f925f8d0]:focus-within,.app-navigation-entry[data-v-f925f8d0]:hover{background-color:var(--color-background-hover)}.app-navigation-entry.active .app-navigation-entry__children[data-v-f925f8d0],.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-f925f8d0],.app-navigation-entry:hover .app-navigation-entry__children[data-v-f925f8d0]{background-color:var(--color-main-background)}.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0],.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0],.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0],.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0],.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-f925f8d0]{display:inline-block}.app-navigation-entry .app-navigation-entry__actions[data-v-f925f8d0]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry.active .app-navigation-entry__actions[data-v-f925f8d0]:hover .button-vue{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--deleted>ul[data-v-f925f8d0]{display:none}.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-f925f8d0],.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-f925f8d0]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.app-navigation-entry .app-navigation-entry-link[data-v-f925f8d0],.app-navigation-entry .app-navigation-entry-button[data-v-f925f8d0]{z-index:100;display:flex;overflow:hidden;flex:1 1 0;min-height:var(--default-clickable-area);padding:0;white-space:nowrap;color:var(--color-main-text);background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px 16px;line-height:var(--default-clickable-area)}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-f925f8d0],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-f925f8d0]{display:flex;align-items:center;flex:0 0 var(--default-clickable-area);justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);background-size:16px 16px;background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-f925f8d0],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-f925f8d0]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis}.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-f925f8d0],.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-f925f8d0]{width:calc(100% - var(--default-clickable-area));margin:auto}.app-navigation-entry .app-navigation-entry-link[data-v-f925f8d0]:focus-visible,.app-navigation-entry .app-navigation-entry-button[data-v-f925f8d0]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background);outline:2px solid var(--color-main-text);border-radius:var(--border-radius-element)}.app-navigation-entry__children[data-v-f925f8d0]{--app-navigation-item-child-offset: 10px;position:relative;display:flex;flex:0 1 auto;flex-direction:column;width:100%;gap:var(--default-grid-baseline, 4px);padding-inline-start:var(--app-navigation-item-child-offset)}.app-navigation-entry__children .app-navigation-entry[data-v-f925f8d0]{display:inline-flex;flex-wrap:wrap}.app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children[data-v-f925f8d0]{--app-navigation-item-child-offset: 0}.app-navigation-entry__deleted[data-v-f925f8d0]{display:inline-flex;flex:1 1 0;padding-inline-start:calc(var(--default-clickable-area) - (var(--default-clickable-area) - 16px) / 2)!important}.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-f925f8d0]{position:relative;overflow:hidden;flex:1 1 0;white-space:nowrap;text-overflow:ellipsis;line-height:var(--default-clickable-area)}.app-navigation-entry__utils[data-v-f925f8d0]{display:flex;min-width:var(--default-clickable-area);align-items:center;flex:0 1 auto;justify-content:flex-end}.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-f925f8d0]{display:inline-block}.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-f925f8d0]{margin-inline-end:calc(var(--default-grid-baseline) * 2);display:flex;align-items:center;flex:0 1 auto}.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-f925f8d0]{display:none}.app-navigation-entry--editing .app-navigation-entry-edit[data-v-f925f8d0]{z-index:250;opacity:1}.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-f925f8d0]{z-index:250;transform:translate(0)}.app-navigation-entry--pinned[data-v-f925f8d0]{order:2;margin-top:auto}.app-navigation-entry--pinned~.app-navigation-entry--pinned[data-v-f925f8d0]{margin-top:0}[data-themes*=highcontrast] .app-navigation-entry[data-v-f925f8d0]:active{background-color:var(--color-primary-element-light-hover)!important}.material-design-icon[data-v-dd457d48]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-input-confirm[data-v-dd457d48]{flex:1 0 100%;width:100%}.app-navigation-input-confirm form[data-v-dd457d48]{display:flex}.app-navigation-input-confirm__input[data-v-dd457d48]{height:34px;flex:1 1 100%;font-size:100%!important;margin:5px!important;margin-inline-start:-8px!important;padding:7px!important}.app-navigation-input-confirm__input[data-v-dd457d48]:active,.app-navigation-input-confirm__input[data-v-dd457d48]:focus,.app-navigation-input-confirm__input[data-v-dd457d48]:hover{outline:none;background-color:var(--color-main-background);color:var(--color-main-text);border-color:var(--color-primary-element)}.material-design-icon[data-v-0ba6c9df]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-new[data-v-0ba6c9df]{display:block;padding:calc(var(--default-grid-baseline, 4px) * 2)}.app-navigation-new button[data-v-0ba6c9df]{width:100%}.material-design-icon[data-v-ee07f8f8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-entry[data-v-ee07f8f8]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%;min-height:var(--default-clickable-area);transition:background-color var(--animation-quick) ease-in-out;transition:background-color .2s ease-in-out;border-radius:var(--border-radius-element)}.app-navigation-entry-wrapper[data-v-ee07f8f8]{position:relative;display:flex;flex-shrink:0;flex-wrap:wrap;width:100%}.app-navigation-entry-wrapper.app-navigation-entry--collapsible:not(.app-navigation-entry--opened)>ul[data-v-ee07f8f8]{display:none}.app-navigation-entry.active[data-v-ee07f8f8]{background-color:var(--color-primary-element)!important}.app-navigation-entry.active[data-v-ee07f8f8]:hover{background-color:var(--color-primary-element-hover)!important}.app-navigation-entry.active .app-navigation-entry-link[data-v-ee07f8f8],.app-navigation-entry.active .app-navigation-entry-button[data-v-ee07f8f8]{color:var(--color-primary-element-text)!important}.app-navigation-entry[data-v-ee07f8f8]:focus-within,.app-navigation-entry[data-v-ee07f8f8]:hover{background-color:var(--color-background-hover)}.app-navigation-entry.active .app-navigation-entry__children[data-v-ee07f8f8],.app-navigation-entry:focus-within .app-navigation-entry__children[data-v-ee07f8f8],.app-navigation-entry:hover .app-navigation-entry__children[data-v-ee07f8f8]{background-color:var(--color-main-background)}.app-navigation-entry.active .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry.app-navigation-entry--deleted .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry:focus .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry:focus-within .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8],.app-navigation-entry:hover .app-navigation-entry__utils .app-navigation-entry__actions[data-v-ee07f8f8]{display:inline-block}.app-navigation-entry .app-navigation-entry__actions[data-v-ee07f8f8]:hover .button-vue{background-color:var(--color-background-dark)!important}.app-navigation-entry.active .app-navigation-entry__actions[data-v-ee07f8f8]:hover .button-vue{background-color:var(--color-primary-element)!important}.app-navigation-entry.app-navigation-entry--deleted>ul[data-v-ee07f8f8]{display:none}.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-link[data-v-ee07f8f8],.app-navigation-entry:not(.app-navigation-entry--editing) .app-navigation-entry-button[data-v-ee07f8f8]{padding-inline-end:calc((var(--default-clickable-area) - 16px) / 2)}.app-navigation-entry .app-navigation-entry-link[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button[data-v-ee07f8f8]{z-index:100;display:flex;overflow:hidden;flex:1 1 0;min-height:var(--default-clickable-area);padding:0;white-space:nowrap;color:var(--color-main-text);background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center;background-size:16px 16px;line-height:var(--default-clickable-area)}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry-icon[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry-icon[data-v-ee07f8f8]{display:flex;align-items:center;flex:0 0 var(--default-clickable-area);justify-content:center;width:var(--default-clickable-area);height:var(--default-clickable-area);background-size:16px 16px;background-repeat:no-repeat;background-position:calc((var(--default-clickable-area) - 16px) / 2) center}.app-navigation-entry .app-navigation-entry-link .app-navigation-entry__name[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button .app-navigation-entry__name[data-v-ee07f8f8]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis}.app-navigation-entry .app-navigation-entry-link .editingContainer[data-v-ee07f8f8],.app-navigation-entry .app-navigation-entry-button .editingContainer[data-v-ee07f8f8]{width:calc(100% - var(--default-clickable-area));margin:auto}.app-navigation-entry .app-navigation-entry-link[data-v-ee07f8f8]:focus-visible,.app-navigation-entry .app-navigation-entry-button[data-v-ee07f8f8]:focus-visible{box-shadow:0 0 0 4px var(--color-main-background);outline:2px solid var(--color-main-text);border-radius:var(--border-radius-element)}.app-navigation-entry__children[data-v-ee07f8f8]{--app-navigation-item-child-offset: 10px;position:relative;display:flex;flex:0 1 auto;flex-direction:column;width:100%;gap:var(--default-grid-baseline, 4px);padding-inline-start:var(--app-navigation-item-child-offset)}.app-navigation-entry__children .app-navigation-entry[data-v-ee07f8f8]{display:inline-flex;flex-wrap:wrap}.app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children .app-navigation-entry__children[data-v-ee07f8f8]{--app-navigation-item-child-offset: 0}.app-navigation-entry__deleted[data-v-ee07f8f8]{display:inline-flex;flex:1 1 0;padding-inline-start:calc(var(--default-clickable-area) - (var(--default-clickable-area) - 16px) / 2)!important}.app-navigation-entry__deleted .app-navigation-entry__deleted-description[data-v-ee07f8f8]{position:relative;overflow:hidden;flex:1 1 0;white-space:nowrap;text-overflow:ellipsis;line-height:var(--default-clickable-area)}.app-navigation-entry__utils[data-v-ee07f8f8]{display:flex;min-width:var(--default-clickable-area);align-items:center;flex:0 1 auto;justify-content:flex-end}.app-navigation-entry__utils.app-navigation-entry__utils--display-actions .action-item.app-navigation-entry__actions[data-v-ee07f8f8]{display:inline-block}.app-navigation-entry__utils .app-navigation-entry__counter-wrapper[data-v-ee07f8f8]{margin-inline-end:calc(var(--default-grid-baseline) * 2);display:flex;align-items:center;flex:0 1 auto}.app-navigation-entry__utils .action-item.app-navigation-entry__actions[data-v-ee07f8f8]{display:none}.app-navigation-entry--editing .app-navigation-entry-edit[data-v-ee07f8f8]{z-index:250;opacity:1}.app-navigation-entry--deleted .app-navigation-entry-deleted[data-v-ee07f8f8]{z-index:250;transform:translate(0)}.app-navigation-entry--pinned[data-v-ee07f8f8]{order:2;margin-top:auto}.app-navigation-entry--pinned~.app-navigation-entry--pinned[data-v-ee07f8f8]{margin-top:0}[data-themes*=highcontrast] .app-navigation-entry[data-v-ee07f8f8]:active{background-color:var(--color-primary-element-light-hover)!important}.app-navigation-new-item__name[data-v-ee07f8f8]{overflow:hidden;max-width:100%;white-space:nowrap;text-overflow:ellipsis;padding-inline-start:7px;font-size:14px}.newItemContainer[data-v-ee07f8f8]{width:calc(100% - var(--default-clickable-area));margin:auto}.material-design-icon[data-v-9f5c0794]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-navigation-search[data-v-9f5c0794]{display:flex;gap:var(--app-navigation-padding);padding:var(--app-navigation-padding)}.app-navigation-search--has-actions .app-navigation-search__input[data-v-9f5c0794]{flex-grow:1;z-index:3}.app-navigation-search__actions[data-v-9f5c0794]{display:flex;gap:var(--default-grid-baseline);margin-inline-start:0;max-width:calc(2 * var(--default-clickable-area) + var(--default-grid-baseline));max-height:var(--default-clickable-area);transition:margin-inline-start var(--animation-quick)}.app-navigation-search__actions--hidden[data-v-9f5c0794]{margin-inline-start:calc(-1 * var(--default-clickable-area))}._container_RFk6U{margin-top:auto;padding:var(--default-grid-baseline)}._header_2CtDS{margin-block:0 var(--default-grid-baseline);margin-inline:var(--default-grid-baseline)}._button_tAyis{padding-inline:0 calc((var(--default-clickable-area) - 16px) / 2)!important}._button_tAyis .button-vue__text{font-weight:400}._content_--KYD{display:block;padding:10px;margin-bottom:calc(-1 * var(--default-grid-baseline));max-height:300px;overflow-y:auto}._animationActive_DAG1p{transition-duration:var(--animation-slow);transition-property:max-height,padding;overflow-y:hidden!important}._animationStop_fWYQj{max-height:0!important;padding:0 10px!important}.app-navigation-spacer[data-v-277fa710]{flex-shrink:0;height:22px}._material-design-icon_qDIHA{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._appSettingsDialogVersion_8Xr7R{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));color:var(--color-text-maxcontrast);margin-block-end:calc(8 * var(--default-grid-baseline));margin-inline:var(--form-element-label-offset)}._appSettingsDialogVersion__legacy_7MO71{margin-inline:0}.material-design-icon[data-v-9445186a]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings[data-v-9445186a] .app-settings__navigation{min-width:200px;margin-inline-end:calc(4 * var(--default-grid-baseline));overflow-x:hidden;overflow-y:auto;position:relative}.app-settings[data-v-9445186a] .app-settings__content{padding-inline:calc(4 * var(--default-grid-baseline))}.navigation-list[data-v-9445186a]{height:100%;overflow-y:auto;padding:calc(3 * var(--default-grid-baseline))}.navigation-list__link[data-v-9445186a]{display:flex;align-content:center;font-size:16px;height:var(--default-clickable-area);margin:4px 0;line-height:var(--default-clickable-area);border-radius:var(--border-radius-element);font-weight:700;padding:0 calc(4 * var(--default-grid-baseline));cursor:pointer;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;background-color:transparent;border:none}.navigation-list__link[data-v-9445186a]:hover,.navigation-list__link[data-v-9445186a]:focus{background-color:var(--color-background-hover)}.navigation-list__link--active[data-v-9445186a]{background-color:var(--color-primary-element-light)!important}.navigation-list__link--icon[data-v-9445186a]{padding-inline-start:calc(2 * var(--default-grid-baseline));gap:var(--default-grid-baseline)}.navigation-list__link-icon[data-v-9445186a]{display:flex;justify-content:center;align-content:center;width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline));max-width:calc(var(--default-clickable-area) - 2 * var(--default-grid-baseline))}@media only screen and (max-width:512px){.app-settings[data-v-9445186a] .dialog__name{padding-inline-start:16px}}.material-design-icon[data-v-4095bb7f]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-settings-section[data-v-4095bb7f]{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));--app-settings-section-text-offset: var(--form-element-label-offset);--app-settings-section-content-gap: calc(6 * var(--default-grid-baseline));margin-block-end:calc(8 * var(--default-grid-baseline))}.app-settings-section__name[data-v-4095bb7f]{margin:0;padding-inline:var(--app-settings-section-text-offset);padding-block:0;font-size:20px;font-weight:700}.app-settings-section__description[data-v-4095bb7f]{padding-inline:var(--app-settings-section-text-offset);color:var(--color-text-maxcontrast)}.app-settings-section__content[data-v-4095bb7f]{margin-block-start:calc(2 * var(--default-grid-baseline));display:flex;flex-direction:column;justify-content:stretch;gap:var(--app-settings-section-content-gap)}.app-settings-section__legacy[data-v-4095bb7f]{--app-settings-section-text-offset: 0;--app-settings-section-content-gap: 0}._appSettingsSectionShortcuts_RqpkA{display:flex;flex-direction:column;gap:calc(4 * var(--default-grid-baseline))}._material-design-icon_m4vbX{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._sidebarTabsButton_6hxfz{border:none;border-bottom:var(--default-grid-baseline) solid transparent!important;border-radius:var(--border-radius-small);background-color:var(--color-main-background);color:var(--color-main-text);font-size:var(--default-font-size);cursor:pointer;display:flex;flex-direction:column;gap:var(--default-grid-baseline);padding:var(--border-radius-small);transition:background-color var(--animation-quick),border-bottom-color var(--animation-quick);min-width:var(--default-clickable-area)}._sidebarTabsButton_6hxfz:hover{background-color:var(--color-background-hover)!important}._sidebarTabsButton_6hxfz:active,._sidebarTabsButton_6hxfz:focus{background-color:var(--color-main-background)!important}._sidebarTabsButton_6hxfz *{cursor:pointer}._sidebarTabsButton_selected_eBHM-{border-bottom-color:var(--color-primary-element)!important;border-bottom-left-radius:0;border-bottom-right-radius:0;cursor:default}._sidebarTabsButton_selected_eBHM-:hover{background-color:var(--color-primary-element-light-hover)!important;color:var(--color-primary-element-light-text)!important}._sidebarTabsButton_selected_eBHM- *{cursor:default}._sidebarTabsButton__name_YlW5S{font-weight:400;overflow:hidden;text-overflow:ellipsis;text-wrap:nowrap}._sidebarTabsButton_selected_eBHM- ._sidebarTabsButton__name_YlW5S{font-weight:700}._sidebarTabsButton__icon_MPS-D{display:inline-flex;align-items:center;justify-content:center}._sidebarTabsButton__legacyIcon_rzPOu{background-size:20px;display:flex;align-items:center;justify-content:center}.material-design-icon[data-v-1e2d5bfb]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar-tabs[data-v-1e2d5bfb]{display:flex;flex-direction:column;min-height:0;flex:1 1 100%}.app-sidebar-tabs__nav[data-v-1e2d5bfb]{display:flex;justify-content:stretch;margin:10px 8px 0;border-bottom:1px solid var(--color-border)}.app-sidebar-tabs__tab[data-v-1e2d5bfb]{flex:1 1 1px}.app-sidebar-tabs__content[data-v-1e2d5bfb]{position:relative;min-height:256px;height:100%}.app-sidebar-tabs__content--multiple[data-v-1e2d5bfb]>:not(section){display:none}.material-design-icon{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}@property --app-sidebar-offset{syntax: ""; initial-value: 0; inherits: true;}body{--app-sidebar-padding: calc(var(--default-grid-baseline, 4px) * 2);--app-sidebar-offset: 0;transition:--app-sidebar-offset 0ms!important}body:has(.app-sidebar.slide-right-enter-active),body:has(.app-sidebar.slide-right-leave-active){transition:--app-sidebar-offset var(--animation-quick)}body:has(.app-sidebar__toggle){--app-sidebar-offset: calc(var(--app-sidebar-padding) + var(--default-clickable-area))}.material-design-icon[data-v-d66d2f51]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar[data-v-d66d2f51]{--app-sidebar-width: clamp(300px, 27vw, 500px);--app-sidebar-padding: calc(var(--default-grid-baseline, 4px) * 2);width:var(--app-sidebar-width);z-index:1500;top:0;inset-inline-end:0;display:flex;overflow-x:hidden;overflow-y:auto;flex-direction:column;flex-shrink:0;height:100%;border-inline-start:1px solid var(--color-border);background:var(--color-main-background);position:relative}.app-sidebar__toggle[data-v-d66d2f51]{position:absolute!important;inset-block-start:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-padding);z-index:1001}.app-sidebar .app-sidebar-header[data-v-d66d2f51]{--app-sidebar-close-button-offset: calc(var(--default-clickable-area) + var(--app-sidebar-padding))}.app-sidebar .app-sidebar-header>.app-sidebar__close[data-v-d66d2f51]{position:absolute;z-index:100;top:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-padding);width:var(--default-clickable-area);height:var(--default-clickable-area)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info[data-v-d66d2f51]{flex-direction:row}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__figure[data-v-d66d2f51]{--figure-size: calc(52px + var(--app-sidebar-padding));z-index:2;width:var(--figure-size);height:var(--figure-size);margin:calc(var(--app-sidebar-padding) / 2);border-radius:3px;flex:0 0 auto}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc[data-v-d66d2f51]{padding-inline-start:0;flex:1 1 auto;min-width:0;padding-inline-end:calc(var(--default-clickable-area) + var(--app-sidebar-close-button-offset));padding-top:var(--app-sidebar-padding)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-d66d2f51]{padding-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-d66d2f51]{z-index:3;position:absolute;top:calc(var(--app-sidebar-padding) / 2);inset-inline-start:calc(-1 * var(--default-clickable-area));gap:0}.app-sidebar .app-sidebar-header--compact.app-sidebar-header--with-figure .app-sidebar-header__info .app-sidebar-header__desc .app-sidebar-header__menu[data-v-d66d2f51]{top:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-close-button-offset);position:absolute}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__menu[data-v-d66d2f51]{position:absolute;top:var(--app-sidebar-padding);inset-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc[data-v-d66d2f51]{padding-inline-end:calc(var(--default-clickable-area) + var(--app-sidebar-close-button-offset))}.app-sidebar .app-sidebar-header:not(.app-sidebar-header--with-figure) .app-sidebar-header__desc.app-sidebar-header__desc--without-actions[data-v-d66d2f51]{padding-inline-end:var(--app-sidebar-close-button-offset)}.app-sidebar .app-sidebar-header .app-sidebar-header__info[data-v-d66d2f51]{display:flex;flex-direction:column}.app-sidebar .app-sidebar-header__figure[data-v-d66d2f51]{width:100%;height:250px;max-height:250px;background-repeat:no-repeat;background-position:center;background-size:contain}.app-sidebar .app-sidebar-header__figure--with-action[data-v-d66d2f51]{cursor:pointer}.app-sidebar .app-sidebar-header__desc[data-v-d66d2f51]{position:relative;display:flex;flex-direction:row;justify-content:center;align-items:center;padding-inline:var(--app-sidebar-padding);padding-block:var(--app-sidebar-padding) calc(var(--app-sidebar-padding) / 2);gap:0 4px}.app-sidebar .app-sidebar-header__desc--with-tertiary-action[data-v-d66d2f51]{padding-inline-start:6px}.app-sidebar .app-sidebar-header__desc--editable .app-sidebar-header__mainname-form[data-v-d66d2f51],.app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__mainname-form[data-v-d66d2f51]{margin-top:-2px;margin-bottom:-2px}.app-sidebar .app-sidebar-header__desc--with-subname--editable .app-sidebar-header__subname[data-v-d66d2f51]{margin-top:-2px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions[data-v-d66d2f51]{display:flex;height:var(--default-clickable-area);width:var(--default-clickable-area);justify-content:center;flex:0 0 auto}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-d66d2f51]{box-shadow:none}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__tertiary-actions .app-sidebar-header__star[data-v-d66d2f51]:not([aria-pressed=true]):hover{box-shadow:none;background-color:var(--color-background-hover)}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container[data-v-d66d2f51]{flex:1 1 auto;display:flex;flex-direction:column;justify-content:center;min-width:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container[data-v-d66d2f51]{display:flex;align-items:center;min-height:var(--default-clickable-area)}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-d66d2f51]{padding:0;min-height:30px;font-size:20px;line-height:30px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname[data-v-d66d2f51] .linkified{cursor:pointer;text-decoration:underline;margin:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form[data-v-d66d2f51]{display:flex;flex:1 1 auto;align-items:center}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__mainname-form input.app-sidebar-header__mainname-input[data-v-d66d2f51]{flex:1 1 auto;margin:0;padding:7px;font-size:20px;font-weight:700}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname-container .app-sidebar-header__menu[data-v-d66d2f51]{margin-inline-start:5px}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__mainname[data-v-d66d2f51],.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-d66d2f51]{overflow:hidden;width:100%;margin:0;white-space:nowrap;text-overflow:ellipsis}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-d66d2f51]{color:var(--color-text-maxcontrast);font-size:var(--default-font-size);padding:0}.app-sidebar .app-sidebar-header__desc .app-sidebar-header__name-container .app-sidebar-header__subname[data-v-d66d2f51] *{vertical-align:text-bottom}.app-sidebar .app-sidebar-header .app-sidebar-header__mainname--hidden[data-v-d66d2f51]{position:absolute;top:0;inset-inline-start:0;margin:0;width:1px;height:1px;overflow:hidden}.app-sidebar .app-sidebar-header__description[data-v-d66d2f51]{display:flex;align-items:center;margin:0 10px}@media only screen and (max-width:512px){.app-sidebar[data-v-d66d2f51]{position:absolute;--app-sidebar-width: 100vw}}.slide-right-leave-active[data-v-d66d2f51],.slide-right-enter-active[data-v-d66d2f51]{transition-duration:var(--animation-quick);transition-property:margin-inline-end}.slide-right-enter-to[data-v-d66d2f51],.slide-right-leave[data-v-d66d2f51]{margin-inline-end:0}.slide-right-enter-from[data-v-d66d2f51],.slide-right-leave-to[data-v-d66d2f51]{margin-inline-end:calc(-1 * var(--app-sidebar-width))}.material-design-icon[data-v-dba10798]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.app-sidebar__tab[data-v-dba10798]{display:none;padding:10px;min-height:100%;max-height:100%;height:100%;overflow:auto}.app-sidebar__tab[data-v-dba10798]:focus{border-color:var(--color-primary-element);box-shadow:0 0 .2em var(--color-primary-element);outline:0}.app-sidebar__tab--active[data-v-dba10798]{display:block}._material-design-icon_M4rJ-{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantButton_BP0M8{--assistant-button-color: var(--color-element-assistant, linear-gradient(238deg, #A569D3 12%, #00679E 39%, #422083 86%));--assistant-button-background-color: var(--color-background-assistant, #F6F5FF);background-image:var(--color-border-assistant, linear-gradient(125deg, #7398FE 50%, #6104A4 125%));border-radius:var(--border-radius-element);height:var(--default-clickable-area);width:fit-content;padding-inline:1px;padding-block:1px 2px}._assistantButton_disabled_UipGr{filter:saturate(.5);opacity:.5}._assistantButton_primary_-LVsB{--assistant-button-color: white;--assistant-button-background-color: var(--color-element-assistant,linear-gradient(238deg, #A569D3 12%, #00679E 39%, #422083 86%))}._assistantButton_primary_-LVsB ._assistantButton__icon_fQ0PP,._assistantButton_primary_-LVsB ._assistantButton__text_3VzI1{color:#fff!important}._assistantButton__button_FAn7N{--button-size: calc(var(--default-clickable-area) - 3px) !important;background-color:var(--assistant-button-background-color)!important;background-image:var(--assistant-button-background-color)!important;border:none!important}._assistantButton__button_FAn7N:hover{filter:brightness(120%)}._assistantButton__text_3VzI1{background-image:var(--assistant-button-color);color:transparent!important;-webkit-background-clip:text;background-clip:text}._material-design-icon_mH0R6{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantIcon_2koBz{display:inline-flex;align-items:center;justify-content:center}._assistantIcon_2koBz:not(._assistantIcon_inline_kJSUg){display:flex;min-height:var(--default-clickable-area);min-width:var(--default-clickable-area)}._assistantIcon__svg_V8CXC{display:inline-block;width:var(--6629513e);height:var(--6629513e);max-width:var(--6629513e);max-height:var(--6629513e)}._material-design-icon_nSUHm{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._assistantContent_xKBtA{background-image:var(--color-border-assistant, linear-gradient(125deg, #7398FE 50%, #6104A4 125%));border-radius:var(--border-radius-container);padding:2px}._assistantContent__inner_DqkVC{background-color:var(--color-background-assistant, #F6F5FF);border-radius:calc(var(--border-radius-container) - 1px);color:var(--color-main-text);padding:calc(var(--border-radius-container) - 1px);height:100%;width:100%}._fadeTransition_hVFAH{transition:all var(--animation-quick) ease}._fadeTransitionActive_XmkdB{opacity:0;position:absolute}.material-design-icon[data-v-8ebb9fc1]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.fade-enter-active[data-v-8ebb9fc1],.fade-leave-active[data-v-8ebb9fc1]{transition:opacity .3s ease}.fade-enter[data-v-8ebb9fc1],.fade-leave-to[data-v-8ebb9fc1]{opacity:0}.linked-icons[data-v-8ebb9fc1]{display:flex}.linked-icons img[data-v-8ebb9fc1]{padding:12px;height:var(--default-clickable-area);display:block;background-repeat:no-repeat;background-position:center;opacity:.7}.linked-icons img[data-v-8ebb9fc1]:hover{opacity:1}.popovermenu[data-v-8ebb9fc1]{display:none}.popovermenu.open[data-v-8ebb9fc1]{display:block}li.collection-list-item[data-v-8ebb9fc1]{flex-wrap:wrap;height:auto;cursor:pointer;margin-bottom:0!important}li.collection-list-item .collection-avatar[data-v-8ebb9fc1]{margin-top:0}li.collection-list-item form[data-v-8ebb9fc1],li.collection-list-item .collection-item-name[data-v-8ebb9fc1]{flex-basis:10%;flex-grow:1;display:flex}li.collection-list-item .collection-item-name[data-v-8ebb9fc1]{padding:12px 9px}li.collection-list-item input[data-v-8ebb9fc1]{margin-top:4px;border-color:var(--color-border-maxcontrast)}li.collection-list-item input[type=text][data-v-8ebb9fc1]{flex-grow:1}li.collection-list-item .error[data-v-8ebb9fc1],li.collection-list-item .resource-list-details[data-v-8ebb9fc1]{flex-basis:100%;width:100%}li.collection-list-item .resource-list-details li[data-v-8ebb9fc1]{display:flex;margin-inline-start:var(--default-clickable-area);border-radius:3px;cursor:pointer}li.collection-list-item .resource-list-details li[data-v-8ebb9fc1]:hover{background-color:var(--color-background-dark)}li.collection-list-item .resource-list-details li a[data-v-8ebb9fc1]{flex-grow:1;padding:3px;max-width:calc(100% - 30px);display:flex}li.collection-list-item .resource-list-details span[data-v-8ebb9fc1]{display:inline-block;vertical-align:top;margin-inline-end:10px}li.collection-list-item .resource-list-details span.resource-name[data-v-8ebb9fc1]{text-overflow:ellipsis;overflow:hidden;position:relative;vertical-align:top;white-space:nowrap;flex-grow:1;padding:4px}li.collection-list-item .resource-list-details img[data-v-8ebb9fc1]{width:24px;height:24px}li.collection-list-item .resource-list-details .icon-close[data-v-8ebb9fc1]{opacity:.7}li.collection-list-item .resource-list-details .icon-close[data-v-8ebb9fc1]:hover,li.collection-list-item .resource-list-details .icon-close[data-v-8ebb9fc1]:focus{opacity:1}.should-shake[data-v-8ebb9fc1]{animation:shake-8ebb9fc1 .6s 1 linear}@keyframes shake-8ebb9fc1{0%{transform:translate(15px)}20%{transform:translate(-15px)}40%{transform:translate(7px)}60%{transform:translate(-7px)}80%{transform:translate(3px)}to{transform:translate(0)}}.material-design-icon[data-v-0e169eff]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.collection-list[data-v-0e169eff] *{box-sizing:border-box}.collection-list>li[data-v-0e169eff]{display:flex;align-items:center;gap:12px}.collection-list>li>.avatar[data-v-0e169eff]{margin-top:0}#collection-select-container[data-v-0e169eff]{display:flex;flex-direction:column}.v-select span.avatar[data-v-0e169eff]{display:block;padding:16px;opacity:.7;background-repeat:no-repeat;background-position:center}.v-select span.avatar[data-v-0e169eff]:hover{opacity:1}p.hint[data-v-0e169eff]{z-index:1;margin-top:-16px;padding:8px;color:var(--color-text-maxcontrast);line-height:normal}div.avatar[data-v-0e169eff]{width:32px;height:32px;margin:30px 0 0;padding:8px;background-color:var(--color-background-dark)}.icon-projects[data-v-0e169eff]{display:block;padding:8px;background-repeat:no-repeat;background-position:center}.option__wrapper[data-v-0e169eff]{display:flex}.option__wrapper .avatar[data-v-0e169eff]{display:block;width:32px;height:32px;background-color:var(--color-background-darker)!important}.option__wrapper .option__title[data-v-0e169eff]{padding:4px}.fade-enter-active[data-v-0e169eff],.fade-leave-active[data-v-0e169eff]{transition:opacity .5s}.fade-enter[data-v-0e169eff],.fade-leave-to[data-v-0e169eff]{opacity:0}.material-design-icon[data-v-8dabc003]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.dashboard-widget[data-v-8dabc003] .empty-content{text-align:center;padding-top:5vh}.dashboard-widget[data-v-8dabc003] .empty-content.half-screen{padding-top:0;margin-bottom:1vh}.more[data-v-8dabc003]{display:block;text-align:center;color:var(--color-text-maxcontrast);line-height:60px;cursor:pointer}.more[data-v-8dabc003]:hover,.more[data-v-8dabc003]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-element);color:var(--color-main-text)}.item-list__entry[data-v-8dabc003]{display:flex;align-items:flex-start;padding:8px}.item-list__entry .item-avatar[data-v-8dabc003]{position:relative;margin-block:auto;background-color:var(--color-background-dark)!important}.item-list__entry .item__details[data-v-8dabc003]{padding-inline-start:8px;max-height:var(--default-clickable-area);flex-grow:1;overflow:hidden;display:flex;flex-direction:column}.item-list__entry .item__details h3[data-v-8dabc003],.item-list__entry .item__details .message[data-v-8dabc003]{white-space:nowrap;background-color:var(--color-background-dark)}.item-list__entry .item__details h3[data-v-8dabc003]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-8dabc003]{width:80%;height:15px;margin-top:5px}.material-design-icon[data-v-2c8b617b]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.item-list__entry[data-v-2c8b617b]{display:flex;align-items:center;position:relative;padding:8px}.item-list__entry[data-v-2c8b617b]:hover,.item-list__entry[data-v-2c8b617b]:focus{background-color:var(--color-background-hover);border-radius:var(--border-radius-element)}.item-list__entry .item-avatar[data-v-2c8b617b]{position:relative;margin-top:auto;margin-bottom:auto}.item-list__entry .item__details[data-v-2c8b617b]{padding-inline-start:8px;max-height:fit-content;flex-grow:1;overflow:hidden;display:flex;flex-direction:column;justify-content:center;min-height:var(--default-clickable-area)}.item-list__entry .item__details h3[data-v-2c8b617b],.item-list__entry .item__details .message[data-v-2c8b617b]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.item-list__entry .item__details .message span[data-v-2c8b617b]{width:10px;display:inline-block;margin-bottom:-3px}.item-list__entry .item__details h3[data-v-2c8b617b]{font-size:100%;margin:0}.item-list__entry .item__details .message[data-v-2c8b617b]{width:100%;color:var(--color-text-maxcontrast)}.item-list__entry .item-icon[data-v-2c8b617b]{position:relative;width:14px;height:14px;margin-top:25px;margin-inline:-10px -2px}.item-list__entry button.primary[data-v-2c8b617b]{padding:21px;margin:0}.material-design-icon[data-v-e6654786]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.vue-date-time-picker__wrapper[data-v-e6654786]{--dp-common-transition: all var(--animation-quick) ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: var(--animation-quick);--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transtion: all .2s ease-in;--dp-font-family: var(--font-face);--dp-border-radius: var(--border-radius-element);--dp-cell-border-radius: var(--border-radius-small);--dp-transition-length: 22px;--dp-transition-timing-general: var(--animation-quick);--dp-button-height: var(--default-clickable-area);--dp-month-year-row-height: var(--default-clickable-area);--dp-month-year-row-button-size: var(--clickable-area-small);--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: var(--default-clickable-area);--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: var(--default-clickable-area);--dp-input-padding: 6px 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: .5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: var(--default-clickable-area);--dp-font-size: 1rem;--dp-preview-font-size: var(--font-size-small);--dp-time-font-size: 2rem;--dp-action-button-height: var(--clickable-area-small);--dp-action-row-padding: 8px;--dp-direction: ltr}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_wrap{position:relative;width:100%;box-sizing:unset}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_wrap:focus{border-color:var(--dp-border-color-hover);outline:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_valid{box-shadow:0 0 var(--dp-border-radius) var(--dp-success-color);border-color:var(--dp-success-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_valid:hover{border-color:var(--dp-success-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_invalid{box-shadow:0 0 var(--dp-border-radius) var(--dp-danger-color);border-color:var(--dp-danger-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_invalid:hover{border-color:var(--dp-danger-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input{background-color:var(--dp-background-color);border-radius:var(--dp-border-radius);font-family:var(--dp-font-family);border:1px solid var(--dp-border-color);outline:none;transition:border-color .2s cubic-bezier(.645,.045,.355,1);width:100%;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size) * 1.5);padding:var(--dp-input-padding);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input::placeholder{opacity:.7}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input:hover:not(.dp__input_focus){border-color:var(--dp-border-color-hover)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_not_clearable{padding-inline-end:var(--dp-input-not-clearable-padding)!important}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_reg{caret-color:#0000}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_focus{border-color:var(--dp-border-color-focus)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__disabled{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__disabled::placeholder{color:var(--dp-disabled-color-text)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_icons{display:inline-block;width:var(--dp-font-size);height:var(--dp-font-size);stroke-width:0;font-size:var(--dp-font-size);line-height:calc(var(--dp-font-size) * 1.5);padding:6px 12px;color:var(--dp-icon-color);box-sizing:content-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_icon{cursor:pointer;position:absolute;top:50%;inset-inline-start:0;transform:translateY(-50%);color:var(--dp-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--clear-btn{position:absolute;top:50%;inset-inline-end:0;transform:translateY(-50%);cursor:pointer;color:var(--dp-icon-color);background:#0000;border:none;display:inline-flex;align-items:center;padding:0;margin:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__input_icon_pad{padding-inline-start:var(--dp-input-icon-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu{background:var(--dp-background-color);border-radius:var(--dp-border-radius);min-width:var(--dp-menu-min-width);font-family:var(--dp-font-family);font-size:var(--dp-font-size);-webkit-user-select:none;user-select:none;border:1px solid var(--dp-menu-border-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu:after{box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu:before{box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu:focus{border:1px solid var(--dp-menu-border-color);outline:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu-wrapper{position:absolute;z-index:99999}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_inner{padding:var(--dp-menu-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu--inner-stretched{padding:6px 0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_index{z-index:99999}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-loading,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_readonly,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_disabled{position:absolute;inset:0;z-index:999999}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_disabled{background:#ffffff80;cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_readonly{background:#0000;cursor:default}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-loading{background:#ffffff80;cursor:default}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu-load-container{display:flex;height:100%;width:100%;justify-content:center;align-items:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu-loader{width:48px;height:48px;border:var(--dp-loader);border-bottom-color:#0000;border-radius:50%;display:inline-block;box-sizing:border-box;animation:dp-load-rotation-e6654786 1s linear infinite;position:absolute}@keyframes dp-load-rotation-e6654786{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__arrow_top{left:var(--dp-arrow-left);top:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-top:1px solid var(--dp-menu-border-color);transform:translate(-50%,-50%) rotate(-45deg)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__arrow_bottom{left:var(--dp-arrow-left);bottom:0;height:12px;width:12px;background-color:var(--dp-background-color);position:absolute;border-inline-end:1px solid var(--dp-menu-border-color);border-bottom:1px solid var(--dp-menu-border-color);transform:translate(-50%,50%) rotate(45deg)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_extra{text-align:center;padding:2px 0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-dates{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-dates[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-dates-collapsed{display:flex;align-self:center;border:none;overflow-x:auto;max-width:calc(var(--dp-menu-width) - var(--dp-action-row-padding) * 2)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__sidebar_left{padding:5px;border-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__sidebar_right{padding:5px;margin-inline-end:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range{display:block;width:100%;padding:5px;text-align:left;white-space:nowrap;color:var(--dp-text-color);border-radius:var(--dp-border-radius);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range:hover{background-color:var(--dp-hover-color);color:var(--dp-hover-text-color);cursor:pointer}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range[data-dp-mobile]{border:1px solid var(--dp-border-color);margin:0 3px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range[data-dp-mobile]:first-child{margin-left:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range[data-dp-mobile]:last-child{margin-right:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range-collapsed{border:1px solid var(--dp-border-color);margin:0 3px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range-collapsed:first-child{margin-left:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--preset-range-collapsed:last-child{margin-right:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_content_wrapper{display:flex}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__menu_content_wrapper[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-e6654786] .dp--menu-content-wrapper-collapsed{flex-direction:column-reverse}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_header{position:relative;display:flex;justify-content:center;align-items:center;color:var(--dp-text-color);white-space:nowrap;font-weight:700}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_header_item{text-align:center;flex-grow:1;height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_row{display:flex;justify-content:center;align-items:center;margin:var(--dp-row-margin)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_item{text-align:center;flex-grow:1;box-sizing:border-box;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar{position:relative}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_header_cell{border-bottom:thin solid var(--dp-border-color);padding:var(--dp-calendar-header-cell-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_inner{display:flex;align-items:center;text-align:center;justify-content:center;border-radius:var(--dp-cell-border-radius);height:var(--dp-cell-size);padding:var(--dp-cell-padding);width:var(--dp-cell-size);border:1px solid rgba(0,0,0,0);box-sizing:border-box;position:relative}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_inner:hover{transition:all .2s}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range_start,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover_start:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_start{border-end-end-radius:0;border-start-end-radius:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range_end,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover_end:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_end{border-end-start-radius:0;border-start-start-radius:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_end,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_start,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__active_date{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover_end:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover_start:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__date_hover:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_offset{color:var(--dp-secondary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_disabled{color:var(--dp-secondary-color);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_between{background:var(--dp-range-between-dates-background-color);color:var(--dp-range-between-dates-text-color);border-radius:0;border:1px solid var(--dp-range-between-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__range_between_week{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border-radius:0;border-top:1px solid var(--dp-primary-color);border-bottom:1px solid var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__today{border:1px solid var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__week_num{color:var(--dp-secondary-color);text-align:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range{border-radius:0;border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range_start{border-start-start-radius:var(--dp-cell-border-radius);border-end-start-radius:var(--dp-cell-border-radius);border-inline-start:1px dashed var(--dp-primary-color);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_auto_range_end{border-start-end-radius:var(--dp-cell-border-radius);border-end-end-radius:var(--dp-cell-border-radius);border-top:1px dashed var(--dp-primary-color);border-bottom:1px dashed var(--dp-primary-color);border-inline-end:1px dashed var(--dp-primary-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_header_separator{width:100%;height:1px;background:var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__calendar_next{margin-inline-start:var(--dp-multi-calendars-spacing)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_line,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_dot{height:5px;background-color:var(--dp-marker-color);position:absolute;bottom:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_dot{width:5px;border-radius:50%;left:50%;transform:translate(-50%)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_line{width:100%;left:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__marker_tooltip{position:absolute;border-radius:var(--dp-border-radius);background-color:var(--dp-tooltip-color);padding:5px;border:1px solid var(--dp-border-color);z-index:99999;box-sizing:border-box;cursor:default}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tooltip_content{white-space:nowrap}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tooltip_text{display:flex;align-items:center;flex-flow:row nowrap;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tooltip_mark{height:5px;width:5px;border-radius:50%;background-color:var(--dp-text-color);color:var(--dp-text-color);margin-inline-end:5px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__arrow_bottom_tp{bottom:0;height:8px;width:8px;background-color:var(--dp-tooltip-color);position:absolute;border-inline-end:1px solid var(--dp-border-color);border-bottom:1px solid var(--dp-border-color);transform:translate(-50%,50%) rotate(45deg)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__instance_calendar{position:relative;width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex_display[data-dp-mobile],.vue-date-time-picker__wrapper[data-v-e6654786] .dp--flex-display-collapsed{flex-direction:column}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_highlight{background-color:var(--dp-highlight-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_row{display:flex;align-items:center;height:var(--dp-month-year-row-height);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav{display:flex;align-items:center;justify-content:center;cursor:pointer;height:var(--dp-month-year-row-button-size);width:var(--dp-month-year-row-button-size);color:var(--dp-icon-color);text-align:center;border-radius:50%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav svg{height:var(--dp-button-icon-height);width:var(--dp-button-icon-height)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] [dir=rtl] .dp__inner_nav{transform:rotate(180deg)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav_disabled:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav_disabled{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--year-select,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_select{text-align:center;cursor:pointer;height:var(--dp-month-year-row-height);display:flex;align-items:center;justify-content:center;border-radius:var(--dp-border-radius);box-sizing:border-box;color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--year-select:hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_select:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_select{width:50%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--year-select{width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_wrap{display:flex;flex-direction:row;width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__year_disable_select{justify-content:space-around}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--header-wrap{display:flex;width:100%;flex-direction:column}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay{width:100%;background:var(--dp-background-color);transition:opacity 1s ease-out;z-index:99999;font-family:var(--dp-font-family);color:var(--dp-text-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--overlay-absolute{position:absolute;height:100%;top:0;left:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--overlay-relative{position:relative}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_container::-webkit-scrollbar-track{box-shadow:var(--dp-scroll-bar-background);background-color:var(--dp-scroll-bar-background)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_container::-webkit-scrollbar{width:5px;background-color:var(--dp-scroll-bar-background)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_container::-webkit-scrollbar-thumb{background-color:var(--dp-scroll-bar-color);border-radius:10px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay:focus{border:none;outline:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__container_flex{display:flex}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__container_block{display:block}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_container{flex-direction:column;overflow-y:auto;height:var(--dp-overlay-height)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_picker_overlay_container{height:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_row{padding:0;box-sizing:border-box;display:flex;margin-inline:auto;flex-wrap:wrap;max-width:100%;width:100%;align-items:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex_row{flex:1}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_col{box-sizing:border-box;width:33%;padding:var(--dp-overlay-col-padding);white-space:nowrap}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_pad{padding:var(--dp-common-padding) 0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_active{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center;background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell{cursor:pointer;border-radius:var(--dp-border-radius);text-align:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell:hover{background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__cell_in_between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__over_action_scroll{right:5px;box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_disabled:hover{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_active_disabled{cursor:not-allowed;background:var(--dp-primary-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay_cell_active_disabled:hover{background:var(--dp-primary-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn,.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn,.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-overlay-btn,.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-invalid{border:none;font:inherit;transition:var(--dp-common-transition);line-height:normal}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--year-mode-picker{display:flex;width:100%;align-items:center;justify-content:space-between;height:var(--dp-cell-size)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--tp-wrap{max-width:var(--dp-menu-min-width)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--tp-wrap[data-dp-mobile]{max-width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_input{width:100%;display:flex;align-items:center;justify-content:center;-webkit-user-select:none;user-select:none;font-family:var(--dp-font-family);color:var(--dp-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_reg_block{padding:0 20px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_reg_inline{padding:0 10px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_reg_with_button{padding:0 15px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_reg_with_button[data-compact~=true]{padding:0 5px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_sec{padding:0 10px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_sec_with_button{padding:0 5px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_sec_with_button[data-collapsed~=true]{padding:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col{text-align:center;display:flex;align-items:center;justify-content:center;flex-direction:column}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col_block{font-size:var(--dp-time-font-size)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_display_block{padding:0 3px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_display_inline{padding:5px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_picker_inline_container{display:flex;width:100%;justify-content:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button{padding:5px;margin:0;height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size);display:flex;align-items:center;justify-content:center;cursor:pointer;border-radius:50%;color:var(--dp-icon-color);box-sizing:border-box}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button svg{height:var(--dp-time-inc-dec-button-size);width:var(--dp-time-inc-dec-button-size)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_display{cursor:pointer;color:var(--dp-text-color);border-radius:var(--dp-border-radius);display:flex;align-items:center;justify-content:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_display:hover:enabled{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button_inline{width:100%;padding:0;height:8px;cursor:pointer;display:flex;align-items:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button_disabled,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inc_dec_button_disabled:hover{background:var(--dp-disabled-color);color:var(--dp-disabled-color-text);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__pm_am_button{background:var(--dp-primary-color);color:var(--dp-primary-text-color);border:none;padding:var(--dp-common-padding);border-radius:var(--dp-border-radius);cursor:pointer}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__pm_am_button[data-compact~=true]{padding:7px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_bar{width:100%;height:4px;background-color:var(--dp-secondary-color);transition:var(--dp-common-transition);border-collapse:collapse}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_top:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_top:hover .dp__tp_btn_in_l,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_r{background-color:var(--dp-primary-color);transform:rotate(-12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__tp_inline_btn_bottom:hover .dp__tp_btn_in_l{background-color:var(--dp-primary-color);transform:rotate(12deg) scale(1.15) translateY(-2px)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-overlay-btn{background:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-invalid{background-color:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_row{display:flex;align-items:center;width:100%;padding:var(--dp-action-row-padding);box-sizing:border-box;color:var(--dp-text-color);flex-flow:row nowrap}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_row svg{height:var(--dp-button-icon-height);width:auto}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__selection_preview{display:block;color:var(--dp-text-color);font-size:var(--dp-preview-font-size);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_buttons{display:flex;flex:0;white-space:nowrap;align-items:center;justify-content:flex-end;margin-inline-start:auto}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_button{display:inline-flex;align-items:center;background:#0000;border:1px solid rgba(0,0,0,0);padding:var(--dp-action-buttons-padding);line-height:var(--dp-action-button-height);margin-inline-start:3px;height:var(--dp-action-button-height);cursor:pointer;border-radius:var(--dp-border-radius);font-size:var(--dp-preview-font-size);font-family:var(--dp-font-family)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_cancel{color:var(--dp-text-color);border:1px solid var(--dp-border-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_cancel:hover{border-color:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_buttons .dp__action_select{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_buttons .dp__action_select:hover{background:var(--dp-primary-color);transition:var(--dp-action-row-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_buttons .dp__action_select:disabled{background:var(--dp-primary-disabled-color);cursor:not-allowed}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-quarter-picker-wrap{display:flex;flex-direction:column;height:100%;min-width:var(--dp-menu-min-width)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn-disabled{cursor:not-allowed;background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn-disabled:hover{background:var(--dp-disabled-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn{width:100%;padding:var(--dp-common-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn:not(.dp--highlighted,.dp--qr-btn-active,.dp--qr-btn-disabled,.dp--qr-btn-between){background:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn:hover:not(.dp--qr-btn-active,.dp--qr-btn-disabled){background:var(--dp-hover-color);color:var(--dp-hover-text-color);transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--quarter-items{display:flex;flex-direction:column;flex:1;width:100%;height:100%;justify-content:space-evenly}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn-active{background:var(--dp-primary-color);color:var(--dp-primary-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--qr-btn-between{background:var(--dp-hover-color);color:var(--dp-hover-text-color)}.vue-date-time-picker__wrapper[data-v-e6654786] :root{--dp-common-transition: all .1s ease-in;--dp-menu-padding: 6px 8px;--dp-animation-duration: .1s;--dp-menu-appear-transition-timing: cubic-bezier(.4, 0, 1, 1);--dp-transition-timing: ease-out;--dp-action-row-transition: all .2s ease-in;--dp-font-family: -apple-system, blinkmacsystemfont, "Segoe UI", roboto, oxygen, ubuntu, cantarell, "Open Sans", "Helvetica Neue", sans-serif;--dp-border-radius: 4px;--dp-cell-border-radius: 4px;--dp-transition-length: 22px;--dp-transition-timing-general: .1s;--dp-button-height: 35px;--dp-month-year-row-height: 35px;--dp-month-year-row-button-size: 25px;--dp-button-icon-height: 20px;--dp-calendar-wrap-padding: 0 5px;--dp-cell-size: 35px;--dp-cell-padding: 5px;--dp-common-padding: 10px;--dp-input-icon-padding: 35px;--dp-input-padding: 6px 30px 6px 12px;--dp-input-not-clearable-padding: 12px;--dp-menu-min-width: 260px;--dp-action-buttons-padding: 1px 6px;--dp-row-margin: 5px 0;--dp-calendar-header-cell-padding: .5rem;--dp-multi-calendars-spacing: 10px;--dp-overlay-col-padding: 3px;--dp-time-inc-dec-button-size: 32px;--dp-font-size: 1rem;--dp-preview-font-size: .8rem;--dp-time-font-size: 2rem;--dp-action-button-height: 22px;--dp-action-row-padding: 8px;--dp-direction: ltr}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__theme_dark{--dp-background-color: #212121;--dp-text-color: #fff;--dp-hover-color: #484848;--dp-hover-text-color: #fff;--dp-hover-icon-color: #959595;--dp-primary-color: #005cb2;--dp-primary-disabled-color: #61a8ea;--dp-primary-text-color: #fff;--dp-secondary-color: #a9a9a9;--dp-border-color: #2d2d2d;--dp-menu-border-color: #2d2d2d;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #737373;--dp-disabled-color-text: #d0d0d0;--dp-scroll-bar-background: #212121;--dp-scroll-bar-color: #484848;--dp-success-color: #00701a;--dp-success-color-disabled: #428f59;--dp-icon-color: #959595;--dp-danger-color: #e53935;--dp-marker-color: #e53935;--dp-tooltip-color: #3e3e3e;--dp-highlight-color: rgb(0 92 178 / 20%);--dp-range-between-dates-background-color: var(--dp-hover-color, #484848);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #fff);--dp-range-between-border-color: var(--dp-hover-color, #fff);--dp-loader: 5px solid #005cb2}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__theme_light{--dp-background-color: #fff;--dp-text-color: #212121;--dp-hover-color: #f3f3f3;--dp-hover-text-color: #212121;--dp-hover-icon-color: #959595;--dp-primary-color: #1976d2;--dp-primary-disabled-color: #6bacea;--dp-primary-text-color: #fff;--dp-secondary-color: #c0c4cc;--dp-border-color: #ddd;--dp-menu-border-color: #ddd;--dp-border-color-hover: #aaaeb7;--dp-border-color-focus: #aaaeb7;--dp-disabled-color: #f6f6f6;--dp-scroll-bar-background: #f3f3f3;--dp-scroll-bar-color: #959595;--dp-success-color: #76d275;--dp-success-color-disabled: #a3d9b1;--dp-icon-color: #959595;--dp-danger-color: #ff6f60;--dp-marker-color: #ff6f60;--dp-tooltip-color: #fafafa;--dp-disabled-color-text: #8e8e8e;--dp-highlight-color: rgb(25 118 210 / 10%);--dp-range-between-dates-background-color: var(--dp-hover-color, #f3f3f3);--dp-range-between-dates-text-color: var(--dp-hover-text-color, #212121);--dp-range-between-border-color: var(--dp-hover-color, #f3f3f3);--dp-loader: 5px solid #1976d2}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex{display:flex;align-items:center}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn{background:none}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__main{font-family:var(--dp-font-family);-webkit-user-select:none;user-select:none;box-sizing:border-box;position:relative;width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__main *{direction:var(--dp-direction, ltr)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__pointer{cursor:pointer}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__icon{stroke:currentcolor;fill:currentcolor}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button{width:100%;text-align:center;color:var(--dp-icon-color);cursor:pointer;display:flex;align-items:center;place-content:center center;padding:var(--dp-common-padding);box-sizing:border-box;height:var(--dp-button-height)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button.dp__overlay_action{position:absolute;bottom:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button svg{height:var(--dp-button-icon-height);width:auto}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__button_bottom{border-bottom-left-radius:var(--dp-border-radius);border-bottom-right-radius:var(--dp-border-radius)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex_display{display:flex}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__flex_display_with_input{flex-direction:column;align-items:flex-start}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__relative{position:relative}.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-next-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-next-leave-active,.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-prev-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-prev-leave-active{transition:all var(--dp-transition-timing-general) ease-out}.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-next-enter-from{opacity:0;transform:translate(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-next-leave-to,.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-prev-enter-from{opacity:0;transform:translate(calc(var(--dp-transition-length) * -1))}.vue-date-time-picker__wrapper[data-v-e6654786] .calendar-prev-leave-to{opacity:0;transform:translate(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-bottom-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-bottom-leave-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-top-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-top-leave-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-up-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-up-leave-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-down-enter-active,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-down-leave-active{transition:all var(--dp-animation-duration) var(--dp-transition-timing)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-top-enter-from,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-top-leave-to,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-down-leave-to,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-up-enter-from{opacity:0;transform:translateY(var(--dp-transition-length))}.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-bottom-enter-from,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-menu-appear-bottom-leave-to,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-down-enter-from,.vue-date-time-picker__wrapper[data-v-e6654786] .dp-slide-up-leave-to{opacity:0;transform:translateY(calc(var(--dp-transition-length) * -1))}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--arrow-btn-nav{transition:var(--dp-common-transition)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--highlighted{background-color:var(--dp-highlight-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--hidden-el{visibility:hidden}.vue-date-time-picker__wrapper.vue-date-time-picker__wrapper--teleport[data-v-e6654786] .dp--menu-wrapper{z-index:100001}.vue-date-time-picker__wrapper .vue-date-time-picker--clearable[data-v-e6654786] .dp__input{padding-inline-end:var(--default-clickable-area)}.vue-date-time-picker__wrapper .vue-date-time-picker__timezone[data-v-e6654786]{min-width:unset;width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .icon-vue{opacity:1!important}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--tp-wrap,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__action_extra{padding:var(--dp-menu-padding);padding-top:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay.dp--overlay-absolute{padding:var(--dp-menu-padding)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__overlay.dp--overlay-absolute .dp__btn.dp__button.dp__button_bottom{inset-block-end:6px}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn.dp__button.dp__button_bottom,.vue-date-time-picker__wrapper[data-v-e6654786] .dp--tp-wrap .dp__button{width:100%}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn.dp__button.dp__overlay_action{width:calc(100% - 16px)}.vue-date-time-picker__wrapper[data-v-e6654786] input{padding-inline-start:var(--dp-input-icon-padding)!important}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn{margin:0}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__inner_nav{height:fit-content;width:fit-content}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__btn.dp__button.dp__button_bottom{color:var(--color-primary-element-light);background-color:var(--color-primary-element-light)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--header-wrap .dp__btn:not(.dp__button_bottom),.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col .dp__btn{background-color:var(--color-main-background)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--header-wrap .dp__btn:not(.dp__button_bottom):hover,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_col .dp__btn:hover{background:var(--dp-hover-color);color:var(--dp-hover-icon-color)}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__month_year_select{flex:1}.vue-date-time-picker__wrapper[data-v-e6654786] .dp--time-overlay-btn{font-size:calc(2 * var(--default-font-size))!important}.vue-date-time-picker__wrapper[data-v-e6654786] .dp__time_input .dp__time_col_reg_block{padding:0 calc(4 * var(--default-grid-baseline))}.vue-date-time-picker__wrapper .vue-date-time-picker.dp__theme_dark[data-v-e6654786],.vue-date-time-picker__wrapper .vue-date-time-picker.dp__theme_light[data-v-e6654786],.vue-date-time-picker__wrapper[data-v-e6654786] .dp__theme_dark,.vue-date-time-picker__wrapper[data-v-e6654786] .dp__theme_light{--dp-background-color: var(--color-main-background);--dp-text-color: var(--color-main-text);--dp-hover-color: var(--color-primary-element-light-hover);--dp-hover-text-color: var(--color-primary-element-light-text);--dp-hover-icon-color: var(--color-primary-element-light-text);--dp-primary-color: var(--color-primary-element);--dp-primary-disabled-color: var(--color-primary-element-hover);--dp-primary-text-color: var(--color-primary-element-text);--dp-secondary-color: var(--color-text-maxcontrast);--dp-border-color: var(--color-border);--dp-menu-border-color: var(--color-border-dark);--dp-border-color-hover: var(--color-border-maxcontrast);--dp-border-color-focus: var(--color-border-maxcontrast);--dp-disabled-color: var(--color-background-dark);--dp-disabled-color-text: var(--color-text-maxcontrast);--dp-scroll-bar-background: var(--color-scrollbar);--dp-scroll-bar-color: var(--color-scrollbar);--dp-success-color: var(--color-success);--dp-success-color-disabled: var(--color-success-hover);--dp-icon-color: var(--color-main-text);--dp-danger-color: var(--color-error);--dp-marker-color: var(--color-text-error, var(--color-error));--dp-tooltip-color: var(--color-main-text);--dp-highlight-color: var(--color-main-text)}._filePicker_UHtO-{display:inline-flex;align-items:center;height:var(--default-clickable-area)}._material-design-icon_mubdv{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._ncFormBox_TawZT{display:flex;flex-direction:column;gap:calc(1 * var(--default-grid-baseline))}._ncFormBox_TawZT._ncFormBox_row_ZnhfS{flex-direction:row}._ncFormBox__item_7zc34{border-radius:var(--border-radius-small)!important}._ncFormBox_col_wHCZx{flex-direction:column}._ncFormBox_col_wHCZx ._ncFormBox__item_7zc34:first-child{border-start-start-radius:var(--border-radius-element)!important;border-start-end-radius:var(--border-radius-element)!important}._ncFormBox_col_wHCZx ._ncFormBox__item_7zc34:last-child{border-end-start-radius:var(--border-radius-element)!important;border-end-end-radius:var(--border-radius-element)!important}._ncFormBox_row_ZnhfS{flex-direction:row}._ncFormBox_row_ZnhfS ._ncFormBox__item_7zc34{flex:1 1}._ncFormBox_row_ZnhfS ._ncFormBox__item_7zc34:first-child{border-start-start-radius:var(--border-radius-element)!important;border-end-start-radius:var(--border-radius-element)!important}._ncFormBox_row_ZnhfS ._ncFormBox__item_7zc34:last-child{border-end-end-radius:var(--border-radius-element)!important;border-start-end-radius:var(--border-radius-element)!important}._material-design-icon_RoXMm{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._formBoxButton_qQIni{background:unset;border:none;color:inherit;font-size:inherit;font-weight:inherit;text-decoration:none;text-align:inherit;line-height:inherit;padding:0;margin:0;outline:none}._material-design-icon_D2F-K{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._formBoxItem_74l6r{--nc-form-box-item-border-width: 1px;--nc-form-box-item-min-height: 40px;--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));--form-element-label-padding: calc(var(--form-element-label-offset) - var(--nc-form-box-item-border-width));--color-primary-element-extra-light: hsl(from var(--color-primary-element-light) h s calc(l*1.045) );--color-primary-element-extra-light-hover: hsl(from var(--color-primary-element-light-hover) h s calc(l*1.045) );position:relative;display:flex;align-items:center;gap:calc(2 * var(--default-grid-baseline));min-height:var(--nc-form-box-item-min-height);padding-inline:var(--form-element-label-padding);border:1px solid var(--color-primary-element-extra-light-hover);border-bottom-width:2px;border-radius:var(--border-radius-element);background-color:var(--color-primary-element-extra-light);color:var(--color-main-text);transition-property:color,border-color,background-color;transition-duration:var(--animation-quick);transition-timing-function:linear;-webkit-user-select:none;user-select:none;cursor:pointer}._formBoxItem_74l6r *{cursor:inherit}._formBoxItem_74l6r:has(:disabled){cursor:default;opacity:.5}._formBoxItem_74l6r:hover:not(:has(:disabled)){color:var(--color-primary-element-light-text);background-color:var(--color-primary-element-extra-light-hover)}._formBoxItem_74l6r:has(:focus-visible){outline:2px solid var(--color-main-text);box-shadow:0 0 0 4px var(--color-main-background)}._formBoxItem_74l6r._formBoxItem_legacy_IgNr3{--nc-form-box-item-border-width: 0px;border:none}._formBoxItem_74l6r._formBoxItem_inverted_9GGkh ._formBoxItem__element_YEZDA{color:var(--color-text-maxcontrast)}._formBoxItem_74l6r._formBoxItem_inverted_9GGkh ._formBoxItem__description_1GjPD{color:inherit}._formBoxItem__content_CcZbG{flex:1;display:flex;flex-direction:column;padding-block:calc(2 * var(--default-grid-baseline));overflow-wrap:anywhere}._formBoxItem__element_YEZDA:after{content:"";position:absolute;inset:0}._formBoxItem__description_1GjPD{color:var(--color-text-maxcontrast)}._formBoxItem__icon_eZXNE{display:flex;align-items:center;justify-content:flex-end}._material-design-icon_YAxyJ{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}input._formBoxSwitch__input_e7y7s{margin:0;width:var(--default-clickable-area);position:absolute;inset-block:0;inset-inline-end:var(--form-element-label-offset);z-index:-1;opacity:0!important;height:auto;cursor:inherit}._material-design-icon_QhThW{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._formGroup_sNzER{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));--form-group-content-gap: calc(2 * var(--default-grid-baseline))}._formGroup_sNzER._formGroup_noGap_ChojB{--form-group-content-gap: 0}._formGroup__label_Z81k5{padding-inline:var(--form-element-label-offset);font-size:var(--font-size);font-weight:700}._formGroup__description_xWRa-{padding-inline:var(--form-element-label-offset);color:var(--color-text-maxcontrast)}._formGroup__content_wHRjf{display:flex;flex-direction:column;gap:var(--form-group-content-gap);margin-block-start:calc(2.5 * var(--default-grid-baseline))}._formGroup__content_wHRjf._formGroup__content_only_VejcN{margin-block-start:0}.material-design-icon[data-v-92fb182d]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.header-menu[data-v-92fb182d]{position:relative;width:var(--header-height);height:var(--header-height)}.header-menu .header-menu__trigger[data-v-92fb182d]{--button-size: var(--header-height) !important;height:var(--header-height);opacity:.85;filter:none!important;color:var(--color-background-plain-text, var(--color-primary-text))!important}.header-menu .header-menu__trigger[data-v-92fb182d]:focus-visible{outline:none!important;box-shadow:none!important}.header-menu .header-menu__trigger[data-v-92fb182d] .button-vue__icon svg,.header-menu .header-menu__trigger[data-v-92fb182d] .button-vue__icon:not(:has(svg)){-webkit-mask:var(--header-menu-icon-mask, none);mask:var(--header-menu-icon-mask, none)}.header-menu--opened .header-menu__trigger[data-v-92fb182d],.header-menu__trigger[data-v-92fb182d]:hover,.header-menu__trigger[data-v-92fb182d]:focus,.header-menu__trigger[data-v-92fb182d]:active{opacity:1}@media only screen and (max-width:512px){.header-menu[data-v-92fb182d]{width:var(--default-clickable-area)}.header-menu .header-menu__trigger[data-v-92fb182d]{--button-size: var(--default-clickable-area) !important}}.material-design-icon[data-v-d45c5788]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}/*! - * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */.header-menu[data-v-d45c5788]{position:relative;width:var(--header-height);height:var(--header-height)}.header-menu .header-menu__trigger[data-v-d45c5788]{--button-size: var(--header-height) !important;height:var(--header-height);opacity:.85;filter:none!important;color:var(--color-background-plain-text, var(--color-primary-text))!important}.header-menu .header-menu__trigger[data-v-d45c5788]:focus-visible{outline:none!important;box-shadow:none!important}.header-menu .header-menu__trigger[data-v-d45c5788] .button-vue__icon svg,.header-menu .header-menu__trigger[data-v-d45c5788] .button-vue__icon:not(:has(svg)){-webkit-mask:var(--header-menu-icon-mask, none);mask:var(--header-menu-icon-mask, none)}.header-menu--opened .header-menu__trigger[data-v-d45c5788],.header-menu__trigger[data-v-d45c5788]:hover,.header-menu__trigger[data-v-d45c5788]:focus,.header-menu__trigger[data-v-d45c5788]:active{opacity:1}@media only screen and (max-width:512px){.header-menu[data-v-d45c5788]{width:var(--default-clickable-area)}.header-menu .header-menu__trigger[data-v-d45c5788]{--button-size: var(--default-clickable-area) !important}}.header-menu__wrapper[data-v-d45c5788]{position:fixed;z-index:2000;top:var(--header-height);inset-inline-end:0;box-sizing:border-box;margin:0 8px;border-radius:var(--border-radius-element);background-color:var(--color-main-background);filter:drop-shadow(0 1px 5px var(--color-box-shadow))}.header-menu__caret[data-v-d45c5788]{position:absolute;z-index:2001;bottom:0;inset-inline-start:calc(50% - 10px);width:0;height:0;content:" ";pointer-events:none;border:10px solid transparent;border-bottom-color:var(--color-main-background)}.header-menu__content[data-v-d45c5788]{overflow:auto;width:350px;max-width:calc(100vw - 16px);min-height:calc(var(--default-clickable-area) * 1.5);max-height:calc(100vh - var(--header-height) * 2)}.header-menu__content[data-v-d45c5788] .empty-content{margin:12vh 10px}._material-design-icon_yC3vd{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._hotkey_ohHBi{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline));display:flex;flex-direction:row-reverse;align-items:stretch;padding-inline:var(--form-element-label-offset)}._hotkey_ohHBi:first-child ._hotkey__label_au-to,._hotkey_ohHBi:first-child ._hotkey__keys_4Mi3z{border-block-start:none}._hotkey__label_au-to,._hotkey__keys_4Mi3z{display:flex;align-items:center;padding-block:calc(2 * var(--default-grid-baseline));border-block-start:1px solid var(--color-border)}._hotkey__label_au-to{flex:1 1 200px}._hotkey__keys_4Mi3z{flex:1 1 auto;flex-wrap:wrap;justify-content:end;row-gap:calc(1 * var(--default-grid-baseline))}._material-design-icon_FHHYV{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._kbd_3V7rw{display:inline-flex;align-items:center;justify-content:center;min-width:var(--default-clickable-area);height:var(--default-clickable-area);padding-inline:calc(2 * var(--default-grid-baseline)) calc(2 * var(--default-grid-baseline));border:2px solid var(--color-primary-element-light);border-block-end-width:4px;border-radius:var(--border-radius-element);box-shadow:none;font-family:var(--font-family);line-height:1;white-space:nowrap}._kbd_3V7rw+._kbd_3V7rw{margin-inline-start:calc(1 * var(--default-grid-baseline))}._hotkeyList_xNXCh{--form-element-label-offset: calc(var(--border-radius-element) + var(--default-grid-baseline))}._hotkeyList__heading_j6G86{font-weight:700;margin-inline:var(--form-element-label-offset)}.material-design-icon[data-v-0ee94269]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.option[data-v-0ee94269]{display:flex;align-items:center;width:100%;height:var(--height);cursor:inherit}.option__avatar[data-v-0ee94269]{margin-inline-end:var(--margin)}.option__details[data-v-0ee94269]{display:flex;flex:1 1;flex-direction:column;justify-content:center;min-width:0}.option__lineone[data-v-0ee94269]{color:var(--color-main-text)}.option__linetwo[data-v-0ee94269]{color:var(--color-text-maxcontrast)}.option__lineone[data-v-0ee94269],.option__linetwo[data-v-0ee94269]{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;line-height:1.2}.option__lineone strong[data-v-0ee94269],.option__linetwo strong[data-v-0ee94269]{font-weight:700}.option--compact .option__lineone[data-v-0ee94269]{font-size:14px}.option--compact .option__linetwo[data-v-0ee94269]{font-size:11px;line-height:1.5;margin-top:-4px}.option__icon[data-v-0ee94269]{width:var(--default-clickable-area);height:var(--default-clickable-area);color:var(--color-text-maxcontrast)}.option__icon.icon[data-v-0ee94269]{flex:0 0 var(--default-clickable-area);opacity:.7;background-position:center;background-size:16px}.option__details[data-v-0ee94269],.option__lineone[data-v-0ee94269],.option__linetwo[data-v-0ee94269],.option__icon[data-v-0ee94269]{cursor:inherit}.material-design-icon[data-v-353fa414]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.progress-bar[data-v-353fa414]{display:block;height:var(--progress-bar-height);--progress-bar-color: var(--3a86fec2);--progress-bar-height: var(--57442460)}.progress-bar--linear[data-v-353fa414]{width:100%;overflow:hidden;border:0;padding:0;background:var(--color-background-dark);border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--linear[data-v-353fa414]::-webkit-progress-bar{height:var(--progress-bar-height);background-color:transparent}.progress-bar--linear[data-v-353fa414]::-webkit-progress-value{background:var(--progress-bar-color, var(--gradient-primary-background));border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--linear[data-v-353fa414]::-moz-progress-bar{background:var(--progress-bar-color, var(--gradient-primary-background));border-radius:calc(var(--progress-bar-height) / 2)}.progress-bar--circular[data-v-353fa414]{width:var(--progress-bar-height);color:var(--progress-bar-color)}.progress-bar--error[data-v-353fa414]{color:var(--color-text-error, var(--color-error))!important}.progress-bar--error[data-v-353fa414]::-moz-progress-bar{background:var(--color-text-error, var(--color-error))!important}.progress-bar--error[data-v-353fa414]::-webkit-progress-value{background:var(--color-text-error, var(--color-error))!important}.progress-bar-container[data-v-353fa414]{display:flex;align-items:center;gap:calc(2 * var(--default-grid-baseline))}.progress-bar__value[data-v-353fa414]{font-size:var(--font-size-small, 13px);font-variant-numeric:tabular-nums;min-width:4ch;text-align:end}._material-design-icon_Sx-eY{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._radioGroup_checkboxRadioContainer_XfI2u .checkbox-content{max-width:unset!important}._material-design-icon_q-qLD{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._radioGroupButton_FB-C-{--radio-group-button--border-radius: var(--border-radius-small);--radio-group-button--border-width: 1px;--radio-group-button--color: var(--color-primary-element-light-text);--radio-group-button--background-color: var(--color-primary-element-light);--radio-group-button--background-color-hover: var(--color-primary-element-light-hover);--radio-group-button--padding: 1px;cursor:pointer;color:var(--radio-group-button--color);background-color:var(--radio-group-button--background-color);transition:var(--animation-quick) background-color;border:var(--radio-group-button--border-width) solid var(--radio-group-button--background-color-hover);border-bottom-width:2px;border-radius:var(--radio-group-button--border-radius);display:flex;flex-direction:row;align-items:center;justify-content:center;text-align:center;min-height:var(--default-clickable-area);padding-block:var(--radio-group-button--padding) 0;padding-inline:var(--radio-group-button--padding)}._radioGroupButton_FB-C- *{cursor:pointer}._radioGroupButton_FB-C-:has(._radioGroupButton__label_gjGCq){padding-inline:calc(var(--radio-group-button--padding) + var(--border-radius-element))}._radioGroupButton_FB-C-:has(._radioGroupButton__icon_lWzM4){padding-inline-start:var(--radio-group-button--padding)}._radioGroupButton_FB-C-:hover:not(._radioGroupButton_disabled_08iwH){background-color:var(--radio-group-button--background-color-hover)}._radioGroupButton_FB-C-:focus-within{--radio-group-button--border-width: 2px;--radio-group-button--padding: 0px;border:var(--radio-group-button--border-width) solid var(--color-main-text)!important;outline:calc(var(--default-grid-baseline) / 2) var(--color-main-background)}._radioGroupButton_active_KS1Ru{--radio-group-button--color: var(--color-primary-element-text);--radio-group-button--background-color: var(--color-primary-element);--radio-group-button--background-color-hover: var(--color-primary-element-hover)}._radioGroupButton__label_gjGCq{font-weight:700}._radioGroupButton_disabled_08iwH{filter:saturate(.7);opacity:.5;cursor:default}._radioGroupButton_disabled_08iwH *{cursor:default}._radioGroupButton__icon_lWzM4{--radio-group-button--icon-size: calc(var(--default-clickable-area) - 4px);display:flex;align-items:center;justify-content:center;height:100%;width:var(--radio-group-button--icon-size)}._radioGroupButton__icon_lWzM4 *{--default-clickable-area: var(--radio-group-button--icon-size)}.material-design-icon[data-v-8db55138]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.resource[data-v-8db55138]{display:flex;align-items:center;height:var(--default-clickable-area)}.resource__button[data-v-8db55138]{width:100%!important;justify-content:flex-start!important;padding:0!important}.resource__button[data-v-8db55138] .button-vue__wrapper{justify-content:flex-start!important}.resource__button[data-v-8db55138] .button-vue__wrapper .button-vue__text{font-weight:400!important;margin-inline-start:2px!important}.resource__icon[data-v-8db55138]{width:32px;height:32px;background-color:var(--color-text-maxcontrast);border-radius:50%;display:flex;align-items:center;justify-content:center}.resource__icon img[data-v-8db55138]{width:16px;height:16px;filter:var(--background-invert-if-dark)}.material-design-icon[data-v-a0203ee5]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.team-resources__header[data-v-a0203ee5]{font-weight:700;margin-bottom:6px}.related-team[data-v-a0203ee5]{border-radius:var(--border-radius-container);border:2px solid var(--color-border-dark);margin-bottom:6px}.related-team__open[data-v-a0203ee5]{border-color:var(--color-primary-element)}.related-team__header[data-v-a0203ee5]{padding:6px;padding-inline-end:24px;display:flex;gap:12px}.related-team__name[data-v-a0203ee5]{display:flex;flex-grow:1;align-items:center;gap:12px;padding:6px 12px;font-weight:700;margin:0}.related-team .related-team-provider[data-v-a0203ee5]{padding:6px 12px}.related-team .related-team-provider__name[data-v-a0203ee5]{font-weight:700;margin-bottom:3px}.related-team .related-team-provider__link[data-v-a0203ee5]{display:flex;gap:12px;padding:6px 12px;font-weight:700}.related-team .related-team-resource__link[data-v-a0203ee5]{display:flex;gap:12px;height:var(--default-clickable-area);align-items:center;border-radius:var(--border-radius-element)}.related-team .related-team-resource__link[data-v-a0203ee5]:hover{background-color:var(--color-background-hover)}.related-team .related-team-resource__link[data-v-a0203ee5]:focus{background-color:var(--color-background-hover);outline:2px solid var(--color-primary-element)}.related-team .related-team-resource .resource__icon[data-v-a0203ee5]{width:var(--default-clickable-area);height:var(--default-clickable-area);display:flex;align-items:center;justify-content:center;text-align:center}.related-team .related-team-resource .resource__icon>img[data-v-a0203ee5]{border-radius:var(--border-radius-pill);overflow:hidden;width:32px;height:32px}.material-design-icon[data-v-a1a23691]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.related-resources__header h5[data-v-a1a23691]{font-weight:700;margin-bottom:6px}.related-resources__header p[data-v-a1a23691]{color:var(--color-text-maxcontrast)}.material-design-icon[data-v-ca83b679]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.autocomplete-result[data-v-ca83b679]{display:flex;align-items:center;gap:var(--default-grid-baseline);line-height:1.2;--auto-complete-result-avatar-size: var(--default-clickable-area)}.autocomplete-result__icon[data-v-ca83b679]{position:relative;flex:0 0 var(--default-clickable-area);width:var(--default-clickable-area);min-width:var(--default-clickable-area);height:var(--default-clickable-area);border-radius:var(--default-clickable-area);background-color:var(--color-background-darker);background-repeat:no-repeat;background-position:center;background-size:contain}.autocomplete-result__icon--with-avatar[data-v-ca83b679]{color:inherit;background-size:cover}.autocomplete-result__status[data-v-ca83b679]{--auto-complete-result-status-icon-size: clamp(14px, var(--auto-complete-result-avatar-size) * .4, 18px);--auto-complete-result-status-icon-position: calc(var(--auto-complete-result-avatar-size) / 2 * (1 - 1 / sqrt(2)) - var(--auto-complete-result-status-icon-size) / 2);box-sizing:border-box;position:absolute;inset-inline-end:var(--auto-complete-result-status-icon-position);bottom:var(--auto-complete-result-status-icon-position);height:var(--auto-complete-result-status-icon-size);width:var(--auto-complete-result-status-icon-size);border:2px solid var(--color-main-background);border-radius:50%;background-color:var(--color-main-background);font-size:calc(var(--auto-complete-result-status-icon-size) / 1.2);line-height:1.2;background-repeat:no-repeat;background-size:var(--auto-complete-result-status-icon-size);background-position:center}.autocomplete-result__status--icon[data-v-ca83b679]{border:none;background-color:transparent}.autocomplete-result__content[data-v-ca83b679]{display:flex;flex:1 1 100%;flex-direction:column;justify-content:center;min-width:0}.autocomplete-result__title[data-v-ca83b679],.autocomplete-result__subline[data-v-ca83b679]{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.autocomplete-result__subline[data-v-ca83b679]{color:var(--color-text-maxcontrast)}.material-design-icon[data-v-426785d7]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.rich-contenteditable[data-v-426785d7]{--contenteditable-block-offset: calc(2 * var(--default-grid-baseline));--contenteditable-inline-start-offset: calc(2 * var(--default-grid-baseline));--contenteditable-inline-end-offset: calc(2 * var(--default-grid-baseline));position:relative;width:auto}.rich-contenteditable__label[data-v-426785d7]{position:absolute;margin-inline:14px;max-width:fit-content;inset-block-start:11px;inset-inline:0;color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.rich-contenteditable__input:focus+.rich-contenteditable__label[data-v-426785d7],.rich-contenteditable__input:not(.rich-contenteditable__input--empty)+.rich-contenteditable__label[data-v-426785d7]{inset-block-start:-10px;line-height:1.5;font-size:13px;font-weight:500;border-radius:var(--default-grid-baseline) var(--default-grid-baseline) 0 0;background-color:var(--color-main-background);padding-inline:5px;margin-inline:9px;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.rich-contenteditable__input[data-v-426785d7]{overflow-y:auto;width:auto;margin:0;padding-block:var(--contenteditable-block-offset);padding-inline:var(--contenteditable-inline-start-offset) var(--contenteditable-inline-end-offset);cursor:text;white-space:pre-wrap;overflow-wrap:break-word;color:var(--color-main-text);border:2px solid var(--color-border-maxcontrast);border-radius:var(--border-radius-element);outline:none;background-color:var(--color-main-background);font-family:var(--font-face);font-size:inherit;tab-size:4;min-height:var(--default-clickable-area);max-height:calc(var(--default-clickable-area) * 5.5)}.rich-contenteditable__input--has-label[data-v-426785d7]{margin-top:10px}.rich-contenteditable__input--empty[data-v-426785d7]:focus:before,.rich-contenteditable__input--empty[data-v-426785d7]:not(.rich-contenteditable__input--has-label):before{content:attr(aria-placeholder);color:var(--color-text-maxcontrast);position:absolute;width:calc(100% - var(--contenteditable-inline-start-offset) - var(--contenteditable-inline-end-offset));height:calc(100% - 2 * var(--contenteditable-block-offset));overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.rich-contenteditable__input[contenteditable=false][data-v-426785d7]:not(.rich-contenteditable__input--disabled){cursor:default;background-color:transparent;color:var(--color-main-text);border-color:transparent;opacity:1;border-radius:0}.rich-contenteditable__input--multiline[data-v-426785d7]{min-height:calc(var(--default-clickable-area) * 3);max-height:none}.rich-contenteditable__input--disabled[data-v-426785d7]{opacity:.5;color:var(--color-text-maxcontrast);border:2px solid var(--color-background-darker);border-radius:var(--border-radius-small);background-color:var(--color-background-dark)}.rich-contenteditable__input--overflow[data-v-426785d7],.rich-contenteditable__input--overflow[data-v-426785d7]:hover{border-color:var(--color-border-error, var(--color-error))!important}._material-design-icon_UrExO{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}._tribute-container_aTO5r{z-index:9000;overflow:auto;position:absolute;left:-100vw;margin:var(--default-grid-baseline) 0;padding:var(--default-grid-baseline);color:var(--color-text-maxcontrast);border-radius:var(--border-radius-element);background:var(--color-main-background);box-shadow:0 1px 5px var(--color-box-shadow)}._tribute-container_aTO5r,._tribute-container_aTO5r *{box-sizing:border-box}._tribute-container_aTO5r ul{display:flex;flex-direction:column;gap:var(--default-grid-baseline)}._tribute-container_aTO5r ._tribute-container__item_EHZ07{color:var(--color-text-maxcontrast);border-radius:var(--border-radius-small);padding:var(--default-grid-baseline);cursor:pointer;min-height:var(--clickable-area-small, auto)}._tribute-container_aTO5r ._tribute-container__item_EHZ07.highlight{color:var(--color-main-text);background:var(--color-background-hover)}._tribute-container_aTO5r ._tribute-container__item_EHZ07.highlight,._tribute-container_aTO5r ._tribute-container__item_EHZ07.highlight *{cursor:pointer}._tribute-container_aTO5r._tribute-container--focus-visible_GHsDW .highlight._tribute-container__item_EHZ07{outline:2px solid var(--color-main-text)!important}._tribute-container-autocomplete_YNk1h{min-width:250px;max-width:300px;max-height:calc((var(--default-clickable-area) + 3 * var(--default-grid-baseline)) * 4.5 - 1.5 * var(--default-grid-baseline))}._tribute-container-emoji_jWgZX,._tribute-container-link_1b7mc{min-width:200px;max-width:200px;max-height:calc((24px + 3 * var(--default-grid-baseline)) * 5.5 - 1.5 * var(--default-grid-baseline))}._tribute-container-emoji_jWgZX ._tribute-item_p5sRT,._tribute-container-link_1b7mc ._tribute-item_p5sRT{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._tribute-container-link_1b7mc{min-width:200px;max-width:300px}._tribute-container-link_1b7mc ._tribute-item_p5sRT{display:flex;align-items:center}._tribute-container-link_1b7mc ._tribute-item__title_VPcy9{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}._tribute-container-link_1b7mc ._tribute-item__icon_aTxCU{margin:auto 0;width:20px;height:20px;object-fit:contain;padding-inline-end:var(--default-grid-baseline);filter:var(--background-invert-if-dark)}.nc-select-users[data-v-e8e18fd3] .vs__selected{padding-inline:0 5px!important}.material-design-icon[data-v-f2b71592]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}.select-group-error[data-v-f2b71592]{color:var(--color-text-error, var(--color-error));font-size:13px;padding-inline-start:var(--border-radius-element)}.material-design-icon[data-v-657c47f8]{display:flex;align-self:center;justify-self:center;align-items:center;justify-content:center}/*! - * SPDX-FileCopyrightText: 2025 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */.textarea[data-v-657c47f8]{--input-border-color: var(--color-border-maxcontrast);--input-border-width-offset: calc(var(--border-width-input-focused, 2px) - var(--border-width-input, 2px));position:relative;width:100%;border-radius:var(--border-radius-element);margin-block-start:6px;resize:vertical}.textarea--disabled[data-v-657c47f8]{opacity:.7;filter:saturate(.7)}.textarea__main-wrapper[data-v-657c47f8]{padding:var(--border-width-input-focused, 2px);position:relative}.textarea__input[data-v-657c47f8]{margin:0;padding-block:var(--border-radius-element);padding-inline:10px;width:100%;font-size:var(--default-font-size);text-overflow:ellipsis;cursor:pointer;min-height:calc(var(--default-clickable-area) * 2);min-width:calc(var(--default-clickable-area) * 2);max-width:100%;background-color:var(--color-main-background);color:var(--color-main-text);--input-border-box-shadow-light: 0 -1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow-dark: 0 1px var(--input-border-color), 0 0 0 1px color-mix(in srgb, var(--input-border-color), 65% transparent);--input-border-box-shadow: var(--input-border-box-shadow-light);border:none;border-radius:var(--border-radius-element);box-shadow:var(--input-border-box-shadow)}.textarea__input[data-v-657c47f8]:hover:not([disabled]){box-shadow:0 0 0 1px var(--input-border-color)}@media(prefers-color-scheme:dark){.textarea__input .textarea__input[data-v-657c47f8]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}}[data-theme-dark] .textarea__input[data-v-657c47f8]{--input-border-box-shadow: var(--input-border-box-shadow-dark)}[data-theme-light] .textarea__input[data-v-657c47f8]{--input-border-box-shadow: var(--input-border-box-shadow-light)}.textarea--legacy .textarea__input[data-v-657c47f8]{box-shadow:0 0 0 1px var(--input-border-color)}.textarea--legacy .textarea__input[data-v-657c47f8]:hover:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color)}.textarea__input[data-v-657c47f8]:focus-within:not([disabled]),.textarea__input[data-v-657c47f8]:active:not([disabled]){box-shadow:0 0 0 2px var(--input-border-color),0 0 0 4px var(--color-main-background)!important}.textarea__input[data-v-657c47f8]:active:not([disabled]),.textarea__input[data-v-657c47f8]:focus:not([disabled]){--input-border-width-offset: 0px;--input-border-color: var(--color-main-text)}.textarea__input[data-v-657c47f8]:not(:focus,.textarea__input--label-outside)::placeholder{opacity:0}.textarea__input[data-v-657c47f8]:focus{cursor:text}.textarea__input[data-v-657c47f8]:disabled{cursor:default}.textarea__input[data-v-657c47f8]:focus-visible{box-shadow:unset!important}.textarea__input--success[data-v-657c47f8]{--input-border-color: var(--color-border-success, var(--color-success)) !important}.textarea__input--success[data-v-657c47f8]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.textarea__input--error[data-v-657c47f8]{--input-border-color: var(--color-border-error, var(--color-error)) !important}.textarea__input--error[data-v-657c47f8]:focus-visible{box-shadow:#f8fafc 0 0 0 2px,var(--color-primary-element) 0 0 0 4px,#0000000d 0 1px 2px}.textarea__label[data-v-657c47f8]{position:absolute;margin-inline:12px 0;max-width:fit-content;inset-block-start:11px;inset-inline:0;color:var(--color-text-maxcontrast);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;pointer-events:none;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick),background-color var(--animation-quick) var(--animation-slow)}.textarea__input:focus+.textarea__label[data-v-657c47f8],.textarea__input:not(:placeholder-shown)+.textarea__label[data-v-657c47f8]{inset-block-start:-10px;line-height:1.5;font-size:13px;font-weight:500;color:var(--color-main-text);background-color:var(--color-main-background);padding-inline:4px;margin-inline-start:8px;transition:height var(--animation-quick),inset-block-start var(--animation-quick),font-size var(--animation-quick),color var(--animation-quick)}.textarea__helper-text-message[data-v-657c47f8]{padding-block:4px;display:flex;align-items:center}.textarea__helper-text-message__icon[data-v-657c47f8]{margin-inline-end:8px}.textarea__helper-text-message--error[data-v-657c47f8]{color:var(--color-error-text)}.textarea__helper-text-message--success[data-v-657c47f8]{color:var(--color-success-text)} diff --git a/dist/profile-main.mjs b/dist/profile-main.mjs index 03c891f1c06de..d6830ad5206da 100644 --- a/dist/profile-main.mjs +++ b/dist/profile-main.mjs @@ -1,2 +1,2 @@ -import{j as r,o as s,k as t,l as o,t as l,z as C,b as P,c as p,H as O,n as $,r as M,K as U,A as B,W as H,w as d,e as h,u as i,g as f,E as L,F as A,C as z,p as T,h as Z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as j,s as F,u as q,g as D}from"./index-DqIuD5e7.chunk.mjs";import{a as K}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{a as k,l as N}from"./index-BgmsSgl5.chunk.mjs";import{t as y}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as W}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as Y}from"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{a as G}from"./index-Bos-XXa5.chunk.mjs";import{N as J,a as Q,b as R}from"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as X}from"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import{N as w}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as ee}from"./Plus-BsxGg9Cm.chunk.mjs";import{P as ie}from"./PencilOutline-TGZB0t_n.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";const se={name:"AccountOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ae=["aria-hidden","aria-label"],re=["fill","width","height"],te={d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z"},oe={key:0};function le(n,e,a,g,b,u){return s(),r("span",C(n.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon account-outline-icon",role:"img",onClick:e[0]||(e[0]=c=>n.$emit("click",c))}),[(s(),r("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[t("path",te,[a.title?(s(),r("title",oe,l(a.title),1)):o("",!0)])],8,re))],16,ae)}const ne=k(se,[["render",le]]),de={name:"MapMarkerIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ce=["aria-hidden","aria-label"],ue=["fill","width","height"],pe={d:"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"},me={key:0};function _e(n,e,a,g,b,u){return s(),r("span",C(n.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon map-marker-icon",role:"img",onClick:e[0]||(e[0]=c=>n.$emit("click",c))}),[(s(),r("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[t("path",pe,[a.title?(s(),r("title",me,l(a.title),1)):o("",!0)])],8,ue))],16,ce)}const fe=k(de,[["render",_e]]),he=P({__name:"ProfileSection",props:{section:{},userId:{}},setup(n){return(e,a)=>(s(),r("div",{class:$(e.$style.profileSection)},[(s(),p(O(n.section.tagName),C(n.section.params,{".user":n.userId}),null,48,[".user"]))],2))}}),ge="_profileSection_1o17g_2",ye={profileSection:ge},ve={$style:ye},ke=k(he,[["__cssModules",ve]]),be={class:"profile__header"},Ae={class:"profile__header__container"},we={class:"profile__header__container__displayname"},Ce={key:0},Ie={key:1,class:"profile__header__container__pronouns"},Se={class:"profile__wrapper"},Me={class:"profile__content"},ze={class:"profile__sidebar"},Ne={class:"user-actions"},Pe=["src"],$e=["src"],xe={class:"profile__blocks"},Ve={key:0,class:"profile__blocks-details"},Ee={key:0,class:"detail"},Oe={key:0},Ue={key:1,class:"detail"},Be={key:0,class:"profile__blocks-headline"},He=P({__name:"ProfileApp",setup(n){const e=N("profile","profileParameters",{userId:void 0,displayname:void 0,address:void 0,organisation:void 0,role:void 0,headline:void 0,biography:void 0,actions:[],isUserAvatarVisible:!1,pronouns:void 0}),a=M(N("profile","status",{})),g=M([]),b=T(()=>[...g.value].sort((m,v)=>v.order-m.order));U(()=>{g.value=window.OCA.Profile.ProfileSections.getSections()});const u=j()?.uid===e.userId,c=e.actions[0],x=e.actions.slice(1),V=W("/settings/user"),E=u?y("profile","You have not added any info yet"):y("profile","{user} has not added any info yet",{user:e.displayname||e.userId||""});B(()=>{document.title=`${e.displayname||e.userId} - ${document.title}`,F("user_status:status.updated",I)}),H(()=>{q("user_status:status.updated",I)});function I(m){u&&m.userId===e.userId&&(a.value=m)}function S(){if(!u)return;const m=document.querySelector(".user-status-menu-item");m?m.click():K(y("profile","Error opening the user status modal, try hard refreshing the page"))}return(m,v)=>(s(),p(i(R),{appName:"profile"},{default:d(()=>[h(i(J),null,{default:d(()=>[t("div",be,[t("div",Ae,[v[0]||(v[0]=t("div",{class:"profile__header__container__placeholder"},null,-1)),t("div",we,[t("h2",null,l(i(e).displayname||i(e).userId),1),i(e).pronouns?(s(),r("span",Ce,"·")):o("",!0),i(e).pronouns?(s(),r("span",Ie,l(i(e).pronouns),1)):o("",!0),u?(s(),p(i(w),{key:2,variant:"primary",href:i(V)},{icon:d(()=>[h(ie,{size:20})]),default:d(()=>[f(" "+l(i(y)("profile","Edit Profile")),1)]),_:1},8,["href"])):o("",!0)]),a.value.icon||a.value.message?(s(),p(i(w),{key:0,disabled:!u,variant:u?"tertiary":"tertiary-no-background",onClick:S},{default:d(()=>[f(l(a.value.icon)+" "+l(a.value.message),1)]),_:1},8,["disabled","variant"])):o("",!0)])]),t("div",Se,[t("div",Me,[t("div",ze,[h(i(X),{class:$(["avatar",{interactive:u}]),user:i(e).userId,size:180,disableMenu:!0,disableTooltip:!0,isNoUser:!i(e).isUserAvatarVisible,onClick:L(S,["prevent","stop"])},null,8,["class","user","isNoUser"]),t("div",Ne,[i(c)?(s(),p(i(w),{key:0,variant:"primary",class:"user-actions__primary",href:i(c).target,icon:i(c).icon,target:i(c).id==="phone"?"_self":"_blank"},{icon:d(()=>[t("img",{src:i(c).icon,alt:"",class:"user-actions__primary__icon"},null,8,Pe)]),default:d(()=>[f(" "+l(i(c).title),1)]),_:1},8,["href","icon","target"])):o("",!0),h(i(G),{class:"user-actions__other",inline:4},{default:d(()=>[(s(!0),r(A,null,z(i(x),_=>(s(),p(i(Y),{key:_.id,closeAfterClick:!0,href:_.target,target:_.id==="phone"?"_self":"_blank"},{icon:d(()=>[t("img",{src:_.icon,alt:"",class:"user-actions__other__icon"},null,8,$e)]),default:d(()=>[f(" "+l(_.title),1)]),_:2},1032,["href","target"]))),128))]),_:1})])]),t("div",xe,[i(e).organisation||i(e).role||i(e).address?(s(),r("div",Ve,[i(e).organisation||i(e).role?(s(),r("div",Ee,[t("p",null,[f(l(i(e).organisation)+" ",1),i(e).organisation&&i(e).role?(s(),r("span",Oe,"•")):o("",!0),f(" "+l(i(e).role),1)])])):o("",!0),i(e).address?(s(),r("div",Ue,[t("p",null,[h(fe,{class:"map-icon",size:16}),f(" "+l(i(e).address),1)])])):o("",!0)])):o("",!0),i(e).headline||i(e).biography||g.value.length>0?(s(),r(A,{key:1},[i(e).headline?(s(),r("h3",Be,l(i(e).headline),1)):o("",!0),i(e).biography?(s(),p(i(Q),{key:1,text:i(e).biography,useExtendedMarkdown:""},null,8,["text"])):o("",!0),(s(!0),r(A,null,z(b.value,_=>(s(),p(ke,{key:_.id,section:_,userId:i(e).userId},null,8,["section","userId"]))),128))],64)):(s(),p(i(ee),{key:2,class:"profile__blocks-empty-info",name:i(E),description:i(y)("profile","The headline and about sections will show up here")},{icon:d(()=>[h(ne,{size:60})]),_:1},8,["name","description"]))])])])]),_:1})]),_:1}))}}),Le=k(He,[["__scopeId","data-v-596d11e3"]]),Te=D().setApp("profile").detectLogLevel().build();class Ze{#e;constructor(){this.#e=new Map}registerSection(e){this.#e.has(e.id)&&Te.warn(`Profile section with id '${e.id}' is already registered.`),this.#e.set(e.id,e)}getSections(){return[...this.#e.values()]}}window.OCA.Profile??={},window.OCA.Profile.ProfileSections=new Ze;const je=Z(Le);je.mount("#content"); +import{j as r,o as s,k as t,l as o,t as l,z as C,b as P,c as p,H as O,n as $,r as M,K as U,A as B,W as H,w as d,e as h,u as i,g as f,E as L,F as A,C as z,p as T,h as Z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as j,s as F,u as q,g as D}from"./index-DqIuD5e7.chunk.mjs";import{a as K}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{a as k,l as N}from"./index-BgmsSgl5.chunk.mjs";import{t as y}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as W}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as Y}from"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import{a as G}from"./index-Bos-XXa5.chunk.mjs";import{N as J,a as Q,b as R}from"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as X}from"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import{N as w}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as ee}from"./Plus-BsxGg9Cm.chunk.mjs";import{P as ie}from"./PencilOutline-TGZB0t_n.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";const se={name:"AccountOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ae=["aria-hidden","aria-label"],re=["fill","width","height"],te={d:"M12,4A4,4 0 0,1 16,8A4,4 0 0,1 12,12A4,4 0 0,1 8,8A4,4 0 0,1 12,4M12,6A2,2 0 0,0 10,8A2,2 0 0,0 12,10A2,2 0 0,0 14,8A2,2 0 0,0 12,6M12,13C14.67,13 20,14.33 20,17V20H4V17C4,14.33 9.33,13 12,13M12,14.9C9.03,14.9 5.9,16.36 5.9,17V18.1H18.1V17C18.1,16.36 14.97,14.9 12,14.9Z"},oe={key:0};function le(n,e,a,g,b,u){return s(),r("span",C(n.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon account-outline-icon",role:"img",onClick:e[0]||(e[0]=c=>n.$emit("click",c))}),[(s(),r("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[t("path",te,[a.title?(s(),r("title",oe,l(a.title),1)):o("",!0)])],8,re))],16,ae)}const ne=k(se,[["render",le]]),de={name:"MapMarkerIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},ce=["aria-hidden","aria-label"],ue=["fill","width","height"],pe={d:"M12,11.5A2.5,2.5 0 0,1 9.5,9A2.5,2.5 0 0,1 12,6.5A2.5,2.5 0 0,1 14.5,9A2.5,2.5 0 0,1 12,11.5M12,2A7,7 0 0,0 5,9C5,14.25 12,22 12,22C12,22 19,14.25 19,9A7,7 0 0,0 12,2Z"},me={key:0};function _e(n,e,a,g,b,u){return s(),r("span",C(n.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon map-marker-icon",role:"img",onClick:e[0]||(e[0]=c=>n.$emit("click",c))}),[(s(),r("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[t("path",pe,[a.title?(s(),r("title",me,l(a.title),1)):o("",!0)])],8,ue))],16,ce)}const fe=k(de,[["render",_e]]),he=P({__name:"ProfileSection",props:{section:{},userId:{}},setup(n){return(e,a)=>(s(),r("div",{class:$(e.$style.profileSection)},[(s(),p(O(n.section.tagName),C(n.section.params,{".user":n.userId}),null,48,[".user"]))],2))}}),ge="_profileSection_1o17g_2",ye={profileSection:ge},ve={$style:ye},ke=k(he,[["__cssModules",ve]]),be={class:"profile__header"},Ae={class:"profile__header__container"},we={class:"profile__header__container__displayname"},Ce={key:0},Ie={key:1,class:"profile__header__container__pronouns"},Se={class:"profile__wrapper"},Me={class:"profile__content"},ze={class:"profile__sidebar"},Ne={class:"user-actions"},Pe=["src"],$e=["src"],xe={class:"profile__blocks"},Ve={key:0,class:"profile__blocks-details"},Ee={key:0,class:"detail"},Oe={key:0},Ue={key:1,class:"detail"},Be={key:0,class:"profile__blocks-headline"},He=P({__name:"ProfileApp",setup(n){const e=N("profile","profileParameters",{userId:void 0,displayname:void 0,address:void 0,organisation:void 0,role:void 0,headline:void 0,biography:void 0,actions:[],isUserAvatarVisible:!1,pronouns:void 0}),a=M(N("profile","status",{})),g=M([]),b=T(()=>[...g.value].sort((m,v)=>v.order-m.order));U(()=>{g.value=window.OCA.Profile.ProfileSections.getSections()});const u=j()?.uid===e.userId,c=e.actions[0],x=e.actions.slice(1),V=W("/settings/user"),E=u?y("profile","You have not added any info yet"):y("profile","{user} has not added any info yet",{user:e.displayname||e.userId||""});B(()=>{document.title=`${e.displayname||e.userId} - ${document.title}`,F("user_status:status.updated",I)}),H(()=>{q("user_status:status.updated",I)});function I(m){u&&m.userId===e.userId&&(a.value=m)}function S(){if(!u)return;const m=document.querySelector(".user-status-menu-item");m?m.click():K(y("profile","Error opening the user status modal, try hard refreshing the page"))}return(m,v)=>(s(),p(i(R),{appName:"profile"},{default:d(()=>[h(i(J),null,{default:d(()=>[t("div",be,[t("div",Ae,[v[0]||(v[0]=t("div",{class:"profile__header__container__placeholder"},null,-1)),t("div",we,[t("h2",null,l(i(e).displayname||i(e).userId),1),i(e).pronouns?(s(),r("span",Ce,"·")):o("",!0),i(e).pronouns?(s(),r("span",Ie,l(i(e).pronouns),1)):o("",!0),u?(s(),p(i(w),{key:2,variant:"primary",href:i(V)},{icon:d(()=>[h(ie,{size:20})]),default:d(()=>[f(" "+l(i(y)("profile","Edit Profile")),1)]),_:1},8,["href"])):o("",!0)]),a.value.icon||a.value.message?(s(),p(i(w),{key:0,disabled:!u,variant:u?"tertiary":"tertiary-no-background",onClick:S},{default:d(()=>[f(l(a.value.icon)+" "+l(a.value.message),1)]),_:1},8,["disabled","variant"])):o("",!0)])]),t("div",Se,[t("div",Me,[t("div",ze,[h(i(X),{class:$(["avatar",{interactive:u}]),user:i(e).userId,size:180,disableMenu:!0,disableTooltip:!0,isNoUser:!i(e).isUserAvatarVisible,onClick:L(S,["prevent","stop"])},null,8,["class","user","isNoUser"]),t("div",Ne,[i(c)?(s(),p(i(w),{key:0,variant:"primary",class:"user-actions__primary",href:i(c).target,icon:i(c).icon,target:i(c).id==="phone"?"_self":"_blank"},{icon:d(()=>[t("img",{src:i(c).icon,alt:"",class:"user-actions__primary__icon"},null,8,Pe)]),default:d(()=>[f(" "+l(i(c).title),1)]),_:1},8,["href","icon","target"])):o("",!0),h(i(G),{class:"user-actions__other",inline:4},{default:d(()=>[(s(!0),r(A,null,z(i(x),_=>(s(),p(i(Y),{key:_.id,closeAfterClick:!0,href:_.target,target:_.id==="phone"?"_self":"_blank"},{icon:d(()=>[t("img",{src:_.icon,alt:"",class:"user-actions__other__icon"},null,8,$e)]),default:d(()=>[f(" "+l(_.title),1)]),_:2},1032,["href","target"]))),128))]),_:1})])]),t("div",xe,[i(e).organisation||i(e).role||i(e).address?(s(),r("div",Ve,[i(e).organisation||i(e).role?(s(),r("div",Ee,[t("p",null,[f(l(i(e).organisation)+" ",1),i(e).organisation&&i(e).role?(s(),r("span",Oe,"•")):o("",!0),f(" "+l(i(e).role),1)])])):o("",!0),i(e).address?(s(),r("div",Ue,[t("p",null,[h(fe,{class:"map-icon",size:16}),f(" "+l(i(e).address),1)])])):o("",!0)])):o("",!0),i(e).headline||i(e).biography||g.value.length>0?(s(),r(A,{key:1},[i(e).headline?(s(),r("h3",Be,l(i(e).headline),1)):o("",!0),i(e).biography?(s(),p(i(Q),{key:1,text:i(e).biography,useExtendedMarkdown:""},null,8,["text"])):o("",!0),(s(!0),r(A,null,z(b.value,_=>(s(),p(ke,{key:_.id,section:_,userId:i(e).userId},null,8,["section","userId"]))),128))],64)):(s(),p(i(ee),{key:2,class:"profile__blocks-empty-info",name:i(E),description:i(y)("profile","The headline and about sections will show up here")},{icon:d(()=>[h(ne,{size:60})]),_:1},8,["name","description"]))])])])]),_:1})]),_:1}))}}),Le=k(He,[["__scopeId","data-v-596d11e3"]]),Te=D().setApp("profile").detectLogLevel().build();class Ze{#e;constructor(){this.#e=new Map}registerSection(e){this.#e.has(e.id)&&Te.warn(`Profile section with id '${e.id}' is already registered.`),this.#e.set(e.id,e)}getSections(){return[...this.#e.values()]}}window.OCA.Profile??={},window.OCA.Profile.ProfileSections=new Ze;const je=Z(Le);je.mount("#content"); //# sourceMappingURL=profile-main.mjs.map diff --git a/dist/sharebymail-admin-settings.mjs b/dist/sharebymail-admin-settings.mjs index c931531eb1bff..887d0aff12b12 100644 --- a/dist/sharebymail-admin-settings.mjs +++ b/dist/sharebymail-admin-settings.mjs @@ -1,2 +1,2 @@ -import{f as p,c as u,o as b,w as i,e as l,g as m,t as d,h as f}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as w}from"./index-CPwHjAPR.chunk.mjs";import{a as g}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{a as S,l as c}from"./index-BgmsSgl5.chunk.mjs";import{t as h}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as I}from"./index-CXHO4UEV.chunk.mjs";import{b as M}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as k}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{g as R}from"./index-DqIuD5e7.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";const T=R().detectLogLevel().setApp("sharebymail").build(),V={name:"AdminSettings",components:{NcCheckboxRadioSwitch:k,NcSettingsSection:N},setup(){return{t:h}},data(){return{sendPasswordMail:c("sharebymail","sendPasswordMail"),replyToInitiator:c("sharebymail","replyToInitiator")}},watch:{sendPasswordMail(e){this.update("sendpasswordmail",e)},replyToInitiator(e){this.update("replyToInitiator",e)}},methods:{async update(e,a){await I();const s=M("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"sharebymail",key:e}),o=a?"yes":"no";try{const{data:t}=await w.post(s,{value:o});this.handleResponse({status:t.ocs?.meta?.status})}catch(t){this.handleResponse({errorMessage:h("sharebymail","Unable to update share by mail config"),error:t})}},async handleResponse({status:e,errorMessage:a,error:s}){e!=="ok"&&(g(a),T.error(a,{error:s}))}}};function v(e,a,s,o,t,x){const n=p("NcCheckboxRadioSwitch"),y=p("NcSettingsSection");return b(),u(y,{name:o.t("sharebymail","Share by mail"),description:o.t("sharebymail","Allows people to share a personalized link to a file or folder by putting in an email address.")},{default:i(()=>[l(n,{modelValue:t.sendPasswordMail,"onUpdate:modelValue":a[0]||(a[0]=r=>t.sendPasswordMail=r),type:"switch"},{default:i(()=>[m(d(o.t("sharebymail","Send password by mail")),1)]),_:1},8,["modelValue"]),l(n,{modelValue:t.replyToInitiator,"onUpdate:modelValue":a[1]||(a[1]=r=>t.replyToInitiator=r),type:"switch"},{default:i(()=>[m(d(o.t("sharebymail","Reply to initiator")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"])}const P=S(V,[["render",v]]),_=f(P);_.mount("#vue-admin-sharebymail"); +import{f as p,c as u,o as b,w as i,e as l,g as m,t as d,h as f}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as w}from"./index-CPwHjAPR.chunk.mjs";import{a as g}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{a as S,l as c}from"./index-BgmsSgl5.chunk.mjs";import{t as h}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as I}from"./index-CXHO4UEV.chunk.mjs";import{b as M}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as k}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{g as R}from"./index-DqIuD5e7.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";const T=R().detectLogLevel().setApp("sharebymail").build(),V={name:"AdminSettings",components:{NcCheckboxRadioSwitch:k,NcSettingsSection:N},setup(){return{t:h}},data(){return{sendPasswordMail:c("sharebymail","sendPasswordMail"),replyToInitiator:c("sharebymail","replyToInitiator")}},watch:{sendPasswordMail(e){this.update("sendpasswordmail",e)},replyToInitiator(e){this.update("replyToInitiator",e)}},methods:{async update(e,a){await I();const s=M("/apps/provisioning_api/api/v1/config/apps/{appId}/{key}",{appId:"sharebymail",key:e}),o=a?"yes":"no";try{const{data:t}=await w.post(s,{value:o});this.handleResponse({status:t.ocs?.meta?.status})}catch(t){this.handleResponse({errorMessage:h("sharebymail","Unable to update share by mail config"),error:t})}},async handleResponse({status:e,errorMessage:a,error:s}){e!=="ok"&&(g(a),T.error(a,{error:s}))}}};function v(e,a,s,o,t,x){const n=p("NcCheckboxRadioSwitch"),y=p("NcSettingsSection");return b(),u(y,{name:o.t("sharebymail","Share by mail"),description:o.t("sharebymail","Allows people to share a personalized link to a file or folder by putting in an email address.")},{default:i(()=>[l(n,{modelValue:t.sendPasswordMail,"onUpdate:modelValue":a[0]||(a[0]=r=>t.sendPasswordMail=r),type:"switch"},{default:i(()=>[m(d(o.t("sharebymail","Send password by mail")),1)]),_:1},8,["modelValue"]),l(n,{modelValue:t.replyToInitiator,"onUpdate:modelValue":a[1]||(a[1]=r=>t.replyToInitiator=r),type:"switch"},{default:i(()=>[m(d(o.t("sharebymail","Reply to initiator")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"])}const P=S(V,[["render",v]]),_=f(P);_.mount("#vue-admin-sharebymail"); //# sourceMappingURL=sharebymail-admin-settings.mjs.map diff --git a/dist/systemtags-admin.mjs b/dist/systemtags-admin.mjs index 77838aa706684..a29b7014d7576 100644 --- a/dist/systemtags-admin.mjs +++ b/dist/systemtags-admin.mjs @@ -1,2 +1,2 @@ -import{b as P,x as H,v as J,r as f,j as k,o as _,k as g,t as n,u as t,e as b,w as V,g as I,c as T,l as Q,p as h,F as W,E as X,K as Y,h as Z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{d as R,a as U}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as j}from"./mdi-e8YUrhPH.chunk.mjs";import{N as $}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{N}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as ee}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{N as ae}from"./index-Blsbluag.chunk.mjs";import{_ as te}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{c as se,d as le,u as ie,a as oe,b as ue,l as x,f as re}from"./api-7RyG6Inm.chunk.mjs";import{a as ne,l as de}from"./index-BgmsSgl5.chunk.mjs";import{N as me}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./index-CXHO4UEV.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./dav-C3Vmpmsl.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";import"./folder-29HuacU_-CQFyGatl.chunk.mjs";const ge=["disabled"],ce={id:"system-tag-form-heading"},ve={class:"system-tag-form__group"},ye={for:"system-tags-input"},pe={class:"system-tag-form__group"},be={for:"system-tag-name"},fe={class:"system-tag-form__group"},_e={for:"system-tag-level"},he={class:"system-tag-form__row"},Ve=P({__name:"SystemTagForm",props:{tags:{}},emits:["tag:created","tag:updated","tag:deleted"],setup(w,{emit:c}){const r=w,y=c,d=[{id:"Public",label:e("systemtags","Public")},{id:"Restricted",label:e("systemtags","Restricted")},{id:"Invisible",label:e("systemtags","Invisible")}],i=H("tagNameInput"),a=f(!1),o=f(""),u=f(""),p=f("Public"),l=f(null);J(l,s=>{u.value=s?s.displayName:"",p.value=s?F(s.userVisible,s.userAssignable):"Public"});const S=h(()=>l.value===null),D=h(()=>u.value===""),O=h(()=>u.value===""||l.value?.displayName===u.value&&F(l.value?.userVisible,l.value?.userAssignable)===p.value),z=h(()=>S.value?u.value===""&&p.value==="Public":l.value===null),L=h(()=>({Public:!0,Restricted:!0,Invisible:!1})[p.value]),M=h(()=>({Public:!0,Restricted:!1,Invisible:!1})[p.value]),A=h(()=>({displayName:u.value,userVisible:L.value,userAssignable:M.value}));function E(s){const m=r.tags.find(v=>v.id===s)||null;l.value=m}async function K(){if(S.value){await q();return}await B()}async function q(){const s={...le,...A.value};a.value=!0;try{const m=await se(s),v={...s,id:m};y("tag:created",v),R(e("systemtags","Created tag")),C()}catch{o.value=e("systemtags","Failed to create tag")}a.value=!1}async function B(){if(l.value===null)return;const s={...l.value,...A.value};a.value=!0;try{await ie(s),l.value=s,y("tag:updated",s),R(e("systemtags","Updated tag")),i.value?.focus()}catch{o.value=e("systemtags","Failed to update tag")}a.value=!1}async function G(){if(l.value!==null){a.value=!0;try{await oe(l.value),y("tag:deleted",l.value),R(e("systemtags","Deleted tag")),C()}catch{o.value=e("systemtags","Failed to delete tag")}a.value=!1}}function C(){l.value=null,o.value="",u.value="",p.value="Public",i.value?.focus()}function F(s,m){return{[[!0,!0].join(",")]:"Public",[[!0,!1].join(",")]:"Restricted",[[!1,!1].join(",")]:"Invisible"}[[s,m].join(",")]}return(s,m)=>(_(),k("form",{class:"system-tag-form",disabled:a.value,"aria-labelledby":"system-tag-form-heading",onSubmit:X(K,["prevent"]),onReset:C},[g("h4",ce,n(t(e)("systemtags","Create or edit tags")),1),g("div",ve,[g("label",ye,n(t(e)("systemtags","Search for a tag to edit")),1),b(t(ae),{modelValue:l.value,inputId:"system-tags-input",placeholder:t(e)("systemtags","Collaborative tags …"),fetchTags:!1,options:w.tags,multiple:!1,labelOutside:"","onUpdate:modelValue":E},{"no-options":V(()=>[I(n(t(e)("systemtags","No tags to select")),1)]),_:1},8,["modelValue","placeholder","options"])]),g("div",pe,[g("label",be,n(t(e)("systemtags","Tag name")),1),b(t(te),{id:"system-tag-name",ref:"tagNameInput",modelValue:u.value,"onUpdate:modelValue":m[0]||(m[0]=v=>u.value=v),error:!!o.value,helperText:o.value,labelOutside:""},null,8,["modelValue","error","helperText"])]),g("div",fe,[g("label",_e,n(t(e)("systemtags","Tag level")),1),b(t(ee),{modelValue:p.value,"onUpdate:modelValue":m[1]||(m[1]=v=>p.value=v),inputId:"system-tag-level",options:d,reduce:v=>v.id,clearable:!1,disabled:a.value,labelOutside:""},null,8,["modelValue","reduce","disabled"])]),g("div",he,[S.value?(_(),T(t(N),{key:0,type:"submit",disabled:D.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Create")),1)]),_:1},8,["disabled"])):(_(),k(W,{key:1},[b(t(N),{type:"submit",disabled:O.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Update")),1)]),_:1},8,["disabled"]),b(t(N),{disabled:a.value,onClick:G},{default:V(()=>[I(n(t(e)("systemtags","Delete")),1)]),_:1},8,["disabled"])],64)),b(t(N),{type:"reset",disabled:z.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Reset")),1)]),_:1},8,["disabled"]),a.value?(_(),T(t(j),{key:2,name:t(e)("systemtags","Loading …"),size:32},null,8,["name"])):Q("",!0)])],40,ge))}}),Ie=ne(Ve,[["__scopeId","data-v-88ba4be0"]]),Te={id:"system-tags-creation-control"},we={class:"inlineblock"},Ne={class:"settings-hint"},Re=P({__name:"SystemTagsCreationControl",setup(w){const c=f(de("systemtags","restrictSystemTagsCreationToAdmin",!1));async function r(d){try{const i=await ue(d);x.debug("updateSystemTagsDefault",{responseData:i}),y({isRestricted:d,status:i.ocs?.meta?.status})}catch(i){y({errorMessage:e("systemtags","Unable to update setting"),error:i})}}function y({isRestricted:d,status:i,errorMessage:a,error:o}){if(i==="ok"){c.value=!!d,R(d?e("systemtags","System tag creation is now restricted to administrators"):e("systemtags","System tag creation is now allowed for everybody"));return}a&&(U(a),x.error(a,{error:o}))}return(d,i)=>(_(),k("div",Te,[g("h4",we,n(t(e)("systemtags","System tag management")),1),g("p",Ne,n(t(e)("systemtags","If enabled, only administrators can create and edit tags. Accounts can still assign and remove them from files.")),1),b(t(me),{modelValue:c.value,"onUpdate:modelValue":[i[0]||(i[0]=a=>c.value=a),r],type:"switch"},{default:V(()=>[I(n(t(e)("systemtags","Restrict tag creation and editing to administrators")),1)]),_:1},8,["modelValue"])]))}}),Se=P({__name:"SystemTagsSection",setup(w){const c=f(!1),r=f([]);Y(async()=>{c.value=!0;try{r.value=await re()}catch(a){U(e("systemtags","Failed to load tags")),x.error("Failed to load tags",{error:a})}c.value=!1});function y(a){r.value.unshift(a)}function d(a){const o=r.value.findIndex(u=>u.id===a.id);r.value.splice(o,1),r.value.unshift(a)}function i(a){const o=r.value.findIndex(u=>u.id===a.id);r.value.splice(o,1)}return(a,o)=>(_(),T(t($),{name:t(e)("systemtags","Collaborative tags"),description:t(e)("systemtags","Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them.")},{default:V(()=>[b(Re),c.value?(_(),T(t(j),{key:0,name:t(e)("systemtags","Loading collaborative tags …"),size:32},null,8,["name"])):(_(),T(Ie,{key:1,tags:r.value,"onTag:created":y,"onTag:updated":d,"onTag:deleted":i},null,8,["tags"]))]),_:1},8,["name","description"]))}}),Ce=Z(Se);Ce.mount("#vue-admin-systemtags"); +import{b as P,x as H,v as J,r as f,j as k,o as _,k as g,t as n,u as t,e as b,w as V,g as I,c as T,l as Q,p as h,F as W,E as X,K as Y,h as Z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{d as R,a as U}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{t as e}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{N as j}from"./mdi-e8YUrhPH.chunk.mjs";import{N as $}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{N}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as ee}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{N as ae}from"./index-Blsbluag.chunk.mjs";import{_ as te}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{c as se,d as le,u as ie,a as oe,b as ue,l as x,f as re}from"./api-7RyG6Inm.chunk.mjs";import{a as ne,l as de}from"./index-BgmsSgl5.chunk.mjs";import{N as me}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./index-CXHO4UEV.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./dav-C3Vmpmsl.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";import"./folder-29HuacU_-CQFyGatl.chunk.mjs";const ge=["disabled"],ce={id:"system-tag-form-heading"},ve={class:"system-tag-form__group"},ye={for:"system-tags-input"},pe={class:"system-tag-form__group"},be={for:"system-tag-name"},fe={class:"system-tag-form__group"},_e={for:"system-tag-level"},he={class:"system-tag-form__row"},Ve=P({__name:"SystemTagForm",props:{tags:{}},emits:["tag:created","tag:updated","tag:deleted"],setup(w,{emit:c}){const r=w,y=c,d=[{id:"Public",label:e("systemtags","Public")},{id:"Restricted",label:e("systemtags","Restricted")},{id:"Invisible",label:e("systemtags","Invisible")}],i=H("tagNameInput"),a=f(!1),o=f(""),u=f(""),p=f("Public"),l=f(null);J(l,s=>{u.value=s?s.displayName:"",p.value=s?F(s.userVisible,s.userAssignable):"Public"});const S=h(()=>l.value===null),D=h(()=>u.value===""),O=h(()=>u.value===""||l.value?.displayName===u.value&&F(l.value?.userVisible,l.value?.userAssignable)===p.value),z=h(()=>S.value?u.value===""&&p.value==="Public":l.value===null),L=h(()=>({Public:!0,Restricted:!0,Invisible:!1})[p.value]),M=h(()=>({Public:!0,Restricted:!1,Invisible:!1})[p.value]),A=h(()=>({displayName:u.value,userVisible:L.value,userAssignable:M.value}));function E(s){const m=r.tags.find(v=>v.id===s)||null;l.value=m}async function K(){if(S.value){await q();return}await B()}async function q(){const s={...le,...A.value};a.value=!0;try{const m=await se(s),v={...s,id:m};y("tag:created",v),R(e("systemtags","Created tag")),C()}catch{o.value=e("systemtags","Failed to create tag")}a.value=!1}async function B(){if(l.value===null)return;const s={...l.value,...A.value};a.value=!0;try{await ie(s),l.value=s,y("tag:updated",s),R(e("systemtags","Updated tag")),i.value?.focus()}catch{o.value=e("systemtags","Failed to update tag")}a.value=!1}async function G(){if(l.value!==null){a.value=!0;try{await oe(l.value),y("tag:deleted",l.value),R(e("systemtags","Deleted tag")),C()}catch{o.value=e("systemtags","Failed to delete tag")}a.value=!1}}function C(){l.value=null,o.value="",u.value="",p.value="Public",i.value?.focus()}function F(s,m){return{[[!0,!0].join(",")]:"Public",[[!0,!1].join(",")]:"Restricted",[[!1,!1].join(",")]:"Invisible"}[[s,m].join(",")]}return(s,m)=>(_(),k("form",{class:"system-tag-form",disabled:a.value,"aria-labelledby":"system-tag-form-heading",onSubmit:X(K,["prevent"]),onReset:C},[g("h4",ce,n(t(e)("systemtags","Create or edit tags")),1),g("div",ve,[g("label",ye,n(t(e)("systemtags","Search for a tag to edit")),1),b(t(ae),{modelValue:l.value,inputId:"system-tags-input",placeholder:t(e)("systemtags","Collaborative tags …"),fetchTags:!1,options:w.tags,multiple:!1,labelOutside:"","onUpdate:modelValue":E},{"no-options":V(()=>[I(n(t(e)("systemtags","No tags to select")),1)]),_:1},8,["modelValue","placeholder","options"])]),g("div",pe,[g("label",be,n(t(e)("systemtags","Tag name")),1),b(t(te),{id:"system-tag-name",ref:"tagNameInput",modelValue:u.value,"onUpdate:modelValue":m[0]||(m[0]=v=>u.value=v),error:!!o.value,helperText:o.value,labelOutside:""},null,8,["modelValue","error","helperText"])]),g("div",fe,[g("label",_e,n(t(e)("systemtags","Tag level")),1),b(t(ee),{modelValue:p.value,"onUpdate:modelValue":m[1]||(m[1]=v=>p.value=v),inputId:"system-tag-level",options:d,reduce:v=>v.id,clearable:!1,disabled:a.value,labelOutside:""},null,8,["modelValue","reduce","disabled"])]),g("div",he,[S.value?(_(),T(t(N),{key:0,type:"submit",disabled:D.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Create")),1)]),_:1},8,["disabled"])):(_(),k(W,{key:1},[b(t(N),{type:"submit",disabled:O.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Update")),1)]),_:1},8,["disabled"]),b(t(N),{disabled:a.value,onClick:G},{default:V(()=>[I(n(t(e)("systemtags","Delete")),1)]),_:1},8,["disabled"])],64)),b(t(N),{type:"reset",disabled:z.value||a.value},{default:V(()=>[I(n(t(e)("systemtags","Reset")),1)]),_:1},8,["disabled"]),a.value?(_(),T(t(j),{key:2,name:t(e)("systemtags","Loading …"),size:32},null,8,["name"])):Q("",!0)])],40,ge))}}),Ie=ne(Ve,[["__scopeId","data-v-88ba4be0"]]),Te={id:"system-tags-creation-control"},we={class:"inlineblock"},Ne={class:"settings-hint"},Re=P({__name:"SystemTagsCreationControl",setup(w){const c=f(de("systemtags","restrictSystemTagsCreationToAdmin",!1));async function r(d){try{const i=await ue(d);x.debug("updateSystemTagsDefault",{responseData:i}),y({isRestricted:d,status:i.ocs?.meta?.status})}catch(i){y({errorMessage:e("systemtags","Unable to update setting"),error:i})}}function y({isRestricted:d,status:i,errorMessage:a,error:o}){if(i==="ok"){c.value=!!d,R(d?e("systemtags","System tag creation is now restricted to administrators"):e("systemtags","System tag creation is now allowed for everybody"));return}a&&(U(a),x.error(a,{error:o}))}return(d,i)=>(_(),k("div",Te,[g("h4",we,n(t(e)("systemtags","System tag management")),1),g("p",Ne,n(t(e)("systemtags","If enabled, only administrators can create and edit tags. Accounts can still assign and remove them from files.")),1),b(t(me),{modelValue:c.value,"onUpdate:modelValue":[i[0]||(i[0]=a=>c.value=a),r],type:"switch"},{default:V(()=>[I(n(t(e)("systemtags","Restrict tag creation and editing to administrators")),1)]),_:1},8,["modelValue"])]))}}),Se=P({__name:"SystemTagsSection",setup(w){const c=f(!1),r=f([]);Y(async()=>{c.value=!0;try{r.value=await re()}catch(a){U(e("systemtags","Failed to load tags")),x.error("Failed to load tags",{error:a})}c.value=!1});function y(a){r.value.unshift(a)}function d(a){const o=r.value.findIndex(u=>u.id===a.id);r.value.splice(o,1),r.value.unshift(a)}function i(a){const o=r.value.findIndex(u=>u.id===a.id);r.value.splice(o,1)}return(a,o)=>(_(),T(t($),{name:t(e)("systemtags","Collaborative tags"),description:t(e)("systemtags","Collaborative tags are available for all users. Restricted tags are visible to users but cannot be assigned by them. Invisible tags are for internal use, since users cannot see or assign them.")},{default:V(()=>[b(Re),c.value?(_(),T(t(j),{key:0,name:t(e)("systemtags","Loading collaborative tags …"),size:32},null,8,["name"])):(_(),T(Ie,{key:1,tags:r.value,"onTag:created":y,"onTag:updated":d,"onTag:deleted":i},null,8,["tags"]))]),_:1},8,["name","description"]))}}),Ce=Z(Se);Ce.mount("#vue-admin-systemtags"); //# sourceMappingURL=systemtags-admin.mjs.map diff --git a/dist/systemtags-init.mjs b/dist/systemtags-init.mjs index 4857aa408311f..c969d2e9082e4 100644 --- a/dist/systemtags-init.mjs +++ b/dist/systemtags-init.mjs @@ -1,5 +1,5 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/SystemTagPicker-iHgA05bq.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQwJiKOs.chunk.css'),window.OC.filePath('', '', 'dist/NcChip-CrVOU2RM-TQyHvx90.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-TGZB0t_n.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DdQinVMt.chunk.css'),window.OC.filePath('', '', 'dist/NcChip-CrVOU2RM-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-BfjxNgsx-DQQhcX1Z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'),window.OC.filePath('', '', 'dist/Plus-BsxGg9Cm.chunk.mjs'),window.OC.filePath('', '', 'dist/Plus-DoZPzs7J.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/api-7RyG6Inm.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CXHO4UEV.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-DxPSRxK-.chunk.css'),window.OC.filePath('', '', 'dist/dav-C3Vmpmsl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DuirWb3a.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-CQFyGatl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Dpj4ddZx.chunk.mjs'),window.OC.filePath('', '', 'dist/systemtags-SystemTagPicker-r37hCiyq.chunk.css')])))=>i.map(i=>d[i]); -import{c as re,g as te,V as oe,D as ae,b as C}from"./index-Dpj4ddZx.chunk.mjs";import{g as se,e as R,f as le,r as ie,a as ce,b as ue,c as he}from"./dav-C3Vmpmsl.chunk.mjs";import{i as de,_ as U}from"./index-BgmsSgl5.chunk.mjs";import{P,b as H,F as D}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import{t as w}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{s as B}from"./index-Bos-XXa5.chunk.mjs";import{a as J}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{s as O,a as Z}from"./index-DqIuD5e7.chunk.mjs";import{e as ge,f as W,l as be}from"./api-7RyG6Inm.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-CXHO4UEV.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";const Y='';async function T({nodes:e}){const n=await B(J(()=>U(()=>import("./SystemTagPicker-iHgA05bq.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url)),{nodes:e});return Array(e.length).fill(n)}const fe={id:"systemtags:bulk",displayName:()=>w("systemtags","Manage tags"),iconSvgInline:()=>Y,enabled({nodes:e}){return de()||e.length===0||e.some(n=>!n.isDavResource)?!1:!e.some(n=>(n.permissions&P.UPDATE)===0)},async exec(e){const[n]=await T(e);return n},execBatch:T,hotkey:{description:w("systemtags","Manage tags"),key:"t"}},me='';function pe(){re({id:"systemtags",order:20,displayName(){return w("systemtags","Add tags")},enabled(){return!0},iconSvgInline(){return me},onClick({node:e}){return B(J(()=>U(()=>import("./SystemTagPicker-iHgA05bq.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url)),{nodes:[e]})}})}const E={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in E)Object.freeze(E[e]);const N=Object.freeze(E),G=Object.create(null);for(const e in N)Object.hasOwn(N,e)&&(G[N[e]]=e);const b={to:{},get:{}};b.get=function(e){const n=e.slice(0,3).toLowerCase();let r,t;switch(n){case"hsl":{r=b.get.hsl(e),t="hsl";break}case"hwb":{r=b.get.hwb(e),t="hwb";break}default:{r=b.get.rgb(e),t="rgb";break}}return r?{model:t,value:r}:null},b.get.rgb=function(e){if(!e)return null;const n=/^#([a-f\d]{3,4})$/i,r=/^#([a-f\d]{6})([a-f\d]{2})?$/i,t=/^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i,o=/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i,a=/^(\w+)$/;let s=[0,0,0,1],l,i,u;if(l=e.match(r)){for(u=l[2],l=l[1],i=0;i<3;i++){const m=i*2;s[i]=Number.parseInt(l.slice(m,m+2),16)}u&&(s[3]=Number.parseInt(u,16)/255)}else if(l=e.match(n)){for(l=l[1],u=l[3],i=0;i<3;i++)s[i]=Number.parseInt(l[i]+l[i],16);u&&(s[3]=Number.parseInt(u+u,16)/255)}else if(l=e.match(t)){for(i=0;i<3;i++)s[i]=Number.parseFloat(l[i+1]);l[4]&&(s[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else if(l=e.match(o)){for(i=0;i<3;i++)s[i]=Math.round(Number.parseFloat(l[i+1])*2.55);l[4]&&(s[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else return(l=e.toLowerCase().match(a))?l[1]==="transparent"?[0,0,0,0]:Object.hasOwn(N,l[1])?(s=N[l[1]].slice(),s[3]=1,s):null:null;for(i=0;i<3;i++)s[i]=k(s[i],0,255);return s[3]=k(s[3],0,1),s},b.get.hsl=function(e){if(!e)return null;const n=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,r=e.match(n);if(r){const t=Number.parseFloat(r[4]),o=(Number.parseFloat(r[1])%360+360)%360,a=k(Number.parseFloat(r[2]),0,100),s=k(Number.parseFloat(r[3]),0,100),l=k(Number.isNaN(t)?1:t,0,1);return[o,a,s,l]}return null},b.get.hwb=function(e){if(!e)return null;const n=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,r=e.match(n);if(r){const t=Number.parseFloat(r[4]),o=(Number.parseFloat(r[1])%360+360)%360,a=k(Number.parseFloat(r[2]),0,100),s=k(Number.parseFloat(r[3]),0,100),l=k(Number.isNaN(t)?1:t,0,1);return[o,a,s,l]}return null},b.to.hex=function(...e){return"#"+j(e[0])+j(e[1])+j(e[2])+(e[3]<1?j(Math.round(e[3]*255)):"")},b.to.rgb=function(...e){return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},b.to.rgb.percent=function(...e){const n=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),t=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+n+"%, "+r+"%, "+t+"%)":"rgba("+n+"%, "+r+"%, "+t+"%, "+e[3]+")"},b.to.hsl=function(...e){return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},b.to.hwb=function(...e){let n="";return e.length>=4&&e[3]!==1&&(n=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+n+")"},b.to.keyword=function(...e){return G[e.slice(0,3)]};function k(e,n,r){return Math.min(Math.max(n,e),r)}function j(e){const n=Math.round(e).toString(16).toUpperCase();return n.length<2?"0"+n:n}const q={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in q)Object.freeze(q[e]);const A=Object.freeze(q),K={};for(const e of Object.keys(A))K[A[e]]=e;const c={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},oklab:{channels:3,labels:["okl","oka","okb"]},lch:{channels:3,labels:"lch"},oklch:{channels:3,labels:["okl","okc","okh"]},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}},y=(6/29)**3;function M(e){const n=e>.0031308?1.055*e**.4166666666666667-.055:e*12.92;return Math.min(Math.max(0,n),1)}function x(e){return e>.04045?((e+.055)/1.055)**2.4:e/12.92}for(const e of Object.keys(c)){if(!("channels"in c[e]))throw new Error("missing channels property: "+e);if(!("labels"in c[e]))throw new Error("missing channel labels property: "+e);if(c[e].labels.length!==c[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:n,labels:r}=c[e];delete c[e].channels,delete c[e].labels,Object.defineProperty(c[e],"channels",{value:n}),Object.defineProperty(c[e],"labels",{value:r})}c.rgb.hsl=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.min(n,r,t),a=Math.max(n,r,t),s=a-o;let l,i;switch(a){case o:{l=0;break}case n:{l=(r-t)/s;break}case r:{l=2+(t-n)/s;break}case t:{l=4+(n-r)/s;break}}l=Math.min(l*60,360),l<0&&(l+=360);const u=(o+a)/2;return a===o?i=0:u<=.5?i=s/(a+o):i=s/(2-a-o),[l,i*100,u*100]},c.rgb.hsv=function(e){let n,r,t,o,a;const s=e[0]/255,l=e[1]/255,i=e[2]/255,u=Math.max(s,l,i),m=u-Math.min(s,l,i),p=function(ne){return(u-ne)/6/m+1/2};if(m===0)o=0,a=0;else{switch(a=m/u,n=p(s),r=p(l),t=p(i),u){case s:{o=t-r;break}case l:{o=1/3+n-t;break}case i:{o=2/3+r-n;break}}o<0?o+=1:o>1&&(o-=1)}return[o*360,a*100,u*100]},c.rgb.hwb=function(e){const n=e[0],r=e[1];let t=e[2];const o=c.rgb.hsl(e)[0],a=1/255*Math.min(n,Math.min(r,t));return t=1-1/255*Math.max(n,Math.max(r,t)),[o,a*100,t*100]},c.rgb.oklab=function(e){const n=x(e[0]/255),r=x(e[1]/255),t=x(e[2]/255),o=Math.cbrt(.4122214708*n+.5363325363*r+.0514459929*t),a=Math.cbrt(.2119034982*n+.6806995451*r+.1073969566*t),s=Math.cbrt(.0883024619*n+.2817188376*r+.6299787005*t),l=.2104542553*o+.793617785*a-.0040720468*s,i=1.9779984951*o-2.428592205*a+.4505937099*s,u=.0259040371*o+.7827717662*a-.808675766*s;return[l*100,i*100,u*100]},c.rgb.cmyk=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.min(1-n,1-r,1-t),a=(1-n-o)/(1-o)||0,s=(1-r-o)/(1-o)||0,l=(1-t-o)/(1-o)||0;return[a*100,s*100,l*100,o*100]};function ye(e,n){return(e[0]-n[0])**2+(e[1]-n[1])**2+(e[2]-n[2])**2}c.rgb.keyword=function(e){const n=K[e];if(n)return n;let r=Number.POSITIVE_INFINITY,t;for(const o of Object.keys(A)){const a=A[o],s=ye(e,a);sy?r**(1/3):7.787*r+16/116,t=t>y?t**(1/3):7.787*t+16/116,o=o>y?o**(1/3):7.787*o+16/116;const a=116*t-16,s=500*(r-t),l=200*(t-o);return[a,s,l]},c.hsl.rgb=function(e){const n=e[0]/360,r=e[1]/100,t=e[2]/100;let o,a;if(r===0)return a=t*255,[a,a,a];const s=t<.5?t*(1+r):t+r-t*r,l=2*t-s,i=[0,0,0];for(let u=0;u<3;u++)o=n+1/3*-(u-1),o<0&&o++,o>1&&o--,6*o<1?a=l+(s-l)*6*o:2*o<1?a=s:3*o<2?a=l+(s-l)*(2/3-o)*6:a=l,i[u]=a*255;return i},c.hsl.hsv=function(e){const n=e[0];let r=e[1]/100,t=e[2]/100,o=r;const a=Math.max(t,.01);t*=2,r*=t<=1?t:2-t,o*=a<=1?a:2-a;const s=(t+r)/2,l=t===0?2*o/(a+o):2*r/(t+r);return[n,l*100,s*100]},c.hsv.rgb=function(e){const n=e[0]/60,r=e[1]/100;let t=e[2]/100;const o=Math.floor(n)%6,a=n-Math.floor(n),s=255*t*(1-r),l=255*t*(1-r*a),i=255*t*(1-r*(1-a));switch(t*=255,o){case 0:return[t,i,s];case 1:return[l,t,s];case 2:return[s,t,i];case 3:return[s,l,t];case 4:return[i,s,t];case 5:return[t,s,l]}},c.hsv.hsl=function(e){const n=e[0],r=e[1]/100,t=e[2]/100,o=Math.max(t,.01);let a,s;s=(2-r)*t;const l=(2-r)*o;return a=r*o,a/=l<=1?l:2-l,a=a||0,s/=2,[n,a*100,s*100]},c.hwb.rgb=function(e){const n=e[0]/360;let r=e[1]/100,t=e[2]/100;const o=r+t;let a;o>1&&(r/=o,t/=o);const s=Math.floor(6*n),l=1-t;a=6*n-s,(s&1)!==0&&(a=1-a);const i=r+a*(l-r);let u,m,p;switch(s){default:case 6:case 0:{u=l,m=i,p=r;break}case 1:{u=i,m=l,p=r;break}case 2:{u=r,m=l,p=i;break}case 3:{u=r,m=i,p=l;break}case 4:{u=i,m=r,p=l;break}case 5:{u=l,m=r,p=i;break}}return[u*255,m*255,p*255]},c.cmyk.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=e[3]/100,a=1-Math.min(1,n*(1-o)+o),s=1-Math.min(1,r*(1-o)+o),l=1-Math.min(1,t*(1-o)+o);return[a*255,s*255,l*255]},c.xyz.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100;let o,a,s;return o=n*3.2404542+r*-1.5371385+t*-.4985314,a=n*-.969266+r*1.8760108+t*.041556,s=n*.0556434+r*-.2040259+t*1.0572252,o=M(o),a=M(a),s=M(s),[o*255,a*255,s*255]},c.xyz.lab=function(e){let n=e[0],r=e[1],t=e[2];n/=95.047,r/=100,t/=108.883,n=n>y?n**(1/3):7.787*n+16/116,r=r>y?r**(1/3):7.787*r+16/116,t=t>y?t**(1/3):7.787*t+16/116;const o=116*r-16,a=500*(n-r),s=200*(r-t);return[o,a,s]},c.xyz.oklab=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=Math.cbrt(.8189330101*n+.3618667424*r-.1288597137*t),a=Math.cbrt(.0329845436*n+.9293118715*r+.0361456387*t),s=Math.cbrt(.0482003018*n+.2643662691*r+.633851707*t),l=.2104542553*o+.793617785*a-.0040720468*s,i=1.9779984951*o-2.428592205*a+.4505937099*s,u=.0259040371*o+.7827717662*a-.808675766*s;return[l*100,i*100,u*100]},c.oklab.oklch=function(e){return c.lab.lch(e)},c.oklab.xyz=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=(.999999998*n+.396337792*r+.215803758*t)**3,a=(1.000000008*n-.105561342*r-.063854175*t)**3,s=(1.000000055*n-.089484182*r-1.291485538*t)**3,l=1.227013851*o-.55779998*a+.281256149*s,i=-.040580178*o+1.11225687*a-.071676679*s,u=-.076381285*o-.421481978*a+1.58616322*s;return[l*100,i*100,u*100]},c.oklab.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=(n+.3963377774*r+.2158037573*t)**3,a=(n-.1055613458*r-.0638541728*t)**3,s=(n-.0894841775*r-1.291485548*t)**3,l=M(4.0767416621*o-3.3077115913*a+.2309699292*s),i=M(-1.2684380046*o+2.6097574011*a-.3413193965*s),u=M(-.0041960863*o-.7034186147*a+1.707614701*s);return[l*255,i*255,u*255]},c.oklch.oklab=function(e){return c.lch.lab(e)},c.lab.xyz=function(e){const n=e[0],r=e[1],t=e[2];let o,a,s;a=(n+16)/116,o=r/500+a,s=a-t/200;const l=a**3,i=o**3,u=s**3;return a=l>y?l:(a-16/116)/7.787,o=i>y?i:(o-16/116)/7.787,s=u>y?u:(s-16/116)/7.787,o*=95.047,a*=100,s*=108.883,[o,a,s]},c.lab.lch=function(e){const n=e[0],r=e[1],t=e[2];let o;o=Math.atan2(t,r)*360/2/Math.PI,o<0&&(o+=360);const a=Math.sqrt(r*r+t*t);return[n,a,o]},c.lch.lab=function(e){const n=e[0],r=e[1],t=e[2]/360*2*Math.PI,o=r*Math.cos(t),a=r*Math.sin(t);return[n,o,a]},c.rgb.ansi16=function(e,n=null){const[r,t,o]=e;let a=n===null?c.rgb.hsv(e)[2]:n;if(a=Math.round(a/50),a===0)return 30;let s=30+(Math.round(o/255)<<2|Math.round(t/255)<<1|Math.round(r/255));return a===2&&(s+=60),s},c.hsv.ansi16=function(e){return c.rgb.ansi16(c.hsv.rgb(e),e[2])},c.rgb.ansi256=function(e){const n=e[0],r=e[1],t=e[2];return n>>4===r>>4&&r>>4===t>>4?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(t/255*5)},c.ansi16.rgb=function(e){e=e[0];let n=e%10;if(n===0||n===7)return e>50&&(n+=3.5),n=n/10.5*255,[n,n,n];const r=(Math.trunc(e>50)+1)*.5,t=(n&1)*r*255,o=(n>>1&1)*r*255,a=(n>>2&1)*r*255;return[t,o,a]},c.ansi256.rgb=function(e){if(e=e[0],e>=232){const a=(e-232)*10+8;return[a,a,a]}e-=16;let n;const r=Math.floor(e/36)/5*255,t=Math.floor((n=e%36)/6)/5*255,o=n%6/5*255;return[r,t,o]},c.rgb.hex=function(e){const n=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".slice(n.length)+n},c.hex.rgb=function(e){const n=e.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!n)return[0,0,0];let r=n[0];n[0].length===3&&(r=[...r].map(l=>l+l).join(""));const t=Number.parseInt(r,16),o=t>>16&255,a=t>>8&255,s=t&255;return[o,a,s]},c.rgb.hcg=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.max(Math.max(n,r),t),a=Math.min(Math.min(n,r),t),s=o-a;let l;const i=s<1?a/(1-s):0;return s<=0?l=0:o===n?l=(r-t)/s%6:o===r?l=2+(t-n)/s:l=4+(n-r)/s,l/=6,l%=1,[l*360,s*100,i*100]},c.hsl.hcg=function(e){const n=e[1]/100,r=e[2]/100,t=r<.5?2*n*r:2*n*(1-r);let o=0;return t<1&&(o=(r-.5*t)/(1-t)),[e[0],t*100,o*100]},c.hsv.hcg=function(e){const n=e[1]/100,r=e[2]/100,t=n*r;let o=0;return t<1&&(o=(r-t)/(1-t)),[e[0],t*100,o*100]},c.hcg.rgb=function(e){const n=e[0]/360,r=e[1]/100,t=e[2]/100;if(r===0)return[t*255,t*255,t*255];const o=[0,0,0],a=n%1*6,s=a%1,l=1-s;let i=0;switch(Math.floor(a)){case 0:{o[0]=1,o[1]=s,o[2]=0;break}case 1:{o[0]=l,o[1]=1,o[2]=0;break}case 2:{o[0]=0,o[1]=1,o[2]=s;break}case 3:{o[0]=0,o[1]=l,o[2]=1;break}case 4:{o[0]=s,o[1]=0,o[2]=1;break}default:o[0]=1,o[1]=0,o[2]=l}return i=(1-r)*t,[(r*o[0]+i)*255,(r*o[1]+i)*255,(r*o[2]+i)*255]},c.hcg.hsv=function(e){const n=e[1]/100,r=e[2]/100,t=n+r*(1-n);let o=0;return t>0&&(o=n/t),[e[0],o*100,t*100]},c.hcg.hsl=function(e){const n=e[1]/100,r=e[2]/100*(1-n)+.5*n;let t=0;return r>0&&r<.5?t=n/(2*r):r>=.5&&r<1&&(t=n/(2*(1-r))),[e[0],t*100,r*100]},c.hcg.hwb=function(e){const n=e[1]/100,r=e[2]/100,t=n+r*(1-n);return[e[0],(t-n)*100,(1-t)*100]},c.hwb.hcg=function(e){const n=e[1]/100,r=1-e[2]/100,t=r-n;let o=0;return t<1&&(o=(r-t)/(1-t)),[e[0],t*100,o*100]},c.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},c.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},c.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},c.gray.hsl=function(e){return[0,0,e[0]]},c.gray.hsv=c.gray.hsl,c.gray.hwb=function(e){return[0,100,e[0]]},c.gray.cmyk=function(e){return[0,0,0,e[0]]},c.gray.lab=function(e){return[e[0],0,0]},c.gray.hex=function(e){const n=Math.round(e[0]/100*255)&255,r=((n<<16)+(n<<8)+n).toString(16).toUpperCase();return"000000".slice(r.length)+r},c.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};function we(){const e={},n=Object.keys(c);for(let{length:r}=n,t=0;t0;){const t=r.pop(),o=Object.keys(c[t]);for(let{length:a}=o,s=0;s1&&(r=t),e(r))};return"conversion"in e&&(n.conversion=e.conversion),n}function Oe(e){const n=function(...r){const t=r[0];if(t==null)return t;t.length>1&&(r=t);const o=e(r);if(typeof o=="object")for(let{length:a}=o,s=0;s0){this.model=n||"rgb",t=f[this.model].channels;const o=Array.prototype.slice.call(e,0,t);this.color=z(o,t),this.valpha=typeof e[t]=="number"?e[t]:1}else if(typeof e=="number")this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;const o=Object.keys(e);"alpha"in e&&(o.splice(o.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);const a=o.sort().join("");if(!(a in F))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=F[a];const{labels:s}=f[this.model],l=[];for(r=0;r(e%360+360)%360),saturationl:h("hsl",1,g(100)),lightness:h("hsl",2,g(100)),saturationv:h("hsv",1,g(100)),value:h("hsv",2,g(100)),chroma:h("hcg",1,g(100)),gray:h("hcg",2,g(100)),white:h("hwb",1,g(100)),wblack:h("hwb",2,g(100)),cyan:h("cmyk",0,g(100)),magenta:h("cmyk",1,g(100)),yellow:h("cmyk",2,g(100)),black:h("cmyk",3,g(100)),x:h("xyz",0,g(95.047)),y:h("xyz",1,g(100)),z:h("xyz",2,g(108.833)),l:h("lab",0,g(100)),a:h("lab",1),b:h("lab",2),keyword(e){return e!==void 0?new d(e):f[this.model].keyword(this.color)},hex(e){return e!==void 0?new d(e):b.to.hex(...this.rgb().round().color)},hexa(e){if(e!==void 0)return new d(e);const n=this.rgb().round().color;let r=Math.round(this.valpha*255).toString(16).toUpperCase();return r.length===1&&(r="0"+r),b.to.hex(...n)+r},rgbNumber(){const e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity(){const e=this.rgb().color,n=[];for(const[r,t]of e.entries()){const o=t/255;n[r]=o<=.04045?o/12.92:((o+.055)/1.055)**2.4}return .2126*n[0]+.7152*n[1]+.0722*n[2]},contrast(e){const n=this.luminosity(),r=e.luminosity();return n>r?(n+.05)/(r+.05):(r+.05)/(n+.05)},level(e){const n=this.contrast(e);return n>=7?"AAA":n>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(e[0]*2126+e[1]*7152+e[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let n=0;n<3;n++)e.color[n]=255-e.color[n];return e},lighten(e){const n=this.hsl();return n.color[2]+=n.color[2]*e,n},darken(e){const n=this.hsl();return n.color[2]-=n.color[2]*e,n},saturate(e){const n=this.hsl();return n.color[1]+=n.color[1]*e,n},desaturate(e){const n=this.hsl();return n.color[1]-=n.color[1]*e,n},whiten(e){const n=this.hwb();return n.color[1]+=n.color[1]*e,n},blacken(e){const n=this.hwb();return n.color[2]+=n.color[2]*e,n},grayscale(){const e=this.rgb().color,n=e[0]*.3+e[1]*.59+e[2]*.11;return d.rgb(n,n,n)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const n=this.hsl();let r=n.color[0];return r=(r+e)%360,r=r<0?360+r:r,n.color[0]=r,n},mix(e,n){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const r=e.rgb(),t=this.rgb(),o=n===void 0?.5:n,a=2*o-1,s=r.alpha()-t.alpha(),l=((a*s===-1?a:(a+s)/(1+a*s))+1)/2,i=1-l;return d.rgb(l*r.red()+i*t.red(),l*r.green()+i*t.green(),l*r.blue()+i*t.blue(),r.alpha()*o+t.alpha()*(1-o))}};for(const e of Object.keys(f)){if(Q.includes(e))continue;const{channels:n}=f[e];d.prototype[e]=function(...r){return this.model===e?new d(this):r.length>0?new d(r,e):new d([...Ie(f[this.model][e].raw(this.color)),this.valpha],e)},d[e]=function(...r){let t=r[0];return typeof t=="number"&&(t=z(r,n)),new d(t,e)}}function je(e,n){return Number(e.toFixed(n))}function Le(e){return function(n){return je(n,e)}}function h(e,n,r){e=Array.isArray(e)?e:[e];for(const t of e)(S[t]||=[])[n]=r;return e=e[0],function(t){let o;return t!==void 0?(r&&(t=r(t)),o=this[e](),o.color[n]=t,o):(o=this[e]().color[n],r&&(o=r(o)),o)}}function g(e){return function(n){return Math.max(0,Math.min(e,n))}}function Ie(e){return Array.isArray(e)?e:[e]}function z(e,n){for(let r=0;r.6}function Fe(e,n){const r=qe(n),t=Se(n,r?e:"#ffffff",66);let o=_(e,t);const a=Ee()?5.6:3.2;let s=0,l=e;const i=(r?-100:100)/255;for(;o(a/=255,a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4))),[r,t,o]=n;return .2126*r+.7152*t+.0722*o}function _(e,n){const r=$(e)+.05,t=$(n)+.05;return Math.max(r,t)/Math.min(r,t)}function ze(e){return new d(e).rgb().array()}function $e(e){const n=new d(e).hsl();return{h:n.color[0],s:n.color[1],l:n.color[2]}}function _e(e){return new d(e).hex()}const v=[],Pe={id:"system-tags",displayName:()=>"",iconSvgInline:()=>"",enabled({nodes:e}){return e.length===1},async exec(){return null},async renderInline({nodes:e}){return e.length!==1||!e[0]?null:await X(e[0])},order:0};O("systemtags:node:updated",De),O("systemtags:tag:created",Te),O("systemtags:tag:deleted",Ve),O("systemtags:tag:updated",Re);async function De(e){const n=await X(e),r=document.querySelectorAll(`[data-systemtags-fileid="${e.id}"]`);for(const t of r)t.replaceWith(n)}function Te(e){v.push(e)}function Ve(e){v.splice(v.findIndex(n=>n.id===e.id),1)}function Re(e){const n=v.findIndex(r=>r.id===e.id);n!==-1&&(v[n]=e),Ue(e)}function Ue(e){document.querySelectorAll(`[data-systemtag-name="${e.displayName}"]`).forEach(n=>{n.style.setProperty("--systemtag-color",`#${e.color}`)})}function L(e,n=!1){const r=document.createElement("li");r.classList.add("files-list__system-tag"),r.setAttribute("data-systemtag-name",e),r.textContent=e;const t=v.find(o=>o.displayName===e);if(t?.color){const o=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||(Ce()?"000000":"ffffff"),a=Fe(`#${t.color}`,`#${o}`);r.style.setProperty("--systemtag-color",a),r.setAttribute("data-systemtag-color","true")}return n&&r.classList.add("files-list__system-tag--more"),r}async function X(e){const n=ge(e),r=document.createElement("div");if(r.setAttribute("data-systemtags-fileid",e.id||""),n.length>0){const t=document.createElement("ul");if(t.classList.add("files-list__system-tags"),t.setAttribute("aria-label",w("files","Assigned collaborative tags")),r.appendChild(t),v.length===0)try{v.push(...await W())}catch(o){be.error("Failed to fetch tags",{error:o})}if(t.append(L(n[0])),n.length===2)t.append(L(n[1]));else if(n.length>1){const o=L("+"+(n.length-1),!0);o.setAttribute("title",n.slice(1).join(", ")),o.setAttribute("aria-hidden","true"),o.setAttribute("role","presentation"),t.append(o);for(const a of n.slice(1)){const s=L(a);s.classList.add("hidden-visually"),t.append(s)}}}return r}const I="/systemtags",He=se();function Be(e){return` +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/SystemTagPicker-EcQCUDHG.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs'),window.OC.filePath('', '', 'dist/NcCheckboxRadioSwitch-D0gFwEVl-CQwJiKOs.chunk.css'),window.OC.filePath('', '', 'dist/NcChip-CrVOU2RM-TQyHvx90.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-TGZB0t_n.chunk.mjs'),window.OC.filePath('', '', 'dist/PencilOutline-DdQinVMt.chunk.css'),window.OC.filePath('', '', 'dist/NcChip-CrVOU2RM-Som-mR4B.chunk.css'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-BfjxNgsx-DQQhcX1Z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'),window.OC.filePath('', '', 'dist/Plus-BsxGg9Cm.chunk.mjs'),window.OC.filePath('', '', 'dist/Plus-DoZPzs7J.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/api-7RyG6Inm.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CXHO4UEV.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs'),window.OC.filePath('', '', 'dist/NcPasswordField-BOLzDHBJ-DxPSRxK-.chunk.css'),window.OC.filePath('', '', 'dist/dav-C3Vmpmsl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DuirWb3a.chunk.mjs'),window.OC.filePath('', '', 'dist/folder-29HuacU_-CQFyGatl.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Dpj4ddZx.chunk.mjs'),window.OC.filePath('', '', 'dist/systemtags-SystemTagPicker-r37hCiyq.chunk.css')])))=>i.map(i=>d[i]); +import{c as re,g as te,V as oe,D as ae,b as C}from"./index-Dpj4ddZx.chunk.mjs";import{g as se,e as R,f as le,r as ie,a as ce,b as ue,c as he}from"./dav-C3Vmpmsl.chunk.mjs";import{i as de,_ as U}from"./index-BgmsSgl5.chunk.mjs";import{P,b as H,F as D}from"./folder-29HuacU_-CQFyGatl.chunk.mjs";import{t as w}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{s as B}from"./index-Bos-XXa5.chunk.mjs";import{a as J}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{s as O,a as Z}from"./index-DqIuD5e7.chunk.mjs";import{e as ge,f as W,l as be}from"./api-7RyG6Inm.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-DuirWb3a.chunk.mjs";import"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";import"./index-CPwHjAPR.chunk.mjs";import"./index-CXHO4UEV.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";const Y='';async function T({nodes:e}){const n=await B(J(()=>U(()=>import("./SystemTagPicker-EcQCUDHG.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url)),{nodes:e});return Array(e.length).fill(n)}const fe={id:"systemtags:bulk",displayName:()=>w("systemtags","Manage tags"),iconSvgInline:()=>Y,enabled({nodes:e}){return de()||e.length===0||e.some(n=>!n.isDavResource)?!1:!e.some(n=>(n.permissions&P.UPDATE)===0)},async exec(e){const[n]=await T(e);return n},execBatch:T,hotkey:{description:w("systemtags","Manage tags"),key:"t"}},me='';function pe(){re({id:"systemtags",order:20,displayName(){return w("systemtags","Add tags")},enabled(){return!0},iconSvgInline(){return me},onClick({node:e}){return B(J(()=>U(()=>import("./SystemTagPicker-EcQCUDHG.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40]),import.meta.url)),{nodes:[e]})}})}const E={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in E)Object.freeze(E[e]);const N=Object.freeze(E),G=Object.create(null);for(const e in N)Object.hasOwn(N,e)&&(G[N[e]]=e);const b={to:{},get:{}};b.get=function(e){const n=e.slice(0,3).toLowerCase();let r,t;switch(n){case"hsl":{r=b.get.hsl(e),t="hsl";break}case"hwb":{r=b.get.hwb(e),t="hwb";break}default:{r=b.get.rgb(e),t="rgb";break}}return r?{model:t,value:r}:null},b.get.rgb=function(e){if(!e)return null;const n=/^#([a-f\d]{3,4})$/i,r=/^#([a-f\d]{6})([a-f\d]{2})?$/i,t=/^rgba?\(\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)(?=[\s,])\s*(?:,\s*)?([+-]?(?:\d*\.)?\d+(?:e\d+)?)\s*(?:[\s,|/]\s*([+-]?(?:\d*\.)?\d+(?:e\d+)?)(%?)\s*)?\)$/i,o=/^rgba?\(\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[\s,|/]\s*([+-]?[\d.]+)(%?)\s*)?\)$/i,a=/^(\w+)$/;let s=[0,0,0,1],l,i,u;if(l=e.match(r)){for(u=l[2],l=l[1],i=0;i<3;i++){const m=i*2;s[i]=Number.parseInt(l.slice(m,m+2),16)}u&&(s[3]=Number.parseInt(u,16)/255)}else if(l=e.match(n)){for(l=l[1],u=l[3],i=0;i<3;i++)s[i]=Number.parseInt(l[i]+l[i],16);u&&(s[3]=Number.parseInt(u+u,16)/255)}else if(l=e.match(t)){for(i=0;i<3;i++)s[i]=Number.parseFloat(l[i+1]);l[4]&&(s[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else if(l=e.match(o)){for(i=0;i<3;i++)s[i]=Math.round(Number.parseFloat(l[i+1])*2.55);l[4]&&(s[3]=l[5]?Number.parseFloat(l[4])*.01:Number.parseFloat(l[4]))}else return(l=e.toLowerCase().match(a))?l[1]==="transparent"?[0,0,0,0]:Object.hasOwn(N,l[1])?(s=N[l[1]].slice(),s[3]=1,s):null:null;for(i=0;i<3;i++)s[i]=k(s[i],0,255);return s[3]=k(s[3],0,1),s},b.get.hsl=function(e){if(!e)return null;const n=/^hsla?\(\s*([+-]?(?:\d{0,3}\.)?\d+)(?:deg)?\s*,?\s*([+-]?[\d.]+)%\s*,?\s*([+-]?[\d.]+)%\s*(?:[,|/]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,r=e.match(n);if(r){const t=Number.parseFloat(r[4]),o=(Number.parseFloat(r[1])%360+360)%360,a=k(Number.parseFloat(r[2]),0,100),s=k(Number.parseFloat(r[3]),0,100),l=k(Number.isNaN(t)?1:t,0,1);return[o,a,s,l]}return null},b.get.hwb=function(e){if(!e)return null;const n=/^hwb\(\s*([+-]?\d{0,3}(?:\.\d+)?)(?:deg)?\s*[\s,]\s*([+-]?[\d.]+)%\s*[\s,]\s*([+-]?[\d.]+)%\s*(?:[\s,]\s*([+-]?(?=\.\d|\d)(?:0|[1-9]\d*)?(?:\.\d*)?(?:e[+-]?\d+)?)\s*)?\)$/i,r=e.match(n);if(r){const t=Number.parseFloat(r[4]),o=(Number.parseFloat(r[1])%360+360)%360,a=k(Number.parseFloat(r[2]),0,100),s=k(Number.parseFloat(r[3]),0,100),l=k(Number.isNaN(t)?1:t,0,1);return[o,a,s,l]}return null},b.to.hex=function(...e){return"#"+j(e[0])+j(e[1])+j(e[2])+(e[3]<1?j(Math.round(e[3]*255)):"")},b.to.rgb=function(...e){return e.length<4||e[3]===1?"rgb("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+")":"rgba("+Math.round(e[0])+", "+Math.round(e[1])+", "+Math.round(e[2])+", "+e[3]+")"},b.to.rgb.percent=function(...e){const n=Math.round(e[0]/255*100),r=Math.round(e[1]/255*100),t=Math.round(e[2]/255*100);return e.length<4||e[3]===1?"rgb("+n+"%, "+r+"%, "+t+"%)":"rgba("+n+"%, "+r+"%, "+t+"%, "+e[3]+")"},b.to.hsl=function(...e){return e.length<4||e[3]===1?"hsl("+e[0]+", "+e[1]+"%, "+e[2]+"%)":"hsla("+e[0]+", "+e[1]+"%, "+e[2]+"%, "+e[3]+")"},b.to.hwb=function(...e){let n="";return e.length>=4&&e[3]!==1&&(n=", "+e[3]),"hwb("+e[0]+", "+e[1]+"%, "+e[2]+"%"+n+")"},b.to.keyword=function(...e){return G[e.slice(0,3)]};function k(e,n,r){return Math.min(Math.max(n,e),r)}function j(e){const n=Math.round(e).toString(16).toUpperCase();return n.length<2?"0"+n:n}const q={aliceblue:[240,248,255],antiquewhite:[250,235,215],aqua:[0,255,255],aquamarine:[127,255,212],azure:[240,255,255],beige:[245,245,220],bisque:[255,228,196],black:[0,0,0],blanchedalmond:[255,235,205],blue:[0,0,255],blueviolet:[138,43,226],brown:[165,42,42],burlywood:[222,184,135],cadetblue:[95,158,160],chartreuse:[127,255,0],chocolate:[210,105,30],coral:[255,127,80],cornflowerblue:[100,149,237],cornsilk:[255,248,220],crimson:[220,20,60],cyan:[0,255,255],darkblue:[0,0,139],darkcyan:[0,139,139],darkgoldenrod:[184,134,11],darkgray:[169,169,169],darkgreen:[0,100,0],darkgrey:[169,169,169],darkkhaki:[189,183,107],darkmagenta:[139,0,139],darkolivegreen:[85,107,47],darkorange:[255,140,0],darkorchid:[153,50,204],darkred:[139,0,0],darksalmon:[233,150,122],darkseagreen:[143,188,143],darkslateblue:[72,61,139],darkslategray:[47,79,79],darkslategrey:[47,79,79],darkturquoise:[0,206,209],darkviolet:[148,0,211],deeppink:[255,20,147],deepskyblue:[0,191,255],dimgray:[105,105,105],dimgrey:[105,105,105],dodgerblue:[30,144,255],firebrick:[178,34,34],floralwhite:[255,250,240],forestgreen:[34,139,34],fuchsia:[255,0,255],gainsboro:[220,220,220],ghostwhite:[248,248,255],gold:[255,215,0],goldenrod:[218,165,32],gray:[128,128,128],green:[0,128,0],greenyellow:[173,255,47],grey:[128,128,128],honeydew:[240,255,240],hotpink:[255,105,180],indianred:[205,92,92],indigo:[75,0,130],ivory:[255,255,240],khaki:[240,230,140],lavender:[230,230,250],lavenderblush:[255,240,245],lawngreen:[124,252,0],lemonchiffon:[255,250,205],lightblue:[173,216,230],lightcoral:[240,128,128],lightcyan:[224,255,255],lightgoldenrodyellow:[250,250,210],lightgray:[211,211,211],lightgreen:[144,238,144],lightgrey:[211,211,211],lightpink:[255,182,193],lightsalmon:[255,160,122],lightseagreen:[32,178,170],lightskyblue:[135,206,250],lightslategray:[119,136,153],lightslategrey:[119,136,153],lightsteelblue:[176,196,222],lightyellow:[255,255,224],lime:[0,255,0],limegreen:[50,205,50],linen:[250,240,230],magenta:[255,0,255],maroon:[128,0,0],mediumaquamarine:[102,205,170],mediumblue:[0,0,205],mediumorchid:[186,85,211],mediumpurple:[147,112,219],mediumseagreen:[60,179,113],mediumslateblue:[123,104,238],mediumspringgreen:[0,250,154],mediumturquoise:[72,209,204],mediumvioletred:[199,21,133],midnightblue:[25,25,112],mintcream:[245,255,250],mistyrose:[255,228,225],moccasin:[255,228,181],navajowhite:[255,222,173],navy:[0,0,128],oldlace:[253,245,230],olive:[128,128,0],olivedrab:[107,142,35],orange:[255,165,0],orangered:[255,69,0],orchid:[218,112,214],palegoldenrod:[238,232,170],palegreen:[152,251,152],paleturquoise:[175,238,238],palevioletred:[219,112,147],papayawhip:[255,239,213],peachpuff:[255,218,185],peru:[205,133,63],pink:[255,192,203],plum:[221,160,221],powderblue:[176,224,230],purple:[128,0,128],rebeccapurple:[102,51,153],red:[255,0,0],rosybrown:[188,143,143],royalblue:[65,105,225],saddlebrown:[139,69,19],salmon:[250,128,114],sandybrown:[244,164,96],seagreen:[46,139,87],seashell:[255,245,238],sienna:[160,82,45],silver:[192,192,192],skyblue:[135,206,235],slateblue:[106,90,205],slategray:[112,128,144],slategrey:[112,128,144],snow:[255,250,250],springgreen:[0,255,127],steelblue:[70,130,180],tan:[210,180,140],teal:[0,128,128],thistle:[216,191,216],tomato:[255,99,71],turquoise:[64,224,208],violet:[238,130,238],wheat:[245,222,179],white:[255,255,255],whitesmoke:[245,245,245],yellow:[255,255,0],yellowgreen:[154,205,50]};for(const e in q)Object.freeze(q[e]);const A=Object.freeze(q),K={};for(const e of Object.keys(A))K[A[e]]=e;const c={rgb:{channels:3,labels:"rgb"},hsl:{channels:3,labels:"hsl"},hsv:{channels:3,labels:"hsv"},hwb:{channels:3,labels:"hwb"},cmyk:{channels:4,labels:"cmyk"},xyz:{channels:3,labels:"xyz"},lab:{channels:3,labels:"lab"},oklab:{channels:3,labels:["okl","oka","okb"]},lch:{channels:3,labels:"lch"},oklch:{channels:3,labels:["okl","okc","okh"]},hex:{channels:1,labels:["hex"]},keyword:{channels:1,labels:["keyword"]},ansi16:{channels:1,labels:["ansi16"]},ansi256:{channels:1,labels:["ansi256"]},hcg:{channels:3,labels:["h","c","g"]},apple:{channels:3,labels:["r16","g16","b16"]},gray:{channels:1,labels:["gray"]}},y=(6/29)**3;function M(e){const n=e>.0031308?1.055*e**.4166666666666667-.055:e*12.92;return Math.min(Math.max(0,n),1)}function x(e){return e>.04045?((e+.055)/1.055)**2.4:e/12.92}for(const e of Object.keys(c)){if(!("channels"in c[e]))throw new Error("missing channels property: "+e);if(!("labels"in c[e]))throw new Error("missing channel labels property: "+e);if(c[e].labels.length!==c[e].channels)throw new Error("channel and label counts mismatch: "+e);const{channels:n,labels:r}=c[e];delete c[e].channels,delete c[e].labels,Object.defineProperty(c[e],"channels",{value:n}),Object.defineProperty(c[e],"labels",{value:r})}c.rgb.hsl=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.min(n,r,t),a=Math.max(n,r,t),s=a-o;let l,i;switch(a){case o:{l=0;break}case n:{l=(r-t)/s;break}case r:{l=2+(t-n)/s;break}case t:{l=4+(n-r)/s;break}}l=Math.min(l*60,360),l<0&&(l+=360);const u=(o+a)/2;return a===o?i=0:u<=.5?i=s/(a+o):i=s/(2-a-o),[l,i*100,u*100]},c.rgb.hsv=function(e){let n,r,t,o,a;const s=e[0]/255,l=e[1]/255,i=e[2]/255,u=Math.max(s,l,i),m=u-Math.min(s,l,i),p=function(ne){return(u-ne)/6/m+1/2};if(m===0)o=0,a=0;else{switch(a=m/u,n=p(s),r=p(l),t=p(i),u){case s:{o=t-r;break}case l:{o=1/3+n-t;break}case i:{o=2/3+r-n;break}}o<0?o+=1:o>1&&(o-=1)}return[o*360,a*100,u*100]},c.rgb.hwb=function(e){const n=e[0],r=e[1];let t=e[2];const o=c.rgb.hsl(e)[0],a=1/255*Math.min(n,Math.min(r,t));return t=1-1/255*Math.max(n,Math.max(r,t)),[o,a*100,t*100]},c.rgb.oklab=function(e){const n=x(e[0]/255),r=x(e[1]/255),t=x(e[2]/255),o=Math.cbrt(.4122214708*n+.5363325363*r+.0514459929*t),a=Math.cbrt(.2119034982*n+.6806995451*r+.1073969566*t),s=Math.cbrt(.0883024619*n+.2817188376*r+.6299787005*t),l=.2104542553*o+.793617785*a-.0040720468*s,i=1.9779984951*o-2.428592205*a+.4505937099*s,u=.0259040371*o+.7827717662*a-.808675766*s;return[l*100,i*100,u*100]},c.rgb.cmyk=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.min(1-n,1-r,1-t),a=(1-n-o)/(1-o)||0,s=(1-r-o)/(1-o)||0,l=(1-t-o)/(1-o)||0;return[a*100,s*100,l*100,o*100]};function ye(e,n){return(e[0]-n[0])**2+(e[1]-n[1])**2+(e[2]-n[2])**2}c.rgb.keyword=function(e){const n=K[e];if(n)return n;let r=Number.POSITIVE_INFINITY,t;for(const o of Object.keys(A)){const a=A[o],s=ye(e,a);sy?r**(1/3):7.787*r+16/116,t=t>y?t**(1/3):7.787*t+16/116,o=o>y?o**(1/3):7.787*o+16/116;const a=116*t-16,s=500*(r-t),l=200*(t-o);return[a,s,l]},c.hsl.rgb=function(e){const n=e[0]/360,r=e[1]/100,t=e[2]/100;let o,a;if(r===0)return a=t*255,[a,a,a];const s=t<.5?t*(1+r):t+r-t*r,l=2*t-s,i=[0,0,0];for(let u=0;u<3;u++)o=n+1/3*-(u-1),o<0&&o++,o>1&&o--,6*o<1?a=l+(s-l)*6*o:2*o<1?a=s:3*o<2?a=l+(s-l)*(2/3-o)*6:a=l,i[u]=a*255;return i},c.hsl.hsv=function(e){const n=e[0];let r=e[1]/100,t=e[2]/100,o=r;const a=Math.max(t,.01);t*=2,r*=t<=1?t:2-t,o*=a<=1?a:2-a;const s=(t+r)/2,l=t===0?2*o/(a+o):2*r/(t+r);return[n,l*100,s*100]},c.hsv.rgb=function(e){const n=e[0]/60,r=e[1]/100;let t=e[2]/100;const o=Math.floor(n)%6,a=n-Math.floor(n),s=255*t*(1-r),l=255*t*(1-r*a),i=255*t*(1-r*(1-a));switch(t*=255,o){case 0:return[t,i,s];case 1:return[l,t,s];case 2:return[s,t,i];case 3:return[s,l,t];case 4:return[i,s,t];case 5:return[t,s,l]}},c.hsv.hsl=function(e){const n=e[0],r=e[1]/100,t=e[2]/100,o=Math.max(t,.01);let a,s;s=(2-r)*t;const l=(2-r)*o;return a=r*o,a/=l<=1?l:2-l,a=a||0,s/=2,[n,a*100,s*100]},c.hwb.rgb=function(e){const n=e[0]/360;let r=e[1]/100,t=e[2]/100;const o=r+t;let a;o>1&&(r/=o,t/=o);const s=Math.floor(6*n),l=1-t;a=6*n-s,(s&1)!==0&&(a=1-a);const i=r+a*(l-r);let u,m,p;switch(s){default:case 6:case 0:{u=l,m=i,p=r;break}case 1:{u=i,m=l,p=r;break}case 2:{u=r,m=l,p=i;break}case 3:{u=r,m=i,p=l;break}case 4:{u=i,m=r,p=l;break}case 5:{u=l,m=r,p=i;break}}return[u*255,m*255,p*255]},c.cmyk.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=e[3]/100,a=1-Math.min(1,n*(1-o)+o),s=1-Math.min(1,r*(1-o)+o),l=1-Math.min(1,t*(1-o)+o);return[a*255,s*255,l*255]},c.xyz.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100;let o,a,s;return o=n*3.2404542+r*-1.5371385+t*-.4985314,a=n*-.969266+r*1.8760108+t*.041556,s=n*.0556434+r*-.2040259+t*1.0572252,o=M(o),a=M(a),s=M(s),[o*255,a*255,s*255]},c.xyz.lab=function(e){let n=e[0],r=e[1],t=e[2];n/=95.047,r/=100,t/=108.883,n=n>y?n**(1/3):7.787*n+16/116,r=r>y?r**(1/3):7.787*r+16/116,t=t>y?t**(1/3):7.787*t+16/116;const o=116*r-16,a=500*(n-r),s=200*(r-t);return[o,a,s]},c.xyz.oklab=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=Math.cbrt(.8189330101*n+.3618667424*r-.1288597137*t),a=Math.cbrt(.0329845436*n+.9293118715*r+.0361456387*t),s=Math.cbrt(.0482003018*n+.2643662691*r+.633851707*t),l=.2104542553*o+.793617785*a-.0040720468*s,i=1.9779984951*o-2.428592205*a+.4505937099*s,u=.0259040371*o+.7827717662*a-.808675766*s;return[l*100,i*100,u*100]},c.oklab.oklch=function(e){return c.lab.lch(e)},c.oklab.xyz=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=(.999999998*n+.396337792*r+.215803758*t)**3,a=(1.000000008*n-.105561342*r-.063854175*t)**3,s=(1.000000055*n-.089484182*r-1.291485538*t)**3,l=1.227013851*o-.55779998*a+.281256149*s,i=-.040580178*o+1.11225687*a-.071676679*s,u=-.076381285*o-.421481978*a+1.58616322*s;return[l*100,i*100,u*100]},c.oklab.rgb=function(e){const n=e[0]/100,r=e[1]/100,t=e[2]/100,o=(n+.3963377774*r+.2158037573*t)**3,a=(n-.1055613458*r-.0638541728*t)**3,s=(n-.0894841775*r-1.291485548*t)**3,l=M(4.0767416621*o-3.3077115913*a+.2309699292*s),i=M(-1.2684380046*o+2.6097574011*a-.3413193965*s),u=M(-.0041960863*o-.7034186147*a+1.707614701*s);return[l*255,i*255,u*255]},c.oklch.oklab=function(e){return c.lch.lab(e)},c.lab.xyz=function(e){const n=e[0],r=e[1],t=e[2];let o,a,s;a=(n+16)/116,o=r/500+a,s=a-t/200;const l=a**3,i=o**3,u=s**3;return a=l>y?l:(a-16/116)/7.787,o=i>y?i:(o-16/116)/7.787,s=u>y?u:(s-16/116)/7.787,o*=95.047,a*=100,s*=108.883,[o,a,s]},c.lab.lch=function(e){const n=e[0],r=e[1],t=e[2];let o;o=Math.atan2(t,r)*360/2/Math.PI,o<0&&(o+=360);const a=Math.sqrt(r*r+t*t);return[n,a,o]},c.lch.lab=function(e){const n=e[0],r=e[1],t=e[2]/360*2*Math.PI,o=r*Math.cos(t),a=r*Math.sin(t);return[n,o,a]},c.rgb.ansi16=function(e,n=null){const[r,t,o]=e;let a=n===null?c.rgb.hsv(e)[2]:n;if(a=Math.round(a/50),a===0)return 30;let s=30+(Math.round(o/255)<<2|Math.round(t/255)<<1|Math.round(r/255));return a===2&&(s+=60),s},c.hsv.ansi16=function(e){return c.rgb.ansi16(c.hsv.rgb(e),e[2])},c.rgb.ansi256=function(e){const n=e[0],r=e[1],t=e[2];return n>>4===r>>4&&r>>4===t>>4?n<8?16:n>248?231:Math.round((n-8)/247*24)+232:16+36*Math.round(n/255*5)+6*Math.round(r/255*5)+Math.round(t/255*5)},c.ansi16.rgb=function(e){e=e[0];let n=e%10;if(n===0||n===7)return e>50&&(n+=3.5),n=n/10.5*255,[n,n,n];const r=(Math.trunc(e>50)+1)*.5,t=(n&1)*r*255,o=(n>>1&1)*r*255,a=(n>>2&1)*r*255;return[t,o,a]},c.ansi256.rgb=function(e){if(e=e[0],e>=232){const a=(e-232)*10+8;return[a,a,a]}e-=16;let n;const r=Math.floor(e/36)/5*255,t=Math.floor((n=e%36)/6)/5*255,o=n%6/5*255;return[r,t,o]},c.rgb.hex=function(e){const n=(((Math.round(e[0])&255)<<16)+((Math.round(e[1])&255)<<8)+(Math.round(e[2])&255)).toString(16).toUpperCase();return"000000".slice(n.length)+n},c.hex.rgb=function(e){const n=e.toString(16).match(/[a-f\d]{6}|[a-f\d]{3}/i);if(!n)return[0,0,0];let r=n[0];n[0].length===3&&(r=[...r].map(l=>l+l).join(""));const t=Number.parseInt(r,16),o=t>>16&255,a=t>>8&255,s=t&255;return[o,a,s]},c.rgb.hcg=function(e){const n=e[0]/255,r=e[1]/255,t=e[2]/255,o=Math.max(Math.max(n,r),t),a=Math.min(Math.min(n,r),t),s=o-a;let l;const i=s<1?a/(1-s):0;return s<=0?l=0:o===n?l=(r-t)/s%6:o===r?l=2+(t-n)/s:l=4+(n-r)/s,l/=6,l%=1,[l*360,s*100,i*100]},c.hsl.hcg=function(e){const n=e[1]/100,r=e[2]/100,t=r<.5?2*n*r:2*n*(1-r);let o=0;return t<1&&(o=(r-.5*t)/(1-t)),[e[0],t*100,o*100]},c.hsv.hcg=function(e){const n=e[1]/100,r=e[2]/100,t=n*r;let o=0;return t<1&&(o=(r-t)/(1-t)),[e[0],t*100,o*100]},c.hcg.rgb=function(e){const n=e[0]/360,r=e[1]/100,t=e[2]/100;if(r===0)return[t*255,t*255,t*255];const o=[0,0,0],a=n%1*6,s=a%1,l=1-s;let i=0;switch(Math.floor(a)){case 0:{o[0]=1,o[1]=s,o[2]=0;break}case 1:{o[0]=l,o[1]=1,o[2]=0;break}case 2:{o[0]=0,o[1]=1,o[2]=s;break}case 3:{o[0]=0,o[1]=l,o[2]=1;break}case 4:{o[0]=s,o[1]=0,o[2]=1;break}default:o[0]=1,o[1]=0,o[2]=l}return i=(1-r)*t,[(r*o[0]+i)*255,(r*o[1]+i)*255,(r*o[2]+i)*255]},c.hcg.hsv=function(e){const n=e[1]/100,r=e[2]/100,t=n+r*(1-n);let o=0;return t>0&&(o=n/t),[e[0],o*100,t*100]},c.hcg.hsl=function(e){const n=e[1]/100,r=e[2]/100*(1-n)+.5*n;let t=0;return r>0&&r<.5?t=n/(2*r):r>=.5&&r<1&&(t=n/(2*(1-r))),[e[0],t*100,r*100]},c.hcg.hwb=function(e){const n=e[1]/100,r=e[2]/100,t=n+r*(1-n);return[e[0],(t-n)*100,(1-t)*100]},c.hwb.hcg=function(e){const n=e[1]/100,r=1-e[2]/100,t=r-n;let o=0;return t<1&&(o=(r-t)/(1-t)),[e[0],t*100,o*100]},c.apple.rgb=function(e){return[e[0]/65535*255,e[1]/65535*255,e[2]/65535*255]},c.rgb.apple=function(e){return[e[0]/255*65535,e[1]/255*65535,e[2]/255*65535]},c.gray.rgb=function(e){return[e[0]/100*255,e[0]/100*255,e[0]/100*255]},c.gray.hsl=function(e){return[0,0,e[0]]},c.gray.hsv=c.gray.hsl,c.gray.hwb=function(e){return[0,100,e[0]]},c.gray.cmyk=function(e){return[0,0,0,e[0]]},c.gray.lab=function(e){return[e[0],0,0]},c.gray.hex=function(e){const n=Math.round(e[0]/100*255)&255,r=((n<<16)+(n<<8)+n).toString(16).toUpperCase();return"000000".slice(r.length)+r},c.rgb.gray=function(e){return[(e[0]+e[1]+e[2])/3/255*100]};function we(){const e={},n=Object.keys(c);for(let{length:r}=n,t=0;t0;){const t=r.pop(),o=Object.keys(c[t]);for(let{length:a}=o,s=0;s1&&(r=t),e(r))};return"conversion"in e&&(n.conversion=e.conversion),n}function Oe(e){const n=function(...r){const t=r[0];if(t==null)return t;t.length>1&&(r=t);const o=e(r);if(typeof o=="object")for(let{length:a}=o,s=0;s0){this.model=n||"rgb",t=f[this.model].channels;const o=Array.prototype.slice.call(e,0,t);this.color=z(o,t),this.valpha=typeof e[t]=="number"?e[t]:1}else if(typeof e=="number")this.model="rgb",this.color=[e>>16&255,e>>8&255,e&255],this.valpha=1;else{this.valpha=1;const o=Object.keys(e);"alpha"in e&&(o.splice(o.indexOf("alpha"),1),this.valpha=typeof e.alpha=="number"?e.alpha:0);const a=o.sort().join("");if(!(a in F))throw new Error("Unable to parse color from object: "+JSON.stringify(e));this.model=F[a];const{labels:s}=f[this.model],l=[];for(r=0;r(e%360+360)%360),saturationl:h("hsl",1,g(100)),lightness:h("hsl",2,g(100)),saturationv:h("hsv",1,g(100)),value:h("hsv",2,g(100)),chroma:h("hcg",1,g(100)),gray:h("hcg",2,g(100)),white:h("hwb",1,g(100)),wblack:h("hwb",2,g(100)),cyan:h("cmyk",0,g(100)),magenta:h("cmyk",1,g(100)),yellow:h("cmyk",2,g(100)),black:h("cmyk",3,g(100)),x:h("xyz",0,g(95.047)),y:h("xyz",1,g(100)),z:h("xyz",2,g(108.833)),l:h("lab",0,g(100)),a:h("lab",1),b:h("lab",2),keyword(e){return e!==void 0?new d(e):f[this.model].keyword(this.color)},hex(e){return e!==void 0?new d(e):b.to.hex(...this.rgb().round().color)},hexa(e){if(e!==void 0)return new d(e);const n=this.rgb().round().color;let r=Math.round(this.valpha*255).toString(16).toUpperCase();return r.length===1&&(r="0"+r),b.to.hex(...n)+r},rgbNumber(){const e=this.rgb().color;return(e[0]&255)<<16|(e[1]&255)<<8|e[2]&255},luminosity(){const e=this.rgb().color,n=[];for(const[r,t]of e.entries()){const o=t/255;n[r]=o<=.04045?o/12.92:((o+.055)/1.055)**2.4}return .2126*n[0]+.7152*n[1]+.0722*n[2]},contrast(e){const n=this.luminosity(),r=e.luminosity();return n>r?(n+.05)/(r+.05):(r+.05)/(n+.05)},level(e){const n=this.contrast(e);return n>=7?"AAA":n>=4.5?"AA":""},isDark(){const e=this.rgb().color;return(e[0]*2126+e[1]*7152+e[2]*722)/1e4<128},isLight(){return!this.isDark()},negate(){const e=this.rgb();for(let n=0;n<3;n++)e.color[n]=255-e.color[n];return e},lighten(e){const n=this.hsl();return n.color[2]+=n.color[2]*e,n},darken(e){const n=this.hsl();return n.color[2]-=n.color[2]*e,n},saturate(e){const n=this.hsl();return n.color[1]+=n.color[1]*e,n},desaturate(e){const n=this.hsl();return n.color[1]-=n.color[1]*e,n},whiten(e){const n=this.hwb();return n.color[1]+=n.color[1]*e,n},blacken(e){const n=this.hwb();return n.color[2]+=n.color[2]*e,n},grayscale(){const e=this.rgb().color,n=e[0]*.3+e[1]*.59+e[2]*.11;return d.rgb(n,n,n)},fade(e){return this.alpha(this.valpha-this.valpha*e)},opaquer(e){return this.alpha(this.valpha+this.valpha*e)},rotate(e){const n=this.hsl();let r=n.color[0];return r=(r+e)%360,r=r<0?360+r:r,n.color[0]=r,n},mix(e,n){if(!e||!e.rgb)throw new Error('Argument to "mix" was not a Color instance, but rather an instance of '+typeof e);const r=e.rgb(),t=this.rgb(),o=n===void 0?.5:n,a=2*o-1,s=r.alpha()-t.alpha(),l=((a*s===-1?a:(a+s)/(1+a*s))+1)/2,i=1-l;return d.rgb(l*r.red()+i*t.red(),l*r.green()+i*t.green(),l*r.blue()+i*t.blue(),r.alpha()*o+t.alpha()*(1-o))}};for(const e of Object.keys(f)){if(Q.includes(e))continue;const{channels:n}=f[e];d.prototype[e]=function(...r){return this.model===e?new d(this):r.length>0?new d(r,e):new d([...Ie(f[this.model][e].raw(this.color)),this.valpha],e)},d[e]=function(...r){let t=r[0];return typeof t=="number"&&(t=z(r,n)),new d(t,e)}}function je(e,n){return Number(e.toFixed(n))}function Le(e){return function(n){return je(n,e)}}function h(e,n,r){e=Array.isArray(e)?e:[e];for(const t of e)(S[t]||=[])[n]=r;return e=e[0],function(t){let o;return t!==void 0?(r&&(t=r(t)),o=this[e](),o.color[n]=t,o):(o=this[e]().color[n],r&&(o=r(o)),o)}}function g(e){return function(n){return Math.max(0,Math.min(e,n))}}function Ie(e){return Array.isArray(e)?e:[e]}function z(e,n){for(let r=0;r.6}function Fe(e,n){const r=qe(n),t=Se(n,r?e:"#ffffff",66);let o=_(e,t);const a=Ee()?5.6:3.2;let s=0,l=e;const i=(r?-100:100)/255;for(;o(a/=255,a<=.03928?a/12.92:Math.pow((a+.055)/1.055,2.4))),[r,t,o]=n;return .2126*r+.7152*t+.0722*o}function _(e,n){const r=$(e)+.05,t=$(n)+.05;return Math.max(r,t)/Math.min(r,t)}function ze(e){return new d(e).rgb().array()}function $e(e){const n=new d(e).hsl();return{h:n.color[0],s:n.color[1],l:n.color[2]}}function _e(e){return new d(e).hex()}const v=[],Pe={id:"system-tags",displayName:()=>"",iconSvgInline:()=>"",enabled({nodes:e}){return e.length===1},async exec(){return null},async renderInline({nodes:e}){return e.length!==1||!e[0]?null:await X(e[0])},order:0};O("systemtags:node:updated",De),O("systemtags:tag:created",Te),O("systemtags:tag:deleted",Ve),O("systemtags:tag:updated",Re);async function De(e){const n=await X(e),r=document.querySelectorAll(`[data-systemtags-fileid="${e.id}"]`);for(const t of r)t.replaceWith(n)}function Te(e){v.push(e)}function Ve(e){v.splice(v.findIndex(n=>n.id===e.id),1)}function Re(e){const n=v.findIndex(r=>r.id===e.id);n!==-1&&(v[n]=e),Ue(e)}function Ue(e){document.querySelectorAll(`[data-systemtag-name="${e.displayName}"]`).forEach(n=>{n.style.setProperty("--systemtag-color",`#${e.color}`)})}function L(e,n=!1){const r=document.createElement("li");r.classList.add("files-list__system-tag"),r.setAttribute("data-systemtag-name",e),r.textContent=e;const t=v.find(o=>o.displayName===e);if(t?.color){const o=getComputedStyle(document.body).getPropertyValue("--color-main-background").replace("#","")||(Ce()?"000000":"ffffff"),a=Fe(`#${t.color}`,`#${o}`);r.style.setProperty("--systemtag-color",a),r.setAttribute("data-systemtag-color","true")}return n&&r.classList.add("files-list__system-tag--more"),r}async function X(e){const n=ge(e),r=document.createElement("div");if(r.setAttribute("data-systemtags-fileid",e.id||""),n.length>0){const t=document.createElement("ul");if(t.classList.add("files-list__system-tags"),t.setAttribute("aria-label",w("files","Assigned collaborative tags")),r.appendChild(t),v.length===0)try{v.push(...await W())}catch(o){be.error("Failed to fetch tags",{error:o})}if(t.append(L(n[0])),n.length===2)t.append(L(n[1]));else if(n.length>1){const o=L("+"+(n.length-1),!0);o.setAttribute("title",n.slice(1).join(", ")),o.setAttribute("aria-hidden","true"),o.setAttribute("role","presentation"),t.append(o);for(const a of n.slice(1)){const s=L(a);s.classList.add("hidden-visually"),t.append(s)}}}return r}const I="/systemtags",He=se();function Be(e){return` ${ue()} diff --git a/dist/theming-settings-admin.mjs b/dist/theming-settings-admin.mjs index db6745bb78d9d..217dc3ce83776 100644 --- a/dist/theming-settings-admin.mjs +++ b/dist/theming-settings-admin.mjs @@ -1,2 +1,2 @@ -import{b as P,a0 as Q,r as b,v as $,c as _,o as p,w as g,k as v,e as m,j as C,l as B,t as y,u as e,g as U,a1 as N,a2 as Y,O as te,a3 as le,y as ne,V as L,n as k,D as ie,p as X,m as oe,Y as se,x as re,F as H,h as ue}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{l as V,a as A}from"./index-BgmsSgl5.chunk.mjs";import{N as de}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{c as T,i as R}from"./index-CPwHjAPR.chunk.mjs";import{a as x}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{t}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as w,N as M}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as O}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as me}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{N as G}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{l as D,A as ce,g as pe,r as S}from"./refreshStyles-CfUZEyVP.chunk.mjs";import{N as q,g as ge,h as Z,i as he}from"./mdi-e8YUrhPH.chunk.mjs";import{_ as fe}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{w as ee}from"./index-Bos-XXa5.chunk.mjs";import{N as z}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as ye}from"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";const ve={class:"info-note"},be=["aria-labelledby"],_e=["id"],ke={class:"info-note"},we=P({__name:"AdminSectionAppMenu",setup(l){const d=Q(),{defaultApps:a}=V("theming","adminThemingParameters"),n=V("core","apps").map(({id:r,name:s,icon:u})=>({label:s,id:r,icon:u})),i=b(a.map(r=>n.find(s=>s.id===r)).filter(Boolean));$(i,async r=>{try{await c("defaultApps",r.map(s=>s.id))}catch(s){D.error("Could not set global default apps",{error:s}),x(t("theming","Could not set global default apps"))}});const o=b(a.length>0);$(o,r=>{i.value=r?n.filter(s=>["dashboard","files"].includes(s.id)):[]});async function c(r,s){const u=w("/apps/theming/ajax/updateAppMenu");return await T.put(u,{setting:r,value:s})}return(r,s)=>(p(),_(e(G),{name:e(t)("theming","Navigation bar settings")},{default:g(()=>[v("h3",null,y(e(t)("theming","Default app")),1),v("p",ve,y(e(t)("theming","The default app is the app that is e.g. opened after login or when the logo in the menu is clicked.")),1),m(e(O),{modelValue:o.value,"onUpdate:modelValue":s[0]||(s[0]=u=>o.value=u),type:"switch"},{default:g(()=>[U(y(e(t)("theming","Use custom default app")),1)]),_:1},8,["modelValue"]),o.value?(p(),C("section",{key:0,"aria-labelledby":e(d)},[v("h4",{id:e(d)},y(e(t)("theming","Global default app")),9,_e),m(e(me),{modelValue:i.value,"onUpdate:modelValue":s[1]||(s[1]=u=>i.value=u),keepOpen:"",multiple:"",placeholder:e(t)("theming","Global default apps"),options:e(n)},null,8,["modelValue","placeholder","options"]),v("h5",null,y(e(t)("theming","Default app priority")),1),v("p",ke,y(e(t)("theming","If an app is not enabled for a user, the next app with lower priority is used.")),1),m(ce,{modelValue:i.value,"onUpdate:modelValue":s[2]||(s[2]=u=>i.value=u)},null,8,["modelValue"])],8,be)):B("",!0)]),_:1},8,["name"]))}}),Ve=A(we,[["__scopeId","data-v-a9baec70"]]);function E(l,d,a){let n=!1;const i=b(!1),o=b(!1);ee(d,async()=>{if(!i.value){if(n){n=!1;return}i.value=!0,o.value=!1;try{await Fe(N(l),N(d)),o.value=!0,window.setTimeout(()=>{o.value=!1},2e3)}finally{i.value=!1}}},{debounce:800,flush:"sync"});async function c(){i.value=!0,o.value=!1;try{const r=await Te(N(l));r&&te(a)&&!le(a)&&(a.value=r),n=!0,d.value=N(a)}finally{i.value=!1}}return{isSaving:Y(i),isSaved:Y(o),reset:c}}async function Fe(l,d){const a=w("/apps/theming/ajax/updateStylesheet");try{await T.post(a,{setting:l,value:String(d)})}catch(n){throw D.error("Failed to save changes",{error:n,setting:l,value:d}),R(n)&&n.response?.data?.data?.message&&x(n.response.data.data.message),n}}async function Te(l){const d=w("/apps/theming/ajax/undoChanges");try{const{data:a}=await T.post(d,{setting:l});return a.data.value}catch(a){if(D.error("Failed to reset theming value",{error:a,setting:l}),R(a)&&a.response?.data?.data?.message)return x(a.response.data.data.message),!1;throw a}}const I=P({__name:"TextField",props:{name:{},label:{},defaultValue:{},type:{default:"text"}},setup(l){const d=l,a=b(V("theming","adminThemingParameters")[d.name].toString()),{isSaving:n,isSaved:i,reset:o}=E(L(()=>d.name),a,L(()=>d.defaultValue));return ee(a,c=>{if(d.type==="url"&&c.includes('"'))try{const r=new URL(c);r.pathname=r.pathname.replaceAll(/"/g,"%22"),a.value=r.href}catch{return}},{debounce:600}),(c,r)=>(p(),_(e(fe),{modelValue:a.value,"onUpdate:modelValue":r[0]||(r[0]=s=>a.value=s),label:l.label,readonly:e(n),success:e(i),type:l.type,showTrailingButton:a.value!==l.defaultValue,trailingButtonIcon:l.defaultValue?"undo":"close",onTrailingButtonClick:e(o)},ne({_:2},[e(n)?{name:"icon",fn:g(()=>[m(e(q))]),key:"0"}:void 0]),1032,["modelValue","label","readonly","success","type","showTrailingButton","trailingButtonIcon","onTrailingButtonClick"]))}}),Ue=P({__name:"AdminSectionTheming",setup(l){const d=V("theming","adminThemingInfo");return(a,n)=>(p(),_(e(G),{name:e(t)("theming","Theming"),description:e(t)("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),docUrl:e(d).docUrl,"data-admin-theming-settings":""},{default:g(()=>[v("div",{class:k(a.$style.adminSectionTheming)},[m(I,{name:"name",label:e(t)("theming","Name"),defaultValue:"Nextcloud",maxlength:"250"},null,8,["label"]),m(I,{name:"url",label:e(t)("theming","Web link"),defaultValue:"https://nextcloud.com",placeholder:"https://…",type:"url",maxlength:"500"},null,8,["label"]),m(I,{name:"slogan",label:e(t)("theming","Slogan"),defaultValue:e(t)("settings","a safe home for all your data"),maxlength:"500"},null,8,["label","defaultValue"]),n[0]||(n[0]=v("hr",null,null,-1)),m(I,{name:"legalNoticeUrl",label:e(t)("theming","Legal notice link"),defaultValue:"",type:"url",placeholder:"https://…",maxlength:"500"},null,8,["label"]),m(I,{name:"privacyPolicyUrl",label:e(t)("theming","Privacy policy link"),defaultValue:"",type:"url",placeholder:"https://…",maxlength:"500"},null,8,["label"])],2)]),_:1},8,["name","description","docUrl"]))}}),xe="_adminSectionTheming_1p8pd_2",Pe={adminSectionTheming:xe},Se={$style:Pe},Ce=A(Ue,[["__cssModules",Se]]),Ie=P({__name:"ColorPickerField",props:{name:{},label:{},defaultValue:{}},emits:["updated"],setup(l,{emit:d}){const a=l,n=d,i=Q(),o=b(V("theming","adminThemingParameters")[a.name]),c=b(o.value);$(o,h=>{c.value=h});const{isSaving:r,reset:s}=E(()=>a.name,o,L(a,"defaultValue"));$(r,h=>!h&&n("updated"));const u=X(()=>pe(c.value));return(h,f)=>(p(),C("div",{class:k(h.$style.colorPickerField)},[v("div",{class:k(h.$style.colorPickerField__row)},[m(e(ye),{id:e(i),modelValue:c.value,"onUpdate:modelValue":f[0]||(f[0]=F=>c.value=F),advancedFields:"",onSubmit:f[1]||(f[1]=F=>o.value=F)},{default:g(()=>[m(e(z),{class:k(h.$style.colorPickerField__button),size:"large",variant:"primary",style:ie({"--color-primary-element":c.value,"--color-primary-element-text":u.value,"--color-primary-element-hover":"color-mix(in srgb, var(--color-primary-element) 70%, var(--color-primary-element-text))"})},{icon:g(()=>[e(r)?(p(),_(e(q),{key:0,appearance:u.value==="#ffffff"?"light":"dark"},null,8,["appearance"])):(p(),_(e(M),{key:1,path:e(ge)},null,8,["path"]))]),default:g(()=>[U(" "+y(l.label),1)]),_:1},8,["class","style"])]),_:1},8,["id","modelValue"]),o.value!==l.defaultValue?(p(),_(e(z),{key:0,variant:"tertiary","aria-label":e(t)("theming","Reset to default"),title:e(t)("theming","Reset to default"),onClick:e(s)},{icon:g(()=>[m(e(M),{path:e(Z)},null,8,["path"])]),_:1},8,["aria-label","title","onClick"])):B("",!0)],2),v("p",{class:k(h.$style.colorPickerField__description)},[oe(h.$slots,"description")],2)],2))}}),$e="_colorPickerField_o0yey_2",Ae="_colorPickerField__row_o0yey_7",Ne="_colorPickerField__button_o0yey_14",je="_colorPickerField__description_o0yey_18",Be={colorPickerField:$e,colorPickerField__row:Ae,colorPickerField__button:Ne,colorPickerField__description:je},Me={$style:Be},J=A(Ie,[["__cssModules",Me]]),ze=["aria-label"],Re=["disabled","name"],De=P({__name:"FileInputField",props:{name:{},label:{},disabled:{type:Boolean}},emits:["updated"],setup(l,{emit:d}){se(f=>({v64992c7e:r.value}));const a=l,n=d,i=b(!1),o=b(V("theming","adminThemingParameters")[a.name+"Mime"]),c=re("input"),r=X(()=>`url(${w("/apps/theming/image/{key}",{key:a.name})}?v=${Date.now()}&m=${encodeURIComponent(o.value)})`);function s(){i.value||(c.value.files=null,c.value.click())}async function u(){if(!c.value.files?.[0])return;const f=c.value.files[0];if(f.type&&!f.type.startsWith("image/")){x(t("theming","Non image file selected"));return}i.value=!0;const F=new FormData;F.append("image",f),F.append("key",a.name);try{await T.post(w("/apps/theming/ajax/uploadImage"),F,{headers:{"Content-Type":"multipart/form-data"}}),o.value=f.type,n("updated")}catch(W){if(R(W)&&W.response?.status===422){const ae=W.response.data?.data?.message;x(ae||t("theming","Failed to upload image"))}else x(t("theming","Failed to upload image"))}finally{i.value=!1,c.value.value=""}}async function h(){if(!i.value){i.value=!0;try{await T.post(w("/apps/theming/ajax/undoChanges"),{setting:a.name}),o.value="",n("updated")}finally{i.value=!1}}}return(f,F)=>(p(),C("div",{class:k(f.$style.fileInputField)},[m(e(z),{class:k(f.$style.fileInputField__button),alignment:"start",disabled:l.disabled,size:"large",onClick:s},{icon:g(()=>[i.value?(p(),_(e(q),{key:0})):(p(),_(e(M),{key:1,path:e(he)},null,8,["path"]))]),default:g(()=>[U(" "+y(l.label),1)]),_:1},8,["class","disabled"]),o.value.startsWith("image/")?(p(),C("div",{key:0,class:k(f.$style.fileInputField__preview),role:"img","aria-label":e(t)("theming","Preview of the selected image")},null,10,ze)):B("",!0),o.value&&!l.disabled?(p(),_(e(z),{key:1,"aria-label":e(t)("theming","Reset to default"),title:e(t)("theming","Reset to default"),size:"large",variant:"tertiary",onClick:h},{icon:g(()=>[m(e(M),{path:e(Z)},null,8,["path"])]),_:1},8,["aria-label","title"])):B("",!0),v("input",{ref:"input",class:"hidden-visually","aria-hidden":"true",disabled:l.disabled,type:"file",accept:"image/*",name:l.name,onChange:u},null,40,Re)],2))}}),We="_fileInputField_1u7zs_2",Le="_fileInputField__button_1u7zs_10",Oe="_fileInputField__preview_1u7zs_14",Ge={fileInputField:We,fileInputField__button:Le,fileInputField__preview:Oe},qe={$style:Ge},j=A(De,[["__cssModules",qe]]),Ee=P({__name:"AdminSectionThemingAdvanced",setup(l){const{defaultBackgroundColor:d}=V("theming","adminThemingInfo"),a=V("theming","adminThemingParameters"),n=b(a.disableUserTheming),{isSaving:i}=E("disableUserTheming",n,!1),o=b(!1),c=b(a.backgroundMime==="backgroundColor");$(c,r);async function r(s){o.value=!0;try{s?(await T.post(w("/apps/theming/ajax/undoChanges"),{setting:"background"}),await T.post(w("/apps/theming/ajax/updateStylesheet"),{setting:"backgroundMime",value:"backgroundColor"})):await T.post(w("/apps/theming/ajax/undoChanges"),{setting:"backgroundMime"}),await S()}catch(u){if(D.error("Failed to remove background image",{error:u}),R(u)&&u.response?.data?.data?.message){x(u.response.data.data.message);return}throw u}finally{o.value=!1}}return(s,u)=>(p(),_(e(G),{name:e(t)("theming","Background and color")},{default:g(()=>[v("div",{class:k(s.$style.adminSectionThemingAdvanced)},[m(J,{name:"primaryColor",label:e(t)("theming","Primary color"),defaultValue:"#00679e",onUpdated:e(S)},{description:g(()=>[U(y(e(t)("theming","Set the default primary color, used to highlight important elements."))+" "+y(e(t)("theming","The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements.")),1)]),_:1},8,["label","onUpdated"]),m(J,{name:"backgroundColor",label:e(t)("theming","Background color"),defaultValue:e(d),onUpdated:e(S)},{description:g(()=>[U(y(e(t)("theming","When no background image is set the background color will be used."))+" "+y(e(t)("theming","Otherwise the background color is by default generated from the background image, but can be adjusted to fine tune the color of the navigation icons.")),1)]),_:1},8,["label","defaultValue","onUpdated"]),m(e(O),{modelValue:c.value,"onUpdate:modelValue":u[0]||(u[0]=h=>c.value=h),type:"switch",loading:o.value,description:e(t)("theming","Use a plain background color instead of a background image.")},{default:g(()=>[U(y(e(t)("theming","Remove background image")),1)]),_:1},8,["modelValue","loading","description"]),m(j,{name:"background",disabled:c.value,label:e(t)("theming","Background image"),onUpdated:e(S)},null,8,["disabled","label","onUpdated"]),m(j,{name:"favicon",label:e(t)("theming","Favicon")},null,8,["label"]),m(j,{name:"logo",label:e(t)("theming","Logo"),onUpdated:e(S)},null,8,["label","onUpdated"]),m(j,{name:"logoheader",label:e(t)("theming","Navigation bar logo"),onUpdated:e(S)},null,8,["label","onUpdated"]),u[2]||(u[2]=v("hr",null,null,-1)),m(e(O),{modelValue:n.value,"onUpdate:modelValue":u[1]||(u[1]=h=>n.value=h),type:"switch",loading:e(i),description:e(t)("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},{default:g(()=>[U(y(e(t)("theming","Disable user theming")),1)]),_:1},8,["modelValue","loading","description"])],2)]),_:1},8,["name"]))}}),Ye="_adminSectionThemingAdvanced_dyaj4_2",He={adminSectionThemingAdvanced:Ye},Je={$style:He},Ke=A(Ee,[["__cssModules",Je]]),Qe=P({__name:"AdminTheming",setup(l){const{isThemeable:d,notThemeableErrorMessage:a}=V("theming","adminThemingInfo");return(n,i)=>(p(),C(H,null,[e(d)?(p(),C(H,{key:1},[m(Ce),m(Ke)],64)):(p(),_(e(de),{key:0,text:e(a),showAlert:"",type:"error"},null,8,["text"])),m(Ve)],64))}}),K=ue(Qe);K.config.idPrefix="settings",K.mount("#settings-admin-theming"); +import{b as P,a0 as Q,r as b,v as $,c as _,o as p,w as g,k as v,e as m,j as C,l as B,t as y,u as e,g as U,a1 as N,a2 as Y,O as te,a3 as le,y as ne,V as L,n as k,D as ie,p as X,m as oe,Y as se,x as re,F as H,h as ue}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{l as V,a as A}from"./index-BgmsSgl5.chunk.mjs";import{N as de}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{c as T,i as R}from"./index-CPwHjAPR.chunk.mjs";import{a as x}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{t}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{g as w,N as M}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as O}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as me}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import{N as G}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{l as D,A as ce,g as pe,r as S}from"./refreshStyles-CfUZEyVP.chunk.mjs";import{N as q,g as ge,h as Z,i as he}from"./mdi-e8YUrhPH.chunk.mjs";import{_ as fe}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import{w as ee}from"./index-Bos-XXa5.chunk.mjs";import{N as z}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as ye}from"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-DqIuD5e7.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";const ve={class:"info-note"},be=["aria-labelledby"],_e=["id"],ke={class:"info-note"},we=P({__name:"AdminSectionAppMenu",setup(l){const d=Q(),{defaultApps:a}=V("theming","adminThemingParameters"),n=V("core","apps").map(({id:r,name:s,icon:u})=>({label:s,id:r,icon:u})),i=b(a.map(r=>n.find(s=>s.id===r)).filter(Boolean));$(i,async r=>{try{await c("defaultApps",r.map(s=>s.id))}catch(s){D.error("Could not set global default apps",{error:s}),x(t("theming","Could not set global default apps"))}});const o=b(a.length>0);$(o,r=>{i.value=r?n.filter(s=>["dashboard","files"].includes(s.id)):[]});async function c(r,s){const u=w("/apps/theming/ajax/updateAppMenu");return await T.put(u,{setting:r,value:s})}return(r,s)=>(p(),_(e(G),{name:e(t)("theming","Navigation bar settings")},{default:g(()=>[v("h3",null,y(e(t)("theming","Default app")),1),v("p",ve,y(e(t)("theming","The default app is the app that is e.g. opened after login or when the logo in the menu is clicked.")),1),m(e(O),{modelValue:o.value,"onUpdate:modelValue":s[0]||(s[0]=u=>o.value=u),type:"switch"},{default:g(()=>[U(y(e(t)("theming","Use custom default app")),1)]),_:1},8,["modelValue"]),o.value?(p(),C("section",{key:0,"aria-labelledby":e(d)},[v("h4",{id:e(d)},y(e(t)("theming","Global default app")),9,_e),m(e(me),{modelValue:i.value,"onUpdate:modelValue":s[1]||(s[1]=u=>i.value=u),keepOpen:"",multiple:"",placeholder:e(t)("theming","Global default apps"),options:e(n)},null,8,["modelValue","placeholder","options"]),v("h5",null,y(e(t)("theming","Default app priority")),1),v("p",ke,y(e(t)("theming","If an app is not enabled for a user, the next app with lower priority is used.")),1),m(ce,{modelValue:i.value,"onUpdate:modelValue":s[2]||(s[2]=u=>i.value=u)},null,8,["modelValue"])],8,be)):B("",!0)]),_:1},8,["name"]))}}),Ve=A(we,[["__scopeId","data-v-a9baec70"]]);function E(l,d,a){let n=!1;const i=b(!1),o=b(!1);ee(d,async()=>{if(!i.value){if(n){n=!1;return}i.value=!0,o.value=!1;try{await Fe(N(l),N(d)),o.value=!0,window.setTimeout(()=>{o.value=!1},2e3)}finally{i.value=!1}}},{debounce:800,flush:"sync"});async function c(){i.value=!0,o.value=!1;try{const r=await Te(N(l));r&&te(a)&&!le(a)&&(a.value=r),n=!0,d.value=N(a)}finally{i.value=!1}}return{isSaving:Y(i),isSaved:Y(o),reset:c}}async function Fe(l,d){const a=w("/apps/theming/ajax/updateStylesheet");try{await T.post(a,{setting:l,value:String(d)})}catch(n){throw D.error("Failed to save changes",{error:n,setting:l,value:d}),R(n)&&n.response?.data?.data?.message&&x(n.response.data.data.message),n}}async function Te(l){const d=w("/apps/theming/ajax/undoChanges");try{const{data:a}=await T.post(d,{setting:l});return a.data.value}catch(a){if(D.error("Failed to reset theming value",{error:a,setting:l}),R(a)&&a.response?.data?.data?.message)return x(a.response.data.data.message),!1;throw a}}const I=P({__name:"TextField",props:{name:{},label:{},defaultValue:{},type:{default:"text"}},setup(l){const d=l,a=b(V("theming","adminThemingParameters")[d.name].toString()),{isSaving:n,isSaved:i,reset:o}=E(L(()=>d.name),a,L(()=>d.defaultValue));return ee(a,c=>{if(d.type==="url"&&c.includes('"'))try{const r=new URL(c);r.pathname=r.pathname.replaceAll(/"/g,"%22"),a.value=r.href}catch{return}},{debounce:600}),(c,r)=>(p(),_(e(fe),{modelValue:a.value,"onUpdate:modelValue":r[0]||(r[0]=s=>a.value=s),label:l.label,readonly:e(n),success:e(i),type:l.type,showTrailingButton:a.value!==l.defaultValue,trailingButtonIcon:l.defaultValue?"undo":"close",onTrailingButtonClick:e(o)},ne({_:2},[e(n)?{name:"icon",fn:g(()=>[m(e(q))]),key:"0"}:void 0]),1032,["modelValue","label","readonly","success","type","showTrailingButton","trailingButtonIcon","onTrailingButtonClick"]))}}),Ue=P({__name:"AdminSectionTheming",setup(l){const d=V("theming","adminThemingInfo");return(a,n)=>(p(),_(e(G),{name:e(t)("theming","Theming"),description:e(t)("theming","Theming makes it possible to easily customize the look and feel of your instance and supported clients. This will be visible for all users."),docUrl:e(d).docUrl,"data-admin-theming-settings":""},{default:g(()=>[v("div",{class:k(a.$style.adminSectionTheming)},[m(I,{name:"name",label:e(t)("theming","Name"),defaultValue:"Nextcloud",maxlength:"250"},null,8,["label"]),m(I,{name:"url",label:e(t)("theming","Web link"),defaultValue:"https://nextcloud.com",placeholder:"https://…",type:"url",maxlength:"500"},null,8,["label"]),m(I,{name:"slogan",label:e(t)("theming","Slogan"),defaultValue:e(t)("settings","a safe home for all your data"),maxlength:"500"},null,8,["label","defaultValue"]),n[0]||(n[0]=v("hr",null,null,-1)),m(I,{name:"legalNoticeUrl",label:e(t)("theming","Legal notice link"),defaultValue:"",type:"url",placeholder:"https://…",maxlength:"500"},null,8,["label"]),m(I,{name:"privacyPolicyUrl",label:e(t)("theming","Privacy policy link"),defaultValue:"",type:"url",placeholder:"https://…",maxlength:"500"},null,8,["label"])],2)]),_:1},8,["name","description","docUrl"]))}}),xe="_adminSectionTheming_1p8pd_2",Pe={adminSectionTheming:xe},Se={$style:Pe},Ce=A(Ue,[["__cssModules",Se]]),Ie=P({__name:"ColorPickerField",props:{name:{},label:{},defaultValue:{}},emits:["updated"],setup(l,{emit:d}){const a=l,n=d,i=Q(),o=b(V("theming","adminThemingParameters")[a.name]),c=b(o.value);$(o,h=>{c.value=h});const{isSaving:r,reset:s}=E(()=>a.name,o,L(a,"defaultValue"));$(r,h=>!h&&n("updated"));const u=X(()=>pe(c.value));return(h,f)=>(p(),C("div",{class:k(h.$style.colorPickerField)},[v("div",{class:k(h.$style.colorPickerField__row)},[m(e(ye),{id:e(i),modelValue:c.value,"onUpdate:modelValue":f[0]||(f[0]=F=>c.value=F),advancedFields:"",onSubmit:f[1]||(f[1]=F=>o.value=F)},{default:g(()=>[m(e(z),{class:k(h.$style.colorPickerField__button),size:"large",variant:"primary",style:ie({"--color-primary-element":c.value,"--color-primary-element-text":u.value,"--color-primary-element-hover":"color-mix(in srgb, var(--color-primary-element) 70%, var(--color-primary-element-text))"})},{icon:g(()=>[e(r)?(p(),_(e(q),{key:0,appearance:u.value==="#ffffff"?"light":"dark"},null,8,["appearance"])):(p(),_(e(M),{key:1,path:e(ge)},null,8,["path"]))]),default:g(()=>[U(" "+y(l.label),1)]),_:1},8,["class","style"])]),_:1},8,["id","modelValue"]),o.value!==l.defaultValue?(p(),_(e(z),{key:0,variant:"tertiary","aria-label":e(t)("theming","Reset to default"),title:e(t)("theming","Reset to default"),onClick:e(s)},{icon:g(()=>[m(e(M),{path:e(Z)},null,8,["path"])]),_:1},8,["aria-label","title","onClick"])):B("",!0)],2),v("p",{class:k(h.$style.colorPickerField__description)},[oe(h.$slots,"description")],2)],2))}}),$e="_colorPickerField_o0yey_2",Ae="_colorPickerField__row_o0yey_7",Ne="_colorPickerField__button_o0yey_14",je="_colorPickerField__description_o0yey_18",Be={colorPickerField:$e,colorPickerField__row:Ae,colorPickerField__button:Ne,colorPickerField__description:je},Me={$style:Be},J=A(Ie,[["__cssModules",Me]]),ze=["aria-label"],Re=["disabled","name"],De=P({__name:"FileInputField",props:{name:{},label:{},disabled:{type:Boolean}},emits:["updated"],setup(l,{emit:d}){se(f=>({v64992c7e:r.value}));const a=l,n=d,i=b(!1),o=b(V("theming","adminThemingParameters")[a.name+"Mime"]),c=re("input"),r=X(()=>`url(${w("/apps/theming/image/{key}",{key:a.name})}?v=${Date.now()}&m=${encodeURIComponent(o.value)})`);function s(){i.value||(c.value.files=null,c.value.click())}async function u(){if(!c.value.files?.[0])return;const f=c.value.files[0];if(f.type&&!f.type.startsWith("image/")){x(t("theming","Non image file selected"));return}i.value=!0;const F=new FormData;F.append("image",f),F.append("key",a.name);try{await T.post(w("/apps/theming/ajax/uploadImage"),F,{headers:{"Content-Type":"multipart/form-data"}}),o.value=f.type,n("updated")}catch(W){if(R(W)&&W.response?.status===422){const ae=W.response.data?.data?.message;x(ae||t("theming","Failed to upload image"))}else x(t("theming","Failed to upload image"))}finally{i.value=!1,c.value.value=""}}async function h(){if(!i.value){i.value=!0;try{await T.post(w("/apps/theming/ajax/undoChanges"),{setting:a.name}),o.value="",n("updated")}finally{i.value=!1}}}return(f,F)=>(p(),C("div",{class:k(f.$style.fileInputField)},[m(e(z),{class:k(f.$style.fileInputField__button),alignment:"start",disabled:l.disabled,size:"large",onClick:s},{icon:g(()=>[i.value?(p(),_(e(q),{key:0})):(p(),_(e(M),{key:1,path:e(he)},null,8,["path"]))]),default:g(()=>[U(" "+y(l.label),1)]),_:1},8,["class","disabled"]),o.value.startsWith("image/")?(p(),C("div",{key:0,class:k(f.$style.fileInputField__preview),role:"img","aria-label":e(t)("theming","Preview of the selected image")},null,10,ze)):B("",!0),o.value&&!l.disabled?(p(),_(e(z),{key:1,"aria-label":e(t)("theming","Reset to default"),title:e(t)("theming","Reset to default"),size:"large",variant:"tertiary",onClick:h},{icon:g(()=>[m(e(M),{path:e(Z)},null,8,["path"])]),_:1},8,["aria-label","title"])):B("",!0),v("input",{ref:"input",class:"hidden-visually","aria-hidden":"true",disabled:l.disabled,type:"file",accept:"image/*",name:l.name,onChange:u},null,40,Re)],2))}}),We="_fileInputField_1u7zs_2",Le="_fileInputField__button_1u7zs_10",Oe="_fileInputField__preview_1u7zs_14",Ge={fileInputField:We,fileInputField__button:Le,fileInputField__preview:Oe},qe={$style:Ge},j=A(De,[["__cssModules",qe]]),Ee=P({__name:"AdminSectionThemingAdvanced",setup(l){const{defaultBackgroundColor:d}=V("theming","adminThemingInfo"),a=V("theming","adminThemingParameters"),n=b(a.disableUserTheming),{isSaving:i}=E("disableUserTheming",n,!1),o=b(!1),c=b(a.backgroundMime==="backgroundColor");$(c,r);async function r(s){o.value=!0;try{s?(await T.post(w("/apps/theming/ajax/undoChanges"),{setting:"background"}),await T.post(w("/apps/theming/ajax/updateStylesheet"),{setting:"backgroundMime",value:"backgroundColor"})):await T.post(w("/apps/theming/ajax/undoChanges"),{setting:"backgroundMime"}),await S()}catch(u){if(D.error("Failed to remove background image",{error:u}),R(u)&&u.response?.data?.data?.message){x(u.response.data.data.message);return}throw u}finally{o.value=!1}}return(s,u)=>(p(),_(e(G),{name:e(t)("theming","Background and color")},{default:g(()=>[v("div",{class:k(s.$style.adminSectionThemingAdvanced)},[m(J,{name:"primaryColor",label:e(t)("theming","Primary color"),defaultValue:"#00679e",onUpdated:e(S)},{description:g(()=>[U(y(e(t)("theming","Set the default primary color, used to highlight important elements."))+" "+y(e(t)("theming","The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements.")),1)]),_:1},8,["label","onUpdated"]),m(J,{name:"backgroundColor",label:e(t)("theming","Background color"),defaultValue:e(d),onUpdated:e(S)},{description:g(()=>[U(y(e(t)("theming","When no background image is set the background color will be used."))+" "+y(e(t)("theming","Otherwise the background color is by default generated from the background image, but can be adjusted to fine tune the color of the navigation icons.")),1)]),_:1},8,["label","defaultValue","onUpdated"]),m(e(O),{modelValue:c.value,"onUpdate:modelValue":u[0]||(u[0]=h=>c.value=h),type:"switch",loading:o.value,description:e(t)("theming","Use a plain background color instead of a background image.")},{default:g(()=>[U(y(e(t)("theming","Remove background image")),1)]),_:1},8,["modelValue","loading","description"]),m(j,{name:"background",disabled:c.value,label:e(t)("theming","Background image"),onUpdated:e(S)},null,8,["disabled","label","onUpdated"]),m(j,{name:"favicon",label:e(t)("theming","Favicon")},null,8,["label"]),m(j,{name:"logo",label:e(t)("theming","Logo"),onUpdated:e(S)},null,8,["label","onUpdated"]),m(j,{name:"logoheader",label:e(t)("theming","Navigation bar logo"),onUpdated:e(S)},null,8,["label","onUpdated"]),u[2]||(u[2]=v("hr",null,null,-1)),m(e(O),{modelValue:n.value,"onUpdate:modelValue":u[1]||(u[1]=h=>n.value=h),type:"switch",loading:e(i),description:e(t)("theming","Although you can select and customize your instance, users can change their background and colors. If you want to enforce your customization, you can toggle this on.")},{default:g(()=>[U(y(e(t)("theming","Disable user theming")),1)]),_:1},8,["modelValue","loading","description"])],2)]),_:1},8,["name"]))}}),Ye="_adminSectionThemingAdvanced_dyaj4_2",He={adminSectionThemingAdvanced:Ye},Je={$style:He},Ke=A(Ee,[["__cssModules",Je]]),Qe=P({__name:"AdminTheming",setup(l){const{isThemeable:d,notThemeableErrorMessage:a}=V("theming","adminThemingInfo");return(n,i)=>(p(),C(H,null,[e(d)?(p(),C(H,{key:1},[m(Ce),m(Ke)],64)):(p(),_(e(de),{key:0,text:e(a),showAlert:"",type:"error"},null,8,["text"])),m(Ve)],64))}}),K=ue(Qe);K.config.idPrefix="settings",K.mount("#settings-admin-theming"); //# sourceMappingURL=theming-settings-admin.mjs.map diff --git a/dist/theming-settings-personal.css b/dist/theming-settings-personal.css index 0579f41bf2154..bb38e94df74df 100644 --- a/dist/theming-settings-personal.css +++ b/dist/theming-settings-personal.css @@ -1,5 +1,5 @@ /* extracted by css-entry-points-plugin */ -@import './theming-theming-settings-personal-Tw2nBJ_u.chunk.css'; +@import './theming-theming-settings-personal-snrZ4DPH.chunk.css'; @import './createElementId-DhjFt1I9-C_oBIsvc.chunk.css'; @import './logger-D3RVzcfQ-D7L4ZBkR.chunk.css'; @import './mdi-BYHcrfvW.chunk.css'; diff --git a/dist/theming-settings-personal.mjs b/dist/theming-settings-personal.mjs index e5493674bde7e..8845710e997c8 100644 --- a/dist/theming-settings-personal.mjs +++ b/dist/theming-settings-personal.mjs @@ -1,2 +1,2 @@ -import{b as K,q as Ve,s as Ue,j as S,o as c,n as P,k as h,D as O,p as q,l as j,_ as xe,t as y,u as n,$ as Pe,e as I,w,g as T,z as oe,r as H,c as _,Y as He,F,C as ne,v as Ce,x as we,J as Le,h as Te}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as N,i as Be}from"./index-CPwHjAPR.chunk.mjs";import{a as X,f as De}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{a as z,l as M}from"./index-BgmsSgl5.chunk.mjs";import{t as d}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{m as Se,b as E,N as Z,g as G}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as le}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as ie}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as W}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{N as Ie}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{A as qe,l as ee,g as se,r as ue}from"./refreshStyles-CfUZEyVP.chunk.mjs";import{N as Q,j as J,k as ze,g as Ee,h as je}from"./mdi-e8YUrhPH.chunk.mjs";import{N as $e}from"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import{d as Ke}from"./index-DqIuD5e7.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";const Fe={class:"theming__preview-description"},Oe={class:"theming__preview-explanation"},Re={key:0,class:"theming__preview-warning",role:"note"},We=K({__name:"ThemePreviewItem",props:Ve({enforced:{type:Boolean},theme:{},type:{},unique:{type:Boolean}},{selected:{type:Boolean,required:!0},selectedModifiers:{}}),emits:["update:selected"],setup(t){const e=Ue(t,"selected"),a=t,r=q(()=>a.unique?"switch":"radio"),i=q(()=>a.unique?null:a.type),s=q(()=>Se("theming","img",a.theme.id+".jpg")),o=q({get(){return e.value},set(g){a.enforced||(e.value=a.unique?g:!0)}});function m(){if(!a.enforced){if(r.value==="radio"){o.value=!0;return}o.value=!o.value}}return(g,$)=>(c(),S("div",{class:P(["theming__preview--"+t.theme.id,"theming__preview"])},[h("div",{class:"theming__preview-image",style:O({backgroundImage:"url("+s.value+")"}),onClick:m},null,4),h("div",Fe,[h("h3",null,y(t.theme.title),1),h("p",Oe,y(t.theme.description),1),t.enforced?(c(),S("span",Re,y(n(d)("theming","Theme selection is enforced")),1)):j("",!0),xe(I(n(le),{modelValue:o.value,"onUpdate:modelValue":$[0]||($[0]=U=>o.value=U),class:"theming__preview-toggle",disabled:t.enforced,name:i.value,type:r.value},{default:w(()=>[T(y(t.theme.enableLabel),1)]),_:1},8,["modelValue","disabled","name","type"]),[[Pe,!t.enforced]])])],2))}}),de=z(We,[["__scopeId","data-v-13bf6aae"]]),Ze={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ge=["aria-hidden","aria-label"],Je=["fill","width","height"],Ye={d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"},Qe={key:0};function Xe(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon undo-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",Ye,[a.title?(c(),S("title",Qe,y(a.title),1)):j("",!0)])],8,Je))],16,Ge)}const et=z(Ze,[["render",Xe]]),ce="theming-apporder-changed-infocard",ge="theming-apporder-changed-infocard",tt=K({__name:"UserSectionAppMenu",setup(t){const{userAppOrder:e,enforcedDefaultApp:a}=M("theming","navigationBar"),r=M("core","apps").filter(({type:p})=>p==="link").map(p=>({...p,label:p.name,default:p.default&&p.id===a})),i=H([...r]),s=H(!Array.isArray(e)||Object.values(e).length>0),o=q(()=>r.some(({id:p},v)=>p!==i.value[v]?.id)),m=q(()=>(o.value?`${ce} `:"")+(a?ge:""));async function g(p){const v={};p.forEach(({app:A,id:f},C)=>{v[f]={order:C,app:A}});try{await U("apporder",v),i.value=p,s.value=!0}catch(A){ee.error("Could not set the app order",{error:A}),X(d("theming","Could not set the app order"))}}async function $(){try{await U("apporder",[]),s.value=!1;const{data:p}=await N.get(E("/core/navigation/apps"),{headers:{"OCS-APIRequest":"true"}});i.value=p.ocs.data.map(v=>({...v,label:v.name,default:v.default&&v.app===a}))}catch(p){ee.error("Could not reset the app order",{error:p}),X(d("theming","Could not reset the app order"))}}async function U(p,v){const A=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"core",configKey:p});return await N.post(A,{configValue:JSON.stringify(v)})}return(p,v)=>(c(),_(n(W),{name:n(d)("theming","Navigation bar settings")},{default:w(()=>[h("p",null,y(n(d)("theming","You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo.")),1),n(a)?(c(),_(n(ie),{key:0,id:ge,type:"info"},{default:w(()=>[T(y(n(d)("theming","The default app can not be changed because it was configured by the administrator.")),1)]),_:1})):j("",!0),o.value?(c(),_(n(ie),{key:1,id:ce,type:"info"},{default:w(()=>[T(y(n(d)("theming","The app order was changed, to see it in action you have to reload the page.")),1)]),_:1})):j("",!0),I(qe,{class:P(p.$style.userSectionAppMenu__selector),"aria-details":m.value,modelValue:i.value,"onUpdate:modelValue":g},null,8,["class","aria-details","modelValue"]),I(n(Ie),{"data-test-id":"btn-apporder-reset",disabled:!s.value,variant:"tertiary",onClick:$},{icon:w(()=>[I(et,{size:20})]),default:w(()=>[T(" "+y(n(d)("theming","Reset default app order")),1)]),_:1},8,["disabled"])]),_:1},8,["name"]))}}),at="_userSectionAppMenu__selector_1hkl7_2",rt={userSectionAppMenu__selector:at},nt={$style:rt},it=z(tt,[["__cssModules",nt]]),ot={class:"hidden-visually"},lt=["aria-disabled","aria-pressed","aria-label","title"],st=["aria-disabled","aria-pressed","aria-label","title"],ut=["aria-disabled","aria-pressed","aria-label","title"],dt={class:"hidden-visually"},ct=["title","aria-label","aria-pressed","onClick"],gt=K({__name:"UserSectionBackground",emits:["refreshStyles"],setup(t,{emit:e}){He(l=>({cf2ff408:s}));const a=e,r=M("theming","shippedBackgrounds"),i=M("theming","themingDefaults"),s=`url('${i.backgroundImage}')`,o=H(!1),m=H(structuredClone(M("theming","data"))),g=H(M("theming","userBackgroundImage")),$=Object.keys(r).filter(l=>l!==i.defaultShippedBackground||i.backgroundMime!=="").map(l=>({name:l,url:U(l),preview:U("preview/"+l),details:r[l]}));function U(l){return Se("theming","","img/background/")+l}async function p(l){g.value=l.backgroundImage,m.value.backgroundColor=l.backgroundColor,a("refreshStyles"),o.value=!1}async function v(){o.value="default";const l=await N.post(G("/apps/theming/background/default"));p(l.data)}async function A(l){o.value=l;const b=await N.post(G("/apps/theming/background/shipped"),{value:l});p(b.data)}async function f(l){o.value="custom";const b=await N.post(G("/apps/theming/background/custom"),{value:l});p(b.data)}async function C(l){if(!l)return;o.value="color";const{data:b}=await N.post(G("/apps/theming/background/color"),{color:l||"#0082c9"});p(b)}async function B(){await De(d("theming","Select a background from your files")).allowDirectories(!1).setFilter(l=>l.mime.startsWith("image/")).setMultiSelect(!1).addButton({label:d("theming","Select background"),callback:([l])=>{f(l.path)},variant:"primary"}).build().pick()}return(l,b)=>(c(),_(n(W),{class:"background",name:n(d)("theming","Background and color"),description:n(d)("theming","The background can be set to an image from the default set, a custom uploaded image, or a plain color.")},{default:w(()=>[h("fieldset",null,[h("legend",ot,y(n(d)("theming","Background and color")),1),h("div",{class:P(l.$style.backgroundSelect)},[h("button",{"aria-disabled":o.value==="custom","aria-pressed":g.value==="custom","aria-label":n(d)("theming","Custom background"),title:n(d)("theming","Custom background"),class:P(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryFilePicker]]),onClick:B},[o.value==="custom"?(c(),_(n(Q),{key:0})):(c(),_(n(Z),{key:1,path:g.value==="custom"?n(J):n(ze)},null,8,["path"]))],10,lt),I(n($e),{modelValue:m.value.backgroundColor,"onUpdate:modelValue":b[0]||(b[0]=u=>m.value.backgroundColor=u),onSubmit:C},{default:w(()=>[h("button",{class:P(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryColor]]),"aria-disabled":o.value==="color","aria-pressed":g.value==="color","aria-label":n(d)("theming","Plain background"),title:n(d)("theming","Plain background"),style:O({backgroundColor:m.value.backgroundColor,"--color-content":n(se)(m.value.backgroundColor)})},[o.value==="color"?(c(),_(n(Q),{key:0})):(c(),_(n(Z),{key:1,path:g.value==="color"?n(J):n(Ee)},null,8,["path"]))],14,st)]),_:1},8,["modelValue"]),h("button",{class:P(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryDefault]]),"aria-disabled":o.value==="default","aria-pressed":g.value==="default","aria-label":n(d)("theming","Default background"),title:n(d)("theming","Default background"),style:O({"--color-content":n(se)(n(i).backgroundColor)}),onClick:v},[o.value==="default"?(c(),_(n(Q),{key:0})):(c(),_(n(Z),{key:1,path:g.value==="default"?n(J):n(je)},null,8,["path"]))],14,ut)],2),h("fieldset",{class:P(l.$style.backgroundSelect)},[h("label",dt,y(n(d)("theming","Default shipped background images")),1),(c(!0),S(F,null,ne(n($),u=>(c(),S("button",{key:u.name,title:u.details.attribution,"aria-label":u.details.description,"aria-pressed":g.value===u.name,class:P(["button-vue",l.$style.backgroundSelect__entry]),style:O({backgroundImage:"url("+u.preview+")"}),tabindex:"0",onClick:D=>A(u.name)},[g.value===u.name?(c(),_(n(Z),{key:0,class:P(l.$style.backgroundSelect__entryIcon),path:n(J)},null,8,["class","path"])):j("",!0)],14,ct))),128))],2)])]),_:1},8,["name","description"]))}}),pt="_backgroundSelect_l1nhm_2",mt="_backgroundSelect__entry_l1nhm_7",ht="_backgroundSelect__entryColor_l1nhm_38",ft="_backgroundSelect__entryFilePicker_l1nhm_42",bt="_backgroundSelect__entryDefault_l1nhm_52",vt={backgroundSelect:pt,backgroundSelect__entry:mt,backgroundSelect__entryColor:ht,backgroundSelect__entryFilePicker:ft,backgroundSelect__entryDefault:bt},yt={$style:vt},_t=z(gt,[["__cssModules",yt]]),kt=K({__name:"UserSectionHotkeys",setup(t){const e=H(M("theming","shortcutsDisabled",!1));Ce(e,a);async function a(){const r=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"});e.value?await N.post(r,{configValue:"yes"}):await N.delete(r)}return(r,i)=>(c(),_(n(W),{name:n(d)("theming","Keyboard shortcuts"),description:n(d)("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")},{default:w(()=>[I(n(le),{modelValue:e.value,"onUpdate:modelValue":i[0]||(i[0]=s=>e.value=s),class:"theming__preview-toggle",type:"switch"},{default:w(()=>[T(y(n(d)("theming","Disable all keyboard shortcuts")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"]))}});var Ct={grad:.9,turn:360,rad:360/(2*Math.PI)},L=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},k=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=Math.pow(10,e)),Math.round(a*t)/a+0},V=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=1),t>a?a:t>e?t:e},Ae=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},pe=function(t){return{r:V(t.r,0,255),g:V(t.g,0,255),b:V(t.b,0,255),a:V(t.a)}},te=function(t){return{r:k(t.r),g:k(t.g),b:k(t.b),a:k(t.a,3)}},wt=/^#([0-9a-f]{3,8})$/i,Y=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},Ne=function(t){var e=t.r,a=t.g,r=t.b,i=t.a,s=Math.max(e,a,r),o=s-Math.min(e,a,r),m=o?s===e?(a-r)/o:s===a?2+(r-e)/o:4+(e-a)/o:0;return{h:60*(m<0?m+6:m),s:s?o/s*100:0,v:s/255*100,a:i}},Me=function(t){var e=t.h,a=t.s,r=t.v,i=t.a;e=e/360*6,a/=100,r/=100;var s=Math.floor(e),o=r*(1-a),m=r*(1-(e-s)*a),g=r*(1-(1-e+s)*a),$=s%6;return{r:255*[r,m,o,o,g,r][$],g:255*[g,r,r,m,o,o][$],b:255*[o,o,g,r,r,m][$],a:i}},me=function(t){return{h:Ae(t.h),s:V(t.s,0,100),l:V(t.l,0,100),a:V(t.a)}},he=function(t){return{h:k(t.h),s:k(t.s),l:k(t.l),a:k(t.a,3)}},fe=function(t){return Me((a=(e=t).s,{h:e.h,s:(a*=((r=e.l)<50?r:100-r)/100)>0?2*a/(r+a)*100:0,v:r+a,a:e.a}));var e,a,r},R=function(t){return{h:(e=Ne(t)).h,s:(i=(200-(a=e.s))*(r=e.v)/100)>0&&i<200?a*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,a,r,i},St=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,It=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$t=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,At=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,be={string:[[function(t){var e=wt.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?k(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?k(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=$t.exec(t)||At.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:pe({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=St.exec(t)||It.exec(t);if(!e)return null;var a,r,i=me({h:(a=e[1],r=e[2],r===void 0&&(r="deg"),Number(a)*(Ct[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return fe(i)},"hsl"]],object:[[function(t){var e=t.r,a=t.g,r=t.b,i=t.a,s=i===void 0?1:i;return L(e)&&L(a)&&L(r)?pe({r:Number(e),g:Number(a),b:Number(r),a:Number(s)}):null},"rgb"],[function(t){var e=t.h,a=t.s,r=t.l,i=t.a,s=i===void 0?1:i;if(!L(e)||!L(a)||!L(r))return null;var o=me({h:Number(e),s:Number(a),l:Number(r),a:Number(s)});return fe(o)},"hsl"],[function(t){var e=t.h,a=t.s,r=t.v,i=t.a,s=i===void 0?1:i;if(!L(e)||!L(a)||!L(r))return null;var o=(function(m){return{h:Ae(m.h),s:V(m.s,0,100),v:V(m.v,0,100),a:V(m.a)}})({h:Number(e),s:Number(a),v:Number(r),a:Number(s)});return Me(o)},"hsv"]]},ve=function(t,e){for(var a=0;a=.5},t.prototype.toHex=function(){return e=te(this.rgba),a=e.r,r=e.g,i=e.b,o=(s=e.a)<1?Y(k(255*s)):"","#"+Y(a)+Y(r)+Y(i)+o;var e,a,r,i,s,o},t.prototype.toRgb=function(){return te(this.rgba)},t.prototype.toRgbString=function(){return e=te(this.rgba),a=e.r,r=e.g,i=e.b,(s=e.a)<1?"rgba("+a+", "+r+", "+i+", "+s+")":"rgb("+a+", "+r+", "+i+")";var e,a,r,i,s},t.prototype.toHsl=function(){return he(R(this.rgba))},t.prototype.toHslString=function(){return e=he(R(this.rgba)),a=e.h,r=e.s,i=e.l,(s=e.a)<1?"hsla("+a+", "+r+"%, "+i+"%, "+s+")":"hsl("+a+", "+r+"%, "+i+"%)";var e,a,r,i,s},t.prototype.toHsv=function(){return e=Ne(this.rgba),{h:k(e.h),s:k(e.s),v:k(e.v),a:k(e.a,3)};var e},t.prototype.invert=function(){return x({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),x(ae(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),x(ae(this.rgba,-e))},t.prototype.grayscale=function(){return x(ae(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),x(ye(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),x(ye(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?x({r:(a=this.rgba).r,g:a.g,b:a.b,a:e}):k(this.rgba.a,3);var a},t.prototype.hue=function(e){var a=R(this.rgba);return typeof e=="number"?x({h:e,s:a.s,l:a.l,a:a.a}):k(a.h)},t.prototype.isEqual=function(e){return this.toHex()===x(e).toHex()},t})(),x=function(t){return t instanceof _e?t:new _e(t)};const Mt={name:"PaletteOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],Ut=["fill","width","height"],xt={d:"M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z"},Pt={key:0};function Ht(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon palette-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",xt,[a.title?(c(),S("title",Pt,y(a.title),1)):j("",!0)])],8,Ut))],16,Vt)}const Lt=z(Mt,[["render",Ht]]),Tt={name:"UndoVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Bt=["aria-hidden","aria-label"],Dt=["fill","width","height"],qt={d:"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"},zt={key:0};function Et(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon undo-variant-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",qt,[a.title?(c(),S("title",zt,y(a.title),1)):j("",!0)])],8,Dt))],16,Bt)}const jt=z(Tt,[["render",Et]]),Kt=K({__name:"UserSectionPrimaryColor",emits:["refreshStyles"],setup(t,{expose:e,emit:a}){const r=a;e({reload:U});const{primaryColor:i,defaultPrimaryColor:s}=M("theming","data",{primaryColor:"#0082c9",defaultPrimaryColor:"#0082c9"}),o=we("trigger"),m=H(!1),g=H(i);Ce(g,Ke(f=>{v(f)},1e3));const $=q(()=>x(g.value).isEqual(x(s)));function U(){let f=window.getComputedStyle(o.value).backgroundColor;const C=f.replaceAll(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+)/);C&&(f=`#${A(C[1])}${A(C[2])}${A(C[3])}`),f.toLowerCase()!==g.value.toLowerCase()&&(g.value=f)}function p(){g.value=s,v(null)}async function v(f){m.value=!0;const C=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"primary_color"});try{f?await N.post(C,{configValue:f}):await N.delete(C),r("refreshStyles")}catch(B){ee.error("Could not update primary color",{error:B}),X(d("theming","Could not set primary color"))}m.value=!1}function A(f){return Number.parseInt(f).toString(16).padStart(2,"0")}return(f,C)=>(c(),_(n(W),{name:n(d)("theming","Primary color"),description:n(d)("theming","Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements.")},{default:w(()=>[h("div",{class:P(f.$style.userPrimaryColor)},[I(n($e),{modelValue:g.value,"onUpdate:modelValue":C[0]||(C[0]=B=>g.value=B),"data-user-theming-primary-color":""},{default:w(()=>[h("button",{ref:"trigger",class:P(f.$style.userPrimaryColor__trigger),style:O({"background-color":g.value}),"data-user-theming-primary-color-trigger":""},[T(y(n(d)("theming","Primary color"))+" ",1),m.value?(c(),_(n(Q),{key:0})):(c(),_(Lt,{key:1,size:20}))],6)]),_:1},8,["modelValue"]),I(n(Ie),{variant:"tertiary",disabled:$.value,onClick:p},{icon:w(()=>[I(jt,{size:20})]),default:w(()=>[T(" "+y(n(d)("theming","Reset primary color")),1)]),_:1},8,["disabled"])],2)]),_:1},8,["name","description"]))}}),Ft="_userPrimaryColor_3oh6f_1",Ot="_userPrimaryColor__trigger_3oh6f_8",Rt={userPrimaryColor:Ft,userPrimaryColor__trigger:Ot},Wt={$style:Rt},Zt=z(Kt,[["__cssModules",Wt]]),Gt=["innerHTML"],Jt=["innerHTML"],Yt={class:"theming__preview-list"},Qt={class:"theming__preview-list"},Xt=K({__name:"UserTheming",setup(t){const e=M("theming","enforceTheme",""),a=M("theming","isUserThemingDisabled"),r=H(M("theming","enableBlurFilter","")),i=M("theming","themes",[]),s=H(i.filter(l=>l.type===1)),o=H(i.filter(l=>l.type===2)),m=q(()=>s.value.find(l=>l.enabled)||s.value[0]),g=we("primaryColor"),$=d("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.",{linkstart:'',linkend:""},{escape:!1}),U=d("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!",{issuetracker:'',designteam:'',linkend:""},{escape:!1});async function p(){await ue(),Le(()=>g.value?.reload())}function v(l,b){s.value.forEach(u=>{if(u.id===l&&b){u.enabled=!0;return}u.enabled=!1}),C(),B(b,l)}function A(l,b){o.value.forEach(u=>{if(u.id===l&&b){u.enabled=!0;return}u.enabled=!1}),C(),B(b,l)}async function f(){r.value=r.value==="no"?"yes":"no",await N({url:E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"force_enable_blur_filter"}),data:{configValue:r.value},method:"POST"}),ue()}function C(){const l=s.value.filter(u=>u.enabled===!0).map(u=>u.id),b=o.value.filter(u=>u.enabled===!0).map(u=>u.id);s.value.forEach(u=>{document.body.toggleAttribute(`data-theme-${u.id}`,u.enabled)}),o.value.forEach(u=>{document.body.toggleAttribute(`data-theme-${u.id}`,u.enabled)}),document.body.setAttribute("data-themes",[...l,...b].join(","))}async function B(l,b){try{l?await N({url:E("apps/theming/api/v1/theme/{themeId}/enable",{themeId:b}),method:"PUT"}):await N({url:E("apps/theming/api/v1/theme/{themeId}",{themeId:b}),method:"DELETE"})}catch(u){ee.error("theming: Unable to apply setting.",{error:u});let D=d("theming","Unable to apply the setting.");Be(u)&&u.response?.data.ocs?.meta?.message&&(D=`${u.response.data.ocs.meta.message}. ${D}`),X(D)}}return(l,b)=>(c(),S(F,null,[I(n(W),{name:n(d)("theming","Appearance and accessibility settings"),class:"theming"},{default:w(()=>[h("p",{innerHTML:n($)},null,8,Gt),h("p",{innerHTML:n(U)},null,8,Jt),h("div",Yt,[(c(!0),S(F,null,ne(s.value,u=>(c(),_(de,{key:u.id,enforced:u.id===n(e),selected:m.value.id===u.id,theme:u,unique:s.value.length===1,type:"theme","onUpdate:selected":D=>v(u.id,D)},null,8,["enforced","selected","theme","unique","onUpdate:selected"]))),128))]),h("div",Qt,[(c(!0),S(F,null,ne(o.value,u=>(c(),_(de,{key:u.id,selected:u.enabled,theme:u,unique:o.value.length===1,type:"font","onUpdate:selected":D=>A(u.id,D)},null,8,["selected","theme","unique","onUpdate:selected"]))),128))]),h("h3",null,y(n(d)("theming","Misc accessibility options")),1),I(n(le),{type:"checkbox",modelValue:r.value==="yes",indeterminate:r.value==="","onUpdate:modelValue":f},{default:w(()=>[T(y(n(d)("theming","Enable blur background filter (may increase GPU load)")),1)]),_:1},8,["modelValue","indeterminate"])]),_:1},8,["name"]),n(a)?(c(),_(n(ie),{key:0,type:"info"},{default:w(()=>[T(y(n(d)("theming","Customization has been disabled by your administrator")),1)]),_:1})):(c(),S(F,{key:1},[I(Zt,{ref:"primaryColor",onRefreshStyles:p},null,512),I(_t,{onRefreshStyles:p})],64)),I(kt),I(it)],64))}}),ea=z(Xt,[["__scopeId","data-v-50195b4f"]]),ke=Te(ea);ke.config.idPrefix="settings",ke.mount("#settings-personal-theming"); +import{b as K,q as Ve,s as Ue,j as S,o as c,n as P,k as h,D as O,p as q,l as j,_ as xe,t as y,u as n,$ as Pe,e as I,w,g as T,z as oe,r as H,c as _,Y as He,F,C as ne,v as Ce,x as we,J as Le,h as Te}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{c as N,i as Be}from"./index-CPwHjAPR.chunk.mjs";import{a as X,f as De}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{a as z,l as M}from"./index-BgmsSgl5.chunk.mjs";import{t as d}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{m as Se,b as E,N as Z,g as G}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{N as le}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import{N as ie}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import{N as W}from"./ContentCopy-DqUCQg_O.chunk.mjs";import{N as Ie}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{A as qe,l as ee,g as se,r as ue}from"./refreshStyles-CfUZEyVP.chunk.mjs";import{N as Q,j as J,k as ze,g as Ee,h as je}from"./mdi-e8YUrhPH.chunk.mjs";import{N as $e}from"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import{d as Ke}from"./index-DqIuD5e7.chunk.mjs";import"./modulepreload-polyfill-BxzAKjcf.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";const Fe={class:"theming__preview-description"},Oe={class:"theming__preview-explanation"},Re={key:0,class:"theming__preview-warning",role:"note"},We=K({__name:"ThemePreviewItem",props:Ve({enforced:{type:Boolean},theme:{},type:{},unique:{type:Boolean}},{selected:{type:Boolean,required:!0},selectedModifiers:{}}),emits:["update:selected"],setup(t){const e=Ue(t,"selected"),a=t,r=q(()=>a.unique?"switch":"radio"),i=q(()=>a.unique?null:a.type),s=q(()=>Se("theming","img",a.theme.id+".jpg")),o=q({get(){return e.value},set(g){a.enforced||(e.value=a.unique?g:!0)}});function m(){if(!a.enforced){if(r.value==="radio"){o.value=!0;return}o.value=!o.value}}return(g,$)=>(c(),S("div",{class:P(["theming__preview--"+t.theme.id,"theming__preview"])},[h("div",{class:"theming__preview-image",style:O({backgroundImage:"url("+s.value+")"}),onClick:m},null,4),h("div",Fe,[h("h3",null,y(t.theme.title),1),h("p",Oe,y(t.theme.description),1),t.enforced?(c(),S("span",Re,y(n(d)("theming","Theme selection is enforced")),1)):j("",!0),xe(I(n(le),{modelValue:o.value,"onUpdate:modelValue":$[0]||($[0]=U=>o.value=U),class:"theming__preview-toggle",disabled:t.enforced,name:i.value,type:r.value},{default:w(()=>[T(y(t.theme.enableLabel),1)]),_:1},8,["modelValue","disabled","name","type"]),[[Pe,!t.enforced]])])],2))}}),de=z(We,[["__scopeId","data-v-13bf6aae"]]),Ze={name:"UndoIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Ge=["aria-hidden","aria-label"],Je=["fill","width","height"],Ye={d:"M12.5,8C9.85,8 7.45,9 5.6,10.6L2,7V16H11L7.38,12.38C8.77,11.22 10.54,10.5 12.5,10.5C16.04,10.5 19.05,12.81 20.1,16L22.47,15.22C21.08,11.03 17.15,8 12.5,8Z"},Qe={key:0};function Xe(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon undo-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",Ye,[a.title?(c(),S("title",Qe,y(a.title),1)):j("",!0)])],8,Je))],16,Ge)}const et=z(Ze,[["render",Xe]]),ce="theming-apporder-changed-infocard",ge="theming-apporder-changed-infocard",tt=K({__name:"UserSectionAppMenu",setup(t){const{userAppOrder:e,enforcedDefaultApp:a}=M("theming","navigationBar"),r=M("core","apps").filter(({type:p})=>p==="link").map(p=>({...p,label:p.name,default:p.default&&p.id===a})),i=H([...r]),s=H(!Array.isArray(e)||Object.values(e).length>0),o=q(()=>r.some(({id:p},v)=>p!==i.value[v]?.id)),m=q(()=>(o.value?`${ce} `:"")+(a?ge:""));async function g(p){const v={};p.forEach(({app:A,id:f},C)=>{v[f]={order:C,app:A}});try{await U("apporder",v),i.value=p,s.value=!0}catch(A){ee.error("Could not set the app order",{error:A}),X(d("theming","Could not set the app order"))}}async function $(){try{await U("apporder",[]),s.value=!1;const{data:p}=await N.get(E("/core/navigation/apps"),{headers:{"OCS-APIRequest":"true"}});i.value=p.ocs.data.map(v=>({...v,label:v.name,default:v.default&&v.app===a}))}catch(p){ee.error("Could not reset the app order",{error:p}),X(d("theming","Could not reset the app order"))}}async function U(p,v){const A=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"core",configKey:p});return await N.post(A,{configValue:JSON.stringify(v)})}return(p,v)=>(c(),_(n(W),{name:n(d)("theming","Navigation bar settings")},{default:w(()=>[h("p",null,y(n(d)("theming","You can configure the app order used for the navigation bar. The first entry will be the default app, opened after login or when clicking on the logo.")),1),n(a)?(c(),_(n(ie),{key:0,id:ge,type:"info"},{default:w(()=>[T(y(n(d)("theming","The default app can not be changed because it was configured by the administrator.")),1)]),_:1})):j("",!0),o.value?(c(),_(n(ie),{key:1,id:ce,type:"info"},{default:w(()=>[T(y(n(d)("theming","The app order was changed, to see it in action you have to reload the page.")),1)]),_:1})):j("",!0),I(qe,{class:P(p.$style.userSectionAppMenu__selector),"aria-details":m.value,modelValue:i.value,"onUpdate:modelValue":g},null,8,["class","aria-details","modelValue"]),I(n(Ie),{"data-test-id":"btn-apporder-reset",disabled:!s.value,variant:"tertiary",onClick:$},{icon:w(()=>[I(et,{size:20})]),default:w(()=>[T(" "+y(n(d)("theming","Reset default app order")),1)]),_:1},8,["disabled"])]),_:1},8,["name"]))}}),at="_userSectionAppMenu__selector_1hkl7_2",rt={userSectionAppMenu__selector:at},nt={$style:rt},it=z(tt,[["__cssModules",nt]]),ot={class:"hidden-visually"},lt=["aria-disabled","aria-pressed","aria-label","title"],st=["aria-disabled","aria-pressed","aria-label","title"],ut=["aria-disabled","aria-pressed","aria-label","title"],dt={class:"hidden-visually"},ct=["title","aria-label","aria-pressed","onClick"],gt=K({__name:"UserSectionBackground",emits:["refreshStyles"],setup(t,{emit:e}){He(l=>({cf2ff408:s}));const a=e,r=M("theming","shippedBackgrounds"),i=M("theming","themingDefaults"),s=`url('${i.backgroundImage}')`,o=H(!1),m=H(structuredClone(M("theming","data"))),g=H(M("theming","userBackgroundImage")),$=Object.keys(r).filter(l=>l!==i.defaultShippedBackground||i.backgroundMime!=="").map(l=>({name:l,url:U(l),preview:U("preview/"+l),details:r[l]}));function U(l){return Se("theming","","img/background/")+l}async function p(l){g.value=l.backgroundImage,m.value.backgroundColor=l.backgroundColor,a("refreshStyles"),o.value=!1}async function v(){o.value="default";const l=await N.post(G("/apps/theming/background/default"));p(l.data)}async function A(l){o.value=l;const b=await N.post(G("/apps/theming/background/shipped"),{value:l});p(b.data)}async function f(l){o.value="custom";const b=await N.post(G("/apps/theming/background/custom"),{value:l});p(b.data)}async function C(l){if(!l)return;o.value="color";const{data:b}=await N.post(G("/apps/theming/background/color"),{color:l||"#0082c9"});p(b)}async function B(){await De(d("theming","Select a background from your files")).allowDirectories(!1).setFilter(l=>l.mime.startsWith("image/")).setMultiSelect(!1).addButton({label:d("theming","Select background"),callback:([l])=>{f(l.path)},variant:"primary"}).build().pick()}return(l,b)=>(c(),_(n(W),{class:"background",name:n(d)("theming","Background and color"),description:n(d)("theming","The background can be set to an image from the default set, a custom uploaded image, or a plain color.")},{default:w(()=>[h("fieldset",null,[h("legend",ot,y(n(d)("theming","Background and color")),1),h("div",{class:P(l.$style.backgroundSelect)},[h("button",{"aria-disabled":o.value==="custom","aria-pressed":g.value==="custom","aria-label":n(d)("theming","Custom background"),title:n(d)("theming","Custom background"),class:P(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryFilePicker]]),onClick:B},[o.value==="custom"?(c(),_(n(Q),{key:0})):(c(),_(n(Z),{key:1,path:g.value==="custom"?n(J):n(ze)},null,8,["path"]))],10,lt),I(n($e),{modelValue:m.value.backgroundColor,"onUpdate:modelValue":b[0]||(b[0]=u=>m.value.backgroundColor=u),onSubmit:C},{default:w(()=>[h("button",{class:P(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryColor]]),"aria-disabled":o.value==="color","aria-pressed":g.value==="color","aria-label":n(d)("theming","Plain background"),title:n(d)("theming","Plain background"),style:O({backgroundColor:m.value.backgroundColor,"--color-content":n(se)(m.value.backgroundColor)})},[o.value==="color"?(c(),_(n(Q),{key:0})):(c(),_(n(Z),{key:1,path:g.value==="color"?n(J):n(Ee)},null,8,["path"]))],14,st)]),_:1},8,["modelValue"]),h("button",{class:P(["button-vue",[l.$style.backgroundSelect__entry,l.$style.backgroundSelect__entryDefault]]),"aria-disabled":o.value==="default","aria-pressed":g.value==="default","aria-label":n(d)("theming","Default background"),title:n(d)("theming","Default background"),style:O({"--color-content":n(se)(n(i).backgroundColor)}),onClick:v},[o.value==="default"?(c(),_(n(Q),{key:0})):(c(),_(n(Z),{key:1,path:g.value==="default"?n(J):n(je)},null,8,["path"]))],14,ut)],2),h("fieldset",{class:P(l.$style.backgroundSelect)},[h("label",dt,y(n(d)("theming","Default shipped background images")),1),(c(!0),S(F,null,ne(n($),u=>(c(),S("button",{key:u.name,title:u.details.attribution,"aria-label":u.details.description,"aria-pressed":g.value===u.name,class:P(["button-vue",l.$style.backgroundSelect__entry]),style:O({backgroundImage:"url("+u.preview+")"}),tabindex:"0",onClick:D=>A(u.name)},[g.value===u.name?(c(),_(n(Z),{key:0,class:P(l.$style.backgroundSelect__entryIcon),path:n(J)},null,8,["class","path"])):j("",!0)],14,ct))),128))],2)])]),_:1},8,["name","description"]))}}),pt="_backgroundSelect_l1nhm_2",mt="_backgroundSelect__entry_l1nhm_7",ht="_backgroundSelect__entryColor_l1nhm_38",ft="_backgroundSelect__entryFilePicker_l1nhm_42",bt="_backgroundSelect__entryDefault_l1nhm_52",vt={backgroundSelect:pt,backgroundSelect__entry:mt,backgroundSelect__entryColor:ht,backgroundSelect__entryFilePicker:ft,backgroundSelect__entryDefault:bt},yt={$style:vt},_t=z(gt,[["__cssModules",yt]]),kt=K({__name:"UserSectionHotkeys",setup(t){const e=H(M("theming","shortcutsDisabled",!1));Ce(e,a);async function a(){const r=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"shortcuts_disabled"});e.value?await N.post(r,{configValue:"yes"}):await N.delete(r)}return(r,i)=>(c(),_(n(W),{name:n(d)("theming","Keyboard shortcuts"),description:n(d)("theming","In some cases keyboard shortcuts can interfere with accessibility tools. In order to allow focusing on your tool correctly you can disable all keyboard shortcuts here. This will also disable all available shortcuts in apps.")},{default:w(()=>[I(n(le),{modelValue:e.value,"onUpdate:modelValue":i[0]||(i[0]=s=>e.value=s),class:"theming__preview-toggle",type:"switch"},{default:w(()=>[T(y(n(d)("theming","Disable all keyboard shortcuts")),1)]),_:1},8,["modelValue"])]),_:1},8,["name","description"]))}});var Ct={grad:.9,turn:360,rad:360/(2*Math.PI)},L=function(t){return typeof t=="string"?t.length>0:typeof t=="number"},k=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=Math.pow(10,e)),Math.round(a*t)/a+0},V=function(t,e,a){return e===void 0&&(e=0),a===void 0&&(a=1),t>a?a:t>e?t:e},Ae=function(t){return(t=isFinite(t)?t%360:0)>0?t:t+360},pe=function(t){return{r:V(t.r,0,255),g:V(t.g,0,255),b:V(t.b,0,255),a:V(t.a)}},te=function(t){return{r:k(t.r),g:k(t.g),b:k(t.b),a:k(t.a,3)}},wt=/^#([0-9a-f]{3,8})$/i,Y=function(t){var e=t.toString(16);return e.length<2?"0"+e:e},Ne=function(t){var e=t.r,a=t.g,r=t.b,i=t.a,s=Math.max(e,a,r),o=s-Math.min(e,a,r),m=o?s===e?(a-r)/o:s===a?2+(r-e)/o:4+(e-a)/o:0;return{h:60*(m<0?m+6:m),s:s?o/s*100:0,v:s/255*100,a:i}},Me=function(t){var e=t.h,a=t.s,r=t.v,i=t.a;e=e/360*6,a/=100,r/=100;var s=Math.floor(e),o=r*(1-a),m=r*(1-(e-s)*a),g=r*(1-(1-e+s)*a),$=s%6;return{r:255*[r,m,o,o,g,r][$],g:255*[g,r,r,m,o,o][$],b:255*[o,o,g,r,r,m][$],a:i}},me=function(t){return{h:Ae(t.h),s:V(t.s,0,100),l:V(t.l,0,100),a:V(t.a)}},he=function(t){return{h:k(t.h),s:k(t.s),l:k(t.l),a:k(t.a,3)}},fe=function(t){return Me((a=(e=t).s,{h:e.h,s:(a*=((r=e.l)<50?r:100-r)/100)>0?2*a/(r+a)*100:0,v:r+a,a:e.a}));var e,a,r},R=function(t){return{h:(e=Ne(t)).h,s:(i=(200-(a=e.s))*(r=e.v)/100)>0&&i<200?a*r/100/(i<=100?i:200-i)*100:0,l:i/2,a:e.a};var e,a,r,i},St=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s*,\s*([+-]?\d*\.?\d+)%\s*,\s*([+-]?\d*\.?\d+)%\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,It=/^hsla?\(\s*([+-]?\d*\.?\d+)(deg|rad|grad|turn)?\s+([+-]?\d*\.?\d+)%\s+([+-]?\d*\.?\d+)%\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,$t=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*,\s*([+-]?\d*\.?\d+)(%)?\s*(?:,\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,At=/^rgba?\(\s*([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s+([+-]?\d*\.?\d+)(%)?\s*(?:\/\s*([+-]?\d*\.?\d+)(%)?\s*)?\)$/i,be={string:[[function(t){var e=wt.exec(t);return e?(t=e[1]).length<=4?{r:parseInt(t[0]+t[0],16),g:parseInt(t[1]+t[1],16),b:parseInt(t[2]+t[2],16),a:t.length===4?k(parseInt(t[3]+t[3],16)/255,2):1}:t.length===6||t.length===8?{r:parseInt(t.substr(0,2),16),g:parseInt(t.substr(2,2),16),b:parseInt(t.substr(4,2),16),a:t.length===8?k(parseInt(t.substr(6,2),16)/255,2):1}:null:null},"hex"],[function(t){var e=$t.exec(t)||At.exec(t);return e?e[2]!==e[4]||e[4]!==e[6]?null:pe({r:Number(e[1])/(e[2]?100/255:1),g:Number(e[3])/(e[4]?100/255:1),b:Number(e[5])/(e[6]?100/255:1),a:e[7]===void 0?1:Number(e[7])/(e[8]?100:1)}):null},"rgb"],[function(t){var e=St.exec(t)||It.exec(t);if(!e)return null;var a,r,i=me({h:(a=e[1],r=e[2],r===void 0&&(r="deg"),Number(a)*(Ct[r]||1)),s:Number(e[3]),l:Number(e[4]),a:e[5]===void 0?1:Number(e[5])/(e[6]?100:1)});return fe(i)},"hsl"]],object:[[function(t){var e=t.r,a=t.g,r=t.b,i=t.a,s=i===void 0?1:i;return L(e)&&L(a)&&L(r)?pe({r:Number(e),g:Number(a),b:Number(r),a:Number(s)}):null},"rgb"],[function(t){var e=t.h,a=t.s,r=t.l,i=t.a,s=i===void 0?1:i;if(!L(e)||!L(a)||!L(r))return null;var o=me({h:Number(e),s:Number(a),l:Number(r),a:Number(s)});return fe(o)},"hsl"],[function(t){var e=t.h,a=t.s,r=t.v,i=t.a,s=i===void 0?1:i;if(!L(e)||!L(a)||!L(r))return null;var o=(function(m){return{h:Ae(m.h),s:V(m.s,0,100),v:V(m.v,0,100),a:V(m.a)}})({h:Number(e),s:Number(a),v:Number(r),a:Number(s)});return Me(o)},"hsv"]]},ve=function(t,e){for(var a=0;a=.5},t.prototype.toHex=function(){return e=te(this.rgba),a=e.r,r=e.g,i=e.b,o=(s=e.a)<1?Y(k(255*s)):"","#"+Y(a)+Y(r)+Y(i)+o;var e,a,r,i,s,o},t.prototype.toRgb=function(){return te(this.rgba)},t.prototype.toRgbString=function(){return e=te(this.rgba),a=e.r,r=e.g,i=e.b,(s=e.a)<1?"rgba("+a+", "+r+", "+i+", "+s+")":"rgb("+a+", "+r+", "+i+")";var e,a,r,i,s},t.prototype.toHsl=function(){return he(R(this.rgba))},t.prototype.toHslString=function(){return e=he(R(this.rgba)),a=e.h,r=e.s,i=e.l,(s=e.a)<1?"hsla("+a+", "+r+"%, "+i+"%, "+s+")":"hsl("+a+", "+r+"%, "+i+"%)";var e,a,r,i,s},t.prototype.toHsv=function(){return e=Ne(this.rgba),{h:k(e.h),s:k(e.s),v:k(e.v),a:k(e.a,3)};var e},t.prototype.invert=function(){return x({r:255-(e=this.rgba).r,g:255-e.g,b:255-e.b,a:e.a});var e},t.prototype.saturate=function(e){return e===void 0&&(e=.1),x(ae(this.rgba,e))},t.prototype.desaturate=function(e){return e===void 0&&(e=.1),x(ae(this.rgba,-e))},t.prototype.grayscale=function(){return x(ae(this.rgba,-1))},t.prototype.lighten=function(e){return e===void 0&&(e=.1),x(ye(this.rgba,e))},t.prototype.darken=function(e){return e===void 0&&(e=.1),x(ye(this.rgba,-e))},t.prototype.rotate=function(e){return e===void 0&&(e=15),this.hue(this.hue()+e)},t.prototype.alpha=function(e){return typeof e=="number"?x({r:(a=this.rgba).r,g:a.g,b:a.b,a:e}):k(this.rgba.a,3);var a},t.prototype.hue=function(e){var a=R(this.rgba);return typeof e=="number"?x({h:e,s:a.s,l:a.l,a:a.a}):k(a.h)},t.prototype.isEqual=function(e){return this.toHex()===x(e).toHex()},t})(),x=function(t){return t instanceof _e?t:new _e(t)};const Mt={name:"PaletteOutlineIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Vt=["aria-hidden","aria-label"],Ut=["fill","width","height"],xt={d:"M12,22A10,10 0 0,1 2,12A10,10 0 0,1 12,2C17.5,2 22,6 22,11A6,6 0 0,1 16,17H14.2C13.9,17 13.7,17.2 13.7,17.5C13.7,17.6 13.8,17.7 13.8,17.8C14.2,18.3 14.4,18.9 14.4,19.5C14.5,20.9 13.4,22 12,22M12,4A8,8 0 0,0 4,12A8,8 0 0,0 12,20C12.3,20 12.5,19.8 12.5,19.5C12.5,19.3 12.4,19.2 12.4,19.1C12,18.6 11.8,18.1 11.8,17.5C11.8,16.1 12.9,15 14.3,15H16A4,4 0 0,0 20,11C20,7.1 16.4,4 12,4M6.5,10C7.3,10 8,10.7 8,11.5C8,12.3 7.3,13 6.5,13C5.7,13 5,12.3 5,11.5C5,10.7 5.7,10 6.5,10M9.5,6C10.3,6 11,6.7 11,7.5C11,8.3 10.3,9 9.5,9C8.7,9 8,8.3 8,7.5C8,6.7 8.7,6 9.5,6M14.5,6C15.3,6 16,6.7 16,7.5C16,8.3 15.3,9 14.5,9C13.7,9 13,8.3 13,7.5C13,6.7 13.7,6 14.5,6M17.5,10C18.3,10 19,10.7 19,11.5C19,12.3 18.3,13 17.5,13C16.7,13 16,12.3 16,11.5C16,10.7 16.7,10 17.5,10Z"},Pt={key:0};function Ht(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon palette-outline-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",xt,[a.title?(c(),S("title",Pt,y(a.title),1)):j("",!0)])],8,Ut))],16,Vt)}const Lt=z(Mt,[["render",Ht]]),Tt={name:"UndoVariantIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},Bt=["aria-hidden","aria-label"],Dt=["fill","width","height"],qt={d:"M13.5,7A6.5,6.5 0 0,1 20,13.5A6.5,6.5 0 0,1 13.5,20H10V18H13.5C16,18 18,16 18,13.5C18,11 16,9 13.5,9H7.83L10.91,12.09L9.5,13.5L4,8L9.5,2.5L10.92,3.91L7.83,7H13.5M6,18H8V20H6V18Z"},zt={key:0};function Et(t,e,a,r,i,s){return c(),S("span",oe(t.$attrs,{"aria-hidden":a.title?null:"true","aria-label":a.title,class:"material-design-icon undo-variant-icon",role:"img",onClick:e[0]||(e[0]=o=>t.$emit("click",o))}),[(c(),S("svg",{fill:a.fillColor,class:"material-design-icon__svg",width:a.size,height:a.size,viewBox:"0 0 24 24"},[h("path",qt,[a.title?(c(),S("title",zt,y(a.title),1)):j("",!0)])],8,Dt))],16,Bt)}const jt=z(Tt,[["render",Et]]),Kt=K({__name:"UserSectionPrimaryColor",emits:["refreshStyles"],setup(t,{expose:e,emit:a}){const r=a;e({reload:U});const{primaryColor:i,defaultPrimaryColor:s}=M("theming","data",{primaryColor:"#0082c9",defaultPrimaryColor:"#0082c9"}),o=we("trigger"),m=H(!1),g=H(i);Ce(g,Ke(f=>{v(f)},1e3));const $=q(()=>x(g.value).isEqual(x(s)));function U(){let f=window.getComputedStyle(o.value).backgroundColor;const C=f.replaceAll(/\s/g,"").match(/^rgba?\((\d+),(\d+),(\d+)/);C&&(f=`#${A(C[1])}${A(C[2])}${A(C[3])}`),f.toLowerCase()!==g.value.toLowerCase()&&(g.value=f)}function p(){g.value=s,v(null)}async function v(f){m.value=!0;const C=E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"primary_color"});try{f?await N.post(C,{configValue:f}):await N.delete(C),r("refreshStyles")}catch(B){ee.error("Could not update primary color",{error:B}),X(d("theming","Could not set primary color"))}m.value=!1}function A(f){return Number.parseInt(f).toString(16).padStart(2,"0")}return(f,C)=>(c(),_(n(W),{name:n(d)("theming","Primary color"),description:n(d)("theming","Set a primary color to highlight important elements. The color used for elements such as primary buttons might differ a bit as it gets adjusted to fulfill accessibility requirements.")},{default:w(()=>[h("div",{class:P(f.$style.userPrimaryColor)},[I(n($e),{modelValue:g.value,"onUpdate:modelValue":C[0]||(C[0]=B=>g.value=B),"data-user-theming-primary-color":""},{default:w(()=>[h("button",{ref:"trigger",class:P(f.$style.userPrimaryColor__trigger),style:O({"background-color":g.value}),"data-user-theming-primary-color-trigger":""},[T(y(n(d)("theming","Primary color"))+" ",1),m.value?(c(),_(n(Q),{key:0})):(c(),_(Lt,{key:1,size:20}))],6)]),_:1},8,["modelValue"]),I(n(Ie),{variant:"tertiary",disabled:$.value,onClick:p},{icon:w(()=>[I(jt,{size:20})]),default:w(()=>[T(" "+y(n(d)("theming","Reset primary color")),1)]),_:1},8,["disabled"])],2)]),_:1},8,["name","description"]))}}),Ft="_userPrimaryColor_3oh6f_1",Ot="_userPrimaryColor__trigger_3oh6f_8",Rt={userPrimaryColor:Ft,userPrimaryColor__trigger:Ot},Wt={$style:Rt},Zt=z(Kt,[["__cssModules",Wt]]),Gt=["innerHTML"],Jt=["innerHTML"],Yt={class:"theming__preview-list"},Qt={class:"theming__preview-list"},Xt=K({__name:"UserTheming",setup(t){const e=M("theming","enforceTheme",""),a=M("theming","isUserThemingDisabled"),r=H(M("theming","enableBlurFilter","")),i=M("theming","themes",[]),s=H(i.filter(l=>l.type===1)),o=H(i.filter(l=>l.type===2)),m=q(()=>s.value.find(l=>l.enabled)||s.value[0]),g=we("primaryColor"),$=d("theming","Universal access is very important to us. We follow web standards and check to make everything usable also without mouse, and assistive software such as screenreaders. We aim to be compliant with the {linkstart}Web Content Accessibility Guidelines{linkend} 2.1 on AA level, with the high contrast theme even on AAA level.",{linkstart:'',linkend:""},{escape:!1}),U=d("theming","If you find any issues, do not hesitate to report them on {issuetracker}our issue tracker{linkend}. And if you want to get involved, come join {designteam}our design team{linkend}!",{issuetracker:'',designteam:'',linkend:""},{escape:!1});async function p(){await ue(),Le(()=>g.value?.reload())}function v(l,b){s.value.forEach(u=>{if(u.id===l&&b){u.enabled=!0;return}u.enabled=!1}),C(),B(b,l)}function A(l,b){o.value.forEach(u=>{if(u.id===l&&b){u.enabled=!0;return}u.enabled=!1}),C(),B(b,l)}async function f(){r.value=r.value==="no"?"yes":"no",await N({url:E("apps/provisioning_api/api/v1/config/users/{appId}/{configKey}",{appId:"theming",configKey:"force_enable_blur_filter"}),data:{configValue:r.value},method:"POST"}),ue()}function C(){const l=s.value.filter(u=>u.enabled===!0).map(u=>u.id),b=o.value.filter(u=>u.enabled===!0).map(u=>u.id);s.value.forEach(u=>{document.body.toggleAttribute(`data-theme-${u.id}`,u.enabled)}),o.value.forEach(u=>{document.body.toggleAttribute(`data-theme-${u.id}`,u.enabled)}),document.body.setAttribute("data-themes",[...l,...b].join(","))}async function B(l,b){try{l?await N({url:E("apps/theming/api/v1/theme/{themeId}/enable",{themeId:b}),method:"PUT"}):await N({url:E("apps/theming/api/v1/theme/{themeId}",{themeId:b}),method:"DELETE"})}catch(u){ee.error("theming: Unable to apply setting.",{error:u});let D=d("theming","Unable to apply the setting.");Be(u)&&u.response?.data.ocs?.meta?.message&&(D=`${u.response.data.ocs.meta.message}. ${D}`),X(D)}}return(l,b)=>(c(),S(F,null,[I(n(W),{name:n(d)("theming","Appearance and accessibility settings"),class:"theming"},{default:w(()=>[h("p",{innerHTML:n($)},null,8,Gt),h("p",{innerHTML:n(U)},null,8,Jt),h("div",Yt,[(c(!0),S(F,null,ne(s.value,u=>(c(),_(de,{key:u.id,enforced:u.id===n(e),selected:m.value.id===u.id,theme:u,unique:s.value.length===1,type:"theme","onUpdate:selected":D=>v(u.id,D)},null,8,["enforced","selected","theme","unique","onUpdate:selected"]))),128))]),h("div",Qt,[(c(!0),S(F,null,ne(o.value,u=>(c(),_(de,{key:u.id,selected:u.enabled,theme:u,unique:o.value.length===1,type:"font","onUpdate:selected":D=>A(u.id,D)},null,8,["selected","theme","unique","onUpdate:selected"]))),128))]),h("h3",null,y(n(d)("theming","Misc accessibility options")),1),I(n(le),{type:"checkbox",modelValue:r.value==="yes",indeterminate:r.value==="","onUpdate:modelValue":f},{default:w(()=>[T(y(n(d)("theming","Enable blur background filter (may increase GPU load)")),1)]),_:1},8,["modelValue","indeterminate"])]),_:1},8,["name"]),n(a)?(c(),_(n(ie),{key:0,type:"info"},{default:w(()=>[T(y(n(d)("theming","Customization has been disabled by your administrator")),1)]),_:1})):(c(),S(F,{key:1},[I(Zt,{ref:"primaryColor",onRefreshStyles:p},null,512),I(_t,{onRefreshStyles:p})],64)),I(kt),I(it)],64))}}),ea=z(Xt,[["__scopeId","data-v-50195b4f"]]),ke=Te(ea);ke.config.idPrefix="settings",ke.mount("#settings-personal-theming"); //# sourceMappingURL=theming-settings-personal.mjs.map diff --git a/dist/theming-theming-settings-personal-Tw2nBJ_u.chunk.css b/dist/theming-theming-settings-personal-Tw2nBJ_u.chunk.css deleted file mode 100644 index 0801aa86126ca..0000000000000 --- a/dist/theming-theming-settings-personal-Tw2nBJ_u.chunk.css +++ /dev/null @@ -1 +0,0 @@ -.theming__preview[data-v-13bf6aae]{--ratio: 16;position:relative;display:flex;justify-content:flex-start}.theming__preview[data-v-13bf6aae],.theming__preview[data-v-13bf6aae] *{-webkit-user-select:none;user-select:none}.theming__preview-image[data-v-13bf6aae]{flex-basis:calc(16px * var(--ratio));flex-shrink:0;height:calc(10px * var(--ratio));margin-inline-end:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-13bf6aae]{margin-bottom:10px}.theming__preview-description[data-v-13bf6aae]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-13bf6aae]{font-weight:700;margin-bottom:0}.theming__preview-description label[data-v-13bf6aae]{padding:12px 0}.theming__preview-warning[data-v-13bf6aae]{background-color:var(--color-warning);color:var(--color-warning-text)}@media(max-width:682.6666666667px){.theming__preview[data-v-13bf6aae]{flex-direction:column}.theming__preview-image[data-v-13bf6aae]{margin:0}}._userSectionAppMenu__selector_1hkl7_2{margin-block:12px}._backgroundSelect_l1nhm_2{display:flex;flex-wrap:wrap;justify-content:center}._backgroundSelect_l1nhm_2 ._backgroundSelect__entry_l1nhm_7{display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;height:96px;width:168px;margin:var(--default-grid-baseline);text-align:center;overflow-wrap:break-word;hyphens:auto;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover;--color-content: var(--color-background-plain-text)}._backgroundSelect_l1nhm_2 ._backgroundSelect__entry_l1nhm_7:hover,._backgroundSelect_l1nhm_2 ._backgroundSelect__entry_l1nhm_7:focus{outline:2px solid var(--color-main-text)!important;border-color:var(--color-main-background)!important}._backgroundSelect_l1nhm_2 ._backgroundSelect__entry_l1nhm_7>*{color:var(--color-content);opacity:1}._backgroundSelect_l1nhm_2 ._backgroundSelect__entryColor_l1nhm_38{background-color:var(--color-background-plain)}._backgroundSelect_l1nhm_2 ._backgroundSelect__entryFilePicker_l1nhm_42{--color-content: var(--color-main-text);background-color:var(--color-background-dark)}._backgroundSelect_l1nhm_2 ._backgroundSelect__entryFilePicker_l1nhm_42[aria-pressed=true]{--color-content: var(--color-background-plain-text);background-image:var(--image-background)}._backgroundSelect_l1nhm_2 ._backgroundSelect__entryDefault_l1nhm_52{background-image:linear-gradient(to bottom,#17171780,#17171780),var(--cf2ff408)}._userPrimaryColor_3oh6f_1{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;margin:0!important;background-color:var(--color-primary);color:var(--color-primary-text);height:96px;width:168px;overflow-wrap:break-word;hyphens:auto;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large)}._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8:active{background-color:var(--color-primary-hover)!important}._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8:hover,._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8:focus,._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8:focus-visible{border-color:var(--color-main-background)!important;outline:2px solid var(--color-main-text)!important}.theming p[data-v-50195b4f]{max-width:800px}.theming[data-v-50195b4f] a{font-weight:700}.theming[data-v-50195b4f] a:hover,.theming[data-v-50195b4f] a:focus{text-decoration:underline}.theming__preview-list[data-v-50195b4f]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap)}.background__grid[data-v-50195b4f]{margin-top:30px}@media(max-width:1440px){.theming__preview-list[data-v-50195b4f]{display:flex;flex-direction:column}} diff --git a/dist/theming-theming-settings-personal-snrZ4DPH.chunk.css b/dist/theming-theming-settings-personal-snrZ4DPH.chunk.css new file mode 100644 index 0000000000000..82073a7476d29 --- /dev/null +++ b/dist/theming-theming-settings-personal-snrZ4DPH.chunk.css @@ -0,0 +1 @@ +.theming__preview[data-v-13bf6aae]{--ratio: 16;position:relative;display:flex;justify-content:flex-start}.theming__preview[data-v-13bf6aae],.theming__preview[data-v-13bf6aae] *{-webkit-user-select:none;user-select:none}.theming__preview-image[data-v-13bf6aae]{flex-basis:calc(16px * var(--ratio));flex-shrink:0;height:calc(10px * var(--ratio));margin-inline-end:var(--gap);cursor:pointer;border-radius:var(--border-radius);background-repeat:no-repeat;background-position:top left;background-size:cover}.theming__preview-explanation[data-v-13bf6aae]{margin-bottom:10px}.theming__preview-description[data-v-13bf6aae]{display:flex;flex-direction:column}.theming__preview-description h3[data-v-13bf6aae]{font-weight:700;margin-bottom:0}.theming__preview-description label[data-v-13bf6aae]{padding:12px 0}.theming__preview-warning[data-v-13bf6aae]{background-color:var(--color-warning);color:var(--color-warning-text)}@media(max-width:682.6666666667px){.theming__preview[data-v-13bf6aae]{flex-direction:column}.theming__preview-image[data-v-13bf6aae]{margin:0}}._userSectionAppMenu__selector_1hkl7_2{margin-block:12px}._backgroundSelect_l1nhm_2{display:flex;flex-wrap:wrap;justify-content:center;._backgroundSelect__entry_l1nhm_7{display:flex;flex-direction:column;justify-content:center;align-items:center;overflow:hidden;height:96px;width:168px;margin:var(--default-grid-baseline);text-align:center;overflow-wrap:break-word;hyphens:auto;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large);background-position:center center;background-size:cover;--color-content: var(--color-background-plain-text)}._backgroundSelect__entry_l1nhm_7:hover,._backgroundSelect__entry_l1nhm_7:focus{outline:2px solid var(--color-main-text)!important;border-color:var(--color-main-background)!important}._backgroundSelect__entry_l1nhm_7>*{color:var(--color-content);opacity:1}._backgroundSelect__entryColor_l1nhm_38{background-color:var(--color-background-plain)}._backgroundSelect__entryFilePicker_l1nhm_42{--color-content: var(--color-main-text);background-color:var(--color-background-dark)}._backgroundSelect__entryFilePicker_l1nhm_42[aria-pressed=true]{--color-content: var(--color-background-plain-text);background-image:var(--image-background)}._backgroundSelect__entryDefault_l1nhm_52{background-image:linear-gradient(to bottom,#17171780,#17171780),var(--cf2ff408)}}._userPrimaryColor_3oh6f_1{display:flex;flex-direction:row;flex-wrap:wrap;gap:12px}._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;margin:0!important;background-color:var(--color-primary);color:var(--color-primary-text);height:96px;width:168px;overflow-wrap:break-word;hyphens:auto;border:2px solid var(--color-main-background);border-radius:var(--border-radius-large)}._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8:active{background-color:var(--color-primary-hover)!important}._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8:hover,._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8:focus,._userPrimaryColor_3oh6f_1 ._userPrimaryColor__trigger_3oh6f_8:focus-visible{border-color:var(--color-main-background)!important;outline:2px solid var(--color-main-text)!important}.theming p[data-v-50195b4f]{max-width:800px}.theming[data-v-50195b4f] a{font-weight:700}.theming[data-v-50195b4f] a:hover,.theming[data-v-50195b4f] a:focus{text-decoration:underline}.theming__preview-list[data-v-50195b4f]{--gap: 30px;display:grid;margin-top:var(--gap);column-gap:var(--gap);row-gap:var(--gap)}.background__grid[data-v-50195b4f]{margin-top:30px}@media(max-width:1440px){.theming__preview-list[data-v-50195b4f]{display:flex;flex-direction:column}} diff --git a/dist/twofactor_backupcodes-settings-personal.mjs b/dist/twofactor_backupcodes-settings-personal.mjs index 723a3cbfbcdc3..d2ecfda6536f0 100644 --- a/dist/twofactor_backupcodes-settings-personal.mjs +++ b/dist/twofactor_backupcodes-settings-personal.mjs @@ -1,3 +1,3 @@ -import{d as U,c as A}from"./pinia-DaVFx_pY.chunk.mjs";import{r as _,b as I,j as p,o as n,c as x,u as a,w as k,g as i,t as d,l as E,F as m,k as f,p as N,C as M,n as w,e as y,h as R}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{g as $,l as j,a as B}from"./index-BgmsSgl5.chunk.mjs";import{a as P}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{t as o}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as F}from"./index-CXHO4UEV.chunk.mjs";import{N as g}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as G}from"./mdi-e8YUrhPH.chunk.mjs";import{g as H}from"./index-DqIuD5e7.chunk.mjs";import{c as q}from"./index-CPwHjAPR.chunk.mjs";import{g as z}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const D=H().detectLogLevel().setApp("twofactor_backupcodes").build();function J(r){const c=$().theming.name||"Nextcloud",e=window.open("",o("twofactor_backupcodes","{name} backup codes",{name:c}));if(!e)throw P(o("twofactor_backupcodes","Unable to open a new tab for printing")),new Error("Unable to open a new tab for printing");const t=e.document.createElement("h1");t.textContent=o("twofactor_backupcodes","{name} backup codes",{name:c});const s=e.document.createElement("pre");for(const b of r){const u=e.document.createTextNode(b);s.appendChild(u),s.appendChild(e.document.createElement("br"))}e.document.body.innerHTML="",e.document.body.appendChild(t),e.document.body.appendChild(s),e.print(),e.close()}async function K(){const r=z("/apps/twofactor_backupcodes/settings/create"),{data:c}=await q.post(r);return c}const v=j("twofactor_backupcodes","state"),O=U("twofactor_backupcodes",()=>{const r=_(v.enabled),c=_(v.total),e=_(v.used),t=_([]);async function s(){r.value=!1;const{codes:b,state:u}=await K();r.value=u.enabled,c.value=u.total,e.value=u.used,t.value=b}return{enabled:r,total:c,used:e,codes:t,generate:s}}),Q=["aria-label"],V=I({__name:"PersonalSettings",setup(r){const c=$().theming.name??"Nextcloud",e=O(),t=_(!1),s=N(()=>e.codes&&e.codes.length>0),b=c+"-backup-codes.txt",u=N(()=>s.value?"data:text/plain,"+encodeURIComponent(e.codes.reduce((l,C)=>l+C+` +import{d as U,c as A}from"./pinia-DaVFx_pY.chunk.mjs";import{r as _,b as I,j as p,o as n,c as x,u as a,w as k,g as i,t as d,l as E,F as m,k as f,p as N,C as M,n as w,e as y,h as R}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{g as $,l as j,a as B}from"./index-BgmsSgl5.chunk.mjs";import{a as P}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{t as o}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as F}from"./index-CXHO4UEV.chunk.mjs";import{N as g}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as G}from"./mdi-e8YUrhPH.chunk.mjs";import{g as H}from"./index-DqIuD5e7.chunk.mjs";import{c as q}from"./index-CPwHjAPR.chunk.mjs";import{g as z}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import"./TrashCanOutline-COyEKQVc.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const D=H().detectLogLevel().setApp("twofactor_backupcodes").build();function J(r){const c=$().theming.name||"Nextcloud",e=window.open("",o("twofactor_backupcodes","{name} backup codes",{name:c}));if(!e)throw P(o("twofactor_backupcodes","Unable to open a new tab for printing")),new Error("Unable to open a new tab for printing");const t=e.document.createElement("h1");t.textContent=o("twofactor_backupcodes","{name} backup codes",{name:c});const s=e.document.createElement("pre");for(const b of r){const u=e.document.createTextNode(b);s.appendChild(u),s.appendChild(e.document.createElement("br"))}e.document.body.innerHTML="",e.document.body.appendChild(t),e.document.body.appendChild(s),e.print(),e.close()}async function K(){const r=z("/apps/twofactor_backupcodes/settings/create"),{data:c}=await q.post(r);return c}const v=j("twofactor_backupcodes","state"),O=U("twofactor_backupcodes",()=>{const r=_(v.enabled),c=_(v.total),e=_(v.used),t=_([]);async function s(){r.value=!1;const{codes:b,state:u}=await K();r.value=u.enabled,c.value=u.total,e.value=u.used,t.value=b}return{enabled:r,total:c,used:e,codes:t,generate:s}}),Q=["aria-label"],V=I({__name:"PersonalSettings",setup(r){const c=$().theming.name??"Nextcloud",e=O(),t=_(!1),s=N(()=>e.codes&&e.codes.length>0),b=c+"-backup-codes.txt",u=N(()=>s.value?"data:text/plain,"+encodeURIComponent(e.codes.reduce((l,C)=>l+C+` `,"")):"");async function h(){await F(),t.value=!0;try{await e.generate()}catch(l){D.error("Error generating backup codes",{error:l}),P(o("twofactor_backupcodes","An error occurred while generating your backup codes"))}finally{t.value=!1}}function T(){J(!e.codes||e.codes.length===0?[]:e.codes)}return(l,C)=>(n(),p("div",{class:w(l.$style.backupcodesSettings)},[a(e).enabled?(n(),p(m,{key:1},[f("p",null,[s.value?(n(),p(m,{key:1},[i(d(a(o)("twofactor_backupcodes","These are your backup codes. Please save and/or print them as you will not be able to read the codes again later."))+" ",1),f("ul",{"aria-label":a(o)("twofactor_backupcodes","List of backup codes")},[(n(!0),p(m,null,M(a(e).codes,S=>(n(),p("li",{key:S,class:w(l.$style.backupcodesSettings__code)},d(S),3))),128))],8,Q)],64)):(n(),p(m,{key:0},[i(d(a(o)("twofactor_backupcodes","Backup codes have been generated. {used} of {total} codes have been used.",{used:a(e).used,total:a(e).total})),1)],64))]),f("p",{class:w(l.$style.backupcodesSettings__actions)},[y(a(g),{id:"generate-backup-codes",variant:"error",onClick:h},{default:k(()=>[i(d(a(o)("twofactor_backupcodes","Regenerate backup codes")),1)]),_:1}),s.value?(n(),p(m,{key:0},[y(a(g),{onClick:T},{default:k(()=>[i(d(a(o)("twofactor_backupcodes","Print backup codes")),1)]),_:1}),y(a(g),{href:u.value,download:b,variant:"primary"},{default:k(()=>[i(d(a(o)("twofactor_backupcodes","Save backup codes")),1)]),_:1},8,["href"])],64)):E("",!0)],2),f("p",null,[f("em",null,d(a(o)("twofactor_backupcodes","If you regenerate backup codes, you automatically invalidate old codes.")),1)])],64)):(n(),x(a(g),{key:0,disabled:t.value,variant:"primary",onClick:h},{icon:k(()=>[t.value?(n(),x(a(G),{key:0})):E("",!0)]),default:k(()=>[i(" "+d(a(o)("twofactor_backupcodes","Generate backup codes")),1)]),_:1},8,["disabled"]))],2))}}),W="_backupcodesSettings_bnkw8_2",X="_backupcodesSettings__code_bnkw8_7",Y="_backupcodesSettings__actions_bnkw8_13",Z={backupcodesSettings:W,backupcodesSettings__code:X,backupcodesSettings__actions:Y},ee={$style:Z},ae=B(V,[["__cssModules",ee]]),oe=A(),L=R(ae);L.use(oe),L.mount("#twofactor-backupcodes-settings"); //# sourceMappingURL=twofactor_backupcodes-settings-personal.mjs.map diff --git a/dist/types-Dhw8OyWT.chunk.mjs b/dist/types-ND6tniN8.chunk.mjs similarity index 93% rename from dist/types-Dhw8OyWT.chunk.mjs rename to dist/types-ND6tniN8.chunk.mjs index 6f010ce31f5a5..9568aed85a8ab 100644 --- a/dist/types-Dhw8OyWT.chunk.mjs +++ b/dist/types-ND6tniN8.chunk.mjs @@ -1,2 +1,2 @@ -import"./index-BpgPbDC6.chunk.mjs";import{_ as f,c as m}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{b as G,i as y,j as l,o as n,k as a,l as b,m as t,g as p,t as _,n as o}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{g as $}from"./index-DqIuD5e7.chunk.mjs";const h=["aria-describedby"],g=G({__name:"NcFormGroup",props:{label:{default:()=>{}},description:{default:()=>{}},hideLabel:{type:Boolean,default:!1},hideDescription:{type:Boolean,default:!1},noGap:{type:Boolean,default:!1}},setup(r){const c=y(),i=`${`nc-form-group-${m()}`}-description`,s=()=>!!r.description||!!c.description,d=()=>s()?i:void 0,u=()=>r.hideLabel&&(!s()||r.hideDescription);return(e,D)=>(n(),l("fieldset",{class:o([e.$style.formGroup,{[e.$style.formGroup_noGap]:e.noGap}]),"aria-describedby":d()},[a("legend",{class:o([e.$style.formGroup__label,{"hidden-visually":e.hideLabel}])},[t(e.$slots,"label",{},()=>[p(_(e.label||"⚠️ Missing label"),1)])],2),s()?(n(),l("div",{key:0,id:i,class:o([e.$style.formGroup__description,{"hidden-visually":e.hideDescription}])},[t(e.$slots,"description",{},()=>[p(_(e.description),1)])],2)):b("",!0),a("div",{class:o([e.$style.formGroup__content,{[e.$style.formGroup__content_only]:u()}])},[t(e.$slots,"default")],2)],10,h))}}),j="_formGroup_sNzER",v="_formGroup_noGap_ChojB",N="_formGroup__label_Z81k5",B="_formGroup__description_xWRa-",I="_formGroup__content_wHRjf",k="_formGroup__content_only_VejcN",x={"material-design-icon":"_material-design-icon_QhThW",formGroup:j,formGroup_noGap:v,formGroup__label:N,formGroup__description:B,formGroup__content:I,formGroup__content_only:k},z={$style:x},M=f(g,[["__cssModules",z]]),A=$().setApp("encryption").build(),C=Object.freeze({NotInitialized:"0",InitExecuted:"1",InitSuccessful:"2"});export{C as I,M as N,A as l}; -//# sourceMappingURL=types-Dhw8OyWT.chunk.mjs.map +import"./index-Bk4hMpWo.chunk.mjs";import{_ as f,c as m}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{b as G,i as y,j as l,o as n,k as a,l as b,m as t,g as p,t as _,n as o}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{g as $}from"./index-DqIuD5e7.chunk.mjs";const h=["aria-describedby"],g=G({__name:"NcFormGroup",props:{label:{default:()=>{}},description:{default:()=>{}},hideLabel:{type:Boolean,default:!1},hideDescription:{type:Boolean,default:!1},noGap:{type:Boolean,default:!1}},setup(r){const c=y(),i=`${`nc-form-group-${m()}`}-description`,s=()=>!!r.description||!!c.description,d=()=>s()?i:void 0,u=()=>r.hideLabel&&(!s()||r.hideDescription);return(e,D)=>(n(),l("fieldset",{class:o([e.$style.formGroup,{[e.$style.formGroup_noGap]:e.noGap}]),"aria-describedby":d()},[a("legend",{class:o([e.$style.formGroup__label,{"hidden-visually":e.hideLabel}])},[t(e.$slots,"label",{},()=>[p(_(e.label||"⚠️ Missing label"),1)])],2),s()?(n(),l("div",{key:0,id:i,class:o([e.$style.formGroup__description,{"hidden-visually":e.hideDescription}])},[t(e.$slots,"description",{},()=>[p(_(e.description),1)])],2)):b("",!0),a("div",{class:o([e.$style.formGroup__content,{[e.$style.formGroup__content_only]:u()}])},[t(e.$slots,"default")],2)],10,h))}}),j="_formGroup_sNzER",v="_formGroup_noGap_ChojB",N="_formGroup__label_Z81k5",B="_formGroup__description_xWRa-",I="_formGroup__content_wHRjf",k="_formGroup__content_only_VejcN",x={"material-design-icon":"_material-design-icon_QhThW",formGroup:j,formGroup_noGap:v,formGroup__label:N,formGroup__description:B,formGroup__content:I,formGroup__content_only:k},z={$style:x},M=f(g,[["__cssModules",z]]),A=$().setApp("encryption").build(),C=Object.freeze({NotInitialized:"0",InitExecuted:"1",InitSuccessful:"2"});export{C as I,M as N,A as l}; +//# sourceMappingURL=types-ND6tniN8.chunk.mjs.map diff --git a/dist/types-Dhw8OyWT.chunk.mjs.license b/dist/types-ND6tniN8.chunk.mjs.license similarity index 100% rename from dist/types-Dhw8OyWT.chunk.mjs.license rename to dist/types-ND6tniN8.chunk.mjs.license diff --git a/dist/types-Dhw8OyWT.chunk.mjs.map b/dist/types-ND6tniN8.chunk.mjs.map similarity index 98% rename from dist/types-Dhw8OyWT.chunk.mjs.map rename to dist/types-ND6tniN8.chunk.mjs.map index fcb3c69a579a8..3bf5547b6d4fc 100644 --- a/dist/types-Dhw8OyWT.chunk.mjs.map +++ b/dist/types-ND6tniN8.chunk.mjs.map @@ -1 +1 @@ -{"version":3,"file":"types-Dhw8OyWT.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcFormGroup-B3a2iUnT.mjs","../build/frontend/apps/encryption/src/utils/logger.ts","../build/frontend/apps/encryption/src/utils/types.ts"],"sourcesContent":["import '../assets/NcFormGroup-BjWhd5Ky.css';\nimport { defineComponent, useSlots, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, createTextVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"aria-describedby\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFormGroup\",\n props: {\n label: { default: () => void 0 },\n description: { default: () => void 0 },\n hideLabel: { type: Boolean, default: false },\n hideDescription: { type: Boolean, default: false },\n noGap: { type: Boolean, default: false }\n },\n setup(__props) {\n const slots = useSlots();\n const id = `nc-form-group-${createElementId()}`;\n const descriptionId = `${id}-description`;\n const hasDescription = () => !!__props.description || !!slots.description;\n const getDescriptionId = () => hasDescription() ? descriptionId : void 0;\n const hasContentOnly = () => __props.hideLabel && (!hasDescription() || __props.hideDescription);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"fieldset\", {\n class: normalizeClass([_ctx.$style.formGroup, { [_ctx.$style.formGroup_noGap]: _ctx.noGap }]),\n \"aria-describedby\": getDescriptionId()\n }, [\n createElementVNode(\"legend\", {\n class: normalizeClass([_ctx.$style.formGroup__label, { \"hidden-visually\": _ctx.hideLabel }])\n }, [\n renderSlot(_ctx.$slots, \"label\", {}, () => [\n createTextVNode(toDisplayString(_ctx.label || \"⚠️ Missing label\"), 1)\n ])\n ], 2),\n hasDescription() ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: descriptionId,\n class: normalizeClass([_ctx.$style.formGroup__description, { \"hidden-visually\": _ctx.hideDescription }])\n }, [\n renderSlot(_ctx.$slots, \"description\", {}, () => [\n createTextVNode(toDisplayString(_ctx.description), 1)\n ])\n ], 2)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([_ctx.$style.formGroup__content, { [_ctx.$style.formGroup__content_only]: hasContentOnly() }])\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ], 10, _hoisted_1);\n };\n }\n});\nconst formGroup = \"_formGroup_sNzER\";\nconst formGroup_noGap = \"_formGroup_noGap_ChojB\";\nconst formGroup__label = \"_formGroup__label_Z81k5\";\nconst formGroup__description = \"_formGroup__description_xWRa-\";\nconst formGroup__content = \"_formGroup__content_wHRjf\";\nconst formGroup__content_only = \"_formGroup__content_only_VejcN\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_QhThW\",\n formGroup,\n formGroup_noGap,\n formGroup__label,\n formGroup__description,\n formGroup__content,\n formGroup__content_only\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcFormGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcFormGroup as N\n};\n//# sourceMappingURL=NcFormGroup-B3a2iUnT.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.setApp('encryption')\n\t.build()\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const InitStatus = Object.freeze({\n\tNotInitialized: '0',\n\tInitExecuted: '1',\n\tInitSuccessful: '2',\n})\n"],"names":["_hoisted_1","_sfc_main","defineComponent","__props","slots","useSlots","descriptionId","createElementId","hasDescription","getDescriptionId","hasContentOnly","_ctx","_cache","openBlock","createElementBlock","normalizeClass","createElementVNode","renderSlot","createTextVNode","toDisplayString","createCommentVNode","formGroup","formGroup_noGap","formGroup__label","formGroup__description","formGroup__content","formGroup__content_only","style0","cssModules","NcFormGroup","_export_sfc","logger","getLoggerBuilder","InitStatus"],"mappings":"2RAIA,MAAMA,EAAa,CAAC,kBAAkB,EAChCC,EAA4BC,EAAgB,CAChD,OAAQ,cACR,MAAO,CACL,MAAO,CAAE,QAAS,IAAA,CAAA,CAAY,EAC9B,YAAa,CAAE,QAAS,IAAA,CAAA,CAAY,EACpC,UAAW,CAAE,KAAM,QAAS,QAAS,EAAK,EAC1C,gBAAiB,CAAE,KAAM,QAAS,QAAS,EAAK,EAChD,MAAO,CAAE,KAAM,QAAS,QAAS,EAAK,CAC1C,EACE,MAAMC,EAAS,CACb,MAAMC,EAAQC,EAAQ,EAEhBC,EAAgB,GADX,iBAAiBC,EAAe,CAAE,EAClB,eACrBC,EAAiB,IAAM,CAAC,CAACL,EAAQ,aAAe,CAAC,CAACC,EAAM,YACxDK,EAAmB,IAAMD,EAAc,EAAKF,EAAgB,OAC5DI,EAAiB,IAAMP,EAAQ,YAAc,CAACK,EAAc,GAAML,EAAQ,iBAChF,MAAO,CAACQ,EAAMC,KACLC,EAAS,EAAIC,EAAmB,WAAY,CACjD,MAAOC,EAAe,CAACJ,EAAK,OAAO,UAAW,CAAE,CAACA,EAAK,OAAO,eAAe,EAAGA,EAAK,KAAK,CAAE,CAAC,EAC5F,mBAAoBF,EAAgB,CAC5C,EAAS,CACDO,EAAmB,SAAU,CAC3B,MAAOD,EAAe,CAACJ,EAAK,OAAO,iBAAkB,CAAE,kBAAmBA,EAAK,UAAW,CAAC,CACrG,EAAW,CACDM,EAAWN,EAAK,OAAQ,QAAS,CAAA,EAAI,IAAM,CACzCO,EAAgBC,EAAgBR,EAAK,OAAS,kBAAkB,EAAG,CAAC,CAChF,CAAW,CACX,EAAW,CAAC,EACJH,KAAoBK,IAAaC,EAAmB,MAAO,CACzD,IAAK,EACL,GAAIR,EACJ,MAAOS,EAAe,CAACJ,EAAK,OAAO,uBAAwB,CAAE,kBAAmBA,EAAK,gBAAiB,CAAC,CACjH,EAAW,CACDM,EAAWN,EAAK,OAAQ,cAAe,CAAA,EAAI,IAAM,CAC/CO,EAAgBC,EAAgBR,EAAK,WAAW,EAAG,CAAC,CAChE,CAAW,CACX,EAAW,CAAC,GAAKS,EAAmB,GAAI,EAAI,EACpCJ,EAAmB,MAAO,CACxB,MAAOD,EAAe,CAACJ,EAAK,OAAO,mBAAoB,CAAE,CAACA,EAAK,OAAO,uBAAuB,EAAGD,EAAc,CAAE,CAAE,CAAC,CAC7H,EAAW,CACDO,EAAWN,EAAK,OAAQ,SAAS,CAC3C,EAAW,CAAC,CACZ,EAAS,GAAIX,CAAU,EAErB,CACF,CAAC,EACKqB,EAAY,mBACZC,EAAkB,yBAClBC,EAAmB,0BACnBC,EAAyB,gCACzBC,EAAqB,4BACrBC,EAA0B,iCAC1BC,EAAS,CACb,uBAAwB,8BACxB,UAAAN,EACA,gBAAAC,EACA,iBAAAC,EACA,uBAAAC,EACA,mBAAAC,EACA,wBAAAC,CACF,EACME,EAAa,CACjB,OAAUD,CACZ,EACME,EAA8BC,EAAY7B,EAAW,CAAC,CAAC,eAAgB2B,CAAU,CAAC,CAAC,EC9D5EG,EAASC,EAAA,EACpB,OAAO,YAAY,EACnB,MAAA,ECJWC,EAAa,OAAO,OAAO,CACvC,eAAgB,IAChB,aAAc,IACd,eAAgB,GACjB,CAAC","x_google_ignoreList":[0]} \ No newline at end of file +{"version":3,"file":"types-ND6tniN8.chunk.mjs","sources":["../node_modules/@nextcloud/vue/dist/chunks/NcFormGroup-B3a2iUnT.mjs","../build/frontend/apps/encryption/src/utils/logger.ts","../build/frontend/apps/encryption/src/utils/types.ts"],"sourcesContent":["import '../assets/NcFormGroup-BjWhd5Ky.css';\nimport { defineComponent, useSlots, openBlock, createElementBlock, normalizeClass, createElementVNode, renderSlot, createTextVNode, toDisplayString, createCommentVNode } from \"vue\";\nimport { c as createElementId } from \"./createElementId-DhjFt1I9.mjs\";\nimport { _ as _export_sfc } from \"./_plugin-vue_export-helper-1tPrXgE0.mjs\";\nconst _hoisted_1 = [\"aria-describedby\"];\nconst _sfc_main = /* @__PURE__ */ defineComponent({\n __name: \"NcFormGroup\",\n props: {\n label: { default: () => void 0 },\n description: { default: () => void 0 },\n hideLabel: { type: Boolean, default: false },\n hideDescription: { type: Boolean, default: false },\n noGap: { type: Boolean, default: false }\n },\n setup(__props) {\n const slots = useSlots();\n const id = `nc-form-group-${createElementId()}`;\n const descriptionId = `${id}-description`;\n const hasDescription = () => !!__props.description || !!slots.description;\n const getDescriptionId = () => hasDescription() ? descriptionId : void 0;\n const hasContentOnly = () => __props.hideLabel && (!hasDescription() || __props.hideDescription);\n return (_ctx, _cache) => {\n return openBlock(), createElementBlock(\"fieldset\", {\n class: normalizeClass([_ctx.$style.formGroup, { [_ctx.$style.formGroup_noGap]: _ctx.noGap }]),\n \"aria-describedby\": getDescriptionId()\n }, [\n createElementVNode(\"legend\", {\n class: normalizeClass([_ctx.$style.formGroup__label, { \"hidden-visually\": _ctx.hideLabel }])\n }, [\n renderSlot(_ctx.$slots, \"label\", {}, () => [\n createTextVNode(toDisplayString(_ctx.label || \"⚠️ Missing label\"), 1)\n ])\n ], 2),\n hasDescription() ? (openBlock(), createElementBlock(\"div\", {\n key: 0,\n id: descriptionId,\n class: normalizeClass([_ctx.$style.formGroup__description, { \"hidden-visually\": _ctx.hideDescription }])\n }, [\n renderSlot(_ctx.$slots, \"description\", {}, () => [\n createTextVNode(toDisplayString(_ctx.description), 1)\n ])\n ], 2)) : createCommentVNode(\"\", true),\n createElementVNode(\"div\", {\n class: normalizeClass([_ctx.$style.formGroup__content, { [_ctx.$style.formGroup__content_only]: hasContentOnly() }])\n }, [\n renderSlot(_ctx.$slots, \"default\")\n ], 2)\n ], 10, _hoisted_1);\n };\n }\n});\nconst formGroup = \"_formGroup_sNzER\";\nconst formGroup_noGap = \"_formGroup_noGap_ChojB\";\nconst formGroup__label = \"_formGroup__label_Z81k5\";\nconst formGroup__description = \"_formGroup__description_xWRa-\";\nconst formGroup__content = \"_formGroup__content_wHRjf\";\nconst formGroup__content_only = \"_formGroup__content_only_VejcN\";\nconst style0 = {\n \"material-design-icon\": \"_material-design-icon_QhThW\",\n formGroup,\n formGroup_noGap,\n formGroup__label,\n formGroup__description,\n formGroup__content,\n formGroup__content_only\n};\nconst cssModules = {\n \"$style\": style0\n};\nconst NcFormGroup = /* @__PURE__ */ _export_sfc(_sfc_main, [[\"__cssModules\", cssModules]]);\nexport {\n NcFormGroup as N\n};\n//# sourceMappingURL=NcFormGroup-B3a2iUnT.mjs.map\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport const logger = getLoggerBuilder()\n\t.setApp('encryption')\n\t.build()\n","/*!\n * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nexport const InitStatus = Object.freeze({\n\tNotInitialized: '0',\n\tInitExecuted: '1',\n\tInitSuccessful: '2',\n})\n"],"names":["_hoisted_1","_sfc_main","defineComponent","__props","slots","useSlots","descriptionId","createElementId","hasDescription","getDescriptionId","hasContentOnly","_ctx","_cache","openBlock","createElementBlock","normalizeClass","createElementVNode","renderSlot","createTextVNode","toDisplayString","createCommentVNode","formGroup","formGroup_noGap","formGroup__label","formGroup__description","formGroup__content","formGroup__content_only","style0","cssModules","NcFormGroup","_export_sfc","logger","getLoggerBuilder","InitStatus"],"mappings":"2RAIA,MAAMA,EAAa,CAAC,kBAAkB,EAChCC,EAA4BC,EAAgB,CAChD,OAAQ,cACR,MAAO,CACL,MAAO,CAAE,QAAS,IAAA,CAAA,CAAY,EAC9B,YAAa,CAAE,QAAS,IAAA,CAAA,CAAY,EACpC,UAAW,CAAE,KAAM,QAAS,QAAS,EAAK,EAC1C,gBAAiB,CAAE,KAAM,QAAS,QAAS,EAAK,EAChD,MAAO,CAAE,KAAM,QAAS,QAAS,EAAK,CAC1C,EACE,MAAMC,EAAS,CACb,MAAMC,EAAQC,EAAQ,EAEhBC,EAAgB,GADX,iBAAiBC,EAAe,CAAE,EAClB,eACrBC,EAAiB,IAAM,CAAC,CAACL,EAAQ,aAAe,CAAC,CAACC,EAAM,YACxDK,EAAmB,IAAMD,EAAc,EAAKF,EAAgB,OAC5DI,EAAiB,IAAMP,EAAQ,YAAc,CAACK,EAAc,GAAML,EAAQ,iBAChF,MAAO,CAACQ,EAAMC,KACLC,EAAS,EAAIC,EAAmB,WAAY,CACjD,MAAOC,EAAe,CAACJ,EAAK,OAAO,UAAW,CAAE,CAACA,EAAK,OAAO,eAAe,EAAGA,EAAK,KAAK,CAAE,CAAC,EAC5F,mBAAoBF,EAAgB,CAC5C,EAAS,CACDO,EAAmB,SAAU,CAC3B,MAAOD,EAAe,CAACJ,EAAK,OAAO,iBAAkB,CAAE,kBAAmBA,EAAK,UAAW,CAAC,CACrG,EAAW,CACDM,EAAWN,EAAK,OAAQ,QAAS,CAAA,EAAI,IAAM,CACzCO,EAAgBC,EAAgBR,EAAK,OAAS,kBAAkB,EAAG,CAAC,CAChF,CAAW,CACX,EAAW,CAAC,EACJH,KAAoBK,IAAaC,EAAmB,MAAO,CACzD,IAAK,EACL,GAAIR,EACJ,MAAOS,EAAe,CAACJ,EAAK,OAAO,uBAAwB,CAAE,kBAAmBA,EAAK,gBAAiB,CAAC,CACjH,EAAW,CACDM,EAAWN,EAAK,OAAQ,cAAe,CAAA,EAAI,IAAM,CAC/CO,EAAgBC,EAAgBR,EAAK,WAAW,EAAG,CAAC,CAChE,CAAW,CACX,EAAW,CAAC,GAAKS,EAAmB,GAAI,EAAI,EACpCJ,EAAmB,MAAO,CACxB,MAAOD,EAAe,CAACJ,EAAK,OAAO,mBAAoB,CAAE,CAACA,EAAK,OAAO,uBAAuB,EAAGD,EAAc,CAAE,CAAE,CAAC,CAC7H,EAAW,CACDO,EAAWN,EAAK,OAAQ,SAAS,CAC3C,EAAW,CAAC,CACZ,EAAS,GAAIX,CAAU,EAErB,CACF,CAAC,EACKqB,EAAY,mBACZC,EAAkB,yBAClBC,EAAmB,0BACnBC,EAAyB,gCACzBC,EAAqB,4BACrBC,EAA0B,iCAC1BC,EAAS,CACb,uBAAwB,8BACxB,UAAAN,EACA,gBAAAC,EACA,iBAAAC,EACA,uBAAAC,EACA,mBAAAC,EACA,wBAAAC,CACF,EACME,EAAa,CACjB,OAAUD,CACZ,EACME,EAA8BC,EAAY7B,EAAW,CAAC,CAAC,eAAgB2B,CAAU,CAAC,CAAC,EC9D5EG,EAASC,EAAA,EACpB,OAAO,YAAY,EACnB,MAAA,ECJWC,EAAa,OAAO,OAAO,CACvC,eAAgB,IAChB,aAAc,IACd,eAAgB,GACjB,CAAC","x_google_ignoreList":[0]} \ No newline at end of file diff --git a/dist/types-Dhw8OyWT.chunk.mjs.map.license b/dist/types-ND6tniN8.chunk.mjs.map.license similarity index 100% rename from dist/types-Dhw8OyWT.chunk.mjs.map.license rename to dist/types-ND6tniN8.chunk.mjs.map.license diff --git a/dist/user_ldap-settings-admin.css b/dist/user_ldap-settings-admin.css index a0d0d4e62f856..f3f07e81cc8f0 100644 --- a/dist/user_ldap-settings-admin.css +++ b/dist/user_ldap-settings-admin.css @@ -18,7 +18,7 @@ @import './NcBreadcrumbs-5gl8Syfa-CtBAA7-7.chunk.css'; @import './NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'; @import './NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'; -@import './index-DxCeSeyt.chunk.css'; +@import './index-CEtX00Aw.chunk.css'; @import './NcChip-CrVOU2RM-Som-mR4B.chunk.css'; @import './TrayArrowDown-D79n0IQ6.chunk.css'; @import './NcGuestContent-j8ai4O1K-D0718NyY.chunk.css'; diff --git a/dist/user_ldap-settings-admin.mjs b/dist/user_ldap-settings-admin.mjs index a83163ec798ab..f57db7d67d066 100644 --- a/dist/user_ldap-settings-admin.mjs +++ b/dist/user_ldap-settings-admin.mjs @@ -1,2 +1,2 @@ -import{r as A,p as I,b as B,j as V,o as v,k as p,e as i,t as n,u as e,w as h,g as w,c as T,l as F,z as te,v as X,F as W,n as re,O as oe,C as ie,h as se}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{l as ee,g as $,a as G}from"./index-BgmsSgl5.chunk.mjs";import{t as a,b as de}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import{b as M}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{a as O}from"./index-BpgPbDC6.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQcotKYx.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as x}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as Y}from"./mdi-e8YUrhPH.chunk.mjs";import{g as ue}from"./index-DqIuD5e7.chunk.mjs";import{N as k}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import{N as R}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import{P as ne}from"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as pe}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{c as j,i as ce}from"./index-CPwHjAPR.chunk.mjs";import{_ as b}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import{I as ae}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{d as me,s as Q,c as _e}from"./pinia-DaVFx_pY.chunk.mjs";import{d as le,a as H,g as ge,s as fe,b as q}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const S=ue().setApp("LDAP").detectUser().build();async function ve(){const u=await j.post(M("apps/user_ldap/api/v1/config"));return S.debug("Created configuration",{configId:u.data.ocs.data.configID}),u.data.ocs.data.configID}async function he(u){const s=new FormData;s.set("copyConfig",u);const m=await j.post(M("apps/user_ldap/api/v1/config/{configId}/copy",{configId:u}),s);return S.debug("Created configuration",{configId:m.data.ocs.data.configID}),m.data.ocs.data.configID}async function be(u){const s=await j.get(M("apps/user_ldap/api/v1/config/{configId}",{configId:u}));return S.debug("Fetched configuration",{configId:u,config:s.data.ocs.data}),s.data.ocs.data}async function we(u,s){const m=await j.put(M("apps/user_ldap/api/v1/config/{configId}",{configId:u}),{configData:s});return S.debug("Updated configuration",{configId:u,config:s}),m.data.ocs.data}async function ye(u){try{if(!await J(a("user_ldap","Confirm action"),a("user_ldap","Are you sure you want to permanently delete this LDAP configuration? This cannot be undone.")))return!1;await j.delete(M("apps/user_ldap/api/v1/config/{configId}",{configId:u})),S.debug("Deleted configuration",{configId:u})}catch(s){const m=s.response;H(m?.data.ocs.meta.message||a("user_ldap","Failed to delete config"))}return!0}async function Ae(u){const s=new FormData,m=await j.post(M("apps/user_ldap/api/v1/config/{configId}/test",{configId:u}));return S.debug(`Configuration is ${m.data.ocs.data.success?"valide":"invalide"}`,{configId:u,params:s,response:m}),m.data.ocs.data}async function Ve(u){if(!await J(a("user_ldap","Confirm action"),a("user_ldap","Are you sure you want to permanently clear the LDAP mapping? This cannot be undone.")))return!1;try{const s=await j.post(M("apps/user_ldap/api/v1/wizard/clearMappings"),{subject:u});return S.debug("Cleared mapping",{subject:u,response:s}),le(a("user_ldap","Mapping cleared")),!0}catch(s){const m=s.response;H(m?.data.ocs.meta.message||a("user_ldap","Failed to clear mapping"))}}async function P(u,s,m={}){const t=new FormData;Object.entries(m).forEach(([o,c])=>{t.set(o,c)});try{const o=await j.post(M("apps/user_ldap/api/v1/wizard/{configId}/{action}",{configId:s,action:u}),t);return S.debug(`Called wizard action: ${u}`,{configId:s,params:t,response:o}),o.data.ocs.data}catch(o){let c=a("user_ldap","An error occurred");throw ce(o)&&o.response?.data.ocs.meta.status==="failure"&&o.response.data.ocs.meta.message!==""&&o.response.data.ocs.meta.message!==void 0&&(c=o.response.data.ocs.meta.message),H(c),o}}async function Z(){return await J(a("user_ldap","Mode switch"),a("user_ldap","Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?"))}async function J(u,s){let m=!1;return await ge(u).setText(s).setSeverity("warning").addButton({label:a("user_ldap","Cancel"),callback(){}}).addButton({label:a("user_ldap","Confirm"),variant:"error",callback(){m=!0}}).build().show(),m}const E=me("ldap-configs",()=>{const u=A(ee("user_ldap","ldapConfigs")),s=A(Object.keys(u.value)[0]),m=I(()=>s.value===void 0?void 0:u.value[s.value]),t=A(0);function o(l,y={}){if(u.value[l]===void 0)throw new Error(`Config with id ${l} does not exist`);return new Proxy(u.value[l],{get(L,C){return L[C]},set(L,C,D){return L[C]=D,(async()=>(t.value++,await we(l,{[C]:D}),t.value--,y[C]!==void 0&&y[C](L[C])))(),!0}})}async function c(){const l=await ve();return u.value[l]=await be(l),s.value=l,l}async function g(l){if(u.value[l]===void 0)throw new Error(`Config with id ${l} does not exist`);const y=await he(l);return u.value[y]={...u.value[l]},s.value=y,y}async function r(l){await ye(l)===!0&&(Object.keys(u.value).length===1?(s.value=await c(),s.value!==l&&delete u.value[l]):(s.value=Object.keys(u.value).filter(y=>l!==y)[0],delete u.value[l]))}return{ldapConfigs:u,selectedConfigId:s,selectedConfig:m,updatingConfig:t,getConfigProxy:o,create:c,copyConfig:g,removeConfig:r}}),De={class:"ldap-wizard__advanced"},Ue={open:"",name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Ce={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Le={class:"tablecell"},Ie={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Pe={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},xe=B({__name:"AdvancedTab",props:{configId:{}},setup(u){const s=u,m=E(),t=I(()=>m.getConfigProxy(s.configId)),o=$().theming.name,c={uniqueMember:"uniqueMember",memberUid:"memberUid",member:"member (AD)",gidNumber:"gidNumber",zimbraMailForwardingAddress:"zimbraMailForwardingAddress"};return(g,r)=>(v(),V("fieldset",De,[p("details",Ue,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Connection Settings")),1)]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Backup (Replica) Host"),modelValue:t.value.ldapBackupHost,helperText:e(a)("user_ldap","Give an optional backup host. It must be a replica of the main LDAP/AD server."),onChange:r[0]||(r[0]=l=>t.value.ldapBackupHost=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{type:"number",modelValue:t.value.ldapBackupPort,label:e(a)("user_ldap","Backup (Replica) Port"),onChange:r[1]||(r[1]=l=>t.value.ldapBackupPort=l.target.value)},null,8,["modelValue","label"]),i(e(k),{modelValue:t.value.ldapOverrideMainServer==="1",type:"switch","aria-label":e(a)("user_ldap","Only connect to the replica server."),"onUpdate:modelValue":r[2]||(r[2]=l=>t.value.ldapOverrideMainServer=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Disable Main Server")),1)]),_:1},8,["modelValue","aria-label"]),i(e(k),{modelValue:t.value.turnOffCertCheck==="1","aria-label":e(a)("user_ldap","Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your {instanceName} server.",{instanceName:e(o)}),"onUpdate:modelValue":r[3]||(r[3]=l=>t.value.turnOffCertCheck=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Turn off SSL certificate validation.")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{type:"number",label:e(a)("user_ldap","Cache Time-To-Live"),modelValue:t.value.ldapCacheTTL,helperText:e(a)("user_ldap","in seconds. A change empties the cache."),onChange:r[4]||(r[4]=l=>t.value.ldapCacheTTL=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Ce,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Directory Settings")),1)]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapUserDisplayName,label:e(a)("user_ldap","User Display Name Field"),helperText:e(a)("user_ldap","The LDAP attribute to use to generate the user's display name."),onChange:r[5]||(r[5]=l=>t.value.ldapUserDisplayName=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapUserDisplayName2,label:e(a)("user_ldap","2nd User Display Name Field"),helperText:e(a)("user_ldap","Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«."),onChange:r[6]||(r[6]=l=>t.value.ldapUserDisplayName2=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(O),{modelValue:t.value.ldapBaseUsers,placeholder:e(a)("user_ldap","One User Base DN per line"),label:e(a)("user_ldap","Base User Tree"),onChange:r[7]||(r[7]=l=>t.value.ldapBaseUsers=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(O),{modelValue:t.value.ldapAttributesForUserSearch,placeholder:e(a)("user_ldap","Optional; one attribute per line"),label:e(a)("user_ldap","User Search Attributes"),onChange:r[8]||(r[8]=l=>t.value.ldapAttributesForUserSearch=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(k),{modelValue:t.value.markRemnantsAsDisabled==="1","aria-label":e(a)("user_ldap","When switched on, users imported from LDAP which are then missing will be disabled"),"onUpdate:modelValue":r[9]||(r[9]=l=>t.value.markRemnantsAsDisabled=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Disable users missing from LDAP")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapGroupDisplayName,label:e(a)("user_ldap","Group Display Name Field"),title:e(a)("user_ldap","The LDAP attribute to use to generate the groups's display name."),onChange:r[10]||(r[10]=l=>t.value.ldapGroupDisplayName=l.target.value)},null,8,["modelValue","label","title"]),i(e(O),{modelValue:t.value.ldapBaseGroups,placeholder:e(a)("user_ldap","One Group Base DN per line"),label:e(a)("user_ldap","Base Group Tree"),onChange:r[11]||(r[11]=l=>t.value.ldapBaseGroups=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(O),{modelValue:t.value.ldapAttributesForGroupSearch,placeholder:e(a)("user_ldap","Optional; one attribute per line"),label:e(a)("user_ldap","Group Search Attributes"),onChange:r[12]||(r[12]=l=>t.value.ldapAttributesForGroupSearch=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(R),{modelValue:t.value.ldapGroupMemberAssocAttr,"onUpdate:modelValue":r[13]||(r[13]=l=>t.value.ldapGroupMemberAssocAttr=l),options:Object.keys(c),inputLabel:e(a)("user_ldap","Group-Member association")},{option:h(({label:l})=>[w(n(c[l]),1)]),"selected-option":h(({label:l})=>[w(n(c[l]),1)]),_:1},8,["modelValue","options","inputLabel"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Dynamic Group Member URL"),modelValue:t.value.ldapDynamicGroupMemberURL,helperText:e(a)("user_ldap","The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)"),onChange:r[14]||(r[14]=l=>t.value.ldapDynamicGroupMemberURL=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(k),{modelValue:t.value.ldapNestedGroups==="1","aria-label":e(a)("user_ldap","When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)"),"onUpdate:modelValue":r[15]||(r[15]=l=>t.value.ldapNestedGroups=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Nested Groups")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{type:"number",label:e(a)("user_ldap","Paging chunksize"),modelValue:t.value.ldapPagingSize,helperText:e(a)("user_ldap","Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)"),onChange:r[16]||(r[16]=l=>t.value.ldapPagingSize=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(k),{modelValue:t.value.turnOnPasswordChange==="1","aria-label":e(a)("user_ldap","Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server."),"onUpdate:modelValue":r[17]||(r[17]=l=>t.value.turnOnPasswordChange=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Enable LDAP password changes per user")),1)]),_:1},8,["modelValue","aria-label"]),p("span",Le,n(e(a)("user_ldap","(New password is sent as plain text to LDAP)")),1),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Default password policy DN"),modelValue:t.value.ldapDefaultPPolicyDN,helperText:e(a)("user_ldap","The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling."),onChange:r[18]||(r[18]=l=>t.value.ldapDefaultPPolicyDN=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Ie,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Special Attributes")),1)]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapQuotaAttribute,label:e(a)("user_ldap","Quota Field"),helperText:e(a)("user_ldap","Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute."),onChange:r[19]||(r[19]=l=>t.value.ldapQuotaAttribute=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapQuotaDefault,label:e(a)("user_ldap","Quota Default"),helperText:e(a)("user_ldap","Override default quota for LDAP users who do not have a quota set in the Quota Field."),onChange:r[20]||(r[20]=l=>t.value.ldapQuotaDefault=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapEmailAttribute,label:e(a)("user_ldap","Email Field"),helperText:e(a)("user_ldap","Set the user's email from their LDAP attribute. Leave it empty for default behaviour."),onChange:r[21]||(r[21]=l=>t.value.ldapEmailAttribute=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","User Home Folder Naming Rule"),modelValue:t.value.homeFolderNamingRule,helperText:e(a)("user_ldap","Leave empty for username (default). Otherwise, specify an LDAP/AD attribute."),onChange:r[22]||(r[22]=l=>t.value.homeFolderNamingRule=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","`$home` Placeholder Field"),modelValue:t.value.ldapExtStorageHomeAttribute,helperText:e(a)("user_ldap","$home in an external storage configuration will be replaced with the value of the specified attribute"),onChange:r[23]||(r[23]=l=>t.value.ldapExtStorageHomeAttribute=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Pe,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","User Profile Attributes")),1)]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Phone Field"),modelValue:t.value.ldapAttributePhone,helperText:e(a)("user_ldap","User profile Phone will be set from the specified attribute"),onChange:r[24]||(r[24]=l=>t.value.ldapAttributePhone=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Website Field"),modelValue:t.value.ldapAttributeWebsite,helperText:e(a)("user_ldap","User profile Website will be set from the specified attribute"),onChange:r[25]||(r[25]=l=>t.value.ldapAttributeWebsite=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Address Field"),modelValue:t.value.ldapAttributeAddress,helperText:e(a)("user_ldap","User profile Address will be set from the specified attribute"),onChange:r[26]||(r[26]=l=>t.value.ldapAttributeAddress=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Twitter Field"),modelValue:t.value.ldapAttributeTwitter,helperText:e(a)("user_ldap","User profile Twitter will be set from the specified attribute"),onChange:r[27]||(r[27]=l=>t.value.ldapAttributeTwitter=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Fediverse Field"),modelValue:t.value.ldapAttributeFediverse,helperText:e(a)("user_ldap","User profile Fediverse will be set from the specified attribute"),onChange:r[28]||(r[28]=l=>t.value.ldapAttributeFediverse=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Organisation Field"),modelValue:t.value.ldapAttributeOrganisation,helperText:e(a)("user_ldap","User profile Organisation will be set from the specified attribute"),onChange:r[29]||(r[29]=l=>t.value.ldapAttributeOrganisation=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Role Field"),modelValue:t.value.ldapAttributeRole,helperText:e(a)("user_ldap","User profile Role will be set from the specified attribute"),onChange:r[30]||(r[30]=l=>t.value.ldapAttributeRole=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Headline Field"),modelValue:t.value.ldapAttributeHeadline,helperText:e(a)("user_ldap","User profile Headline will be set from the specified attribute"),onChange:r[31]||(r[31]=l=>t.value.ldapAttributeHeadline=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Biography Field"),modelValue:t.value.ldapAttributeBiography,helperText:e(a)("user_ldap","User profile Biography will be set from the specified attribute"),onChange:r[32]||(r[32]=l=>t.value.ldapAttributeBiography=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Birthdate Field"),modelValue:t.value.ldapAttributeBirthDate,helperText:e(a)("user_ldap","User profile Date of birth will be set from the specified attribute"),onChange:r[33]||(r[33]=l=>t.value.ldapAttributeBirthDate=l.target.value)},null,8,["label","modelValue","helperText"])])]))}}),Te=G(xe,[["__scopeId","data-v-4e205a16"]]),Fe={class:"ldap-wizard__expert"},ke={class:"ldap-wizard__expert__line"},ze={id:"ldap_expert_username_attr"},Ne={class:"ldap-wizard__expert__line"},Ge={id:"ldap_expert_uuid_user_attr"},Oe=B({__name:"ExpertTab",props:{configId:{}},setup(u){const s=u,m=E(),t=I(()=>m.getConfigProxy(s.configId));return(o,c)=>(v(),V("fieldset",Fe,[p("div",ke,[p("strong",null,n(e(a)("user_ldap","Internal Username")),1),p("p",ze,n(e(a)("user_ldap","By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior.")),1),i(e(b),{"aria-describedby":"ldap_expert_username_attr",autocomplete:"off",label:e(a)("user_ldap","Internal Username Attribute:"),modelValue:t.value.ldapExpertUsernameAttr,onChange:c[0]||(c[0]=g=>t.value.ldapExpertUsernameAttr=g.target.value)},null,8,["label","modelValue"])]),p("div",Ne,[p("strong",null,n(e(a)("user_ldap","Override UUID detection")),1),p("p",Ge,n(e(a)("user_ldap","By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups.")),1),i(e(b),{"aria-describedby":"ldap_expert_uuid_user_attr",autocomplete:"off",label:e(a)("user_ldap","UUID Attribute for Users"),modelValue:t.value.ldapExpertUUIDUserAttr,onChange:c[1]||(c[1]=g=>t.value.ldapExpertUUIDUserAttr=g.target.value)},null,8,["label","modelValue"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","UUID Attribute for Groups"),modelValue:t.value.ldapExpertUUIDGroupAttr,onChange:c[2]||(c[2]=g=>t.value.ldapExpertUUIDGroupAttr=g.target.value)},null,8,["label","modelValue"])])]))}}),Be=G(Oe,[["__scopeId","data-v-e77b52a4"]]),Me={class:"ldap-wizard__groups"},je={class:"ldap-wizard__groups__line ldap-wizard__groups__filter-selection"},Se={class:"ldap-wizard__groups__line ldap-wizard__groups__groups-filter"},Ee={key:0},He={key:1},Re={class:"ldap-wizard__groups__line ldap-wizard__groups__groups-count-check"},Qe={key:1},$e=B({__name:"GroupsTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapGroupFilterObjectclass:U,ldapGroupFilterGroups:U})),c=$().theming.name,g=A(void 0),r=A([]),l=A([]),y=A(!1),L=I({get(){return o.value.ldapGroupFilterObjectclass.split(";").filter(d=>d!=="")},set(d){o.value.ldapGroupFilterObjectclass=d.join(";")}}),C=I({get(){return o.value.ldapGroupFilterGroups.split(";").filter(d=>d!=="")},set(d){o.value.ldapGroupFilterGroups=d.join(";")}});async function D(){const d=await P("determineGroupObjectClasses",s.configId);r.value=d.options?.ldap_groupfilter_objectclass??[];const _=await P("determineGroupsForGroups",s.configId);l.value=_.options?.ldap_groupfilter_groups??[]}D();async function U(){const d=await P("getGroupFilter",s.configId);t.value[s.configId].ldapGroupFilter=d.changes?.ldap_group_filter??""}async function z(){try{y.value=!0;const d=await P("countGroups",s.configId);g.value=d.changes.ldap_group_count}finally{y.value=!1}}async function f(d){d?o.value.ldapGroupFilterMode="1":o.value.ldapGroupFilterMode=await Z()?"0":"1"}return(d,_)=>(v(),V("fieldset",Me,[p("legend",null,n(e(a)("user_ldap","Groups meeting these criteria are available in {instanceName}:",{instanceName:e(c)})),1),p("div",je,[i(e(R),{modelValue:L.value,"onUpdate:modelValue":_[0]||(_[0]=N=>L.value=N),class:"ldap-wizard__groups__group-filter-groups__select",options:r.value,disabled:o.value.ldapGroupFilterMode==="1",inputLabel:e(a)("user_ldap","Only these object classes:"),multiple:!0},null,8,["modelValue","options","disabled","inputLabel"]),i(e(R),{modelValue:C.value,"onUpdate:modelValue":_[1]||(_[1]=N=>C.value=N),class:"ldap-wizard__groups__group-filter-groups__select",options:l.value,disabled:o.value.ldapGroupFilterMode==="1",inputLabel:e(a)("user_ldap","Only from these groups:"),multiple:!0},null,8,["modelValue","options","disabled","inputLabel"])]),p("div",Se,[i(e(k),{modelValue:o.value.ldapGroupFilterMode==="1","onUpdate:modelValue":f},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),o.value.ldapGroupFilterMode==="1"?(v(),V("div",Ee,[i(e(O),{modelValue:o.value.ldapGroupFilter,"onUpdate:modelValue":_[2]||(_[2]=N=>o.value.ldapGroupFilter=N),placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","The filter specifies which LDAP groups shall have access to the {instanceName} instance.",{instanceName:e(c)})},null,8,["modelValue","placeholder","helperText"])])):(v(),V("div",He,[p("span",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapGroupFilter),1)]))]),p("div",Re,[i(e(x),{disabled:y.value,onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings and count the groups")),1)]),_:1},8,["disabled"]),y.value?(v(),T(e(Y),{key:0,size:20})):F("",!0),g.value!==void 0&&!y.value?(v(),V("span",Qe,n(g.value),1)):F("",!0)])]))}}),qe=G($e,[["__scopeId","data-v-bb0d62ba"]]),We={class:"ldap-wizard__login"},Ye={class:"ldap-wizard__login__line ldap-wizard__login__login-attributes"},Ze={class:"ldap-wizard__login__line ldap-wizard__login__user-login-filter"},Je={key:1},Ke={class:"ldap-wizard__login__line"},Xe=B({__name:"LoginTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapLoginFilterAttributes:D,ldapLoginFilterUsername:D,ldapLoginFilterEmail:D})),c=$().theming.name,g=A(""),r=A([]),l=I({get(){return o.value.ldapLoginFilterAttributes.split(";").filter(f=>f!=="")},set(f){o.value.ldapLoginFilterAttributes=f.join(";")}}),y=I(()=>o.value.ldapLoginFilterMode==="1"),L=I(()=>r.value.filter(f=>!l.value.includes(f)));async function C(){const f=await P("determineAttributes",s.configId);r.value=f.options?.ldap_loginfilter_attributes??[]}C();async function D(){if(o.value.ldapLoginFilterMode==="0"){const f=await P("getUserLoginFilter",s.configId);t.value[s.configId].ldapLoginFilter=f.changes?.ldap_login_filter??""}}async function U(){try{const f=await P("testLoginName",s.configId,{loginName:g.value}),d=f.changes.ldap_test_loginname,_=f.changes.ldap_test_effective_filter;d<1?H(a("user_ldap","User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): {filter}",{filter:_})):d===1?le(a("user_ldap","User found and settings verified.")):d>1&&fe(a("user_ldap","Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in."))}catch(f){switch(f??a("user_ldap","An unspecified error occurred. Please check log and settings.")){case"Bad search filter":H(a("user_ldap","The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise."));break;case"connection error":H(a("user_ldap","A connection error to LDAP/AD occurred. Please check host, port and credentials."));break;case"missing placeholder":H(a("user_ldap",'The "%uid" placeholder is missing. It will be replaced with the login name when querying LDAP/AD.'));break}}}async function z(f){f?o.value.ldapLoginFilterMode="1":o.value.ldapLoginFilterMode=await Z()?"0":"1"}return(f,d)=>(v(),V("fieldset",We,[p("legend",null,n(e(a)("user_ldap","When logging in, {instanceName} will find the user based on the following attributes:",{instanceName:e(c)})),1),i(e(k),{modelValue:o.value.ldapLoginFilterUsername==="1",description:e(a)("user_ldap","Allows login against the LDAP/AD username, which is either 'uid' or 'sAMAccountName' and will be detected."),"onUpdate:modelValue":d[0]||(d[0]=_=>o.value.ldapLoginFilterUsername=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","LDAP/AD Username:")),1)]),_:1},8,["modelValue","description"]),i(e(k),{modelValue:o.value.ldapLoginFilterEmail==="1",description:e(a)("user_ldap","Allows login against an email attribute. 'mail' and 'mailPrimaryAddress' allowed."),"onUpdate:modelValue":d[1]||(d[1]=_=>o.value.ldapLoginFilterEmail=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","LDAP/AD Email Address:")),1)]),_:1},8,["modelValue","description"]),p("div",Ye,[i(e(R),{modelValue:l.value,"onUpdate:modelValue":d[2]||(d[2]=_=>l.value=_),keepOpen:"",disabled:y.value,options:L.value,inputLabel:e(a)("user_ldap","Other Attributes:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"])]),p("div",Ze,[i(e(k),{modelValue:y.value,"onUpdate:modelValue":z},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),y.value?(v(),T(e(O),{key:0,modelValue:o.value.ldapLoginFilter,placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","Defines the filter to apply, when login is attempted. `%%uid` replaces the username in the login action. Example: `uid=%%uid`"),onChange:d[3]||(d[3]=_=>o.value.ldapLoginFilter=_.target.value)},null,8,["modelValue","placeholder","helperText"])):(v(),V("div",Je,[p("span",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapLoginFilter),1)]))]),p("div",Ke,[i(e(b),{modelValue:g.value,"onUpdate:modelValue":d[4]||(d[4]=_=>g.value=_),helperText:e(a)("user_ldap","Attempts to receive a DN for the given login name and the current login filter"),label:e(a)("user_ldap","Test Login name"),autocomplete:"off"},null,8,["modelValue","helperText","label"]),i(e(x),{disabled:g.value.length===0,onClick:U},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings")),1)]),_:1},8,["disabled"])])]))}}),ea=G(Xe,[["__scopeId","data-v-f3af5b3a"]]),aa={name:"DeleteIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},la=["aria-hidden","aria-label"],ta=["fill","width","height"],ra={d:"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"},oa={key:0};function ia(u,s,m,t,o,c){return v(),V("span",te(u.$attrs,{"aria-hidden":m.title?null:"true","aria-label":m.title,class:"material-design-icon delete-icon",role:"img",onClick:s[0]||(s[0]=g=>u.$emit("click",g))}),[(v(),V("svg",{fill:m.fillColor,class:"material-design-icon__svg",width:m.size,height:m.size,viewBox:"0 0 24 24"},[p("path",ra,[m.title?(v(),V("title",oa,n(m.title),1)):F("",!0)])],8,ta))],16,la)}const sa=G(aa,[["render",ia]]),da={class:"ldap-wizard__server"},ua={class:"ldap-wizard__server__line"},na={class:"ldap-wizard__server__line"},pa={class:"ldap-wizard__server__host__port"},ca={class:"ldap-wizard__server__line"},ma={class:"ldap-wizard__server__line"},_a={class:"ldap-wizard__server__line"},ga=B({__name:"ServerTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId)),c=A(!1),g=A(!1),r=A(!1),l=A(o.value.ldapAgentName),y=A(o.value.ldapAgentPassword),L=I(()=>o.value.ldapAgentName!==l.value||o.value.ldapAgentPassword!==y.value);X(o,f=>{l.value=f.ldapAgentName,f.ldapAgentPassword==="***"?y.value="":y.value=f.ldapAgentPassword});function C(){o.value.ldapAgentName=l.value,o.value.ldapAgentPassword=y.value}async function D(){try{c.value=!0;const{changes:f}=await P("guessPortAndTLS",s.configId);t.value[s.configId].ldapPort=f.ldap_port??""}finally{c.value=!1}}async function U(){try{r.value=!0;const{changes:f}=await P("guessBaseDN",s.configId);o.value.ldapBase=f.ldap_base??""}finally{r.value=!1}}async function z(){try{g.value=!0;const{changes:f}=await P("countInBaseDN",s.configId),d=f.ldap_test_base;d<1?q(a("user_ldap","No object found in the given Base DN. Please revise.")):d>1e3?q(a("user_ldap","More than 1,000 directory entries available.")):q(de("user_ldap","{ldapTestBase} entry available within the provided Base DN","{ldapTestBase} entries available within the provided Base DN",d,{ldapTestBase:d}))}finally{g.value=!1}}return(f,d)=>(v(),V("fieldset",da,[p("div",ua,[i(e(k),{modelValue:o.value.ldapConfigurationActive==="1",type:"switch","aria-label":e(a)("user_ldap","When unchecked, this configuration will be skipped."),"onUpdate:modelValue":d[0]||(d[0]=_=>o.value.ldapConfigurationActive=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Configuration active")),1)]),_:1},8,["modelValue","aria-label"]),i(e(x),{title:e(a)("user_ldap","Copy current configuration into new directory binding"),onClick:d[1]||(d[1]=_=>e(m).copyConfig(u.configId))},{icon:h(()=>[i(ae,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Copy configuration")),1)]),_:1},8,["title"]),i(e(x),{variant:"error",onClick:d[2]||(d[2]=_=>e(m).removeConfig(u.configId))},{icon:h(()=>[i(sa,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Delete configuration")),1)]),_:1})]),p("div",na,[i(e(b),{modelValue:o.value.ldapHost,helperText:e(a)("user_ldap","You can omit the protocol, unless you require SSL. If so, start with ldaps://"),label:e(a)("user_ldap","Host"),placeholder:"ldaps://localhost",autocomplete:"off",onChange:d[3]||(d[3]=_=>o.value.ldapHost=_.target.value)},null,8,["modelValue","helperText","label"]),p("div",pa,[i(e(b),{modelValue:o.value.ldapPort,label:e(a)("user_ldap","Port"),placeholder:"389",type:"number",autocomplete:"off",onChange:d[4]||(d[4]=_=>o.value.ldapPort=_.target.value)},null,8,["modelValue","label"]),i(e(x),{disabled:c.value,onClick:D},{default:h(()=>[w(n(e(a)("user_ldap","Detect Port")),1)]),_:1},8,["disabled"])])]),p("div",ca,[i(e(b),{modelValue:l.value,"onUpdate:modelValue":d[5]||(d[5]=_=>l.value=_),helperText:e(a)("user_ldap","The DN of the client user with which the bind shall be done. For anonymous access, leave DN and Password empty."),label:e(a)("user_ldap","User DN"),placeholder:"uid=agent,dc=example,dc=com",autocomplete:"off"},null,8,["modelValue","helperText","label"])]),p("div",ma,[i(e(b),{modelValue:y.value,"onUpdate:modelValue":d[6]||(d[6]=_=>y.value=_),type:"password",helperText:e(a)("user_ldap","For anonymous access, leave DN and Password empty."),label:e(a)("user_ldap","Password"),autocomplete:"off"},null,8,["modelValue","helperText","label"]),i(e(x),{disabled:!L.value,onClick:C},{default:h(()=>[w(n(e(a)("user_ldap","Save credentials")),1)]),_:1},8,["disabled"])]),p("div",_a,[i(e(O),{label:e(a)("user_ldap","Base DN"),modelValue:o.value.ldapBase,placeholder:e(a)("user_ldap","One Base DN per line"),helperText:e(a)("user_ldap","You can specify Base DN for users and groups in the Advanced tab"),onChange:d[7]||(d[7]=_=>o.value.ldapBase=_.target.value)},null,8,["label","modelValue","placeholder","helperText"]),i(e(x),{disabled:r.value||L.value,onClick:U},{default:h(()=>[w(n(e(a)("user_ldap","Detect Base DN")),1)]),_:1},8,["disabled"]),i(e(x),{disabled:g.value||o.value.ldapBase==="",onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Test Base DN")),1)]),_:1},8,["disabled"])])]))}}),fa=G(ga,[["__scopeId","data-v-1a7392db"]]),va={class:"ldap-wizard__users"},ha={class:"ldap-wizard__users__line ldap-wizard__users__user-filter-object-class"},ba={class:"ldap-wizard__users__line ldap-wizard__users__user-filter-groups"},wa={class:"ldap-wizard__users__line ldap-wizard__users__user-filter"},ya={key:0},Aa={key:1},Va={class:"ldap-wizard__users__line ldap-wizard__users__user-count-check"},Da={key:1},Ua=B({__name:"UsersTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapUserFilterObjectclass:U,ldapUserFilterGroups:U})),c=A(void 0),g=A(!1),r=$().theming.name,l=A([]),y=A([]),L=I({get(){return o.value.ldapUserFilterObjectclass?.split(";").filter(d=>d!=="")??[]},set(d){o.value.ldapUserFilterObjectclass=d.join(";")}}),C=I({get(){return o.value.ldapUserFilterGroups.split(";").filter(d=>d!=="")},set(d){o.value.ldapUserFilterGroups=d.join(";")}});async function D(){const d=await P("determineUserObjectClasses",s.configId);l.value=d.options?.ldap_userfilter_objectclass??[],t.value[s.configId].ldapUserFilterObjectclass=d.changes?.ldap_userfilter_objectclass?.join(";")??"";const _=await P("determineGroupsForUsers",s.configId);y.value=_.options?.ldap_userfilter_groups??[],t.value[s.configId].ldapUserFilterGroups=_.changes?.ldap_userfilter_groups?.join(";")??""}D();async function U(){if(o.value.ldapUserFilterMode==="0"){const d=await P("getUserListFilter",s.configId);t.value[s.configId].ldapUserFilter=d.changes?.ldap_userlist_filter??"";const _=await P("getUserLoginFilter",s.configId);t.value[s.configId].ldapLoginFilter=_.changes?.ldap_login_filter??""}}async function z(){try{g.value=!0;const d=await P("countUsers",s.configId);c.value=d.changes.ldap_user_count}finally{g.value=!1}}async function f(d){d?o.value.ldapUserFilterMode="1":o.value.ldapUserFilterMode=await Z()?"0":"1"}return(d,_)=>(v(),V("fieldset",va,[w(n(e(a)("user_ldap","Listing and searching for users is constrained by these criteria:"))+" ",1),p("div",ha,[i(e(R),{modelValue:L.value,"onUpdate:modelValue":_[0]||(_[0]=N=>L.value=N),disabled:o.value.ldapUserFilterMode==="1",class:"ldap-wizard__users__user-filter-object-class__select",options:l.value,inputLabel:e(a)("user_ldap","Only these object classes:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"]),w(" "+n(e(a)("user_ldap","The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin.")),1)]),p("div",ba,[i(e(R),{modelValue:C.value,"onUpdate:modelValue":_[1]||(_[1]=N=>C.value=N),class:"ldap-wizard__users__user-filter-groups__select",disabled:o.value.ldapUserFilterMode==="1",options:y.value,inputLabel:e(a)("user_ldap","Only from these groups:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"])]),p("div",wa,[i(e(k),{modelValue:o.value.ldapUserFilterMode==="1","onUpdate:modelValue":f},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),o.value.ldapUserFilterMode==="1"?(v(),V("div",ya,[i(e(O),{modelValue:o.value.ldapUserFilter,"onUpdate:modelValue":_[2]||(_[2]=N=>o.value.ldapUserFilter=N),placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","The filter specifies which LDAP users shall have access to the {instanceName} instance.",{instanceName:e(r)})},null,8,["modelValue","placeholder","helperText"])])):(v(),V("div",Aa,[p("label",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapUserFilter),1)]))]),p("div",Va,[i(e(x),{disabled:g.value,onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings and count users")),1)]),_:1},8,["disabled"]),g.value?(v(),T(e(Y),{key:0,size:16})):F("",!0),c.value!==void 0&&!g.value?(v(),V("span",Da,n(e(a)("user_ldap","User count: {usersCount}",{usersCount:c.value},{escape:!1})),1)):F("",!0)])]))}}),Ca=G(Ua,[["__scopeId","data-v-77a14f2a"]]),La={class:"ldap-wizard__controls"},Ia={class:"ldap-wizard__controls__state_message"},Pa=B({__name:"WizardControls",props:{configId:{}},setup(u){const s=u,m=E(),{updatingConfig:t}=Q(m),o=A(!1),c=A(null),g=I(()=>c.value?.success);X(t,()=>{c.value=null});async function r(){try{o.value=!0,c.value=await Ae(s.configId)}finally{o.value=!1}}return(l,y)=>(v(),V("div",La,[i(e(x),{variant:"primary",disabled:o.value,onClick:r},{default:h(()=>[w(n(e(a)("user_ldap","Test Configuration")),1)]),_:1},8,["disabled"]),i(e(x),{variant:"tertiary",href:"https://docs.nextcloud.com/server/stable/go.php?to=admin-ldap",target:"_blank",rel:"noreferrer noopener"},{icon:h(()=>[i(ae,{size:20})]),default:h(()=>[p("span",null,n(e(a)("user_ldap","Help")),1)]),_:1}),c.value!==null&&!o.value?(v(),V(W,{key:0},[p("span",{class:re(["ldap-wizard__controls__state_indicator",{"ldap-wizard__controls__state_indicator--valid":g.value}])},null,2),p("span",Ia,n(c.value.message),1)],64)):F("",!0),o.value?(v(),T(e(Y),{key:1,size:16})):F("",!0)]))}}),xa=G(Pa,[["__scopeId","data-v-4518d86f"]]),Ta={class:"ldap-wizard"},Fa={class:"ldap-wizard__config-selection"},ka={key:0,class:"ldap-wizard__tab-container"},za={class:"ldap-wizard__tab-selection-container"},Na={class:"ldap-wizard__tab-selection"},Ga={class:"ldap-wizard__clear-mapping"},Oa={class:"ldap-wizard__clear-mapping__buttons"},Ba=B({__name:"LDAPSettingsApp",setup(u){const s=ee("user_ldap","ldapModuleInstalled"),m={server:a("user_ldap","Server"),users:a("user_ldap","Users"),login:a("user_ldap","Login Attributes"),groups:a("user_ldap","Groups"),advanced:a("user_ldap","Advanced"),expert:a("user_ldap","Expert")},t=E(),{ldapConfigs:o,selectedConfigId:c,selectedConfig:g}=Q(t),r=A("server"),l=A(!1),y=I(()=>g.value!==void 0&&g.value.ldapHost!==""&&g.value.ldapPort!==""&&g.value.ldapBase!=="");async function L(C){try{l.value=!0,await Ve(C)}finally{l.value=!1}}return(C,D)=>(v(),V("form",Ta,[p("h2",null,n(e(a)("user_ldap","LDAP/AD integration")),1),e(s)?F("",!0):(v(),T(e(pe),{key:0,type:"warning",text:e(a)("user_ldap","The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.")},null,8,["text"])),e(s)?(v(),V(W,{key:1},[p("div",Fa,[e(c)!==void 0?(v(),T(e(R),{key:0,modelValue:e(c),"onUpdate:modelValue":D[0]||(D[0]=U=>oe(c)?c.value=U:null),options:Object.keys(e(o)),inputLabel:e(a)("user_ldap","Select LDAP Config")},{option:h(({label:U})=>[w(n(`${U}: ${e(o)[U]?.ldapHost??""}`),1)]),"selected-option":h(({label:U})=>[w(n(`${U}: ${e(o)[U]?.ldapHost??""}`),1)]),_:1},8,["modelValue","options","inputLabel"])):F("",!0),i(e(x),{label:e(a)("user_ldap","Create New Config"),class:"ldap-wizard__config-selection__create-button",onClick:e(t).create},{icon:h(()=>[i(ne,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Create configuration")),1)]),_:1},8,["label","onClick"])]),e(c)!==void 0?(v(),V("div",ka,[p("div",za,[p("div",Na,[(v(),V(W,null,ie(m,(U,z)=>i(e(k),{key:z,modelValue:r.value,"onUpdate:modelValue":D[1]||(D[1]=f=>r.value=f),buttonVariant:!0,value:z,type:"radio",disabled:z!=="server"&&!y.value,buttonVariantGrouped:"horizontal"},{default:h(()=>[w(n(U),1)]),_:2},1032,["modelValue","value","disabled"])),64))])]),r.value==="server"?(v(),T(fa,{key:0,configId:e(c)},null,8,["configId"])):r.value==="users"?(v(),T(Ca,{key:1,configId:e(c)},null,8,["configId"])):r.value==="login"?(v(),T(ea,{key:2,configId:e(c)},null,8,["configId"])):r.value==="groups"?(v(),T(qe,{key:3,configId:e(c)},null,8,["configId"])):r.value==="expert"?(v(),T(Be,{key:4,configId:e(c)},null,8,["configId"])):r.value==="advanced"?(v(),T(Te,{key:5,configId:e(c)},null,8,["configId"])):F("",!0),i(xa,{class:"ldap-wizard__controls",configId:e(c)},null,8,["configId"])])):F("",!0),p("div",Ga,[p("strong",null,n(e(a)("user_ldap","Username-LDAP User Mapping")),1),w(" "+n(e(a)("user_ldap","Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage."))+" ",1),p("div",Oa,[i(e(x),{variant:"error",disabled:l.value,onClick:D[2]||(D[2]=U=>L("user"))},{default:h(()=>[w(n(e(a)("user_ldap","Clear Username-LDAP User Mapping")),1)]),_:1},8,["disabled"]),i(e(x),{variant:"error",disabled:l.value,onClick:D[3]||(D[3]=U=>L("group"))},{default:h(()=>[w(n(e(a)("user_ldap","Clear Groupname-LDAP Group Mapping")),1)]),_:1},8,["disabled"])])])],64)):F("",!0)]))}}),Ma=G(Ba,[["__scopeId","data-v-cb2f6989"]]),ja=_e(),K=se(Ma);K.use(ja),K.mount("#content-ldap-settings"); +import{r as A,p as I,b as B,j as V,o as v,k as p,e as i,t as n,u as e,w as h,g as w,c as T,l as F,z as te,v as X,F as W,n as re,O as oe,C as ie,h as se}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{l as ee,g as $,a as G}from"./index-BgmsSgl5.chunk.mjs";import{t as a,b as de}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import"./PencilOutline-TGZB0t_n.chunk.mjs";import{b as M}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{a as O}from"./index-Bk4hMpWo.chunk.mjs";import"./NcBreadcrumbs-5gl8Syfa-CQbb_M2E.chunk.mjs";import"./NcActionRouter-CvDVCQiQ-Da-iwKjh.chunk.mjs";import"./index-Bos-XXa5.chunk.mjs";import"./NcAvatar-ruClKRzS-cc5SJkG2.chunk.mjs";import"./NcRichText-D_ssz6sB-DplYO192.chunk.mjs";import{N as x}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as Y}from"./mdi-e8YUrhPH.chunk.mjs";import{g as ue}from"./index-DqIuD5e7.chunk.mjs";import{N as k}from"./NcCheckboxRadioSwitch-D0gFwEVl-CQqKxPRl.chunk.mjs";import"./NcChip-CrVOU2RM-TQyHvx90.chunk.mjs";import"./NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs";import"./TrayArrowDown-CmCWOFTF.chunk.mjs";import{N as R}from"./NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs";import"./NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs";import{P as ne}from"./Plus-BsxGg9Cm.chunk.mjs";/* empty css */import"./TrashCanOutline-COyEKQVc.chunk.mjs";import{N as pe}from"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./NcPasswordField-BOLzDHBJ-CjV6dvT3.chunk.mjs";import{c as j,i as ce}from"./index-CPwHjAPR.chunk.mjs";import{_ as b}from"./NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs";import"./index-Blsbluag.chunk.mjs";import{I as ae}from"./ContentCopy-DqUCQg_O.chunk.mjs";import"./NcUserBubble-BE6yD-R0-2JpcdUf_.chunk.mjs";import"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import"./colors-BfjxNgsx-DQQhcX1Z.chunk.mjs";import{d as me,s as Q,c as _e}from"./pinia-DaVFx_pY.chunk.mjs";import{d as le,a as H,g as ge,s as fe,b as q}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import"./index-sH3U_332.chunk.mjs";const S=ue().setApp("LDAP").detectUser().build();async function ve(){const u=await j.post(M("apps/user_ldap/api/v1/config"));return S.debug("Created configuration",{configId:u.data.ocs.data.configID}),u.data.ocs.data.configID}async function he(u){const s=new FormData;s.set("copyConfig",u);const m=await j.post(M("apps/user_ldap/api/v1/config/{configId}/copy",{configId:u}),s);return S.debug("Created configuration",{configId:m.data.ocs.data.configID}),m.data.ocs.data.configID}async function be(u){const s=await j.get(M("apps/user_ldap/api/v1/config/{configId}",{configId:u}));return S.debug("Fetched configuration",{configId:u,config:s.data.ocs.data}),s.data.ocs.data}async function we(u,s){const m=await j.put(M("apps/user_ldap/api/v1/config/{configId}",{configId:u}),{configData:s});return S.debug("Updated configuration",{configId:u,config:s}),m.data.ocs.data}async function ye(u){try{if(!await J(a("user_ldap","Confirm action"),a("user_ldap","Are you sure you want to permanently delete this LDAP configuration? This cannot be undone.")))return!1;await j.delete(M("apps/user_ldap/api/v1/config/{configId}",{configId:u})),S.debug("Deleted configuration",{configId:u})}catch(s){const m=s.response;H(m?.data.ocs.meta.message||a("user_ldap","Failed to delete config"))}return!0}async function Ae(u){const s=new FormData,m=await j.post(M("apps/user_ldap/api/v1/config/{configId}/test",{configId:u}));return S.debug(`Configuration is ${m.data.ocs.data.success?"valide":"invalide"}`,{configId:u,params:s,response:m}),m.data.ocs.data}async function Ve(u){if(!await J(a("user_ldap","Confirm action"),a("user_ldap","Are you sure you want to permanently clear the LDAP mapping? This cannot be undone.")))return!1;try{const s=await j.post(M("apps/user_ldap/api/v1/wizard/clearMappings"),{subject:u});return S.debug("Cleared mapping",{subject:u,response:s}),le(a("user_ldap","Mapping cleared")),!0}catch(s){const m=s.response;H(m?.data.ocs.meta.message||a("user_ldap","Failed to clear mapping"))}}async function P(u,s,m={}){const t=new FormData;Object.entries(m).forEach(([o,c])=>{t.set(o,c)});try{const o=await j.post(M("apps/user_ldap/api/v1/wizard/{configId}/{action}",{configId:s,action:u}),t);return S.debug(`Called wizard action: ${u}`,{configId:s,params:t,response:o}),o.data.ocs.data}catch(o){let c=a("user_ldap","An error occurred");throw ce(o)&&o.response?.data.ocs.meta.status==="failure"&&o.response.data.ocs.meta.message!==""&&o.response.data.ocs.meta.message!==void 0&&(c=o.response.data.ocs.meta.message),H(c),o}}async function Z(){return await J(a("user_ldap","Mode switch"),a("user_ldap","Switching the mode will enable automatic LDAP queries. Depending on your LDAP size they may take a while. Do you still want to switch the mode?"))}async function J(u,s){let m=!1;return await ge(u).setText(s).setSeverity("warning").addButton({label:a("user_ldap","Cancel"),callback(){}}).addButton({label:a("user_ldap","Confirm"),variant:"error",callback(){m=!0}}).build().show(),m}const E=me("ldap-configs",()=>{const u=A(ee("user_ldap","ldapConfigs")),s=A(Object.keys(u.value)[0]),m=I(()=>s.value===void 0?void 0:u.value[s.value]),t=A(0);function o(l,y={}){if(u.value[l]===void 0)throw new Error(`Config with id ${l} does not exist`);return new Proxy(u.value[l],{get(L,C){return L[C]},set(L,C,D){return L[C]=D,(async()=>(t.value++,await we(l,{[C]:D}),t.value--,y[C]!==void 0&&y[C](L[C])))(),!0}})}async function c(){const l=await ve();return u.value[l]=await be(l),s.value=l,l}async function g(l){if(u.value[l]===void 0)throw new Error(`Config with id ${l} does not exist`);const y=await he(l);return u.value[y]={...u.value[l]},s.value=y,y}async function r(l){await ye(l)===!0&&(Object.keys(u.value).length===1?(s.value=await c(),s.value!==l&&delete u.value[l]):(s.value=Object.keys(u.value).filter(y=>l!==y)[0],delete u.value[l]))}return{ldapConfigs:u,selectedConfigId:s,selectedConfig:m,updatingConfig:t,getConfigProxy:o,create:c,copyConfig:g,removeConfig:r}}),De={class:"ldap-wizard__advanced"},Ue={open:"",name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Ce={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Le={class:"tablecell"},Ie={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},Pe={name:"ldap-wizard__advanced__section",class:"ldap-wizard__advanced__section"},xe=B({__name:"AdvancedTab",props:{configId:{}},setup(u){const s=u,m=E(),t=I(()=>m.getConfigProxy(s.configId)),o=$().theming.name,c={uniqueMember:"uniqueMember",memberUid:"memberUid",member:"member (AD)",gidNumber:"gidNumber",zimbraMailForwardingAddress:"zimbraMailForwardingAddress"};return(g,r)=>(v(),V("fieldset",De,[p("details",Ue,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Connection Settings")),1)]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Backup (Replica) Host"),modelValue:t.value.ldapBackupHost,helperText:e(a)("user_ldap","Give an optional backup host. It must be a replica of the main LDAP/AD server."),onChange:r[0]||(r[0]=l=>t.value.ldapBackupHost=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{type:"number",modelValue:t.value.ldapBackupPort,label:e(a)("user_ldap","Backup (Replica) Port"),onChange:r[1]||(r[1]=l=>t.value.ldapBackupPort=l.target.value)},null,8,["modelValue","label"]),i(e(k),{modelValue:t.value.ldapOverrideMainServer==="1",type:"switch","aria-label":e(a)("user_ldap","Only connect to the replica server."),"onUpdate:modelValue":r[2]||(r[2]=l=>t.value.ldapOverrideMainServer=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Disable Main Server")),1)]),_:1},8,["modelValue","aria-label"]),i(e(k),{modelValue:t.value.turnOffCertCheck==="1","aria-label":e(a)("user_ldap","Not recommended, use it for testing only! If connection only works with this option, import the LDAP server's SSL certificate in your {instanceName} server.",{instanceName:e(o)}),"onUpdate:modelValue":r[3]||(r[3]=l=>t.value.turnOffCertCheck=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Turn off SSL certificate validation.")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{type:"number",label:e(a)("user_ldap","Cache Time-To-Live"),modelValue:t.value.ldapCacheTTL,helperText:e(a)("user_ldap","in seconds. A change empties the cache."),onChange:r[4]||(r[4]=l=>t.value.ldapCacheTTL=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Ce,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Directory Settings")),1)]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapUserDisplayName,label:e(a)("user_ldap","User Display Name Field"),helperText:e(a)("user_ldap","The LDAP attribute to use to generate the user's display name."),onChange:r[5]||(r[5]=l=>t.value.ldapUserDisplayName=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapUserDisplayName2,label:e(a)("user_ldap","2nd User Display Name Field"),helperText:e(a)("user_ldap","Optional. An LDAP attribute to be added to the display name in brackets. Results in e.g. »John Doe (john.doe@example.org)«."),onChange:r[6]||(r[6]=l=>t.value.ldapUserDisplayName2=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(O),{modelValue:t.value.ldapBaseUsers,placeholder:e(a)("user_ldap","One User Base DN per line"),label:e(a)("user_ldap","Base User Tree"),onChange:r[7]||(r[7]=l=>t.value.ldapBaseUsers=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(O),{modelValue:t.value.ldapAttributesForUserSearch,placeholder:e(a)("user_ldap","Optional; one attribute per line"),label:e(a)("user_ldap","User Search Attributes"),onChange:r[8]||(r[8]=l=>t.value.ldapAttributesForUserSearch=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(k),{modelValue:t.value.markRemnantsAsDisabled==="1","aria-label":e(a)("user_ldap","When switched on, users imported from LDAP which are then missing will be disabled"),"onUpdate:modelValue":r[9]||(r[9]=l=>t.value.markRemnantsAsDisabled=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Disable users missing from LDAP")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapGroupDisplayName,label:e(a)("user_ldap","Group Display Name Field"),title:e(a)("user_ldap","The LDAP attribute to use to generate the groups's display name."),onChange:r[10]||(r[10]=l=>t.value.ldapGroupDisplayName=l.target.value)},null,8,["modelValue","label","title"]),i(e(O),{modelValue:t.value.ldapBaseGroups,placeholder:e(a)("user_ldap","One Group Base DN per line"),label:e(a)("user_ldap","Base Group Tree"),onChange:r[11]||(r[11]=l=>t.value.ldapBaseGroups=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(O),{modelValue:t.value.ldapAttributesForGroupSearch,placeholder:e(a)("user_ldap","Optional; one attribute per line"),label:e(a)("user_ldap","Group Search Attributes"),onChange:r[12]||(r[12]=l=>t.value.ldapAttributesForGroupSearch=l.target.value)},null,8,["modelValue","placeholder","label"]),i(e(R),{modelValue:t.value.ldapGroupMemberAssocAttr,"onUpdate:modelValue":r[13]||(r[13]=l=>t.value.ldapGroupMemberAssocAttr=l),options:Object.keys(c),inputLabel:e(a)("user_ldap","Group-Member association")},{option:h(({label:l})=>[w(n(c[l]),1)]),"selected-option":h(({label:l})=>[w(n(c[l]),1)]),_:1},8,["modelValue","options","inputLabel"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Dynamic Group Member URL"),modelValue:t.value.ldapDynamicGroupMemberURL,helperText:e(a)("user_ldap","The LDAP attribute that on group objects contains an LDAP search URL that determines what objects belong to the group. (An empty setting disables dynamic group membership functionality.)"),onChange:r[14]||(r[14]=l=>t.value.ldapDynamicGroupMemberURL=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(k),{modelValue:t.value.ldapNestedGroups==="1","aria-label":e(a)("user_ldap","When switched on, groups that contain groups are supported. (Only works if the group member attribute contains DNs.)"),"onUpdate:modelValue":r[15]||(r[15]=l=>t.value.ldapNestedGroups=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Nested Groups")),1)]),_:1},8,["modelValue","aria-label"]),i(e(b),{type:"number",label:e(a)("user_ldap","Paging chunksize"),modelValue:t.value.ldapPagingSize,helperText:e(a)("user_ldap","Chunksize used for paged LDAP searches that may return bulky results like user or group enumeration. (Setting it 0 disables paged LDAP searches in those situations.)"),onChange:r[16]||(r[16]=l=>t.value.ldapPagingSize=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(k),{modelValue:t.value.turnOnPasswordChange==="1","aria-label":e(a)("user_ldap","Allow LDAP users to change their password and allow Super Administrators and Group Administrators to change the password of their LDAP users. Only works when access control policies are configured accordingly on the LDAP server. As passwords are sent in plaintext to the LDAP server, transport encryption must be used and password hashing should be configured on the LDAP server."),"onUpdate:modelValue":r[17]||(r[17]=l=>t.value.turnOnPasswordChange=l?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Enable LDAP password changes per user")),1)]),_:1},8,["modelValue","aria-label"]),p("span",Le,n(e(a)("user_ldap","(New password is sent as plain text to LDAP)")),1),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Default password policy DN"),modelValue:t.value.ldapDefaultPPolicyDN,helperText:e(a)("user_ldap","The DN of a default password policy that will be used for password expiry handling. Works only when LDAP password changes per user are enabled and is only supported by OpenLDAP. Leave empty to disable password expiry handling."),onChange:r[18]||(r[18]=l=>t.value.ldapDefaultPPolicyDN=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Ie,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","Special Attributes")),1)]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapQuotaAttribute,label:e(a)("user_ldap","Quota Field"),helperText:e(a)("user_ldap","Leave empty for user's default quota. Otherwise, specify an LDAP/AD attribute."),onChange:r[19]||(r[19]=l=>t.value.ldapQuotaAttribute=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapQuotaDefault,label:e(a)("user_ldap","Quota Default"),helperText:e(a)("user_ldap","Override default quota for LDAP users who do not have a quota set in the Quota Field."),onChange:r[20]||(r[20]=l=>t.value.ldapQuotaDefault=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",modelValue:t.value.ldapEmailAttribute,label:e(a)("user_ldap","Email Field"),helperText:e(a)("user_ldap","Set the user's email from their LDAP attribute. Leave it empty for default behaviour."),onChange:r[21]||(r[21]=l=>t.value.ldapEmailAttribute=l.target.value)},null,8,["modelValue","label","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","User Home Folder Naming Rule"),modelValue:t.value.homeFolderNamingRule,helperText:e(a)("user_ldap","Leave empty for username (default). Otherwise, specify an LDAP/AD attribute."),onChange:r[22]||(r[22]=l=>t.value.homeFolderNamingRule=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","`$home` Placeholder Field"),modelValue:t.value.ldapExtStorageHomeAttribute,helperText:e(a)("user_ldap","$home in an external storage configuration will be replaced with the value of the specified attribute"),onChange:r[23]||(r[23]=l=>t.value.ldapExtStorageHomeAttribute=l.target.value)},null,8,["label","modelValue","helperText"])]),p("details",Pe,[p("summary",null,[p("h3",null,n(e(a)("user_ldap","User Profile Attributes")),1)]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Phone Field"),modelValue:t.value.ldapAttributePhone,helperText:e(a)("user_ldap","User profile Phone will be set from the specified attribute"),onChange:r[24]||(r[24]=l=>t.value.ldapAttributePhone=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Website Field"),modelValue:t.value.ldapAttributeWebsite,helperText:e(a)("user_ldap","User profile Website will be set from the specified attribute"),onChange:r[25]||(r[25]=l=>t.value.ldapAttributeWebsite=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Address Field"),modelValue:t.value.ldapAttributeAddress,helperText:e(a)("user_ldap","User profile Address will be set from the specified attribute"),onChange:r[26]||(r[26]=l=>t.value.ldapAttributeAddress=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Twitter Field"),modelValue:t.value.ldapAttributeTwitter,helperText:e(a)("user_ldap","User profile Twitter will be set from the specified attribute"),onChange:r[27]||(r[27]=l=>t.value.ldapAttributeTwitter=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Fediverse Field"),modelValue:t.value.ldapAttributeFediverse,helperText:e(a)("user_ldap","User profile Fediverse will be set from the specified attribute"),onChange:r[28]||(r[28]=l=>t.value.ldapAttributeFediverse=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Organisation Field"),modelValue:t.value.ldapAttributeOrganisation,helperText:e(a)("user_ldap","User profile Organisation will be set from the specified attribute"),onChange:r[29]||(r[29]=l=>t.value.ldapAttributeOrganisation=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Role Field"),modelValue:t.value.ldapAttributeRole,helperText:e(a)("user_ldap","User profile Role will be set from the specified attribute"),onChange:r[30]||(r[30]=l=>t.value.ldapAttributeRole=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Headline Field"),modelValue:t.value.ldapAttributeHeadline,helperText:e(a)("user_ldap","User profile Headline will be set from the specified attribute"),onChange:r[31]||(r[31]=l=>t.value.ldapAttributeHeadline=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Biography Field"),modelValue:t.value.ldapAttributeBiography,helperText:e(a)("user_ldap","User profile Biography will be set from the specified attribute"),onChange:r[32]||(r[32]=l=>t.value.ldapAttributeBiography=l.target.value)},null,8,["label","modelValue","helperText"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","Birthdate Field"),modelValue:t.value.ldapAttributeBirthDate,helperText:e(a)("user_ldap","User profile Date of birth will be set from the specified attribute"),onChange:r[33]||(r[33]=l=>t.value.ldapAttributeBirthDate=l.target.value)},null,8,["label","modelValue","helperText"])])]))}}),Te=G(xe,[["__scopeId","data-v-4e205a16"]]),Fe={class:"ldap-wizard__expert"},ke={class:"ldap-wizard__expert__line"},ze={id:"ldap_expert_username_attr"},Ne={class:"ldap-wizard__expert__line"},Ge={id:"ldap_expert_uuid_user_attr"},Oe=B({__name:"ExpertTab",props:{configId:{}},setup(u){const s=u,m=E(),t=I(()=>m.getConfigProxy(s.configId));return(o,c)=>(v(),V("fieldset",Fe,[p("div",ke,[p("strong",null,n(e(a)("user_ldap","Internal Username")),1),p("p",ze,n(e(a)("user_ldap","By default the internal username will be created from the UUID attribute. It makes sure that the username is unique and characters do not need to be converted. The internal username has the restriction that only these characters are allowed: [a-zA-Z0-9_.@-]. Other characters are replaced with their ASCII correspondence or simply omitted. On collisions a number will be added/increased. The internal username is used to identify a user internally. It is also the default name for the user home folder. It is also a part of remote URLs, for instance for all DAV services. With this setting, the default behavior can be overridden. Changes will have effect only on newly mapped (added) LDAP users. Leave it empty for default behavior.")),1),i(e(b),{"aria-describedby":"ldap_expert_username_attr",autocomplete:"off",label:e(a)("user_ldap","Internal Username Attribute:"),modelValue:t.value.ldapExpertUsernameAttr,onChange:c[0]||(c[0]=g=>t.value.ldapExpertUsernameAttr=g.target.value)},null,8,["label","modelValue"])]),p("div",Ne,[p("strong",null,n(e(a)("user_ldap","Override UUID detection")),1),p("p",Ge,n(e(a)("user_ldap","By default, the UUID attribute is automatically detected. The UUID attribute is used to doubtlessly identify LDAP users and groups. Also, the internal username will be created based on the UUID, if not specified otherwise above. You can override the setting and pass an attribute of your choice. You must make sure that the attribute of your choice can be fetched for both users and groups and it is unique. Leave it empty for default behavior. Changes will have effect only on newly mapped (added) LDAP users and groups.")),1),i(e(b),{"aria-describedby":"ldap_expert_uuid_user_attr",autocomplete:"off",label:e(a)("user_ldap","UUID Attribute for Users"),modelValue:t.value.ldapExpertUUIDUserAttr,onChange:c[1]||(c[1]=g=>t.value.ldapExpertUUIDUserAttr=g.target.value)},null,8,["label","modelValue"]),i(e(b),{autocomplete:"off",label:e(a)("user_ldap","UUID Attribute for Groups"),modelValue:t.value.ldapExpertUUIDGroupAttr,onChange:c[2]||(c[2]=g=>t.value.ldapExpertUUIDGroupAttr=g.target.value)},null,8,["label","modelValue"])])]))}}),Be=G(Oe,[["__scopeId","data-v-e77b52a4"]]),Me={class:"ldap-wizard__groups"},je={class:"ldap-wizard__groups__line ldap-wizard__groups__filter-selection"},Se={class:"ldap-wizard__groups__line ldap-wizard__groups__groups-filter"},Ee={key:0},He={key:1},Re={class:"ldap-wizard__groups__line ldap-wizard__groups__groups-count-check"},Qe={key:1},$e=B({__name:"GroupsTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapGroupFilterObjectclass:U,ldapGroupFilterGroups:U})),c=$().theming.name,g=A(void 0),r=A([]),l=A([]),y=A(!1),L=I({get(){return o.value.ldapGroupFilterObjectclass.split(";").filter(d=>d!=="")},set(d){o.value.ldapGroupFilterObjectclass=d.join(";")}}),C=I({get(){return o.value.ldapGroupFilterGroups.split(";").filter(d=>d!=="")},set(d){o.value.ldapGroupFilterGroups=d.join(";")}});async function D(){const d=await P("determineGroupObjectClasses",s.configId);r.value=d.options?.ldap_groupfilter_objectclass??[];const _=await P("determineGroupsForGroups",s.configId);l.value=_.options?.ldap_groupfilter_groups??[]}D();async function U(){const d=await P("getGroupFilter",s.configId);t.value[s.configId].ldapGroupFilter=d.changes?.ldap_group_filter??""}async function z(){try{y.value=!0;const d=await P("countGroups",s.configId);g.value=d.changes.ldap_group_count}finally{y.value=!1}}async function f(d){d?o.value.ldapGroupFilterMode="1":o.value.ldapGroupFilterMode=await Z()?"0":"1"}return(d,_)=>(v(),V("fieldset",Me,[p("legend",null,n(e(a)("user_ldap","Groups meeting these criteria are available in {instanceName}:",{instanceName:e(c)})),1),p("div",je,[i(e(R),{modelValue:L.value,"onUpdate:modelValue":_[0]||(_[0]=N=>L.value=N),class:"ldap-wizard__groups__group-filter-groups__select",options:r.value,disabled:o.value.ldapGroupFilterMode==="1",inputLabel:e(a)("user_ldap","Only these object classes:"),multiple:!0},null,8,["modelValue","options","disabled","inputLabel"]),i(e(R),{modelValue:C.value,"onUpdate:modelValue":_[1]||(_[1]=N=>C.value=N),class:"ldap-wizard__groups__group-filter-groups__select",options:l.value,disabled:o.value.ldapGroupFilterMode==="1",inputLabel:e(a)("user_ldap","Only from these groups:"),multiple:!0},null,8,["modelValue","options","disabled","inputLabel"])]),p("div",Se,[i(e(k),{modelValue:o.value.ldapGroupFilterMode==="1","onUpdate:modelValue":f},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),o.value.ldapGroupFilterMode==="1"?(v(),V("div",Ee,[i(e(O),{modelValue:o.value.ldapGroupFilter,"onUpdate:modelValue":_[2]||(_[2]=N=>o.value.ldapGroupFilter=N),placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","The filter specifies which LDAP groups shall have access to the {instanceName} instance.",{instanceName:e(c)})},null,8,["modelValue","placeholder","helperText"])])):(v(),V("div",He,[p("span",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapGroupFilter),1)]))]),p("div",Re,[i(e(x),{disabled:y.value,onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings and count the groups")),1)]),_:1},8,["disabled"]),y.value?(v(),T(e(Y),{key:0,size:20})):F("",!0),g.value!==void 0&&!y.value?(v(),V("span",Qe,n(g.value),1)):F("",!0)])]))}}),qe=G($e,[["__scopeId","data-v-bb0d62ba"]]),We={class:"ldap-wizard__login"},Ye={class:"ldap-wizard__login__line ldap-wizard__login__login-attributes"},Ze={class:"ldap-wizard__login__line ldap-wizard__login__user-login-filter"},Je={key:1},Ke={class:"ldap-wizard__login__line"},Xe=B({__name:"LoginTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapLoginFilterAttributes:D,ldapLoginFilterUsername:D,ldapLoginFilterEmail:D})),c=$().theming.name,g=A(""),r=A([]),l=I({get(){return o.value.ldapLoginFilterAttributes.split(";").filter(f=>f!=="")},set(f){o.value.ldapLoginFilterAttributes=f.join(";")}}),y=I(()=>o.value.ldapLoginFilterMode==="1"),L=I(()=>r.value.filter(f=>!l.value.includes(f)));async function C(){const f=await P("determineAttributes",s.configId);r.value=f.options?.ldap_loginfilter_attributes??[]}C();async function D(){if(o.value.ldapLoginFilterMode==="0"){const f=await P("getUserLoginFilter",s.configId);t.value[s.configId].ldapLoginFilter=f.changes?.ldap_login_filter??""}}async function U(){try{const f=await P("testLoginName",s.configId,{loginName:g.value}),d=f.changes.ldap_test_loginname,_=f.changes.ldap_test_effective_filter;d<1?H(a("user_ldap","User not found. Please check your login attributes and username. Effective filter (to copy-and-paste for command-line validation): {filter}",{filter:_})):d===1?le(a("user_ldap","User found and settings verified.")):d>1&&fe(a("user_ldap","Consider narrowing your search, as it encompassed many users, only the first one of whom will be able to log in."))}catch(f){switch(f??a("user_ldap","An unspecified error occurred. Please check log and settings.")){case"Bad search filter":H(a("user_ldap","The search filter is invalid, probably due to syntax issues like uneven number of opened and closed brackets. Please revise."));break;case"connection error":H(a("user_ldap","A connection error to LDAP/AD occurred. Please check host, port and credentials."));break;case"missing placeholder":H(a("user_ldap",'The "%uid" placeholder is missing. It will be replaced with the login name when querying LDAP/AD.'));break}}}async function z(f){f?o.value.ldapLoginFilterMode="1":o.value.ldapLoginFilterMode=await Z()?"0":"1"}return(f,d)=>(v(),V("fieldset",We,[p("legend",null,n(e(a)("user_ldap","When logging in, {instanceName} will find the user based on the following attributes:",{instanceName:e(c)})),1),i(e(k),{modelValue:o.value.ldapLoginFilterUsername==="1",description:e(a)("user_ldap","Allows login against the LDAP/AD username, which is either 'uid' or 'sAMAccountName' and will be detected."),"onUpdate:modelValue":d[0]||(d[0]=_=>o.value.ldapLoginFilterUsername=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","LDAP/AD Username:")),1)]),_:1},8,["modelValue","description"]),i(e(k),{modelValue:o.value.ldapLoginFilterEmail==="1",description:e(a)("user_ldap","Allows login against an email attribute. 'mail' and 'mailPrimaryAddress' allowed."),"onUpdate:modelValue":d[1]||(d[1]=_=>o.value.ldapLoginFilterEmail=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","LDAP/AD Email Address:")),1)]),_:1},8,["modelValue","description"]),p("div",Ye,[i(e(R),{modelValue:l.value,"onUpdate:modelValue":d[2]||(d[2]=_=>l.value=_),keepOpen:"",disabled:y.value,options:L.value,inputLabel:e(a)("user_ldap","Other Attributes:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"])]),p("div",Ze,[i(e(k),{modelValue:y.value,"onUpdate:modelValue":z},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),y.value?(v(),T(e(O),{key:0,modelValue:o.value.ldapLoginFilter,placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","Defines the filter to apply, when login is attempted. `%%uid` replaces the username in the login action. Example: `uid=%%uid`"),onChange:d[3]||(d[3]=_=>o.value.ldapLoginFilter=_.target.value)},null,8,["modelValue","placeholder","helperText"])):(v(),V("div",Je,[p("span",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapLoginFilter),1)]))]),p("div",Ke,[i(e(b),{modelValue:g.value,"onUpdate:modelValue":d[4]||(d[4]=_=>g.value=_),helperText:e(a)("user_ldap","Attempts to receive a DN for the given login name and the current login filter"),label:e(a)("user_ldap","Test Login name"),autocomplete:"off"},null,8,["modelValue","helperText","label"]),i(e(x),{disabled:g.value.length===0,onClick:U},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings")),1)]),_:1},8,["disabled"])])]))}}),ea=G(Xe,[["__scopeId","data-v-f3af5b3a"]]),aa={name:"DeleteIcon",emits:["click"],props:{title:{type:String},fillColor:{type:String,default:"currentColor"},size:{type:Number,default:24}}},la=["aria-hidden","aria-label"],ta=["fill","width","height"],ra={d:"M19,4H15.5L14.5,3H9.5L8.5,4H5V6H19M6,19A2,2 0 0,0 8,21H16A2,2 0 0,0 18,19V7H6V19Z"},oa={key:0};function ia(u,s,m,t,o,c){return v(),V("span",te(u.$attrs,{"aria-hidden":m.title?null:"true","aria-label":m.title,class:"material-design-icon delete-icon",role:"img",onClick:s[0]||(s[0]=g=>u.$emit("click",g))}),[(v(),V("svg",{fill:m.fillColor,class:"material-design-icon__svg",width:m.size,height:m.size,viewBox:"0 0 24 24"},[p("path",ra,[m.title?(v(),V("title",oa,n(m.title),1)):F("",!0)])],8,ta))],16,la)}const sa=G(aa,[["render",ia]]),da={class:"ldap-wizard__server"},ua={class:"ldap-wizard__server__line"},na={class:"ldap-wizard__server__line"},pa={class:"ldap-wizard__server__host__port"},ca={class:"ldap-wizard__server__line"},ma={class:"ldap-wizard__server__line"},_a={class:"ldap-wizard__server__line"},ga=B({__name:"ServerTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId)),c=A(!1),g=A(!1),r=A(!1),l=A(o.value.ldapAgentName),y=A(o.value.ldapAgentPassword),L=I(()=>o.value.ldapAgentName!==l.value||o.value.ldapAgentPassword!==y.value);X(o,f=>{l.value=f.ldapAgentName,f.ldapAgentPassword==="***"?y.value="":y.value=f.ldapAgentPassword});function C(){o.value.ldapAgentName=l.value,o.value.ldapAgentPassword=y.value}async function D(){try{c.value=!0;const{changes:f}=await P("guessPortAndTLS",s.configId);t.value[s.configId].ldapPort=f.ldap_port??""}finally{c.value=!1}}async function U(){try{r.value=!0;const{changes:f}=await P("guessBaseDN",s.configId);o.value.ldapBase=f.ldap_base??""}finally{r.value=!1}}async function z(){try{g.value=!0;const{changes:f}=await P("countInBaseDN",s.configId),d=f.ldap_test_base;d<1?q(a("user_ldap","No object found in the given Base DN. Please revise.")):d>1e3?q(a("user_ldap","More than 1,000 directory entries available.")):q(de("user_ldap","{ldapTestBase} entry available within the provided Base DN","{ldapTestBase} entries available within the provided Base DN",d,{ldapTestBase:d}))}finally{g.value=!1}}return(f,d)=>(v(),V("fieldset",da,[p("div",ua,[i(e(k),{modelValue:o.value.ldapConfigurationActive==="1",type:"switch","aria-label":e(a)("user_ldap","When unchecked, this configuration will be skipped."),"onUpdate:modelValue":d[0]||(d[0]=_=>o.value.ldapConfigurationActive=_?"1":"0")},{default:h(()=>[w(n(e(a)("user_ldap","Configuration active")),1)]),_:1},8,["modelValue","aria-label"]),i(e(x),{title:e(a)("user_ldap","Copy current configuration into new directory binding"),onClick:d[1]||(d[1]=_=>e(m).copyConfig(u.configId))},{icon:h(()=>[i(ae,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Copy configuration")),1)]),_:1},8,["title"]),i(e(x),{variant:"error",onClick:d[2]||(d[2]=_=>e(m).removeConfig(u.configId))},{icon:h(()=>[i(sa,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Delete configuration")),1)]),_:1})]),p("div",na,[i(e(b),{modelValue:o.value.ldapHost,helperText:e(a)("user_ldap","You can omit the protocol, unless you require SSL. If so, start with ldaps://"),label:e(a)("user_ldap","Host"),placeholder:"ldaps://localhost",autocomplete:"off",onChange:d[3]||(d[3]=_=>o.value.ldapHost=_.target.value)},null,8,["modelValue","helperText","label"]),p("div",pa,[i(e(b),{modelValue:o.value.ldapPort,label:e(a)("user_ldap","Port"),placeholder:"389",type:"number",autocomplete:"off",onChange:d[4]||(d[4]=_=>o.value.ldapPort=_.target.value)},null,8,["modelValue","label"]),i(e(x),{disabled:c.value,onClick:D},{default:h(()=>[w(n(e(a)("user_ldap","Detect Port")),1)]),_:1},8,["disabled"])])]),p("div",ca,[i(e(b),{modelValue:l.value,"onUpdate:modelValue":d[5]||(d[5]=_=>l.value=_),helperText:e(a)("user_ldap","The DN of the client user with which the bind shall be done. For anonymous access, leave DN and Password empty."),label:e(a)("user_ldap","User DN"),placeholder:"uid=agent,dc=example,dc=com",autocomplete:"off"},null,8,["modelValue","helperText","label"])]),p("div",ma,[i(e(b),{modelValue:y.value,"onUpdate:modelValue":d[6]||(d[6]=_=>y.value=_),type:"password",helperText:e(a)("user_ldap","For anonymous access, leave DN and Password empty."),label:e(a)("user_ldap","Password"),autocomplete:"off"},null,8,["modelValue","helperText","label"]),i(e(x),{disabled:!L.value,onClick:C},{default:h(()=>[w(n(e(a)("user_ldap","Save credentials")),1)]),_:1},8,["disabled"])]),p("div",_a,[i(e(O),{label:e(a)("user_ldap","Base DN"),modelValue:o.value.ldapBase,placeholder:e(a)("user_ldap","One Base DN per line"),helperText:e(a)("user_ldap","You can specify Base DN for users and groups in the Advanced tab"),onChange:d[7]||(d[7]=_=>o.value.ldapBase=_.target.value)},null,8,["label","modelValue","placeholder","helperText"]),i(e(x),{disabled:r.value||L.value,onClick:U},{default:h(()=>[w(n(e(a)("user_ldap","Detect Base DN")),1)]),_:1},8,["disabled"]),i(e(x),{disabled:g.value||o.value.ldapBase==="",onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Test Base DN")),1)]),_:1},8,["disabled"])])]))}}),fa=G(ga,[["__scopeId","data-v-1a7392db"]]),va={class:"ldap-wizard__users"},ha={class:"ldap-wizard__users__line ldap-wizard__users__user-filter-object-class"},ba={class:"ldap-wizard__users__line ldap-wizard__users__user-filter-groups"},wa={class:"ldap-wizard__users__line ldap-wizard__users__user-filter"},ya={key:0},Aa={key:1},Va={class:"ldap-wizard__users__line ldap-wizard__users__user-count-check"},Da={key:1},Ua=B({__name:"UsersTab",props:{configId:{}},setup(u){const s=u,m=E(),{ldapConfigs:t}=Q(m),o=I(()=>m.getConfigProxy(s.configId,{ldapUserFilterObjectclass:U,ldapUserFilterGroups:U})),c=A(void 0),g=A(!1),r=$().theming.name,l=A([]),y=A([]),L=I({get(){return o.value.ldapUserFilterObjectclass?.split(";").filter(d=>d!=="")??[]},set(d){o.value.ldapUserFilterObjectclass=d.join(";")}}),C=I({get(){return o.value.ldapUserFilterGroups.split(";").filter(d=>d!=="")},set(d){o.value.ldapUserFilterGroups=d.join(";")}});async function D(){const d=await P("determineUserObjectClasses",s.configId);l.value=d.options?.ldap_userfilter_objectclass??[],t.value[s.configId].ldapUserFilterObjectclass=d.changes?.ldap_userfilter_objectclass?.join(";")??"";const _=await P("determineGroupsForUsers",s.configId);y.value=_.options?.ldap_userfilter_groups??[],t.value[s.configId].ldapUserFilterGroups=_.changes?.ldap_userfilter_groups?.join(";")??""}D();async function U(){if(o.value.ldapUserFilterMode==="0"){const d=await P("getUserListFilter",s.configId);t.value[s.configId].ldapUserFilter=d.changes?.ldap_userlist_filter??"";const _=await P("getUserLoginFilter",s.configId);t.value[s.configId].ldapLoginFilter=_.changes?.ldap_login_filter??""}}async function z(){try{g.value=!0;const d=await P("countUsers",s.configId);c.value=d.changes.ldap_user_count}finally{g.value=!1}}async function f(d){d?o.value.ldapUserFilterMode="1":o.value.ldapUserFilterMode=await Z()?"0":"1"}return(d,_)=>(v(),V("fieldset",va,[w(n(e(a)("user_ldap","Listing and searching for users is constrained by these criteria:"))+" ",1),p("div",ha,[i(e(R),{modelValue:L.value,"onUpdate:modelValue":_[0]||(_[0]=N=>L.value=N),disabled:o.value.ldapUserFilterMode==="1",class:"ldap-wizard__users__user-filter-object-class__select",options:l.value,inputLabel:e(a)("user_ldap","Only these object classes:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"]),w(" "+n(e(a)("user_ldap","The most common object classes for users are organizationalPerson, person, user, and inetOrgPerson. If you are not sure which object class to select, please consult your directory admin.")),1)]),p("div",ba,[i(e(R),{modelValue:C.value,"onUpdate:modelValue":_[1]||(_[1]=N=>C.value=N),class:"ldap-wizard__users__user-filter-groups__select",disabled:o.value.ldapUserFilterMode==="1",options:y.value,inputLabel:e(a)("user_ldap","Only from these groups:"),multiple:!0},null,8,["modelValue","disabled","options","inputLabel"])]),p("div",wa,[i(e(k),{modelValue:o.value.ldapUserFilterMode==="1","onUpdate:modelValue":f},{default:h(()=>[w(n(e(a)("user_ldap","Edit LDAP Query")),1)]),_:1},8,["modelValue"]),o.value.ldapUserFilterMode==="1"?(v(),V("div",ya,[i(e(O),{modelValue:o.value.ldapUserFilter,"onUpdate:modelValue":_[2]||(_[2]=N=>o.value.ldapUserFilter=N),placeholder:e(a)("user_ldap","Edit LDAP Query"),helperText:e(a)("user_ldap","The filter specifies which LDAP users shall have access to the {instanceName} instance.",{instanceName:e(r)})},null,8,["modelValue","placeholder","helperText"])])):(v(),V("div",Aa,[p("label",null,n(e(a)("user_ldap","LDAP Filter:")),1),p("code",null,n(o.value.ldapUserFilter),1)]))]),p("div",Va,[i(e(x),{disabled:g.value,onClick:z},{default:h(()=>[w(n(e(a)("user_ldap","Verify settings and count users")),1)]),_:1},8,["disabled"]),g.value?(v(),T(e(Y),{key:0,size:16})):F("",!0),c.value!==void 0&&!g.value?(v(),V("span",Da,n(e(a)("user_ldap","User count: {usersCount}",{usersCount:c.value},{escape:!1})),1)):F("",!0)])]))}}),Ca=G(Ua,[["__scopeId","data-v-77a14f2a"]]),La={class:"ldap-wizard__controls"},Ia={class:"ldap-wizard__controls__state_message"},Pa=B({__name:"WizardControls",props:{configId:{}},setup(u){const s=u,m=E(),{updatingConfig:t}=Q(m),o=A(!1),c=A(null),g=I(()=>c.value?.success);X(t,()=>{c.value=null});async function r(){try{o.value=!0,c.value=await Ae(s.configId)}finally{o.value=!1}}return(l,y)=>(v(),V("div",La,[i(e(x),{variant:"primary",disabled:o.value,onClick:r},{default:h(()=>[w(n(e(a)("user_ldap","Test Configuration")),1)]),_:1},8,["disabled"]),i(e(x),{variant:"tertiary",href:"https://docs.nextcloud.com/server/stable/go.php?to=admin-ldap",target:"_blank",rel:"noreferrer noopener"},{icon:h(()=>[i(ae,{size:20})]),default:h(()=>[p("span",null,n(e(a)("user_ldap","Help")),1)]),_:1}),c.value!==null&&!o.value?(v(),V(W,{key:0},[p("span",{class:re(["ldap-wizard__controls__state_indicator",{"ldap-wizard__controls__state_indicator--valid":g.value}])},null,2),p("span",Ia,n(c.value.message),1)],64)):F("",!0),o.value?(v(),T(e(Y),{key:1,size:16})):F("",!0)]))}}),xa=G(Pa,[["__scopeId","data-v-4518d86f"]]),Ta={class:"ldap-wizard"},Fa={class:"ldap-wizard__config-selection"},ka={key:0,class:"ldap-wizard__tab-container"},za={class:"ldap-wizard__tab-selection-container"},Na={class:"ldap-wizard__tab-selection"},Ga={class:"ldap-wizard__clear-mapping"},Oa={class:"ldap-wizard__clear-mapping__buttons"},Ba=B({__name:"LDAPSettingsApp",setup(u){const s=ee("user_ldap","ldapModuleInstalled"),m={server:a("user_ldap","Server"),users:a("user_ldap","Users"),login:a("user_ldap","Login Attributes"),groups:a("user_ldap","Groups"),advanced:a("user_ldap","Advanced"),expert:a("user_ldap","Expert")},t=E(),{ldapConfigs:o,selectedConfigId:c,selectedConfig:g}=Q(t),r=A("server"),l=A(!1),y=I(()=>g.value!==void 0&&g.value.ldapHost!==""&&g.value.ldapPort!==""&&g.value.ldapBase!=="");async function L(C){try{l.value=!0,await Ve(C)}finally{l.value=!1}}return(C,D)=>(v(),V("form",Ta,[p("h2",null,n(e(a)("user_ldap","LDAP/AD integration")),1),e(s)?F("",!0):(v(),T(e(pe),{key:0,type:"warning",text:e(a)("user_ldap","The PHP LDAP module is not installed, the backend will not work. Please ask your system administrator to install it.")},null,8,["text"])),e(s)?(v(),V(W,{key:1},[p("div",Fa,[e(c)!==void 0?(v(),T(e(R),{key:0,modelValue:e(c),"onUpdate:modelValue":D[0]||(D[0]=U=>oe(c)?c.value=U:null),options:Object.keys(e(o)),inputLabel:e(a)("user_ldap","Select LDAP Config")},{option:h(({label:U})=>[w(n(`${U}: ${e(o)[U]?.ldapHost??""}`),1)]),"selected-option":h(({label:U})=>[w(n(`${U}: ${e(o)[U]?.ldapHost??""}`),1)]),_:1},8,["modelValue","options","inputLabel"])):F("",!0),i(e(x),{label:e(a)("user_ldap","Create New Config"),class:"ldap-wizard__config-selection__create-button",onClick:e(t).create},{icon:h(()=>[i(ne,{size:20})]),default:h(()=>[w(" "+n(e(a)("user_ldap","Create configuration")),1)]),_:1},8,["label","onClick"])]),e(c)!==void 0?(v(),V("div",ka,[p("div",za,[p("div",Na,[(v(),V(W,null,ie(m,(U,z)=>i(e(k),{key:z,modelValue:r.value,"onUpdate:modelValue":D[1]||(D[1]=f=>r.value=f),buttonVariant:!0,value:z,type:"radio",disabled:z!=="server"&&!y.value,buttonVariantGrouped:"horizontal"},{default:h(()=>[w(n(U),1)]),_:2},1032,["modelValue","value","disabled"])),64))])]),r.value==="server"?(v(),T(fa,{key:0,configId:e(c)},null,8,["configId"])):r.value==="users"?(v(),T(Ca,{key:1,configId:e(c)},null,8,["configId"])):r.value==="login"?(v(),T(ea,{key:2,configId:e(c)},null,8,["configId"])):r.value==="groups"?(v(),T(qe,{key:3,configId:e(c)},null,8,["configId"])):r.value==="expert"?(v(),T(Be,{key:4,configId:e(c)},null,8,["configId"])):r.value==="advanced"?(v(),T(Te,{key:5,configId:e(c)},null,8,["configId"])):F("",!0),i(xa,{class:"ldap-wizard__controls",configId:e(c)},null,8,["configId"])])):F("",!0),p("div",Ga,[p("strong",null,n(e(a)("user_ldap","Username-LDAP User Mapping")),1),w(" "+n(e(a)("user_ldap","Usernames are used to store and assign metadata. In order to precisely identify and recognize users, each LDAP user will have an internal username. This requires a mapping from username to LDAP user. The created username is mapped to the UUID of the LDAP user. Additionally the DN is cached as well to reduce LDAP interaction, but it is not used for identification. If the DN changes, the changes will be found. The internal username is used all over. Clearing the mappings will have leftovers everywhere. Clearing the mappings is not configuration sensitive, it affects all LDAP configurations! Never clear the mappings in a production environment, only in a testing or experimental stage."))+" ",1),p("div",Oa,[i(e(x),{variant:"error",disabled:l.value,onClick:D[2]||(D[2]=U=>L("user"))},{default:h(()=>[w(n(e(a)("user_ldap","Clear Username-LDAP User Mapping")),1)]),_:1},8,["disabled"]),i(e(x),{variant:"error",disabled:l.value,onClick:D[3]||(D[3]=U=>L("group"))},{default:h(()=>[w(n(e(a)("user_ldap","Clear Groupname-LDAP Group Mapping")),1)]),_:1},8,["disabled"])])])],64)):F("",!0)]))}}),Ma=G(Ba,[["__scopeId","data-v-cb2f6989"]]),ja=_e(),K=se(Ma);K.use(ja),K.mount("#content-ldap-settings"); //# sourceMappingURL=user_ldap-settings-admin.mjs.map diff --git a/dist/user_status-menu.mjs b/dist/user_status-menu.mjs index f163eabf85210..4fe83db1b089c 100644 --- a/dist/user_status-menu.mjs +++ b/dist/user_status-menu.mjs @@ -1,3 +1,3 @@ -const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/SetStatusModal-__uilgdV.chunk.mjs'),window.OC.filePath('', '', 'dist/index-C1xmmKTZ-DKmPRT9t.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-B9mkBKAR.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-BfjxNgsx-DQQhcX1Z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-CmCWOFTF.chunk.mjs'),window.OC.filePath('', '', 'dist/TrayArrowDown-D79n0IQ6.chunk.css'),window.OC.filePath('', '', 'dist/user_status-SetStatusModal-FTEE4Jmr.chunk.css')])))=>i.map(i=>d[i]); -import{g as ft,a as v,u as mt,d as ht,s as K,e as I}from"./index-DqIuD5e7.chunk.mjs";import{L as gt,I as _t,v as q,p as yt,a as vt,f as M,j as F,o as O,c as N,l as bt,w as E,e as C,n as j,E as G,g as wt,t as St,F as It,h as z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as Mt,_ as Ot,l as At}from"./index-BgmsSgl5.chunk.mjs";import{N as kt}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as Et}from"./TrayArrowDown-CmCWOFTF.chunk.mjs";import{N as Ct}from"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import{a as jt}from"./index-C1xmmKTZ-DKmPRT9t.chunk.mjs";import{t as h}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as g}from"./index-CPwHjAPR.chunk.mjs";import{b as _}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{f as $,j as Tt}from"./index-Bos-XXa5.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";const X=ft().detectLogLevel().setApp("user_status").build();function Pt(){return Y().__VUE_DEVTOOLS_GLOBAL_HOOK__}function Y(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const xt=typeof Proxy=="function",Lt="devtools-plugin:setup",Dt="plugin:settings:set";let S,x;function Ut(){var t;return S!==void 0||(typeof window<"u"&&window.performance?(S=!0,x=window.performance):typeof globalThis<"u"&&!((t=globalThis.perf_hooks)===null||t===void 0)&&t.performance?(S=!0,x=globalThis.perf_hooks.performance):S=!1),S}function Ft(){return Ut()?x.now():Date.now()}class Nt{constructor(e,s){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=s;const a={};if(e.settings)for(const o in e.settings){const i=e.settings[o];a[o]=i.defaultValue}const n=`__vue-devtools-plugin-settings__${e.id}`;let r=Object.assign({},a);try{const o=localStorage.getItem(n),i=JSON.parse(o);Object.assign(r,i)}catch{}this.fallbacks={getSettings(){return r},setSettings(o){try{localStorage.setItem(n,JSON.stringify(o))}catch{}r=o},now(){return Ft()}},s&&s.on(Dt,(o,i)=>{o===this.plugin.id&&this.fallbacks.setSettings(i)}),this.proxiedOn=new Proxy({},{get:(o,i)=>this.target?this.target.on[i]:(...u)=>{this.onQueue.push({method:i,args:u})}}),this.proxiedTarget=new Proxy({},{get:(o,i)=>this.target?this.target[i]:i==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(i)?(...u)=>(this.targetQueue.push({method:i,args:u,resolve:()=>{}}),this.fallbacks[i](...u)):(...u)=>new Promise(c=>{this.targetQueue.push({method:i,args:u,resolve:c})})})}async setRealTarget(e){this.target=e;for(const s of this.onQueue)this.target.on[s.method](...s.args);for(const s of this.targetQueue)s.resolve(await this.target[s.method](...s.args))}}function Gt(t,e){const s=t,a=Y(),n=Pt(),r=xt&&s.enableEarlyProxy;if(n&&(a.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!r))n.emit(Lt,t,e);else{const o=r?new Nt(s,n):null;(a.__VUE_DEVTOOLS_PLUGINS__=a.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:s,setupFn:e,proxy:o}),o&&e(o.proxiedTarget)}}var $t="store";function w(t,e){Object.keys(t).forEach(function(s){return e(t[s],s)})}function Z(t){return t!==null&&typeof t=="object"}function Bt(t){return t&&typeof t.then=="function"}function Vt(t,e){return function(){return t(e)}}function B(t,e,s){return e.indexOf(t)<0&&(s&&s.prepend?e.unshift(t):e.push(t)),function(){var a=e.indexOf(t);a>-1&&e.splice(a,1)}}function V(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var s=t.state;k(t,s,[],t._modules.root,!0),D(t,s,e)}function D(t,e,s){var a=t._state,n=t._scope;t.getters={},t._makeLocalGettersCache=Object.create(null);var r=t._wrappedGetters,o={},i={},u=gt(!0);u.run(function(){w(r,function(c,l){o[l]=Vt(c,t),i[l]=yt(function(){return o[l]()}),Object.defineProperty(t.getters,l,{get:function(){return i[l].value},enumerable:!0})})}),t._state=_t({data:e}),t._scope=u,t.strict&&Jt(t),a&&s&&t._withCommit(function(){a.data=null}),n&&n.stop()}function k(t,e,s,a,n){var r=!s.length,o=t._modules.getNamespace(s);if(a.namespaced&&(t._modulesNamespaceMap[o],t._modulesNamespaceMap[o]=a),!r&&!n){var i=U(e,s.slice(0,-1)),u=s[s.length-1];t._withCommit(function(){i[u]=a.state})}var c=a.context=Ht(t,o,s);a.forEachMutation(function(l,d){var p=o+d;Qt(t,p,l,c)}),a.forEachAction(function(l,d){var p=l.root?d:o+d,pt=l.handler||l;Rt(t,p,pt,c)}),a.forEachGetter(function(l,d){var p=o+d;Wt(t,p,l,c)}),a.forEachChild(function(l,d){k(t,e,s.concat(d),l,n)})}function Ht(t,e,s){var a=e==="",n={dispatch:a?t.dispatch:function(r,o,i){var u=A(r,o,i),c=u.payload,l=u.options,d=u.type;return(!l||!l.root)&&(d=e+d),t.dispatch(d,c)},commit:a?t.commit:function(r,o,i){var u=A(r,o,i),c=u.payload,l=u.options,d=u.type;(!l||!l.root)&&(d=e+d),t.commit(d,c,l)}};return Object.defineProperties(n,{getters:{get:a?function(){return t.getters}:function(){return tt(t,e)}},state:{get:function(){return U(t.state,s)}}}),n}function tt(t,e){if(!t._makeLocalGettersCache[e]){var s={},a=e.length;Object.keys(t.getters).forEach(function(n){if(n.slice(0,a)===e){var r=n.slice(a);Object.defineProperty(s,r,{get:function(){return t.getters[n]},enumerable:!0})}}),t._makeLocalGettersCache[e]=s}return t._makeLocalGettersCache[e]}function Qt(t,e,s,a){var n=t._mutations[e]||(t._mutations[e]=[]);n.push(function(r){s.call(t,a.state,r)})}function Rt(t,e,s,a){var n=t._actions[e]||(t._actions[e]=[]);n.push(function(r){var o=s.call(t,{dispatch:a.dispatch,commit:a.commit,getters:a.getters,state:a.state,rootGetters:t.getters,rootState:t.state},r);return Bt(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch(function(i){throw t._devtoolHook.emit("vuex:error",i),i}):o})}function Wt(t,e,s,a){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(n){return s(a.state,a.getters,n.state,n.getters)})}function Jt(t){q(function(){return t._state.data},function(){},{deep:!0,flush:"sync"})}function U(t,e){return e.reduce(function(s,a){return s[a]},t)}function A(t,e,s){return Z(t)&&t.type&&(s=e,e=t,t=t.type),{type:t,payload:e,options:s}}var Kt="vuex bindings",H="vuex:mutations",T="vuex:actions",b="vuex",qt=0;function zt(t,e){Gt({id:"org.vuejs.vuex",app:t,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[Kt]},function(s){s.addTimelineLayer({id:H,label:"Vuex Mutations",color:Q}),s.addTimelineLayer({id:T,label:"Vuex Actions",color:Q}),s.addInspector({id:b,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),s.on.getInspectorTree(function(a){if(a.app===t&&a.inspectorId===b)if(a.filter){var n=[];nt(n,e._modules.root,a.filter,""),a.rootNodes=n}else a.rootNodes=[at(e._modules.root,"")]}),s.on.getInspectorState(function(a){if(a.app===t&&a.inspectorId===b){var n=a.nodeId;tt(e,n),a.state=Zt(ee(e._modules,n),n==="root"?e.getters:e._makeLocalGettersCache,n)}}),s.on.editInspectorState(function(a){if(a.app===t&&a.inspectorId===b){var n=a.nodeId,r=a.path;n!=="root"&&(r=n.split("/").filter(Boolean).concat(r)),e._withCommit(function(){a.set(e._state.data,r,a.state.value)})}}),e.subscribe(function(a,n){var r={};a.payload&&(r.payload=a.payload),r.state=n,s.notifyComponentUpdate(),s.sendInspectorTree(b),s.sendInspectorState(b),s.addTimelineEvent({layerId:H,event:{time:Date.now(),title:a.type,data:r}})}),e.subscribeAction({before:function(a,n){var r={};a.payload&&(r.payload=a.payload),a._id=qt++,a._time=Date.now(),r.state=n,s.addTimelineEvent({layerId:T,event:{time:a._time,title:a.type,groupId:a._id,subtitle:"start",data:r}})},after:function(a,n){var r={},o=Date.now()-a._time;r.duration={_custom:{type:"duration",display:o+"ms",tooltip:"Action duration",value:o}},a.payload&&(r.payload=a.payload),r.state=n,s.addTimelineEvent({layerId:T,event:{time:Date.now(),title:a.type,groupId:a._id,subtitle:"end",data:r}})}})})}var Q=8702998,Xt=6710886,Yt=16777215,et={label:"namespaced",textColor:Yt,backgroundColor:Xt};function st(t){return t&&t!=="root"?t.split("/").slice(-2,-1)[0]:"Root"}function at(t,e){return{id:e||"root",label:st(e),tags:t.namespaced?[et]:[],children:Object.keys(t._children).map(function(s){return at(t._children[s],e+s+"/")})}}function nt(t,e,s,a){a.includes(s)&&t.push({id:a||"root",label:a.endsWith("/")?a.slice(0,a.length-1):a||"Root",tags:e.namespaced?[et]:[]}),Object.keys(e._children).forEach(function(n){nt(t,e._children[n],s,a+n+"/")})}function Zt(t,e,s){e=s==="root"?e:e[s];var a=Object.keys(e),n={state:Object.keys(t.state).map(function(o){return{key:o,editable:!0,value:t.state[o]}})};if(a.length){var r=te(e);n.getters=Object.keys(r).map(function(o){return{key:o.endsWith("/")?st(o):o,editable:!1,value:L(function(){return r[o]})}})}return n}function te(t){var e={};return Object.keys(t).forEach(function(s){var a=s.split("/");if(a.length>1){var n=e,r=a.pop();a.forEach(function(o){n[o]||(n[o]={_custom:{value:{},display:o,tooltip:"Module",abstract:!0}}),n=n[o]._custom.value}),n[r]=L(function(){return t[s]})}else e[s]=L(function(){return t[s]})}),e}function ee(t,e){var s=e.split("/").filter(function(a){return a});return s.reduce(function(a,n,r){var o=a[n];if(!o)throw new Error('Missing module "'+n+'" for path "'+e+'".');return r===s.length-1?o:o._children},e==="root"?t:t.root._children)}function L(t){try{return t()}catch(e){return e}}var m=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var s=t.state;this.state=(typeof s=="function"?s():s)||{}},R={namespaced:{configurable:!0}};R.namespaced.get=function(){return!!this._rawModule.namespaced},m.prototype.addChild=function(t,e){this._children[t]=e},m.prototype.removeChild=function(t){delete this._children[t]},m.prototype.getChild=function(t){return this._children[t]},m.prototype.hasChild=function(t){return t in this._children},m.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},m.prototype.forEachChild=function(t){w(this._children,t)},m.prototype.forEachGetter=function(t){this._rawModule.getters&&w(this._rawModule.getters,t)},m.prototype.forEachAction=function(t){this._rawModule.actions&&w(this._rawModule.actions,t)},m.prototype.forEachMutation=function(t){this._rawModule.mutations&&w(this._rawModule.mutations,t)},Object.defineProperties(m.prototype,R);var y=function(t){this.register([],t,!1)};y.prototype.get=function(t){return t.reduce(function(e,s){return e.getChild(s)},this.root)},y.prototype.getNamespace=function(t){var e=this.root;return t.reduce(function(s,a){return e=e.getChild(a),s+(e.namespaced?a+"/":"")},"")},y.prototype.update=function(t){ot([],this.root,t)},y.prototype.register=function(t,e,s){var a=this;s===void 0&&(s=!0);var n=new m(e,s);if(t.length===0)this.root=n;else{var r=this.get(t.slice(0,-1));r.addChild(t[t.length-1],n)}e.modules&&w(e.modules,function(o,i){a.register(t.concat(i),o,s)})},y.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),s=t[t.length-1],a=e.getChild(s);a&&a.runtime&&e.removeChild(s)},y.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),s=t[t.length-1];return e?e.hasChild(s):!1};function ot(t,e,s){if(e.update(s),s.modules)for(var a in s.modules){if(!e.getChild(a))return;ot(t.concat(a),e.getChild(a),s.modules[a])}}function se(t){return new f(t)}var f=function(t){var e=this;t===void 0&&(t={});var s=t.plugins;s===void 0&&(s=[]);var a=t.strict;a===void 0&&(a=!1);var n=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new y(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=n;var r=this,o=this,i=o.dispatch,u=o.commit;this.dispatch=function(l,d){return i.call(r,l,d)},this.commit=function(l,d,p){return u.call(r,l,d,p)},this.strict=a;var c=this._modules.root.state;k(this,c,[],this._modules.root),D(this,c),s.forEach(function(l){return l(e)})},P={state:{configurable:!0}};f.prototype.install=function(t,e){t.provide(e||$t,this),t.config.globalProperties.$store=this;var s=this._devtools!==void 0?this._devtools:!1;s&&zt(t,this)},P.state.get=function(){return this._state.data},P.state.set=function(t){},f.prototype.commit=function(t,e,s){var a=this,n=A(t,e,s),r=n.type,o=n.payload,i={type:r,payload:o},u=this._mutations[r];u&&(this._withCommit(function(){u.forEach(function(c){c(o)})}),this._subscribers.slice().forEach(function(c){return c(i,a.state)}))},f.prototype.dispatch=function(t,e){var s=this,a=A(t,e),n=a.type,r=a.payload,o={type:n,payload:r},i=this._actions[n];if(i){try{this._actionSubscribers.slice().filter(function(c){return c.before}).forEach(function(c){return c.before(o,s.state)})}catch{}var u=i.length>1?Promise.all(i.map(function(c){return c(r)})):i[0](r);return new Promise(function(c,l){u.then(function(d){try{s._actionSubscribers.filter(function(p){return p.after}).forEach(function(p){return p.after(o,s.state)})}catch{}c(d)},function(d){try{s._actionSubscribers.filter(function(p){return p.error}).forEach(function(p){return p.error(o,s.state,d)})}catch{}l(d)})})}},f.prototype.subscribe=function(t,e){return B(t,this._subscribers,e)},f.prototype.subscribeAction=function(t,e){var s=typeof t=="function"?{before:t}:t;return B(s,this._actionSubscribers,e)},f.prototype.watch=function(t,e,s){var a=this;return q(function(){return t(a.state,a.getters)},e,Object.assign({},s))},f.prototype.replaceState=function(t){var e=this;this._withCommit(function(){e._state.data=t})},f.prototype.registerModule=function(t,e,s){s===void 0&&(s={}),typeof t=="string"&&(t=[t]),this._modules.register(t,e),k(this,this.state,t,this._modules.get(t),s.preserveState),D(this,this.state)},f.prototype.unregisterModule=function(t){var e=this;typeof t=="string"&&(t=[t]),this._modules.unregister(t),this._withCommit(function(){var s=U(e.state,t.slice(0,-1));delete s[t[t.length-1]]}),V(this)},f.prototype.hasModule=function(t){return typeof t=="string"&&(t=[t]),this._modules.isRegistered(t)},f.prototype.hotUpdate=function(t){this._modules.update(t),V(this,!0)},f.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(f.prototype,P);var ae=it(function(t,e){var s={};return rt(e).forEach(function(a){var n=a.key,r=a.val;s[n]=function(){var o=this.$store.state,i=this.$store.getters;if(t){var u=ut(this.$store,"mapState",t);if(!u)return;o=u.context.state,i=u.context.getters}return typeof r=="function"?r.call(this,o,i):o[r]},s[n].vuex=!0}),s}),ts=it(function(t,e){var s={};return rt(e).forEach(function(a){var n=a.key,r=a.val;r=t+r,s[n]=function(){if(!(t&&!ut(this.$store,"mapGetters",t)))return this.$store.getters[r]},s[n].vuex=!0}),s});function rt(t){return ne(t)?Array.isArray(t)?t.map(function(e){return{key:e,val:e}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}}):[]}function ne(t){return Array.isArray(t)||Z(t)}function it(t){return function(e,s){return typeof e!="string"?(s=e,e=""):e.charAt(e.length-1)!=="/"&&(e+="/"),t(e,s)}}function ut(t,e,s){var a=t._modulesNamespaceMap[s];return a}const oe={computed:{...ae({statusType:t=>t.userStatus.status,statusIsUserDefined:t=>t.userStatus.statusIsUserDefined,customIcon:t=>t.userStatus.icon,customMessage:t=>t.userStatus.message}),visibleMessage(){if(this.customIcon&&this.customMessage)return`${this.customIcon} ${this.customMessage}`;if(this.customMessage)return this.customMessage;if(this.statusIsUserDefined)switch(this.statusType){case"online":return h("user_status","Online");case"away":return h("user_status","Away");case"busy":return h("user_status","Busy");case"dnd":return h("user_status","Do not disturb");case"invisible":return h("user_status","Invisible");case"offline":return h("user_status","Offline")}return h("user_status","Set status")}},methods:{async changeStatus(t){try{await this.$store.dispatch("setStatus",{statusType:t})}catch(e){jt(h("user_status","There was an error saving the new status")),X.debug(e)}}}};async function re(t){const e=_("apps/user_status/api/v1/heartbeat?format=json");return(await g.put(e,{status:t?"away":"online"})).data.ocs.data}const ie="_userStatusMenuItem_1rva6_1",ue="_userStatusIcon_1rva6_6",ce={userStatusMenuItem:ie,userStatusIcon:ue},le={name:"UserStatus",components:{NcButton:kt,NcListItem:Et,NcUserStatusIcon:Ct,SetStatusModal:vt(()=>Ot(()=>import("./SetStatusModal-__uilgdV.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]),import.meta.url))},mixins:[oe],props:{inline:{type:Boolean,default:!1}},data(){return{heartbeatInterval:null,isAway:!1,isModalOpen:!1,mouseMoveListener:null,setAwayTimeout:null}},mounted(){this.$store.dispatch("loadStatusFromInitialState"),OC.config.session_keepalive&&(this.heartbeatInterval=setInterval(this._backgroundHeartbeat.bind(this),1e3*60*5),this.setAwayTimeout=()=>{this.isAway=!0},this.mouseMoveListener=ht(()=>{const t=this.isAway;this.isAway=!1,clearTimeout(this.setAwayTimeout),setTimeout(this.setAwayTimeout,1e3*60*2),t&&this._backgroundHeartbeat()},1e3*2,{immediate:!0}),window.addEventListener("mousemove",this.mouseMoveListener,{capture:!0,passive:!0}),this._backgroundHeartbeat()),K("user_status:status.updated",this.handleUserStatusUpdated)},beforeUnmount(){window.removeEventListener("mouseMove",this.mouseMoveListener),clearInterval(this.heartbeatInterval),mt("user_status:status.updated",this.handleUserStatusUpdated)},methods:{openModal(){this.isModalOpen=!0},closeModal(){this.isModalOpen=!1},async _backgroundHeartbeat(){try{const t=await re(this.isAway);t?.userId?this.$store.dispatch("setStatusFromHeartbeat",t):await this.$store.dispatch("reFetchStatusFromServer")}catch(t){X.debug("Failed sending heartbeat, got: "+t.response?.status)}},handleUserStatusUpdated(t){v()?.uid===t.userId&&this.$store.dispatch("setStatusFromObject",{status:t.status,icon:t.icon,message:t.message})}}},de={key:1};function pe(t,e,s,a,n,r){const o=M("NcUserStatusIcon"),i=M("NcListItem"),u=M("NcButton"),c=M("SetStatusModal");return O(),F(It,null,[s.inline?(O(),F("div",de,[C(u,{onClick:G(r.openModal,["stop"])},{icon:E(()=>[C(o,{class:j(t.$style.userStatusIcon),status:t.statusType,"aria-hidden":"true"},null,8,["class","status"])]),default:E(()=>[wt(" "+St(t.visibleMessage),1)]),_:1},8,["onClick"])])):(O(),N(i,{key:0,class:j(t.$style.userStatusMenuItem),compact:"",name:t.visibleMessage,onClick:G(r.openModal,["stop"])},{icon:E(()=>[C(o,{class:j(t.$style.userStatusIcon),status:t.statusType,"aria-hidden":"true"},null,8,["class","status"])]),_:1},8,["class","name","onClick"])),n.isModalOpen?(O(),N(c,{key:2,inline:s.inline,onClose:r.closeModal},null,8,["inline","onClose"])):bt("",!0)],64)}const fe={$style:ce},ct=Mt(le,[["render",pe],["__cssModules",fe]]);async function me(){const t=_("apps/user_status/api/v1/predefined_statuses?format=json");return(await g.get(t)).data.ocs.data}const he=()=>({predefinedStatuses:[]}),ge={addPredefinedStatus(t,e){t.predefinedStatuses=[...t.predefinedStatuses,e]}},_e={statusesHaveLoaded(t){return t.predefinedStatuses.length>0}},ye={async loadAllPredefinedStatuses({state:t,commit:e}){if(t.predefinedStatuses.length>0)return;const s=await me();for(const a of s)e("addPredefinedStatus",a)}},ve={state:he,mutations:ge,getters:_e,actions:ye};async function be(){const t=_("apps/user_status/api/v1/user_status");return(await g.get(t)).data.ocs.data}async function we(t){const e=_("apps/user_status/api/v1/statuses/{userId}",{userId:"_"+t});return(await g.get(e)).data.ocs.data}async function Se(t){const e=_("apps/user_status/api/v1/user_status/status");await g.put(e,{statusType:t})}async function Ie(t,e=null){const s=_("apps/user_status/api/v1/user_status/message/predefined?format=json");await g.put(s,{messageId:t,clearAt:e})}async function Me(t,e=null,s=null){const a=_("apps/user_status/api/v1/user_status/message/custom?format=json");await g.put(a,{message:t,statusIcon:e,clearAt:s})}async function Oe(){const t=_("apps/user_status/api/v1/user_status/message?format=json");await g.delete(t)}async function Ae(t){const e=_("apps/user_status/api/v1/user_status/revert/{messageId}",{messageId:t});return(await g.delete(e)).data.ocs.data}const ke=()=>({status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null}),Ee={loadBackupStatusFromServer(t,{status:e,statusIsUserDefined:s,message:a,icon:n,clearAt:r,messageIsPredefined:o,messageId:i}){t.status=e,t.message=a,t.icon=n,typeof s<"u"&&(t.statusIsUserDefined=s),typeof r<"u"&&(t.clearAt=r),typeof o<"u"&&(t.messageIsPredefined=o),typeof i<"u"&&(t.messageId=i)}},Ce={},je={async fetchBackupFromServer({commit:t}){try{const e=await we(v()?.uid);t("loadBackupStatusFromServer",e)}catch{}},async revertBackupFromServer({commit:t},{messageId:e}){const s=await Ae(e);s&&(t("loadBackupStatusFromServer",{}),t("loadStatusFromServer",s),I("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:v()?.uid}))}},Te={state:ke,mutations:Ee,getters:Ce,actions:je};function Pe(){return new Date}function W(t){if(t===null)return null;const e=Pe();if(t.type==="period")return e.setSeconds(e.getSeconds()+t.time),Math.floor(e.getTime()/1e3);if(t.type==="end-of")switch(t.time){case"day":return Math.floor(lt(e).getTime()/1e3);case"week":return Math.floor(xe(e).getTime()/1e3)}return t.type==="_time"?t.time:null}function es(t){if(t===null)return h("user_status","Don't clear");if(t.type==="end-of")switch(t.time){case"day":return h("user_status","Today");case"week":return h("user_status","This week");default:return null}return t.type==="period"?$(Date.now()+t.time*1e3):t.type==="_time"?$(t.time*1e3):null}function lt(t){const e=new Date(t);return e.setHours(23,59,59,999),e}function xe(t){const e=lt(t);return e.setDate(t.getDate()+(Tt()-1-e.getDay()+7)%7),e}const Le=()=>({status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null}),De={setStatus(t,{statusType:e}){t.status=e,t.statusIsUserDefined=!0},setPredefinedMessage(t,{messageId:e,clearAt:s,message:a,icon:n}){t.messageId=e,t.messageIsPredefined=!0,t.message=a,t.icon=n,t.clearAt=s},setCustomMessage(t,{message:e,icon:s,clearAt:a}){t.messageId=null,t.messageIsPredefined=!1,t.message=e,t.icon=s,t.clearAt=a},clearMessage(t){t.messageId=null,t.messageIsPredefined=!1,t.message=null,t.icon=null,t.clearAt=null},loadStatusFromServer(t,{status:e,statusIsUserDefined:s,message:a,icon:n,clearAt:r,messageIsPredefined:o,messageId:i}){t.status=e,t.message=a,t.icon=n,typeof s<"u"&&(t.statusIsUserDefined=s),typeof r<"u"&&(t.clearAt=r),typeof o<"u"&&(t.messageIsPredefined=o),typeof i<"u"&&(t.messageId=i)}},Ue={},Fe={async setStatus({commit:t,state:e},{statusType:s}){await Se(s),t("setStatus",{statusType:s}),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async setStatusFromObject({commit:t},e){t("loadStatusFromServer",e)},async setPredefinedMessage({commit:t,rootState:e,state:s},{messageId:a,clearAt:n}){const r=W(n);await Ie(a,r);const o=e.predefinedStatuses.predefinedStatuses.find(c=>c.id===a),{message:i,icon:u}=o;t("setPredefinedMessage",{messageId:a,clearAt:r,message:i,icon:u}),I("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:v()?.uid})},async setCustomMessage({commit:t,state:e},{message:s,icon:a,clearAt:n}){const r=W(n);await Me(s,a,r),t("setCustomMessage",{message:s,icon:a,clearAt:r}),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async clearMessage({commit:t,state:e}){await Oe(),t("clearMessage"),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async reFetchStatusFromServer({commit:t}){const e=await be();t("loadStatusFromServer",e)},async setStatusFromHeartbeat({commit:t},e){t("loadStatusFromServer",e)},loadStatusFromInitialState({commit:t}){const e=At("user_status","status");t("loadStatusFromServer",e)}},Ne={state:Le,mutations:De,getters:Ue,actions:Fe},dt=se({modules:{predefinedStatuses:ve,userStatus:Ne,userBackupStatus:Te},strict:!0}),Ge=document.getElementById("user_status-menu-entry");function J(){const t=document.getElementById("user_status-menu-entry"),e=document.createElement("div");e.style.display="contents",t.replaceWith(e),z(ct).use(dt).mount(e)}Ge?J():K("core:user-menu:mounted",J),document.addEventListener("DOMContentLoaded",function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("status",t=>{z(ct,{inline:!0}).use(dt).mount(t)})});export{oe as O,ae as a,es as c,X as l,ts as m}; +const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=[window.OC.filePath('', '', 'dist/SetStatusModal-arJhi5cf.chunk.mjs'),window.OC.filePath('', '', 'dist/index-C1xmmKTZ-BfviRmbX.chunk.mjs'),window.OC.filePath('', '', 'dist/index-BgmsSgl5.chunk.mjs'),window.OC.filePath('', '', 'dist/index-Bos-XXa5.chunk.mjs'),window.OC.filePath('', '', 'dist/runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs'),window.OC.filePath('', '', 'dist/translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs'),window.OC.filePath('', '', 'dist/index-DqIuD5e7.chunk.mjs'),window.OC.filePath('', '', 'dist/createElementId-DhjFt1I9-C_oBIsvc.chunk.css'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-BiFhTTAc.chunk.mjs'),window.OC.filePath('', '', 'dist/logger-D3RVzcfQ-D7L4ZBkR.chunk.css'),window.OC.filePath('', '', 'dist/mdi-e8YUrhPH.chunk.mjs'),window.OC.filePath('', '', 'dist/mdi-BYHcrfvW.chunk.css'),window.OC.filePath('', '', 'dist/index-C7zIC0mE.chunk.css'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs'),window.OC.filePath('', '', 'dist/NcNoteCard-CWiO3Dse-Jq77EThs.chunk.css'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-Nzy1TKZA.chunk.mjs'),window.OC.filePath('', '', 'dist/NcSelect-B1uITk_3-B9mkBKAR.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-DGgqTnHp-DyFATY7e.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-BP1gjfI7.chunk.mjs'),window.OC.filePath('', '', 'dist/colors-BfjxNgsx-DQQhcX1Z.chunk.mjs'),window.OC.filePath('', '', 'dist/NcColorPicker-D07Se8Xb-Bwe91UZ7.chunk.css'),window.OC.filePath('', '', 'dist/NcDateTime.vue_vue_type_script_setup_true_lang-B4upiZjL-C2ieIUJz.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-COyEKQVc.chunk.mjs'),window.OC.filePath('', '', 'dist/TrashCanOutline-Bsffit-T.chunk.css'),window.OC.filePath('', '', 'dist/NcEmojiPicker-DGgqTnHp-ChsL0oK6.chunk.css'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs'),window.OC.filePath('', '', 'dist/index-CPwHjAPR.chunk.mjs'),window.OC.filePath('', '', 'dist/index-sH3U_332.chunk.mjs'),window.OC.filePath('', '', 'dist/NcUserStatusIcon-JWiuiAXe-Bq_6hmXG.chunk.css'),window.OC.filePath('', '', 'dist/TrayArrowDown-CmCWOFTF.chunk.mjs'),window.OC.filePath('', '', 'dist/TrayArrowDown-D79n0IQ6.chunk.css'),window.OC.filePath('', '', 'dist/user_status-SetStatusModal-FTEE4Jmr.chunk.css')])))=>i.map(i=>d[i]); +import{g as ft,a as v,u as mt,d as ht,s as K,e as I}from"./index-DqIuD5e7.chunk.mjs";import{L as gt,I as _t,v as q,p as yt,a as vt,f as M,j as F,o as O,c as N,l as bt,w as E,e as C,n as j,E as G,g as wt,t as St,F as It,h as z}from"./runtime-dom.esm-bundler-cd4tMQOC.chunk.mjs";import{a as Mt,_ as Ot,l as At}from"./index-BgmsSgl5.chunk.mjs";import{N as kt}from"./logger-D3RVzcfQ-BiFhTTAc.chunk.mjs";import{N as Et}from"./TrayArrowDown-CmCWOFTF.chunk.mjs";import{N as Ct}from"./NcUserStatusIcon-JWiuiAXe-B3F82kHN.chunk.mjs";import{a as jt}from"./index-C1xmmKTZ-BfviRmbX.chunk.mjs";import{t as h}from"./translation-DoG5ZELJ-DFt3Gk_P.chunk.mjs";import{c as g}from"./index-CPwHjAPR.chunk.mjs";import{b as _}from"./createElementId-DhjFt1I9-yLNeGKRZ.chunk.mjs";import{f as $,j as Tt}from"./index-Bos-XXa5.chunk.mjs";import"./NcNoteCard-CWiO3Dse-UE7osDtD.chunk.mjs";import"./index-sH3U_332.chunk.mjs";import"./mdi-e8YUrhPH.chunk.mjs";const X=ft().detectLogLevel().setApp("user_status").build();function Pt(){return Y().__VUE_DEVTOOLS_GLOBAL_HOOK__}function Y(){return typeof navigator<"u"&&typeof window<"u"?window:typeof globalThis<"u"?globalThis:{}}const xt=typeof Proxy=="function",Lt="devtools-plugin:setup",Dt="plugin:settings:set";let S,x;function Ut(){var t;return S!==void 0||(typeof window<"u"&&window.performance?(S=!0,x=window.performance):typeof globalThis<"u"&&!((t=globalThis.perf_hooks)===null||t===void 0)&&t.performance?(S=!0,x=globalThis.perf_hooks.performance):S=!1),S}function Ft(){return Ut()?x.now():Date.now()}class Nt{constructor(e,s){this.target=null,this.targetQueue=[],this.onQueue=[],this.plugin=e,this.hook=s;const a={};if(e.settings)for(const o in e.settings){const i=e.settings[o];a[o]=i.defaultValue}const n=`__vue-devtools-plugin-settings__${e.id}`;let r=Object.assign({},a);try{const o=localStorage.getItem(n),i=JSON.parse(o);Object.assign(r,i)}catch{}this.fallbacks={getSettings(){return r},setSettings(o){try{localStorage.setItem(n,JSON.stringify(o))}catch{}r=o},now(){return Ft()}},s&&s.on(Dt,(o,i)=>{o===this.plugin.id&&this.fallbacks.setSettings(i)}),this.proxiedOn=new Proxy({},{get:(o,i)=>this.target?this.target.on[i]:(...u)=>{this.onQueue.push({method:i,args:u})}}),this.proxiedTarget=new Proxy({},{get:(o,i)=>this.target?this.target[i]:i==="on"?this.proxiedOn:Object.keys(this.fallbacks).includes(i)?(...u)=>(this.targetQueue.push({method:i,args:u,resolve:()=>{}}),this.fallbacks[i](...u)):(...u)=>new Promise(c=>{this.targetQueue.push({method:i,args:u,resolve:c})})})}async setRealTarget(e){this.target=e;for(const s of this.onQueue)this.target.on[s.method](...s.args);for(const s of this.targetQueue)s.resolve(await this.target[s.method](...s.args))}}function Gt(t,e){const s=t,a=Y(),n=Pt(),r=xt&&s.enableEarlyProxy;if(n&&(a.__VUE_DEVTOOLS_PLUGIN_API_AVAILABLE__||!r))n.emit(Lt,t,e);else{const o=r?new Nt(s,n):null;(a.__VUE_DEVTOOLS_PLUGINS__=a.__VUE_DEVTOOLS_PLUGINS__||[]).push({pluginDescriptor:s,setupFn:e,proxy:o}),o&&e(o.proxiedTarget)}}var $t="store";function w(t,e){Object.keys(t).forEach(function(s){return e(t[s],s)})}function Z(t){return t!==null&&typeof t=="object"}function Bt(t){return t&&typeof t.then=="function"}function Vt(t,e){return function(){return t(e)}}function B(t,e,s){return e.indexOf(t)<0&&(s&&s.prepend?e.unshift(t):e.push(t)),function(){var a=e.indexOf(t);a>-1&&e.splice(a,1)}}function V(t,e){t._actions=Object.create(null),t._mutations=Object.create(null),t._wrappedGetters=Object.create(null),t._modulesNamespaceMap=Object.create(null);var s=t.state;k(t,s,[],t._modules.root,!0),D(t,s,e)}function D(t,e,s){var a=t._state,n=t._scope;t.getters={},t._makeLocalGettersCache=Object.create(null);var r=t._wrappedGetters,o={},i={},u=gt(!0);u.run(function(){w(r,function(c,l){o[l]=Vt(c,t),i[l]=yt(function(){return o[l]()}),Object.defineProperty(t.getters,l,{get:function(){return i[l].value},enumerable:!0})})}),t._state=_t({data:e}),t._scope=u,t.strict&&Jt(t),a&&s&&t._withCommit(function(){a.data=null}),n&&n.stop()}function k(t,e,s,a,n){var r=!s.length,o=t._modules.getNamespace(s);if(a.namespaced&&(t._modulesNamespaceMap[o],t._modulesNamespaceMap[o]=a),!r&&!n){var i=U(e,s.slice(0,-1)),u=s[s.length-1];t._withCommit(function(){i[u]=a.state})}var c=a.context=Ht(t,o,s);a.forEachMutation(function(l,d){var p=o+d;Qt(t,p,l,c)}),a.forEachAction(function(l,d){var p=l.root?d:o+d,pt=l.handler||l;Rt(t,p,pt,c)}),a.forEachGetter(function(l,d){var p=o+d;Wt(t,p,l,c)}),a.forEachChild(function(l,d){k(t,e,s.concat(d),l,n)})}function Ht(t,e,s){var a=e==="",n={dispatch:a?t.dispatch:function(r,o,i){var u=A(r,o,i),c=u.payload,l=u.options,d=u.type;return(!l||!l.root)&&(d=e+d),t.dispatch(d,c)},commit:a?t.commit:function(r,o,i){var u=A(r,o,i),c=u.payload,l=u.options,d=u.type;(!l||!l.root)&&(d=e+d),t.commit(d,c,l)}};return Object.defineProperties(n,{getters:{get:a?function(){return t.getters}:function(){return tt(t,e)}},state:{get:function(){return U(t.state,s)}}}),n}function tt(t,e){if(!t._makeLocalGettersCache[e]){var s={},a=e.length;Object.keys(t.getters).forEach(function(n){if(n.slice(0,a)===e){var r=n.slice(a);Object.defineProperty(s,r,{get:function(){return t.getters[n]},enumerable:!0})}}),t._makeLocalGettersCache[e]=s}return t._makeLocalGettersCache[e]}function Qt(t,e,s,a){var n=t._mutations[e]||(t._mutations[e]=[]);n.push(function(r){s.call(t,a.state,r)})}function Rt(t,e,s,a){var n=t._actions[e]||(t._actions[e]=[]);n.push(function(r){var o=s.call(t,{dispatch:a.dispatch,commit:a.commit,getters:a.getters,state:a.state,rootGetters:t.getters,rootState:t.state},r);return Bt(o)||(o=Promise.resolve(o)),t._devtoolHook?o.catch(function(i){throw t._devtoolHook.emit("vuex:error",i),i}):o})}function Wt(t,e,s,a){t._wrappedGetters[e]||(t._wrappedGetters[e]=function(n){return s(a.state,a.getters,n.state,n.getters)})}function Jt(t){q(function(){return t._state.data},function(){},{deep:!0,flush:"sync"})}function U(t,e){return e.reduce(function(s,a){return s[a]},t)}function A(t,e,s){return Z(t)&&t.type&&(s=e,e=t,t=t.type),{type:t,payload:e,options:s}}var Kt="vuex bindings",H="vuex:mutations",T="vuex:actions",b="vuex",qt=0;function zt(t,e){Gt({id:"org.vuejs.vuex",app:t,label:"Vuex",homepage:"https://next.vuex.vuejs.org/",logo:"https://vuejs.org/images/icons/favicon-96x96.png",packageName:"vuex",componentStateTypes:[Kt]},function(s){s.addTimelineLayer({id:H,label:"Vuex Mutations",color:Q}),s.addTimelineLayer({id:T,label:"Vuex Actions",color:Q}),s.addInspector({id:b,label:"Vuex",icon:"storage",treeFilterPlaceholder:"Filter stores..."}),s.on.getInspectorTree(function(a){if(a.app===t&&a.inspectorId===b)if(a.filter){var n=[];nt(n,e._modules.root,a.filter,""),a.rootNodes=n}else a.rootNodes=[at(e._modules.root,"")]}),s.on.getInspectorState(function(a){if(a.app===t&&a.inspectorId===b){var n=a.nodeId;tt(e,n),a.state=Zt(ee(e._modules,n),n==="root"?e.getters:e._makeLocalGettersCache,n)}}),s.on.editInspectorState(function(a){if(a.app===t&&a.inspectorId===b){var n=a.nodeId,r=a.path;n!=="root"&&(r=n.split("/").filter(Boolean).concat(r)),e._withCommit(function(){a.set(e._state.data,r,a.state.value)})}}),e.subscribe(function(a,n){var r={};a.payload&&(r.payload=a.payload),r.state=n,s.notifyComponentUpdate(),s.sendInspectorTree(b),s.sendInspectorState(b),s.addTimelineEvent({layerId:H,event:{time:Date.now(),title:a.type,data:r}})}),e.subscribeAction({before:function(a,n){var r={};a.payload&&(r.payload=a.payload),a._id=qt++,a._time=Date.now(),r.state=n,s.addTimelineEvent({layerId:T,event:{time:a._time,title:a.type,groupId:a._id,subtitle:"start",data:r}})},after:function(a,n){var r={},o=Date.now()-a._time;r.duration={_custom:{type:"duration",display:o+"ms",tooltip:"Action duration",value:o}},a.payload&&(r.payload=a.payload),r.state=n,s.addTimelineEvent({layerId:T,event:{time:Date.now(),title:a.type,groupId:a._id,subtitle:"end",data:r}})}})})}var Q=8702998,Xt=6710886,Yt=16777215,et={label:"namespaced",textColor:Yt,backgroundColor:Xt};function st(t){return t&&t!=="root"?t.split("/").slice(-2,-1)[0]:"Root"}function at(t,e){return{id:e||"root",label:st(e),tags:t.namespaced?[et]:[],children:Object.keys(t._children).map(function(s){return at(t._children[s],e+s+"/")})}}function nt(t,e,s,a){a.includes(s)&&t.push({id:a||"root",label:a.endsWith("/")?a.slice(0,a.length-1):a||"Root",tags:e.namespaced?[et]:[]}),Object.keys(e._children).forEach(function(n){nt(t,e._children[n],s,a+n+"/")})}function Zt(t,e,s){e=s==="root"?e:e[s];var a=Object.keys(e),n={state:Object.keys(t.state).map(function(o){return{key:o,editable:!0,value:t.state[o]}})};if(a.length){var r=te(e);n.getters=Object.keys(r).map(function(o){return{key:o.endsWith("/")?st(o):o,editable:!1,value:L(function(){return r[o]})}})}return n}function te(t){var e={};return Object.keys(t).forEach(function(s){var a=s.split("/");if(a.length>1){var n=e,r=a.pop();a.forEach(function(o){n[o]||(n[o]={_custom:{value:{},display:o,tooltip:"Module",abstract:!0}}),n=n[o]._custom.value}),n[r]=L(function(){return t[s]})}else e[s]=L(function(){return t[s]})}),e}function ee(t,e){var s=e.split("/").filter(function(a){return a});return s.reduce(function(a,n,r){var o=a[n];if(!o)throw new Error('Missing module "'+n+'" for path "'+e+'".');return r===s.length-1?o:o._children},e==="root"?t:t.root._children)}function L(t){try{return t()}catch(e){return e}}var m=function(t,e){this.runtime=e,this._children=Object.create(null),this._rawModule=t;var s=t.state;this.state=(typeof s=="function"?s():s)||{}},R={namespaced:{configurable:!0}};R.namespaced.get=function(){return!!this._rawModule.namespaced},m.prototype.addChild=function(t,e){this._children[t]=e},m.prototype.removeChild=function(t){delete this._children[t]},m.prototype.getChild=function(t){return this._children[t]},m.prototype.hasChild=function(t){return t in this._children},m.prototype.update=function(t){this._rawModule.namespaced=t.namespaced,t.actions&&(this._rawModule.actions=t.actions),t.mutations&&(this._rawModule.mutations=t.mutations),t.getters&&(this._rawModule.getters=t.getters)},m.prototype.forEachChild=function(t){w(this._children,t)},m.prototype.forEachGetter=function(t){this._rawModule.getters&&w(this._rawModule.getters,t)},m.prototype.forEachAction=function(t){this._rawModule.actions&&w(this._rawModule.actions,t)},m.prototype.forEachMutation=function(t){this._rawModule.mutations&&w(this._rawModule.mutations,t)},Object.defineProperties(m.prototype,R);var y=function(t){this.register([],t,!1)};y.prototype.get=function(t){return t.reduce(function(e,s){return e.getChild(s)},this.root)},y.prototype.getNamespace=function(t){var e=this.root;return t.reduce(function(s,a){return e=e.getChild(a),s+(e.namespaced?a+"/":"")},"")},y.prototype.update=function(t){ot([],this.root,t)},y.prototype.register=function(t,e,s){var a=this;s===void 0&&(s=!0);var n=new m(e,s);if(t.length===0)this.root=n;else{var r=this.get(t.slice(0,-1));r.addChild(t[t.length-1],n)}e.modules&&w(e.modules,function(o,i){a.register(t.concat(i),o,s)})},y.prototype.unregister=function(t){var e=this.get(t.slice(0,-1)),s=t[t.length-1],a=e.getChild(s);a&&a.runtime&&e.removeChild(s)},y.prototype.isRegistered=function(t){var e=this.get(t.slice(0,-1)),s=t[t.length-1];return e?e.hasChild(s):!1};function ot(t,e,s){if(e.update(s),s.modules)for(var a in s.modules){if(!e.getChild(a))return;ot(t.concat(a),e.getChild(a),s.modules[a])}}function se(t){return new f(t)}var f=function(t){var e=this;t===void 0&&(t={});var s=t.plugins;s===void 0&&(s=[]);var a=t.strict;a===void 0&&(a=!1);var n=t.devtools;this._committing=!1,this._actions=Object.create(null),this._actionSubscribers=[],this._mutations=Object.create(null),this._wrappedGetters=Object.create(null),this._modules=new y(t),this._modulesNamespaceMap=Object.create(null),this._subscribers=[],this._makeLocalGettersCache=Object.create(null),this._scope=null,this._devtools=n;var r=this,o=this,i=o.dispatch,u=o.commit;this.dispatch=function(l,d){return i.call(r,l,d)},this.commit=function(l,d,p){return u.call(r,l,d,p)},this.strict=a;var c=this._modules.root.state;k(this,c,[],this._modules.root),D(this,c),s.forEach(function(l){return l(e)})},P={state:{configurable:!0}};f.prototype.install=function(t,e){t.provide(e||$t,this),t.config.globalProperties.$store=this;var s=this._devtools!==void 0?this._devtools:!1;s&&zt(t,this)},P.state.get=function(){return this._state.data},P.state.set=function(t){},f.prototype.commit=function(t,e,s){var a=this,n=A(t,e,s),r=n.type,o=n.payload,i={type:r,payload:o},u=this._mutations[r];u&&(this._withCommit(function(){u.forEach(function(c){c(o)})}),this._subscribers.slice().forEach(function(c){return c(i,a.state)}))},f.prototype.dispatch=function(t,e){var s=this,a=A(t,e),n=a.type,r=a.payload,o={type:n,payload:r},i=this._actions[n];if(i){try{this._actionSubscribers.slice().filter(function(c){return c.before}).forEach(function(c){return c.before(o,s.state)})}catch{}var u=i.length>1?Promise.all(i.map(function(c){return c(r)})):i[0](r);return new Promise(function(c,l){u.then(function(d){try{s._actionSubscribers.filter(function(p){return p.after}).forEach(function(p){return p.after(o,s.state)})}catch{}c(d)},function(d){try{s._actionSubscribers.filter(function(p){return p.error}).forEach(function(p){return p.error(o,s.state,d)})}catch{}l(d)})})}},f.prototype.subscribe=function(t,e){return B(t,this._subscribers,e)},f.prototype.subscribeAction=function(t,e){var s=typeof t=="function"?{before:t}:t;return B(s,this._actionSubscribers,e)},f.prototype.watch=function(t,e,s){var a=this;return q(function(){return t(a.state,a.getters)},e,Object.assign({},s))},f.prototype.replaceState=function(t){var e=this;this._withCommit(function(){e._state.data=t})},f.prototype.registerModule=function(t,e,s){s===void 0&&(s={}),typeof t=="string"&&(t=[t]),this._modules.register(t,e),k(this,this.state,t,this._modules.get(t),s.preserveState),D(this,this.state)},f.prototype.unregisterModule=function(t){var e=this;typeof t=="string"&&(t=[t]),this._modules.unregister(t),this._withCommit(function(){var s=U(e.state,t.slice(0,-1));delete s[t[t.length-1]]}),V(this)},f.prototype.hasModule=function(t){return typeof t=="string"&&(t=[t]),this._modules.isRegistered(t)},f.prototype.hotUpdate=function(t){this._modules.update(t),V(this,!0)},f.prototype._withCommit=function(t){var e=this._committing;this._committing=!0,t(),this._committing=e},Object.defineProperties(f.prototype,P);var ae=it(function(t,e){var s={};return rt(e).forEach(function(a){var n=a.key,r=a.val;s[n]=function(){var o=this.$store.state,i=this.$store.getters;if(t){var u=ut(this.$store,"mapState",t);if(!u)return;o=u.context.state,i=u.context.getters}return typeof r=="function"?r.call(this,o,i):o[r]},s[n].vuex=!0}),s}),ts=it(function(t,e){var s={};return rt(e).forEach(function(a){var n=a.key,r=a.val;r=t+r,s[n]=function(){if(!(t&&!ut(this.$store,"mapGetters",t)))return this.$store.getters[r]},s[n].vuex=!0}),s});function rt(t){return ne(t)?Array.isArray(t)?t.map(function(e){return{key:e,val:e}}):Object.keys(t).map(function(e){return{key:e,val:t[e]}}):[]}function ne(t){return Array.isArray(t)||Z(t)}function it(t){return function(e,s){return typeof e!="string"?(s=e,e=""):e.charAt(e.length-1)!=="/"&&(e+="/"),t(e,s)}}function ut(t,e,s){var a=t._modulesNamespaceMap[s];return a}const oe={computed:{...ae({statusType:t=>t.userStatus.status,statusIsUserDefined:t=>t.userStatus.statusIsUserDefined,customIcon:t=>t.userStatus.icon,customMessage:t=>t.userStatus.message}),visibleMessage(){if(this.customIcon&&this.customMessage)return`${this.customIcon} ${this.customMessage}`;if(this.customMessage)return this.customMessage;if(this.statusIsUserDefined)switch(this.statusType){case"online":return h("user_status","Online");case"away":return h("user_status","Away");case"busy":return h("user_status","Busy");case"dnd":return h("user_status","Do not disturb");case"invisible":return h("user_status","Invisible");case"offline":return h("user_status","Offline")}return h("user_status","Set status")}},methods:{async changeStatus(t){try{await this.$store.dispatch("setStatus",{statusType:t})}catch(e){jt(h("user_status","There was an error saving the new status")),X.debug(e)}}}};async function re(t){const e=_("apps/user_status/api/v1/heartbeat?format=json");return(await g.put(e,{status:t?"away":"online"})).data.ocs.data}const ie="_userStatusMenuItem_1rva6_1",ue="_userStatusIcon_1rva6_6",ce={userStatusMenuItem:ie,userStatusIcon:ue},le={name:"UserStatus",components:{NcButton:kt,NcListItem:Et,NcUserStatusIcon:Ct,SetStatusModal:vt(()=>Ot(()=>import("./SetStatusModal-arJhi5cf.chunk.mjs"),__vite__mapDeps([0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29,30,31,32]),import.meta.url))},mixins:[oe],props:{inline:{type:Boolean,default:!1}},data(){return{heartbeatInterval:null,isAway:!1,isModalOpen:!1,mouseMoveListener:null,setAwayTimeout:null}},mounted(){this.$store.dispatch("loadStatusFromInitialState"),OC.config.session_keepalive&&(this.heartbeatInterval=setInterval(this._backgroundHeartbeat.bind(this),1e3*60*5),this.setAwayTimeout=()=>{this.isAway=!0},this.mouseMoveListener=ht(()=>{const t=this.isAway;this.isAway=!1,clearTimeout(this.setAwayTimeout),setTimeout(this.setAwayTimeout,1e3*60*2),t&&this._backgroundHeartbeat()},1e3*2,{immediate:!0}),window.addEventListener("mousemove",this.mouseMoveListener,{capture:!0,passive:!0}),this._backgroundHeartbeat()),K("user_status:status.updated",this.handleUserStatusUpdated)},beforeUnmount(){window.removeEventListener("mouseMove",this.mouseMoveListener),clearInterval(this.heartbeatInterval),mt("user_status:status.updated",this.handleUserStatusUpdated)},methods:{openModal(){this.isModalOpen=!0},closeModal(){this.isModalOpen=!1},async _backgroundHeartbeat(){try{const t=await re(this.isAway);t?.userId?this.$store.dispatch("setStatusFromHeartbeat",t):await this.$store.dispatch("reFetchStatusFromServer")}catch(t){X.debug("Failed sending heartbeat, got: "+t.response?.status)}},handleUserStatusUpdated(t){v()?.uid===t.userId&&this.$store.dispatch("setStatusFromObject",{status:t.status,icon:t.icon,message:t.message})}}},de={key:1};function pe(t,e,s,a,n,r){const o=M("NcUserStatusIcon"),i=M("NcListItem"),u=M("NcButton"),c=M("SetStatusModal");return O(),F(It,null,[s.inline?(O(),F("div",de,[C(u,{onClick:G(r.openModal,["stop"])},{icon:E(()=>[C(o,{class:j(t.$style.userStatusIcon),status:t.statusType,"aria-hidden":"true"},null,8,["class","status"])]),default:E(()=>[wt(" "+St(t.visibleMessage),1)]),_:1},8,["onClick"])])):(O(),N(i,{key:0,class:j(t.$style.userStatusMenuItem),compact:"",name:t.visibleMessage,onClick:G(r.openModal,["stop"])},{icon:E(()=>[C(o,{class:j(t.$style.userStatusIcon),status:t.statusType,"aria-hidden":"true"},null,8,["class","status"])]),_:1},8,["class","name","onClick"])),n.isModalOpen?(O(),N(c,{key:2,inline:s.inline,onClose:r.closeModal},null,8,["inline","onClose"])):bt("",!0)],64)}const fe={$style:ce},ct=Mt(le,[["render",pe],["__cssModules",fe]]);async function me(){const t=_("apps/user_status/api/v1/predefined_statuses?format=json");return(await g.get(t)).data.ocs.data}const he=()=>({predefinedStatuses:[]}),ge={addPredefinedStatus(t,e){t.predefinedStatuses=[...t.predefinedStatuses,e]}},_e={statusesHaveLoaded(t){return t.predefinedStatuses.length>0}},ye={async loadAllPredefinedStatuses({state:t,commit:e}){if(t.predefinedStatuses.length>0)return;const s=await me();for(const a of s)e("addPredefinedStatus",a)}},ve={state:he,mutations:ge,getters:_e,actions:ye};async function be(){const t=_("apps/user_status/api/v1/user_status");return(await g.get(t)).data.ocs.data}async function we(t){const e=_("apps/user_status/api/v1/statuses/{userId}",{userId:"_"+t});return(await g.get(e)).data.ocs.data}async function Se(t){const e=_("apps/user_status/api/v1/user_status/status");await g.put(e,{statusType:t})}async function Ie(t,e=null){const s=_("apps/user_status/api/v1/user_status/message/predefined?format=json");await g.put(s,{messageId:t,clearAt:e})}async function Me(t,e=null,s=null){const a=_("apps/user_status/api/v1/user_status/message/custom?format=json");await g.put(a,{message:t,statusIcon:e,clearAt:s})}async function Oe(){const t=_("apps/user_status/api/v1/user_status/message?format=json");await g.delete(t)}async function Ae(t){const e=_("apps/user_status/api/v1/user_status/revert/{messageId}",{messageId:t});return(await g.delete(e)).data.ocs.data}const ke=()=>({status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null}),Ee={loadBackupStatusFromServer(t,{status:e,statusIsUserDefined:s,message:a,icon:n,clearAt:r,messageIsPredefined:o,messageId:i}){t.status=e,t.message=a,t.icon=n,typeof s<"u"&&(t.statusIsUserDefined=s),typeof r<"u"&&(t.clearAt=r),typeof o<"u"&&(t.messageIsPredefined=o),typeof i<"u"&&(t.messageId=i)}},Ce={},je={async fetchBackupFromServer({commit:t}){try{const e=await we(v()?.uid);t("loadBackupStatusFromServer",e)}catch{}},async revertBackupFromServer({commit:t},{messageId:e}){const s=await Ae(e);s&&(t("loadBackupStatusFromServer",{}),t("loadStatusFromServer",s),I("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:v()?.uid}))}},Te={state:ke,mutations:Ee,getters:Ce,actions:je};function Pe(){return new Date}function W(t){if(t===null)return null;const e=Pe();if(t.type==="period")return e.setSeconds(e.getSeconds()+t.time),Math.floor(e.getTime()/1e3);if(t.type==="end-of")switch(t.time){case"day":return Math.floor(lt(e).getTime()/1e3);case"week":return Math.floor(xe(e).getTime()/1e3)}return t.type==="_time"?t.time:null}function es(t){if(t===null)return h("user_status","Don't clear");if(t.type==="end-of")switch(t.time){case"day":return h("user_status","Today");case"week":return h("user_status","This week");default:return null}return t.type==="period"?$(Date.now()+t.time*1e3):t.type==="_time"?$(t.time*1e3):null}function lt(t){const e=new Date(t);return e.setHours(23,59,59,999),e}function xe(t){const e=lt(t);return e.setDate(t.getDate()+(Tt()-1-e.getDay()+7)%7),e}const Le=()=>({status:null,statusIsUserDefined:null,message:null,icon:null,clearAt:null,messageIsPredefined:null,messageId:null}),De={setStatus(t,{statusType:e}){t.status=e,t.statusIsUserDefined=!0},setPredefinedMessage(t,{messageId:e,clearAt:s,message:a,icon:n}){t.messageId=e,t.messageIsPredefined=!0,t.message=a,t.icon=n,t.clearAt=s},setCustomMessage(t,{message:e,icon:s,clearAt:a}){t.messageId=null,t.messageIsPredefined=!1,t.message=e,t.icon=s,t.clearAt=a},clearMessage(t){t.messageId=null,t.messageIsPredefined=!1,t.message=null,t.icon=null,t.clearAt=null},loadStatusFromServer(t,{status:e,statusIsUserDefined:s,message:a,icon:n,clearAt:r,messageIsPredefined:o,messageId:i}){t.status=e,t.message=a,t.icon=n,typeof s<"u"&&(t.statusIsUserDefined=s),typeof r<"u"&&(t.clearAt=r),typeof o<"u"&&(t.messageIsPredefined=o),typeof i<"u"&&(t.messageId=i)}},Ue={},Fe={async setStatus({commit:t,state:e},{statusType:s}){await Se(s),t("setStatus",{statusType:s}),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async setStatusFromObject({commit:t},e){t("loadStatusFromServer",e)},async setPredefinedMessage({commit:t,rootState:e,state:s},{messageId:a,clearAt:n}){const r=W(n);await Ie(a,r);const o=e.predefinedStatuses.predefinedStatuses.find(c=>c.id===a),{message:i,icon:u}=o;t("setPredefinedMessage",{messageId:a,clearAt:r,message:i,icon:u}),I("user_status:status.updated",{status:s.status,message:s.message,icon:s.icon,clearAt:s.clearAt,userId:v()?.uid})},async setCustomMessage({commit:t,state:e},{message:s,icon:a,clearAt:n}){const r=W(n);await Me(s,a,r),t("setCustomMessage",{message:s,icon:a,clearAt:r}),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async clearMessage({commit:t,state:e}){await Oe(),t("clearMessage"),I("user_status:status.updated",{status:e.status,message:e.message,icon:e.icon,clearAt:e.clearAt,userId:v()?.uid})},async reFetchStatusFromServer({commit:t}){const e=await be();t("loadStatusFromServer",e)},async setStatusFromHeartbeat({commit:t},e){t("loadStatusFromServer",e)},loadStatusFromInitialState({commit:t}){const e=At("user_status","status");t("loadStatusFromServer",e)}},Ne={state:Le,mutations:De,getters:Ue,actions:Fe},dt=se({modules:{predefinedStatuses:ve,userStatus:Ne,userBackupStatus:Te},strict:!0}),Ge=document.getElementById("user_status-menu-entry");function J(){const t=document.getElementById("user_status-menu-entry"),e=document.createElement("div");e.style.display="contents",t.replaceWith(e),z(ct).use(dt).mount(e)}Ge?J():K("core:user-menu:mounted",J),document.addEventListener("DOMContentLoaded",function(){OCA.Dashboard&&OCA.Dashboard.registerStatus("status",t=>{z(ct,{inline:!0}).use(dt).mount(t)})});export{oe as O,ae as a,es as c,X as l,ts as m}; //# sourceMappingURL=user_status-menu.mjs.map