From 15837dc13fb7719b4c3f81c527653b9010b89c8e Mon Sep 17 00:00:00 2001 From: Pawel Boguslawski Date: Thu, 2 Jul 2026 15:07:36 +0200 Subject: [PATCH 1/3] fix(sharing): hide "Shared by link" when sharing by link is disabled Related: https://github.com/nextcloud/server/issues/50323 Author-Change-Id: IB#1156670 Signed-off-by: Pawel Boguslawski --- apps/files_sharing/src/files_views/shares.ts | 28 +++++++++++--------- 1 file changed, 16 insertions(+), 12 deletions(-) diff --git a/apps/files_sharing/src/files_views/shares.ts b/apps/files_sharing/src/files_views/shares.ts index 112bc2909988b..629936161b868 100644 --- a/apps/files_sharing/src/files_views/shares.ts +++ b/apps/files_sharing/src/files_views/shares.ts @@ -15,6 +15,7 @@ import { loadState } from '@nextcloud/initial-state' import { t } from '@nextcloud/l10n' import { ShareType } from '@nextcloud/sharing' import { getContents, isFileRequest } from '../services/SharingService.ts' +import { getCapabilities } from '@nextcloud/capabilities' export const sharesViewId = 'shareoverview' export const sharedWithYouViewId = 'sharingin' @@ -80,22 +81,25 @@ export default () => { })) } - Navigation.register(new View({ - id: sharingByLinksViewId, - name: t('files_sharing', 'Shared by link'), - caption: t('files_sharing', 'List of files that are shared by link.'), + // Don't show this view if sharing by link is disabled. + if (getCapabilities().files_sharing.public.enabled) { + Navigation.register(new View({ + id: sharingByLinksViewId, + name: t('files_sharing', 'Shared by link'), + caption: t('files_sharing', 'List of files that are shared by link.'), - emptyTitle: t('files_sharing', 'No shared links'), - emptyCaption: t('files_sharing', 'Files and folders you shared by link will show up here'), + emptyTitle: t('files_sharing', 'No shared links'), + emptyCaption: t('files_sharing', 'Files and folders you shared by link will show up here'), - icon: LinkSvg, - order: 3, - parent: sharesViewId, + icon: LinkSvg, + order: 3, + parent: sharesViewId, - columns: [], + columns: [], - getContents: () => getContents(false, true, false, false, [ShareType.Link]), - })) + getContents: () => getContents(false, true, false, false, [ShareType.Link]), + })) + } Navigation.register(new View({ id: fileRequestViewId, From d5bb4bdfbb0361c92cfb07a2f0341bb11ad40cd8 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 18 Aug 2026 21:52:32 +0200 Subject: [PATCH 2/3] fix: adjust code to comply with ESLint and align code with tests Signed-off-by: Ferdinand Thiessen --- .../src/files_views/shares.spec.ts | 23 ++++++++++ apps/files_sharing/src/files_views/shares.ts | 4 +- .../admin-settings-allow-links.spec.ts | 38 +++++++++++++++++ .../support/sections/FilesNavigationPage.ts | 42 +++++++++++++++++++ 4 files changed, 105 insertions(+), 2 deletions(-) create mode 100644 tests/playwright/e2e/files_sharing/admin-settings-allow-links.spec.ts diff --git a/apps/files_sharing/src/files_views/shares.spec.ts b/apps/files_sharing/src/files_views/shares.spec.ts index 43c9fdf589851..e6b5a25222ad6 100644 --- a/apps/files_sharing/src/files_views/shares.spec.ts +++ b/apps/files_sharing/src/files_views/shares.spec.ts @@ -14,9 +14,13 @@ import registerSharingViews from './shares.ts' import '../main.ts' +const getCapabilities = vi.hoisted(() => vi.fn()) +vi.mock('@nextcloud/capabilities', () => ({ getCapabilities })) + const navigation = getNavigation() beforeEach(() => { vi.resetAllMocks() + getCapabilities.mockReturnValue({ files_sharing: { public: { enabled: true } } }) const views = [...navigation.views] for (const view of views) { @@ -91,6 +95,25 @@ describe('Sharing views definition', () => { const sharedWithOthersView = navigation.views.find((view) => view.id === 'sharingout') expect(sharedWithOthersView).toBeUndefined() }) + + test.for([ + ['disabled', { files_sharing: { public: { enabled: false } } }], + ['not available', {}], + ] as const)('Shared by link view is not registered if public sharing is %s', ([, capabilities]) => { + vi.spyOn(navigation, 'register') + getCapabilities.mockReturnValue(capabilities) + + expect(navigation.views.length).toBe(0) + registerSharingViews() + expect(navigation.register).toHaveBeenCalledTimes(6) + expect(navigation.views.length).toBe(6) + + const sharesChildViews = navigation.views.filter((view) => view.parent === 'shareoverview') as View[] + expect(sharesChildViews.length).toBe(5) + + const sharingByLinksView = navigation.views.find((view) => view.id === 'sharinglinks') + expect(sharingByLinksView).toBeUndefined() + }) }) describe('Sharing views contents', () => { diff --git a/apps/files_sharing/src/files_views/shares.ts b/apps/files_sharing/src/files_views/shares.ts index 629936161b868..dc901a9b2d7b2 100644 --- a/apps/files_sharing/src/files_views/shares.ts +++ b/apps/files_sharing/src/files_views/shares.ts @@ -10,12 +10,12 @@ import AccountPlusSvg from '@mdi/svg/svg/account-plus-outline.svg?raw' import FileUploadSvg from '@mdi/svg/svg/file-upload-outline.svg?raw' import LinkSvg from '@mdi/svg/svg/link.svg?raw' import DeleteSvg from '@mdi/svg/svg/trash-can-outline.svg?raw' +import { getCapabilities } from '@nextcloud/capabilities' import { getNavigation, View } from '@nextcloud/files' import { loadState } from '@nextcloud/initial-state' import { t } from '@nextcloud/l10n' import { ShareType } from '@nextcloud/sharing' import { getContents, isFileRequest } from '../services/SharingService.ts' -import { getCapabilities } from '@nextcloud/capabilities' export const sharesViewId = 'shareoverview' export const sharedWithYouViewId = 'sharingin' @@ -82,7 +82,7 @@ export default () => { } // Don't show this view if sharing by link is disabled. - if (getCapabilities().files_sharing.public.enabled) { + if (getCapabilities().files_sharing?.public.enabled) { Navigation.register(new View({ id: sharingByLinksViewId, name: t('files_sharing', 'Shared by link'), diff --git a/tests/playwright/e2e/files_sharing/admin-settings-allow-links.spec.ts b/tests/playwright/e2e/files_sharing/admin-settings-allow-links.spec.ts new file mode 100644 index 0000000000000..97d0968de3ed6 --- /dev/null +++ b/tests/playwright/e2e/files_sharing/admin-settings-allow-links.spec.ts @@ -0,0 +1,38 @@ +/* + * SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ + +import { runOcc } from '@nextcloud/e2e-test-server' +import { expect, test } from '../../support/fixtures/files-page.ts' + +/** + * The "Shared by link" view lists link shares, so it must only be registered + * while public link sharing is allowed instance-wide. + */ +test.describe('files_sharing: Shared by link view', () => { + test.afterAll(async () => { + await runOcc(['config:app:delete', 'core', 'shareapi_allow_links']) + }) + + test('is listed while link sharing is enabled', async ({ filesListPage, filesNavigation }) => { + await runOcc(['config:app:set', '--value', 'yes', 'core', 'shareapi_allow_links']) + + await filesListPage.open('shareoverview') + await filesNavigation.expandNavigationEntry('Shares') + + await expect(filesNavigation.getNavigationEntry('Shared by link')).toBeVisible() + }) + + test('is not listed when link sharing is disabled', async ({ filesListPage, filesNavigation }) => { + await runOcc(['config:app:set', '--value', 'no', 'core', 'shareapi_allow_links']) + + await filesListPage.open('shareoverview') + await filesNavigation.expandNavigationEntry('Shares') + + // The sibling views are expanded and visible, so a missing entry is really + // an unregistered view and not just a collapsed parent. + await expect(filesNavigation.getNavigationEntry('Shared with others')).toBeVisible() + await expect(filesNavigation.getNavigationEntry('Shared by link')).toHaveCount(0) + }) +}) diff --git a/tests/playwright/support/sections/FilesNavigationPage.ts b/tests/playwright/support/sections/FilesNavigationPage.ts index 23f32fafd986c..5a448d1852469 100644 --- a/tests/playwright/support/sections/FilesNavigationPage.ts +++ b/tests/playwright/support/sections/FilesNavigationPage.ts @@ -5,6 +5,8 @@ import type { Locator, Page } from '@playwright/test' +import { expect } from '@playwright/test' + /** * The left-hand files navigation (the view list: All files, Favorites, Recent, …). * Distinct from {@link NavigationHeaderPage}, which models the top app bar. @@ -52,6 +54,46 @@ export class FilesNavigationPage { .click() } + /** + * A navigation entry addressed by its visible name, e.g. "Shared by link". + * + * @param name - The name of the view as shown in the navigation + */ + getNavigationEntry(name: string): Locator { + return this.navigation().getByRole('link', { name, exact: true }) + } + + /** + * The list item wrapping a navigation entry - it also contains the entry's + * collapse toggle and, once expanded, its child entries. + * + * @param name - The name of the view as shown in the navigation + */ + getNavigationEntryItem(name: string): Locator { + return this.navigation() + .getByRole('listitem') + .filter({ has: this.page.getByRole('link', { name, exact: true }) }) + .first() + } + + /** + * Expand a collapsible navigation entry by name to reveal its child entries. + * + * @param name - The name of the view as shown in the navigation + */ + async expandNavigationEntry(name: string): Promise { + const item = this.getNavigationEntryItem(name) + await expect(item).toBeVisible() + + await expect(async () => { + const toggle = item.getByRole('button', { name: 'Open menu' }) + if (await toggle.isVisible()) { + await toggle.click() + } + await expect(item.getByRole('button', { name: 'Collapse menu' })).toBeVisible() + }).toPass() + } + /** The "Files settings" dialog opened from the navigation footer. */ settingsDialog(): Locator { return this.page.getByRole('dialog', { name: 'Files settings' }) From d4f935428f9513df92de47191ec6709260485ad3 Mon Sep 17 00:00:00 2001 From: Ferdinand Thiessen Date: Tue, 18 Aug 2026 22:06:31 +0200 Subject: [PATCH 3/3] chore: compile assets Signed-off-by: Ferdinand Thiessen --- dist/files_sharing-init.js | 4 ++-- dist/files_sharing-init.js.map | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/dist/files_sharing-init.js b/dist/files_sharing-init.js index e582ed42c467f..b2205a5cb1272 100644 --- a/dist/files_sharing-init.js +++ b/dist/files_sharing-init.js @@ -1,2 +1,2 @@ -(()=>{var e={99770(e,t,n){"use strict";var i=n(35810),r=n(77815),s=n(44368),a=n(61338),o=n(53334),l=n(63814);const c='',d='',u='',p='';var h=n(81222),f=n(40715),m=n(87543);const g="shareoverview",v="sharingin",w="sharingout",A="sharinglinks",y="deletedshares",b="pendingshares",_=()=>{const e=(0,i.bh)();e.register(new i.Ss({id:g,name:(0,o.t)("files_sharing","Shares"),caption:(0,o.t)("files_sharing","Overview of shared files."),emptyTitle:(0,o.t)("files_sharing","No shares"),emptyCaption:(0,o.t)("files_sharing","Files and folders you shared or have been shared with you will show up here"),icon:d,order:20,columns:[],getContents:()=>(0,m.h)()})),e.register(new i.Ss({id:v,name:(0,o.t)("files_sharing","Shared with you"),caption:(0,o.t)("files_sharing","List of files that are shared with you."),emptyTitle:(0,o.t)("files_sharing","Nothing shared with you yet"),emptyCaption:(0,o.t)("files_sharing","Files and folders others shared with you will show up here"),icon:'',order:1,parent:g,columns:[],getContents:()=>(0,m.h)(!0,!1,!1,!1)})),0!==(0,h.C)("files","storageStats",{quota:-1}).quota&&e.register(new i.Ss({id:w,name:(0,o.t)("files_sharing","Shared with others"),caption:(0,o.t)("files_sharing","List of files that you shared with others."),emptyTitle:(0,o.t)("files_sharing","Nothing shared yet"),emptyCaption:(0,o.t)("files_sharing","Files and folders you shared will show up here"),icon:c,order:2,parent:g,columns:[],getContents:()=>(0,m.h)(!1,!0,!1,!1)})),e.register(new i.Ss({id:A,name:(0,o.t)("files_sharing","Shared by link"),caption:(0,o.t)("files_sharing","List of files that are shared by link."),emptyTitle:(0,o.t)("files_sharing","No shared links"),emptyCaption:(0,o.t)("files_sharing","Files and folders you shared by link will show up here"),icon:p,order:3,parent:g,columns:[],getContents:()=>(0,m.h)(!1,!0,!1,!1,[f.I.Link])})),e.register(new i.Ss({id:"filerequest",name:(0,o.t)("files_sharing","File requests"),caption:(0,o.t)("files_sharing","List of file requests."),emptyTitle:(0,o.t)("files_sharing","No file requests"),emptyCaption:(0,o.t)("files_sharing","File requests you have created will show up here"),icon:u,order:4,parent:g,columns:[],getContents:()=>(0,m.h)(!1,!0,!1,!1,[f.I.Link,f.I.Email]).then(({folder:e,contents:t})=>({folder:e,contents:t.filter(e=>(0,m.C)(e.attributes?.["share-attributes"]||[]))}))})),e.register(new i.Ss({id:y,name:(0,o.t)("files_sharing","Deleted shares"),caption:(0,o.t)("files_sharing","List of shares you left."),emptyTitle:(0,o.t)("files_sharing","No deleted shares"),emptyCaption:(0,o.t)("files_sharing","Shares you have left will show up here"),icon:'',order:5,parent:g,columns:[],getContents:()=>(0,m.h)(!1,!1,!1,!0)})),e.register(new i.Ss({id:b,name:(0,o.t)("files_sharing","Pending shares"),caption:(0,o.t)("files_sharing","List of unapproved shares."),emptyTitle:(0,o.t)("files_sharing","No pending shares"),emptyCaption:(0,o.t)("files_sharing","Shares you have received but not approved will show up here"),icon:'',order:6,parent:g,columns:[],getContents:()=>(0,m.h)(!1,!1,!0,!1)}))};n.dn(_);const C={id:"accept-share",displayName:({nodes:e})=>(0,o.zw)("files_sharing","Accept share","Accept shares",e.length),iconSvgInline:()=>'',enabled:({nodes:e,view:t})=>e.length>0&&t.id===b,async exec({nodes:e}){try{const t=e[0],n=!!t.attributes.remote,i=(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:n?"remote_shares":"shares",id:t.attributes["share-id"]});return await s.Ay.post(i),(0,a.Ic)("files:node:deleted",t),!0}catch{return!1}},async execBatch({nodes:e,view:t,folder:n,contents:i}){return Promise.all(e.map(e=>this.exec({nodes:[e],view:t,folder:n,contents:i})))},order:1,inline:()=>!0},x={id:"files_sharing:open-in-files",displayName:()=>(0,o.Tl)("files_sharing","Open in Files"),iconSvgInline:()=>"",enabled:({view:e})=>[g,v,w,A].includes(e.id),async exec({nodes:e}){const t=e[0].type===i.pt.Folder;return window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:String(e[0].fileid)},{dir:t?e[0].path:e[0].dirname,openfile:t?void 0:"true"}),null},order:-1e3,default:i.m9.HIDDEN},E={id:"reject-share",displayName:({nodes:e})=>(0,o.zw)("files_sharing","Reject share","Reject shares",e.length),iconSvgInline:()=>'',enabled:({nodes:e,view:t})=>t.id===b&&0!==e.length&&!e.some(e=>e.attributes.remote_id&&e.attributes.share_type===f.I.RemoteGroup),async exec({nodes:e}){try{const t=e[0],n=t.attributes.remote?"remote_shares":"shares",i=t.attributes["share-id"];let r;return r=0===t.attributes.accepted?(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:n,id:i}):(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/{id}",{shareBase:n,id:i}),await s.Ay.delete(r),(0,a.Ic)("files:node:deleted",t),!0}catch{return!1}},async execBatch({nodes:e,view:t,folder:n,contents:i}){return Promise.all(e.map(e=>this.exec({nodes:[e],view:t,folder:n,contents:i})))},order:2,inline:()=>!0},D={id:"restore-share",displayName:({nodes:e})=>(0,o.zw)("files_sharing","Restore share","Restore shares",e.length),iconSvgInline:()=>'',enabled:({nodes:e,view:t})=>e.length>0&&t.id===y,async exec({nodes:e}){try{const t=e[0],n=(0,l.KT)("apps/files_sharing/api/v1/deletedshares/{id}",{id:t.attributes["share-id"]});return await s.Ay.post(n),(0,a.Ic)("files:node:deleted",t),!0}catch{return!1}},async execBatch({nodes:e,view:t,folder:n,contents:i}){return Promise.all(e.map(e=>this.exec({nodes:[e],view:t,folder:n,contents:i})))},order:1,inline:()=>!0};var L=n(21777),S=n(85168),N=n(32505);var T=n(85072),F=n.n(T),P=n(97825),I=n.n(P),H=n(77659),V=n.n(H),M=n(55056),O=n.n(M),R=n(10540),k=n.n(R),$=n(41113),B=n.n($),j=n(53168),U={};function q(e){return e.attributes?.["is-federated"]??!1}U.styleTagTransform=B(),U.setAttributes=O(),U.insert=V().bind(null,"head"),U.domAPI=I(),U.insertStyleElement=k(),F()(j.A,U),j.A&&j.A.locals&&j.A.locals;const z={id:"sharing-status",displayName({nodes:e}){const t=e[0];return Object.values(t?.attributes?.["share-types"]||{}).flat().length>0||t.owner!==(0,L.HW)()?.uid||q(t)?(0,o.Tl)("files_sharing","Shared"):""},title({nodes:e}){const t=e[0];if(t.owner&&(t.owner!==(0,L.HW)()?.uid||q(t))){const e=t?.attributes?.["owner-display-name"];return(0,o.Tl)("files_sharing","Shared by {ownerDisplayName}",{ownerDisplayName:e})}if(Object.values(t?.attributes?.["share-types"]||{}).flat().length>1)return(0,o.Tl)("files_sharing","Shared multiple times with different people");const n=t.attributes.sharees?.sharee;if(!n)return(0,o.Tl)("files_sharing","Sharing options");const i=[n].flat()[0];switch(i?.type){case f.I.User:return(0,o.Tl)("files_sharing","Shared with {user}",{user:i["display-name"]});case f.I.Group:return(0,o.Tl)("files_sharing","Shared with group {group}",{group:i["display-name"]??i.id});default:return(0,o.Tl)("files_sharing","Shared with others")}},iconSvgInline({nodes:e}){const t=e[0],n=Object.values(t?.attributes?.["share-types"]||{}).flat();return Array.isArray(t.attributes?.["share-types"])&&t.attributes?.["share-types"].length>1?d:n.includes(f.I.Link)||n.includes(f.I.Email)?p:n.includes(f.I.Group)||n.includes(f.I.RemoteGroup)?c:n.includes(f.I.Team)?'':t.owner&&(t.owner!==(0,L.HW)()?.uid||q(t))?function(e,t=!1){const n=`${t?`/avatar/guest/${e}`:`/avatar/${e}`}/32${!0===window?.matchMedia?.("(prefers-color-scheme: dark)")?.matches||null!==document.querySelector("[data-themes*=dark]")?"/dark":""}${t?"":"?guestFallback=true"}`;return``}(t.owner,q(t)):d},enabled({nodes:e}){if(1!==e.length)return!1;if((0,N.f)())return!1;const t=e[0],n=t.attributes?.["share-types"];return!!(Array.isArray(n)&&n.length>0)||!(t.owner===(0,L.HW)()?.uid&&!q(t))||0!==(t.permissions&i.aX.SHARE)&&0!==(t.permissions&i.aX.READ)},async exec({nodes:e}){const t=e[0];return 0!==(t.permissions&i.aX.READ)?((0,i.dC)().open(t,"sharing"),null):((0,S.Qg)((0,o.Tl)("files_sharing","You do not have enough permissions to share this file.")),null)},inline:()=>!0};var G=n(26422),W=n(85471),Z=n(41944),K=n(74095),Y=n(82182);const X=document.getElementsByTagName("head")[0].getAttribute("data-user"),J=(document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),void 0!==X&&X),Q=(0,W.pM)({__name:"FileListFilterAccount",props:{filter:null},setup(e){const t=e,n=J,i=(0,W.KR)(""),r=(0,W.KR)([]),s=(0,W.KR)([]);(0,W.wB)(s,()=>{const e=s.value.map(({id:e,displayName:t})=>({uid:e,displayName:t}));t.filter.setAccounts(e.length>0?e:void 0)}),(0,W.sV)(()=>{u(t.filter.availableAccounts),s.value=r.value.filter(({id:e})=>t.filter.filterAccounts?.some(({uid:t})=>t===e))??[],t.filter.addEventListener("accounts-updated",u),t.filter.addEventListener("reset",d),t.filter.addEventListener("deselect",c)}),(0,W.hi)(()=>{t.filter.removeEventListener("accounts-updated",u),t.filter.removeEventListener("reset",d),t.filter.removeEventListener("deselect",c)});const a=(0,W.EW)(()=>{if(!i.value)return[...r.value].sort(l);const e=i.value.toLocaleLowerCase().trim().split(" ");return r.value.filter(t=>e.every(e=>t.user.toLocaleLowerCase().includes(e)||t.displayName.toLocaleLowerCase().includes(e))).sort(l)});function l(e,t){return e.id===n?-1:t.id===n?1:e.displayName.localeCompare(t.displayName)}function c(e){const t=e.detail;s.value=s.value.filter(({id:e})=>e!==t)}function d(){s.value=[],i.value=""}function u(e){e instanceof CustomEvent&&(e=e.detail),r.value=e.map(({uid:e,displayName:t})=>({displayName:t,id:e,user:e}))}return{__sfc:!0,props:t,currentUserId:n,accountFilter:i,availableAccounts:r,selectedAccounts:s,shownAccounts:a,sortAccounts:l,toggleAccount:function(e,t){if(s.value=s.value.filter(({id:t})=>t!==e),t){const t=r.value.find(({id:t})=>t===e);t&&(s.value=[...s.value,t])}},deselect:c,resetFilter:d,setAvailableAccounts:u,t:o.t,NcAvatar:Z.A,NcButton:K.A,NcTextField:Y.A}}});var ee=n(15914),te={};te.styleTagTransform=B(),te.setAttributes=O(),te.insert=V().bind(null,"head"),te.domAPI=I(),te.insertStyleElement=k(),F()(ee.A,te);const ne=ee.A&&ee.A.locals?ee.A.locals:void 0,ie=(0,n(14486).A)(Q,function(){var e=this,t=e._self._c,n=e._self._setupProxy;return t("div",{class:e.$style.fileListFilterAccount},[n.availableAccounts.length>1?t(n.NcTextField,{attrs:{type:"search",label:n.t("files_sharing","Filter accounts")},model:{value:n.accountFilter,callback:function(e){n.accountFilter=e},expression:"accountFilter"}}):e._e(),e._v(" "),e._l(n.shownAccounts,function(i){return t(n.NcButton,{key:i.id,attrs:{alignment:"start",pressed:n.selectedAccounts.includes(i),variant:"tertiary",wide:""},on:{"update:pressed":function(e){return n.toggleAccount(i.id,e)}},scopedSlots:e._u([{key:"icon",fn:function(){return[t(n.NcAvatar,e._b({class:e.$style.fileListFilterAccount__avatar,attrs:{size:24,"disable-menu":"","hide-status":""}},"NcAvatar",i,!1))]},proxy:!0}],null,!0)},[e._v("\n\t\t"+e._s(i.displayName)+"\n\t\t"),i.id===n.currentUserId?t("span",{class:e.$style.fileListFilterAccount__currentUser},[e._v("\n\t\t\t("+e._s(n.t("files","you"))+")\n\t\t")]):e._e()])})],2)},[],!1,function(e){this.$style=ne.locals||ne},null,null).exports;function re(e,t,n){return(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function se(e,t,n){(function(e,t){if(t.has(e))throw new TypeError("Cannot initialize the same private elements twice on an object")})(e,t),t.set(e,n)}function ae(e,t){return e.get(le(e,t))}function oe(e,t,n){return e.set(le(e,t),n),n}function le(e,t,n){if("function"==typeof e?e===t:e.has(t))return arguments.length<3?t:n;throw new TypeError("Private element is not present on this object")}const ce="files_sharing-file-list-filter-account";var de=new WeakMap,ue=new WeakMap;class pe extends i.L3{constructor(){super("files_sharing:account",100),se(this,de,void 0),se(this,ue,void 0),re(this,"displayName",(0,o.t)("files_sharing","People")),re(this,"iconSvgInline",''),re(this,"tagName",ce),oe(de,this,[]),(0,a.B1)("files:list:updated",({contents:e})=>{this.updateAvailableAccounts(e)})}get availableAccounts(){return ae(de,this)}get filterAccounts(){return ae(ue,this)}filter(e){if(!ae(ue,this)||0===ae(ue,this).length)return e;const t=ae(ue,this).map(({uid:e})=>e);return e.filter(e=>{if("trashbin"===window.OCP.Files.Router.params.view){const n=e.attributes?.["trashbin-deleted-by-id"];return!(!n||!t.includes(n))}if(e.owner&&t.includes(e.owner))return!0;const n=e.attributes.sharees?.sharee;return!(!n||![n].flat().some(({id:e})=>t.includes(e)))||!e.owner&&!n})}reset(){this.dispatchEvent(new CustomEvent("reset"))}setAccounts(e){oe(ue,this,e);let t=[];ae(ue,this)&&ae(ue,this).length>0&&(t=ae(ue,this).map(({displayName:e,uid:t})=>({text:e,user:t,onclick:()=>this.dispatchEvent(new CustomEvent("deselect",{detail:t}))}))),this.updateChips(t),this.filterUpdated()}updateAvailableAccounts(e){const t=new Map;for(const n of e){const e=n.owner;e&&!t.has(e)&&t.set(e,{uid:e,displayName:n.attributes["owner-display-name"]??n.owner});const i=[n.attributes.sharees?.sharee].flat().filter(Boolean);for(const e of[i].flat())""!==e.id&&(e.type!==f.I.User&&e.type!==f.I.Remote||t.has(e.id)||t.set(e.id,{uid:e.id,displayName:e["display-name"]}));const r=n.attributes?.["trashbin-deleted-by-id"];r&&t.set(r,{uid:r,displayName:n.attributes?.["trashbin-deleted-by-display-name"]||r})}oe(de,this,[...t.values()]),this.dispatchEvent(new CustomEvent("accounts-updated"))}}var he=n(98469);const fe=new(n(87771).A),me=(0,W.$V)(()=>Promise.all([n.e(4208),n.e(1598)]).then(n.bind(n,11598))),ge={id:"file-request",displayName:(0,o.t)("files_sharing","Create file request"),iconSvgInline:u,order:10,enabled:()=>!(0,N.f)()&&!!fe.isPublicUploadEnabled&&fe.isPublicShareAllowed,async handler(e,t){(0,he.S)(me,{context:e,content:t})}};_(),(0,i.zj)(ge),(0,r.Yc)("nc:note",{nc:"http://nextcloud.org/ns"}),(0,r.Yc)("nc:sharees",{nc:"http://nextcloud.org/ns"}),(0,r.Yc)("nc:hide-download",{nc:"http://nextcloud.org/ns"}),(0,r.Yc)("nc:share-attributes",{nc:"http://nextcloud.org/ns"}),(0,r.Yc)("oc:share-types",{oc:"http://owncloud.org/ns"}),(0,r.Yc)("ocs:share-permissions",{ocs:"http://open-collaboration-services.org/ns"}),(0,i.Gg)(C),(0,i.Gg)(x),(0,i.Gg)(E),(0,i.Gg)(D),(0,i.Gg)(z),function(){if((0,N.f)())return;const e=(0,G.A)(W.Ay,ie);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),customElements.define(ce,e),(0,i.cZ)(new pe)}(),function(){let e,t;(0,i.pJ)({id:"note-to-recipient",order:0,enabled:e=>Boolean(e.attributes.note),updated:e=>{t&&t.updateFolder(e)},render:async(i,r)=>{if(void 0===e){const{default:t}=await Promise.all([n.e(4208),n.e(1930)]).then(n.bind(n,81930));e=W.Ay.extend(t)}t=(new e).$mount(i),t.updateFolder(r)}})}()},87771(e,t,n){"use strict";n.d(t,{A:()=>s});var i=n(87485),r=n(81222);class s{constructor(){var e,t,n;e=this,n=void 0,(t=function(e){var t=function(e){if("object"!=typeof e||!e)return e;var t=e[Symbol.toPrimitive];if(void 0!==t){var n=t.call(e,"string");if("object"!=typeof n)return n;throw new TypeError("@@toPrimitive must return a primitive value.")}return String(e)}(e);return"symbol"==typeof t?t:t+""}(t="_capabilities"))in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,this._capabilities=(0,i.F)()}get defaultPermissions(){return this._capabilities.files_sharing?.default_permissions}get excludeReshareFromEdit(){return!0===this._capabilities.files_sharing?.exclude_reshare_from_edit}get isPublicUploadEnabled(){return!0===this._capabilities.files_sharing?.public?.upload}get federatedShareDocLink(){return window.OC.appConfig.core.federatedCloudShareDoc}get defaultExpirationDate(){return this.isDefaultExpireDateEnabled&&null!==this.defaultExpireDate?new Date((new Date).setDate((new Date).getDate()+this.defaultExpireDate)):null}get defaultInternalExpirationDate(){return this.isDefaultInternalExpireDateEnabled&&null!==this.defaultInternalExpireDate?new Date((new Date).setDate((new Date).getDate()+this.defaultInternalExpireDate)):null}get defaultRemoteExpirationDateString(){return this.isDefaultRemoteExpireDateEnabled&&null!==this.defaultRemoteExpireDate?new Date((new Date).setDate((new Date).getDate()+this.defaultRemoteExpireDate)):null}get enforcePasswordForPublicLink(){return!0===window.OC.appConfig.core.enforcePasswordForPublicLink}get enableLinkPasswordByDefault(){return!0===window.OC.appConfig.core.enableLinkPasswordByDefault}get isDefaultExpireDateEnforced(){return!0===window.OC.appConfig.core.defaultExpireDateEnforced}get isDefaultExpireDateEnabled(){return!0===window.OC.appConfig.core.defaultExpireDateEnabled}get isDefaultInternalExpireDateEnforced(){return!0===window.OC.appConfig.core.defaultInternalExpireDateEnforced}get isDefaultInternalExpireDateEnabled(){return!0===window.OC.appConfig.core.defaultInternalExpireDateEnabled}get isDefaultRemoteExpireDateEnforced(){return!0===window.OC.appConfig.core.defaultRemoteExpireDateEnforced}get isDefaultRemoteExpireDateEnabled(){return!0===window.OC.appConfig.core.defaultRemoteExpireDateEnabled}get isRemoteShareAllowed(){return!0===window.OC.appConfig.core.remoteShareAllowed}get isFederationEnabled(){return!0===this._capabilities?.files_sharing?.federation?.outgoing}get isPublicShareAllowed(){return!0===this._capabilities?.files_sharing?.public?.enabled}get isMailShareAllowed(){return!0===this._capabilities?.files_sharing?.sharebymail?.enabled&&!0===this.isPublicShareAllowed}get defaultExpireDate(){return window.OC.appConfig.core.defaultExpireDate}get defaultInternalExpireDate(){return window.OC.appConfig.core.defaultInternalExpireDate}get defaultRemoteExpireDate(){return window.OC.appConfig.core.defaultRemoteExpireDate}get isResharingAllowed(){return!0===window.OC.appConfig.core.resharingAllowed}get isPasswordForMailSharesRequired(){return!0===this._capabilities.files_sharing?.sharebymail?.password?.enforced}get shouldAlwaysShowUnique(){return!0===this._capabilities.files_sharing?.sharee?.always_show_unique}get allowGroupSharing(){return!0===window.OC.appConfig.core.allowGroupSharing}get maxAutocompleteResults(){return parseInt(window.OC.config["sharing.maxAutocompleteResults"],10)||25}get minSearchStringLength(){return parseInt(window.OC.config["sharing.minSearchStringLength"],10)||0}get passwordPolicy(){return this._capabilities?.password_policy||{}}get allowCustomTokens(){return this._capabilities?.files_sharing?.public?.custom_tokens}get showFederatedSharesAsInternal(){return(0,r.C)("files_sharing","showFederatedSharesAsInternal",!1)}get showFederatedSharesToTrustedServersAsInternal(){return(0,r.C)("files_sharing","showFederatedSharesToTrustedServersAsInternal",!1)}get showExternalSharing(){return(0,r.C)("files_sharing","showExternalSharing",!0)}}},87543(e,t,n){"use strict";n.d(t,{C:()=>m,h:()=>g});var i=n(21777),r=n(44368),s=n(35810),a=n(77815),o=n(63814),l=n(48564);const c={"Content-Type":"application/json"};function d(e=!1){const t=(0,o.KT)("apps/files_sharing/api/v1/shares");return r.Ay.get(t,{headers:c,params:{shared_with_me:e,include_tags:!0}})}function u(){const e=(0,o.KT)("apps/files_sharing/api/v1/remote_shares");return r.Ay.get(e,{headers:c,params:{include_tags:!0}})}function p(){const e=(0,o.KT)("apps/files_sharing/api/v1/shares/pending");return r.Ay.get(e,{headers:c,params:{include_tags:!0}})}function h(){const e=(0,o.KT)("apps/files_sharing/api/v1/remote_shares/pending");return r.Ay.get(e,{headers:c,params:{include_tags:!0}})}function f(){const e=(0,o.KT)("apps/files_sharing/api/v1/deletedshares");return r.Ay.get(e,{headers:c,params:{include_tags:!0}})}function m(e="[]"){const t=e=>"fileRequest"===e.scope&&"enabled"===e.key&&!0===e.value;try{return JSON.parse(e).some(t)}catch(e){return l.A.error("Error while parsing share attributes",{error:e}),!1}}async function g(e=!0,t=!0,r=!1,o=!1,c=[]){const m=[];e&&m.push({promise:d(!0),unmounted:!1},{promise:u(),unmounted:!1}),t&&m.push({promise:d(),unmounted:!1}),r&&m.push({promise:p(),unmounted:!0},{promise:h(),unmounted:!0}),o&&m.push({promise:f(),unmounted:!0});const g=(await Promise.all(m.map(({promise:e})=>e))).flatMap((e,t)=>e.data.ocs.data.map(e=>({entry:e,unmounted:m[t].unmounted})));let v=(await Promise.all(g.map(({entry:e,unmounted:t})=>async function(e,t=!1){try{if(void 0!==e?.remote_id){if(!e.mimetype){const t=(await n.e(857).then(n.bind(n,10857))).default;e.mimetype=t.getType(e.name)}const t="dir"===e.type?"folder":e.type;e.item_type=t||(e.mimetype?"file":"folder"),e.item_mtime=e.mtime,e.file_target=e.file_target||e.mountpoint,e.file_target.includes("TemporaryMountPointName")&&(e.file_target=e.name),e.accepted||(e.item_permissions=s.aX.NONE,e.permissions=s.aX.NONE),e.uid_owner=e.owner,e.displayname_owner=e.owner}t&&(e.item_permissions=s.aX.NONE,e.permissions=s.aX.NONE);const i="folder"===e?.item_type,r=!0===e?.has_preview,o=i?s.vd:s.ZH,l=e.file_source||e.file_id||e.id,c=e.path||e.file_target||e.name,d=`${(0,a.EY)()}${(0,a.ei)()}/${c.replace(/^\/+/,"")}`;let u,p=e.item_mtime?new Date(1e3*e.item_mtime):void 0;return e?.stime>(e?.item_mtime||0)&&(p=new Date(1e3*e.stime)),"share_with"in e&&(u={sharee:{id:e.share_with,"display-name":e.share_with_displayname||e.share_with,type:e.share_type}}),new o({id:l,source:d,owner:e?.uid_owner,mime:e?.mimetype||"application/octet-stream",mtime:p,size:e?.item_size??void 0,permissions:e?.item_permissions||e?.permissions,root:(0,a.ei)(),attributes:{...e,"share-id":e.id,"has-preview":r,"hide-download":1===e?.hide_download,"owner-id":e?.uid_owner,"owner-display-name":e?.displayname_owner,"share-types":e?.share_type,"share-attributes":e?.attributes||"[]",sharees:u,favorite:e?.tags?.includes(window.OC.TAG_FAVORITE)?1:0}})}catch(e){return l.A.error("Error while parsing OCS entry",{error:e}),null}}(e,t)))).filter(e=>null!==e);var w,A;return c.length>0&&(v=v.filter(e=>c.includes(e.attributes?.share_type))),v=(w=v,A="source",Object.values(w.reduce(function(e,t){return(e[t[A]]=e[t[A]]||[]).push(t),e},{}))).map(e=>{const t=e[0];return t.attributes["share-types"]=e.map(e=>e.attributes["share-types"]),t}),{folder:new s.vd({id:0,source:`${(0,a.EY)()}${(0,a.ei)()}`,owner:(0,i.HW)()?.uid||null,root:(0,a.ei)()}),contents:v}}},48564(e,t,n){"use strict";const i=(0,n(35947).YK)().setApp("files_sharing").detectUser().build();n.d(t,["A",0,i])},53168(e,t,n){"use strict";var i=n(71354),r=n.n(i),s=n(76314),a=n.n(s)()(r());a.push([e.id,".action-items>.files-list__row-action-sharing-status{padding-inline:0 !important}.action-items>.files-list__row-action-sharing-status .button-vue__wrapper{flex-direction:row-reverse;gap:var(--default-grid-baseline)}svg.sharing-status__avatar{height:var(--button-inner-size, 32px) !important;width:var(--button-inner-size, 32px) !important;max-height:var(--button-inner-size, 32px) !important;max-width:var(--button-inner-size, 32px) !important;border-radius:var(--button-inner-size, 32px);overflow:hidden}.files-list__row-action-sharing-status .button-vue__text{color:var(--color-primary-element)}.files-list__row-action-sharing-status .button-vue__icon{color:var(--color-primary-element)}","",{version:3,sources:["webpack://./apps/files_sharing/src/files_actions/sharingStatusAction.scss"],names:[],mappings:"AAMA,qDAEC,2BAAA,CAEA,0EAEC,0BAAA,CACA,gCAAA,CAIF,2BACC,gDAAA,CACA,+CAAA,CACA,oDAAA,CACA,mDAAA,CACA,4CAAA,CACA,eAAA,CAIA,yDACC,kCAAA,CAED,yDACC,kCAAA",sourcesContent:["/*\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\n // Only when rendered inline, when not enough space, this is put in the menu\n.action-items > .files-list__row-action-sharing-status {\n\t// align icons with text-less inline actions\n\tpadding-inline: 0 !important;\n\n\t.button-vue__wrapper {\n\t\t// put icon at the end of the button\n\t\tflex-direction: row-reverse;\n\t\tgap: var(--default-grid-baseline);\n\t}\n}\n\nsvg.sharing-status__avatar {\n\theight: var(--button-inner-size, 32px) !important;\n\twidth: var(--button-inner-size, 32px) !important;\n\tmax-height: var(--button-inner-size, 32px) !important;\n\tmax-width: var(--button-inner-size, 32px) !important;\n\tborder-radius: var(--button-inner-size, 32px);\n\toverflow: hidden;\n}\n\n.files-list__row-action-sharing-status {\n\t.button-vue__text {\n\t\tcolor: var(--color-primary-element);\n\t}\n\t.button-vue__icon {\n\t\tcolor: var(--color-primary-element);\n\t}\n}\n"],sourceRoot:""}]);const o=a;n.d(t,["A",0,o])},15914(e,t,n){"use strict";var i=n(71354),r=n.n(i),s=n(76314),a=n.n(s)()(r());a.push([e.id,"\n._fileListFilterAccount_ZW91g {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--default-grid-baseline);\n}\n._fileListFilterAccount__avatar_V0YuN {\n\t/* 24px is the avatar size */\n\tmargin: calc((var(--default-clickable-area) - 24px) / 2);\n}\n._fileListFilterAccount__currentUser_PqQfx {\n\tfont-weight: normal !important;\n}\n","",{version:3,sources:["webpack://./apps/files_sharing/src/components/FileListFilterAccount.vue"],names:[],mappings:";AA4JA;CACA,aAAA;CACA,sBAAA;CACA,iCAAA;AACA;AAEA;CACA,4BAAA;CACA,wDAAA;AACA;AAEA;CACA,8BAAA;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\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilterAccount\": `_fileListFilterAccount_ZW91g`,\n\t\"fileListFilterAccount__avatar\": `_fileListFilterAccount__avatar_V0YuN`,\n\t\"fileListFilterAccount__currentUser\": `_fileListFilterAccount__currentUser_PqQfx`\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","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst 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\tconst 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","const 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\tlet notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tlet [chunkIds, fn, priority] = deferred[i];\n\t\tlet 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\tconst r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tconst 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/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tif(!__webpack_require__.o(exports, key)) {\n\t\t\t\tif(binding === 0) {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, value: definition[i++] });\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: binding });\n\t\t\t\t}\n\t\t\t} else if(binding === 0) { i++; }\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\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=\" + {\"857\":\"c78894d5df34d854f7aa\",\"1598\":\"61f1360608348ac86497\",\"1930\":\"e591eaa03e3a248dca31\",\"4005\":\"79ce3b9cce1ed8b84286\",\"4017\":\"e7952469fd7013d6763c\",\"5236\":\"8e879d97ee553106c876\",\"7859\":\"94ba8355b803c98a5893\",\"8259\":\"c62c545c007df2a740b1\",\"8374\":\"1c6ec75c525cfd72ccec\",\"8689\":\"22ea03649fce27dd0cb7\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop))","const inProgress = {};\nconst 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\tlet script, needAttach;\n\tif(key !== undefined) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tconst 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\tconst onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tconst doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode?.removeChild(script);\n\t\tdoneFns?.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tconst 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};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(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 = 5928;","// set .name for anonymous default exports per ES spec\n// skipped when the property is non-configurable (pre-ES2015 engines),\n// where Object.defineProperty would throw\n__webpack_require__.dn = (x) => {\n\tvar descriptor = Object.getOwnPropertyDescriptor(x, \"name\");\n\tif (!descriptor || (!descriptor.writable && descriptor.configurable)) Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","// execute a CommonJS module body with real module/exports objects, returning the final exports\n__webpack_require__.cjs = (body) => {\n\tconst mod = { exports: {} };\n\tbody.call(mod.exports, mod, mod.exports);\n\treturn mod.exports;\n};","let scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nconst document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript?.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tlet 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\nconst installedChunks = {\n\t5928: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tlet 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\tconst 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\tconst 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\tconst error = new Error();\n\t\t\t\t\tconst 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\tconst errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tconst 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\terror.event = event;\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\nconst webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tlet [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\nconst chunkLoadingGlobal = 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\nlet __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(99770)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","shares","Navigation","getNavigation","register","View","id","name","t","caption","emptyTitle","emptyCaption","icon","AccountPlusSvg","order","columns","getContents","parent","loadState","quota","AccountGroupSvg","LinkSvg","ShareType","Link","FileUploadSvg","Email","then","folder","contents","filter","node","isFileRequest","attributes","__webpack_require__","dn","action","displayName","nodes","n","length","iconSvgInline","enabled","view","exec","isRemote","remote","url","generateOcsUrl","shareBase","axios","post","emit","execBatch","Promise","all","map","this","inline","includes","isFolder","type","FileType","Folder","window","OCP","Files","Router","goToRoute","fileid","String","dir","path","dirname","openfile","undefined","default","DefaultType","HIDDEN","some","remote_id","share_type","RemoteGroup","accepted","delete","options","isExternal","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","sharingStatusAction","A","locals","Object","values","flat","owner","getCurrentUser","uid","title","ownerDisplayName","sharees","sharee","User","user","Group","group","shareTypes","Array","isArray","Team","userId","isGuest","matchMedia","matches","document","querySelector","generateUrl","generateAvatarSvg","isPublicShare","permissions","Permission","SHARE","READ","getSidebar","open","showError","rawUid","getElementsByTagName","getAttribute","currentUser","components_FileListFilterAccountvue_type_script_setup_true_lang_ts","_defineComponent","__name","props","setup","__props","currentUserId","accountFilter","ref","availableAccounts","selectedAccounts","watch","accounts","value","setAccounts","onMounted","setAvailableAccounts","filterAccounts","addEventListener","resetFilter","deselect","onUnmounted","removeEventListener","shownAccounts","computed","sort","sortAccounts","queryParts","toLocaleLowerCase","trim","split","account","every","part","a","b","localeCompare","event","accountId","detail","CustomEvent","__sfc","toggleAccount","selected","find","l10n_dist","NcAvatar","NcButton","NcTextField","FileListFilterAccountvue_type_style_index_0_id_ec2dd1f8_prod_module_true_lang_css_options","FileListFilterAccountvue_type_style_index_0_id_ec2dd1f8_prod_module_true_lang_css","components_FileListFilterAccountvue_type_style_index_0_id_ec2dd1f8_prod_module_true_lang_css","FileListFilterAccount","_vm","_c","_self","_setup","_setupProxy","class","$style","fileListFilterAccount","attrs","label","model","callback","$$v","expression","_e","_v","_l","key","alignment","pressed","variant","wide","on","$event","scopedSlots","_u","fn","_b","fileListFilterAccount__avatar","size","proxy","_s","fileListFilterAccount__currentUser","context","tagName","_availableAccounts","WeakMap","_filterAccounts","AccountFilter","FileListFilter","constructor","super","_classPrivateFieldInitSpec","_defineProperty","_classPrivateFieldSet","subscribe","updateAvailableAccounts","_classPrivateFieldGet","userIds","params","deletedBy","reset","dispatchEvent","chips","text","onclick","updateChips","filterUpdated","available","Map","has","set","Boolean","Remote","sharingConfig","Config","NewFileRequestDialogVue","defineAsyncComponent","e","entry","isPublicUploadEnabled","isPublicShareAllowed","handler","content","spawnDialog","registerSharingViews","addNewFileMenuEntry","newFileRequest","registerDavProperty","nc","oc","ocs","registerFileAction","acceptShareAction","openInFilesAction","rejectShareAction","restoreShareAction","WrappedComponent","wrap","Vue","defineProperty","prototype","get","customElements","define","registerFileListFilter","registerAccountFilter","FilesHeaderNoteToRecipient","instance","registerFileListHeader","note","updated","updateFolder","render","async","el","component","extend","$mount","registerNoteToRecipient","_capabilities","getCapabilities","defaultPermissions","files_sharing","default_permissions","excludeReshareFromEdit","exclude_reshare_from_edit","public","upload","federatedShareDocLink","OC","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","isDefaultExpireDateEnabled","defaultExpireDate","Date","setDate","getDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","defaultInternalExpireDateEnabled","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isFederationEnabled","federation","outgoing","isMailShareAllowed","sharebymail","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","always_show_unique","allowGroupSharing","maxAutocompleteResults","parseInt","config","minSearchStringLength","passwordPolicy","password_policy","allowCustomTokens","custom_tokens","showFederatedSharesAsInternal","showFederatedSharesToTrustedServersAsInternal","showExternalSharing","headers","getShares","shareWithMe","shared_with_me","include_tags","getRemoteShares","getPendingShares","getRemotePendingShares","getDeletedShares","attribute","scope","JSON","parse","error","logger","sharedWithYou","sharedWithOthers","pendingShares","deletedshares","filterTypes","requests","push","promise","unmounted","data","flatMap","response","index","ocsEntry","mimetype","mime","getType","item_type","item_mtime","mtime","file_target","mountpoint","item_permissions","NONE","uid_owner","displayname_owner","hasPreview","has_preview","Node","File","file_source","file_id","source","getRemoteURL","getRootPath","replace","stime","share_with","share_with_displayname","item_size","root","hide_download","favorite","tags","TAG_FAVORITE","ocsEntryToNode","reduce","acc","curr","__WEBPACK_DEFAULT_EXPORT__","getLoggerBuilder","setApp","detectUser","build","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","version","sources","names","mappings","sourcesContent","sourceRoot","defaultDavProperties","defaultDavNamespaces","d","prop","namespace","_chunks_folder_29HuacU_mjs__WEBPACK_IMPORTED_MODULE_4__","s","davNamespaces","davProperties","namespaces","search","l","warn","startsWith","getDavProperties","join","getDavNameSpaces","keys","ns","getDefaultPropfind","getRecentSearch","lastModified","_nextcloud_auth__WEBPACK_IMPORTED_MODULE_0__","HW","_nextcloud_sharing_public__WEBPACK_IMPORTED_MODULE_2__","f","G","defaultRootPath","_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__","dC","defaultRemoteURL","getClient","remoteURL","client","webdav__WEBPACK_IMPORTED_MODULE_3__","UU","setHeaders","token","requesttoken","zo","Gu","patch","headers2","method","fetch","getFavoriteNodes","davRoot","getDirectoryContents","signal","details","includeSelf","filename","result","resultToNode","filesRoot","Error","permString","P","WRITE","CREATE","UPDATE","DELETE","parsePermissions","lastmod","crtime","creationdate","nodeData","isNaN","getTime","displayname","Number","getcontentlength","status","c","FAILED","__webpack_module_cache__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","deferred","O","chunkIds","priority","i","notFulfilled","Infinity","fulfilled","j","splice","r","getter","__esModule","definition","binding","o","enumerable","chunkId","promises","u","obj","hasOwn","inProgress","dataWebpackPrefix","done","script","needAttach","scripts","createElement","charset","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","x","descriptor","getOwnPropertyDescriptor","writable","configurable","cjs","body","mod","scriptUrl","globalThis","importScripts","location","currentScript","toUpperCase","test","p","baseURI","self","href","installedChunks","installedChunkData","resolve","reject","loadingEnded","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files_sharing-init.js?v=a1be7355192df4335279","mappings":"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","sources":["webpack:///nextcloud/apps/files_sharing/src/files_views/shares.ts","webpack:///nextcloud/apps/files_sharing/src/files_actions/acceptShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/files_actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_sharing/src/files_actions/rejectShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/files_actions/restoreShareAction.ts","webpack://nextcloud/./apps/files_sharing/src/files_actions/sharingStatusAction.scss?6b51","webpack:///nextcloud/apps/files_sharing/src/files_actions/sharingStatusAction.ts","webpack:///nextcloud/apps/files_sharing/src/utils/AccountIcon.ts","webpack:///nextcloud/core/src/OC/currentuser.js","webpack:///nextcloud/apps/files_sharing/src/components/FileListFilterAccount.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/files_sharing/src/components/FileListFilterAccount.vue","webpack://nextcloud/./apps/files_sharing/src/components/FileListFilterAccount.vue?f338","webpack://nextcloud/./apps/files_sharing/src/components/FileListFilterAccount.vue?64e4","webpack:///nextcloud/apps/files_sharing/src/files_filters/AccountFilter.ts","webpack:///nextcloud/apps/files_sharing/src/files_newMenu/newFileRequest.ts","webpack:///nextcloud/apps/files_sharing/src/init.ts","webpack:///nextcloud/apps/files_sharing/src/files_headers/noteToRecipient.ts","webpack:///nextcloud/apps/files_sharing/src/services/ConfigService.ts","webpack:///nextcloud/apps/files_sharing/src/services/SharingService.ts","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/files_actions/sharingStatusAction.scss","webpack:///nextcloud/apps/files_sharing/src/components/FileListFilterAccount.vue?vue&type=style&index=0&id=ec2dd1f8&prod&module=true&lang=css","webpack:///nextcloud/node_modules/@nextcloud/files/dist/dav.mjs","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/chunk loaded","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/load script","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/set anonymous default export name","webpack:///nextcloud/webpack/runtime/wrap commonjs module","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport AccountClockSvg from '@mdi/svg/svg/account-clock-outline.svg?raw';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group-outline.svg?raw';\nimport AccountSvg from '@mdi/svg/svg/account-outline.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus-outline.svg?raw';\nimport FileUploadSvg from '@mdi/svg/svg/file-upload-outline.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport DeleteSvg from '@mdi/svg/svg/trash-can-outline.svg?raw';\nimport { getCapabilities } from '@nextcloud/capabilities';\nimport { getNavigation, View } from '@nextcloud/files';\nimport { loadState } from '@nextcloud/initial-state';\nimport { t } from '@nextcloud/l10n';\nimport { ShareType } from '@nextcloud/sharing';\nimport { getContents, isFileRequest } from '../services/SharingService.ts';\nexport const sharesViewId = 'shareoverview';\nexport const sharedWithYouViewId = 'sharingin';\nexport const sharedWithOthersViewId = 'sharingout';\nexport const sharingByLinksViewId = 'sharinglinks';\nexport const deletedSharesViewId = 'deletedshares';\nexport const pendingSharesViewId = 'pendingshares';\nexport const fileRequestViewId = 'filerequest';\nexport default () => {\n const Navigation = getNavigation();\n Navigation.register(new View({\n id: sharesViewId,\n name: t('files_sharing', 'Shares'),\n caption: t('files_sharing', 'Overview of shared files.'),\n emptyTitle: t('files_sharing', 'No shares'),\n emptyCaption: t('files_sharing', 'Files and folders you shared or have been shared with you will show up here'),\n icon: AccountPlusSvg,\n order: 20,\n columns: [],\n getContents: () => getContents(),\n }));\n Navigation.register(new View({\n id: sharedWithYouViewId,\n name: t('files_sharing', 'Shared with you'),\n caption: t('files_sharing', 'List of files that are shared with you.'),\n emptyTitle: t('files_sharing', 'Nothing shared with you yet'),\n emptyCaption: t('files_sharing', 'Files and folders others shared with you will show up here'),\n icon: AccountSvg,\n order: 1,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(true, false, false, false),\n }));\n // Don't show this view if the user has no storage quota\n const storageStats = loadState('files', 'storageStats', { quota: -1 });\n if (storageStats.quota !== 0) {\n Navigation.register(new View({\n id: sharedWithOthersViewId,\n name: t('files_sharing', 'Shared with others'),\n caption: t('files_sharing', 'List of files that you shared with others.'),\n emptyTitle: t('files_sharing', 'Nothing shared yet'),\n emptyCaption: t('files_sharing', 'Files and folders you shared will show up here'),\n icon: AccountGroupSvg,\n order: 2,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false),\n }));\n }\n // Don't show this view if sharing by link is disabled.\n if (getCapabilities().files_sharing?.public.enabled) {\n Navigation.register(new View({\n id: sharingByLinksViewId,\n name: t('files_sharing', 'Shared by link'),\n caption: t('files_sharing', 'List of files that are shared by link.'),\n emptyTitle: t('files_sharing', 'No shared links'),\n emptyCaption: t('files_sharing', 'Files and folders you shared by link will show up here'),\n icon: LinkSvg,\n order: 3,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false, [ShareType.Link]),\n }));\n }\n Navigation.register(new View({\n id: fileRequestViewId,\n name: t('files_sharing', 'File requests'),\n caption: t('files_sharing', 'List of file requests.'),\n emptyTitle: t('files_sharing', 'No file requests'),\n emptyCaption: t('files_sharing', 'File requests you have created will show up here'),\n icon: FileUploadSvg,\n order: 4,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, true, false, false, [ShareType.Link, ShareType.Email])\n .then(({ folder, contents }) => {\n return {\n folder,\n contents: contents.filter((node) => isFileRequest(node.attributes?.['share-attributes'] || [])),\n };\n }),\n }));\n Navigation.register(new View({\n id: deletedSharesViewId,\n name: t('files_sharing', 'Deleted shares'),\n caption: t('files_sharing', 'List of shares you left.'),\n emptyTitle: t('files_sharing', 'No deleted shares'),\n emptyCaption: t('files_sharing', 'Shares you have left will show up here'),\n icon: DeleteSvg,\n order: 5,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, false, true),\n }));\n Navigation.register(new View({\n id: pendingSharesViewId,\n name: t('files_sharing', 'Pending shares'),\n caption: t('files_sharing', 'List of unapproved shares.'),\n emptyTitle: t('files_sharing', 'No pending shares'),\n emptyCaption: t('files_sharing', 'Shares you have received but not approved will show up here'),\n icon: AccountClockSvg,\n order: 6,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, true, false),\n }));\n};\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport CheckSvg from '@mdi/svg/svg/check.svg?raw';\nimport axios from '@nextcloud/axios';\nimport { emit } from '@nextcloud/event-bus';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { pendingSharesViewId } from '../files_views/shares.ts';\nexport const action = {\n id: 'accept-share',\n displayName: ({ nodes }) => n('files_sharing', 'Accept share', 'Accept shares', nodes.length),\n iconSvgInline: () => CheckSvg,\n enabled: ({ nodes, view }) => nodes.length > 0 && view.id === pendingSharesViewId,\n async exec({ nodes }) {\n try {\n const node = nodes[0];\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/pending/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes['share-id'],\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch {\n return false;\n }\n },\n async execBatch({ nodes, view, folder, contents }) {\n return Promise.all(nodes.map((node) => this.exec({\n nodes: [node],\n view,\n folder,\n contents,\n })));\n },\n order: 1,\n inline: () => true,\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 { translate as t } from '@nextcloud/l10n';\nimport { sharedWithOthersViewId, sharedWithYouViewId, sharesViewId, sharingByLinksViewId } from '../files_views/shares.ts';\nexport const action = {\n id: 'files_sharing:open-in-files',\n displayName: () => t('files_sharing', 'Open in Files'),\n iconSvgInline: () => '',\n enabled: ({ view }) => [\n sharesViewId,\n sharedWithYouViewId,\n sharedWithOthersViewId,\n sharingByLinksViewId,\n // Deleted and pending shares are not\n // accessible in the files app.\n ].includes(view.id),\n async exec({ nodes }) {\n const isFolder = nodes[0].type === FileType.Folder;\n window.OCP.Files.Router.goToRoute(null, // use default route\n {\n view: 'files',\n fileid: String(nodes[0].fileid),\n }, {\n // If this node is a folder open the folder in files\n dir: isFolder ? nodes[0].path : nodes[0].dirname,\n // otherwise if this is a file, we should open it\n openfile: isFolder ? undefined : 'true',\n });\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 CloseSvg from '@mdi/svg/svg/close.svg?raw';\nimport axios from '@nextcloud/axios';\nimport { emit } from '@nextcloud/event-bus';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { ShareType } from '@nextcloud/sharing';\nimport { pendingSharesViewId } from '../files_views/shares.ts';\nexport const action = {\n id: 'reject-share',\n displayName: ({ nodes }) => n('files_sharing', 'Reject share', 'Reject shares', nodes.length),\n iconSvgInline: () => CloseSvg,\n enabled: ({ nodes, view }) => {\n if (view.id !== pendingSharesViewId) {\n return false;\n }\n if (nodes.length === 0) {\n return false;\n }\n // disable rejecting group shares from the pending list because they anyway\n // land back into that same list after rejecting them\n if (nodes.some((node) => node.attributes.remote_id\n && node.attributes.share_type === ShareType.RemoteGroup)) {\n return false;\n }\n return true;\n },\n async exec({ nodes }) {\n try {\n const node = nodes[0];\n const isRemote = !!node.attributes.remote;\n const shareBase = isRemote ? 'remote_shares' : 'shares';\n const id = node.attributes['share-id'];\n let url;\n if (node.attributes.accepted === 0) {\n url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/pending/{id}', {\n shareBase,\n id,\n });\n }\n else {\n url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/{id}', {\n shareBase,\n id,\n });\n }\n await axios.delete(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch {\n return false;\n }\n },\n async execBatch({ nodes, view, folder, contents }) {\n return Promise.all(nodes.map((node) => this.exec({ nodes: [node], view, folder, contents })));\n },\n order: 2,\n inline: () => true,\n};\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport ArrowULeftTopSvg from '@mdi/svg/svg/arrow-u-left-top.svg?raw';\nimport axios from '@nextcloud/axios';\nimport { emit } from '@nextcloud/event-bus';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { deletedSharesViewId } from '../files_views/shares.ts';\nexport const action = {\n id: 'restore-share',\n displayName: ({ nodes }) => n('files_sharing', 'Restore share', 'Restore shares', nodes.length),\n iconSvgInline: () => ArrowULeftTopSvg,\n enabled: ({ nodes, view }) => nodes.length > 0 && view.id === deletedSharesViewId,\n async exec({ nodes }) {\n try {\n const node = nodes[0];\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares/{id}', {\n id: node.attributes['share-id'],\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch {\n return false;\n }\n },\n async execBatch({ nodes, view, folder, contents }) {\n return Promise.all(nodes.map((node) => this.exec({ nodes: [node], view, folder, contents })));\n },\n order: 1,\n inline: () => true,\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/sass-loader/dist/cjs.js!./sharingStatusAction.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/sass-loader/dist/cjs.js!./sharingStatusAction.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/*!\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport AccountGroupSvg from '@mdi/svg/svg/account-group-outline.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus-outline.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { showError } from '@nextcloud/dialogs';\nimport { getSidebar, Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { ShareType } from '@nextcloud/sharing';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport CircleSvg from '../../../../core/img/apps/circles.svg?raw';\nimport { generateAvatarSvg } from '../utils/AccountIcon.ts';\nimport './sharingStatusAction.scss';\n/**\n * Check if the node is external (federated)\n *\n * @param node - The node to check\n */\nfunction isExternal(node) {\n return node.attributes?.['is-federated'] ?? false;\n}\nexport const ACTION_SHARING_STATUS = 'sharing-status';\nexport const action = {\n id: ACTION_SHARING_STATUS,\n displayName({ nodes }) {\n const node = nodes[0];\n const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat();\n if (shareTypes.length > 0\n || (node.owner !== getCurrentUser()?.uid || isExternal(node))) {\n return t('files_sharing', 'Shared');\n }\n return '';\n },\n title({ nodes }) {\n const node = nodes[0];\n if (node.owner && (node.owner !== getCurrentUser()?.uid || isExternal(node))) {\n const ownerDisplayName = node?.attributes?.['owner-display-name'];\n return t('files_sharing', 'Shared by {ownerDisplayName}', { ownerDisplayName });\n }\n const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat();\n if (shareTypes.length > 1) {\n return t('files_sharing', 'Shared multiple times with different people');\n }\n const sharees = node.attributes.sharees?.sharee;\n if (!sharees) {\n // No sharees so just show the default message to create a new share\n return t('files_sharing', 'Sharing options');\n }\n const sharee = [sharees].flat()[0]; // the property is sometimes weirdly normalized, so we need to compensate\n switch (sharee?.type) {\n case ShareType.User:\n return t('files_sharing', 'Shared with {user}', { user: sharee['display-name'] });\n case ShareType.Group:\n return t('files_sharing', 'Shared with group {group}', { group: sharee['display-name'] ?? sharee.id });\n default:\n return t('files_sharing', 'Shared with others');\n }\n },\n iconSvgInline({ nodes }) {\n const node = nodes[0];\n const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat();\n // Mixed share types\n if (Array.isArray(node.attributes?.['share-types']) && node.attributes?.['share-types'].length > 1) {\n return AccountPlusSvg;\n }\n // Link shares\n if (shareTypes.includes(ShareType.Link)\n || shareTypes.includes(ShareType.Email)) {\n return LinkSvg;\n }\n // Group shares\n if (shareTypes.includes(ShareType.Group)\n || shareTypes.includes(ShareType.RemoteGroup)) {\n return AccountGroupSvg;\n }\n // Circle shares\n if (shareTypes.includes(ShareType.Team)) {\n return CircleSvg;\n }\n if (node.owner && (node.owner !== getCurrentUser()?.uid || isExternal(node))) {\n return generateAvatarSvg(node.owner, isExternal(node));\n }\n return AccountPlusSvg;\n },\n enabled({ nodes }) {\n if (nodes.length !== 1) {\n return false;\n }\n // Do not leak information about users to public shares\n if (isPublicShare()) {\n return false;\n }\n const node = nodes[0];\n const shareTypes = node.attributes?.['share-types'];\n const isMixed = Array.isArray(shareTypes) && shareTypes.length > 0;\n // If the node is shared multiple times with\n // different share types to the current user\n if (isMixed) {\n return true;\n }\n // If the node is shared by someone else\n if (node.owner !== getCurrentUser()?.uid || isExternal(node)) {\n return true;\n }\n // You need share permissions to share this file\n // and read permissions to see the sidebar\n return (node.permissions & Permission.SHARE) !== 0\n && (node.permissions & Permission.READ) !== 0;\n },\n async exec({ nodes }) {\n // You need read permissions to see the sidebar\n const node = nodes[0];\n if ((node.permissions & Permission.READ) !== 0) {\n const sidebar = getSidebar();\n sidebar.open(node, 'sharing');\n return null;\n }\n // Should not happen as the enabled check should prevent this\n // leaving it here for safety or in case someone calls this action directly\n showError(t('files_sharing', 'You do not have enough permissions to share this file.'));\n return null;\n },\n inline: () => true,\n};\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { generateUrl } from '@nextcloud/router';\n/**\n *\n */\nfunction isDarkMode() {\n return window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches === true\n || document.querySelector('[data-themes*=dark]') !== null;\n}\n/**\n *\n * @param userId\n * @param isGuest\n */\nexport function generateAvatarSvg(userId, isGuest = false) {\n // normal avatar url: /avatar/{userId}/32?guestFallback=true\n // dark avatar url: /avatar/{userId}/32/dark?guestFallback=true\n // guest avatar url: /avatar/guest/{userId}/32\n // guest dark avatar url: /avatar/guest/{userId}/32/dark\n const basePath = isGuest ? `/avatar/guest/${userId}` : `/avatar/${userId}`;\n const darkModePath = isDarkMode() ? '/dark' : '';\n const guestFallback = isGuest ? '' : '?guestFallback=true';\n const url = `${basePath}/32${darkModePath}${guestFallback}`;\n const avatarUrl = generateUrl(url, { userId });\n return `\n\t\t\n\t`;\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n\nconst rawUid = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user')\nconst displayName = document\n\t.getElementsByTagName('head')[0]\n\t.getAttribute('data-user-displayname')\n\nexport const currentUser = rawUid !== undefined ? rawUid : false\n\n/**\n *\n */\nexport function getCurrentUser() {\n\treturn {\n\t\tuid: currentUser,\n\t\tdisplayName,\n\t}\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!./FileListFilterAccount.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!./FileListFilterAccount.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',{class:_vm.$style.fileListFilterAccount},[(_setup.availableAccounts.length > 1)?_c(_setup.NcTextField,{attrs:{\"type\":\"search\",\"label\":_setup.t('files_sharing', 'Filter accounts')},model:{value:(_setup.accountFilter),callback:function ($$v) {_setup.accountFilter=$$v},expression:\"accountFilter\"}}):_vm._e(),_vm._v(\" \"),_vm._l((_setup.shownAccounts),function(account){return _c(_setup.NcButton,{key:account.id,attrs:{\"alignment\":\"start\",\"pressed\":_setup.selectedAccounts.includes(account),\"variant\":\"tertiary\",\"wide\":\"\"},on:{\"update:pressed\":function($event){return _setup.toggleAccount(account.id, $event)}},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c(_setup.NcAvatar,_vm._b({class:_vm.$style.fileListFilterAccount__avatar,attrs:{\"size\":24,\"disable-menu\":\"\",\"hide-status\":\"\"}},'NcAvatar',account,false))]},proxy:true}],null,true)},[_vm._v(\"\\n\\t\\t\"+_vm._s(account.displayName)+\"\\n\\t\\t\"),(account.id === _setup.currentUserId)?_c('span',{class:_vm.$style.fileListFilterAccount__currentUser},[_vm._v(\"\\n\\t\\t\\t(\"+_vm._s(_setup.t('files', 'you'))+\")\\n\\t\\t\")]):_vm._e()])})],2)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","\n import API from \"!../../../../node_modules/style-loader/dist/runtime/injectStylesIntoStyleTag.js\";\n import domAPI from \"!../../../../node_modules/style-loader/dist/runtime/styleDomAPI.js\";\n import insertFn from \"!../../../../node_modules/style-loader/dist/runtime/insertBySelector.js\";\n import setAttributes from \"!../../../../node_modules/style-loader/dist/runtime/setAttributesWithoutAttributes.js\";\n import insertStyleElement from \"!../../../../node_modules/style-loader/dist/runtime/insertStyleElement.js\";\n import styleTagTransformFn from \"!../../../../node_modules/style-loader/dist/runtime/styleTagTransform.js\";\n import content, * as namedExport from \"!!../../../../node_modules/css-loader/dist/cjs.js??clonedRuleSet-3.use[1]!../../../../node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../../../node_modules/vue-loader/lib/index.js??vue-loader-options!./FileListFilterAccount.vue?vue&type=style&index=0&id=ec2dd1f8&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!./FileListFilterAccount.vue?vue&type=style&index=0&id=ec2dd1f8&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./FileListFilterAccount.vue?vue&type=template&id=ec2dd1f8\"\nimport script from \"./FileListFilterAccount.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./FileListFilterAccount.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./FileListFilterAccount.vue?vue&type=style&index=0&id=ec2dd1f8&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 svgAccountMultipleOutline from '@mdi/svg/svg/account-multiple-outline.svg?raw';\nimport { subscribe } from '@nextcloud/event-bus';\nimport { FileListFilter, registerFileListFilter } from '@nextcloud/files';\nimport { t } from '@nextcloud/l10n';\nimport { ShareType } from '@nextcloud/sharing';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport wrap from '@vue/web-component-wrapper';\nimport Vue from 'vue';\nimport FileListFilterAccount from '../components/FileListFilterAccount.vue';\n// once files_sharing 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 tagName = 'files_sharing-file-list-filter-account';\n/**\n * File list filter to filter by owner / sharee\n */\nclass AccountFilter extends FileListFilter {\n #availableAccounts;\n #filterAccounts;\n displayName = t('files_sharing', 'People');\n iconSvgInline = svgAccountMultipleOutline;\n tagName = tagName;\n constructor() {\n super('files_sharing:account', 100);\n this.#availableAccounts = [];\n subscribe('files:list:updated', ({ contents }) => {\n this.updateAvailableAccounts(contents);\n });\n }\n get availableAccounts() {\n return this.#availableAccounts;\n }\n get filterAccounts() {\n return this.#filterAccounts;\n }\n filter(nodes) {\n if (!this.#filterAccounts || this.#filterAccounts.length === 0) {\n return nodes;\n }\n const userIds = this.#filterAccounts.map(({ uid }) => uid);\n // Filter if the owner of the node is in the list of filtered accounts\n return nodes.filter((node) => {\n if (window.OCP.Files.Router.params.view === TRASHBIN_VIEW_ID) {\n const deletedBy = node.attributes?.['trashbin-deleted-by-id'];\n if (deletedBy && userIds.includes(deletedBy)) {\n return true;\n }\n return false;\n }\n // if the owner matches\n if (node.owner && userIds.includes(node.owner)) {\n return true;\n }\n // Or any of the sharees (if only one share this will be an object, otherwise an array. So using `.flat()` to make it always an array)\n const sharees = node.attributes.sharees?.sharee;\n if (sharees && [sharees].flat().some(({ id }) => userIds.includes(id))) {\n return true;\n }\n // If the node provides no information lets keep it\n if (!node.owner && !sharees) {\n return true;\n }\n // Not a valid node for the current filter\n return false;\n });\n }\n reset() {\n this.dispatchEvent(new CustomEvent('reset'));\n }\n /**\n * Set accounts that should be filtered.\n *\n * @param accounts - Account to filter or undefined if inactive.\n */\n setAccounts(accounts) {\n this.#filterAccounts = accounts;\n let chips = [];\n if (this.#filterAccounts && this.#filterAccounts.length > 0) {\n chips = this.#filterAccounts.map(({ displayName, uid }) => ({\n text: displayName,\n user: uid,\n onclick: () => this.dispatchEvent(new CustomEvent('deselect', { detail: uid })),\n }));\n }\n this.updateChips(chips);\n this.filterUpdated();\n }\n /**\n * Update the accounts owning nodes or have nodes shared to them.\n *\n * @param nodes - The current content of the file list.\n */\n updateAvailableAccounts(nodes) {\n const available = new Map();\n for (const node of nodes) {\n const owner = node.owner;\n if (owner && !available.has(owner)) {\n available.set(owner, {\n uid: owner,\n displayName: node.attributes['owner-display-name'] ?? node.owner,\n });\n }\n // ensure sharees is an array (if only one share then it is just an object)\n const sharees = [node.attributes.sharees?.sharee].flat().filter(Boolean);\n for (const sharee of [sharees].flat()) {\n // Skip link shares and other without user\n if (sharee.id === '') {\n continue;\n }\n if (sharee.type !== ShareType.User && sharee.type !== ShareType.Remote) {\n continue;\n }\n // Add if not already added\n if (!available.has(sharee.id)) {\n available.set(sharee.id, {\n uid: sharee.id,\n displayName: sharee['display-name'],\n });\n }\n }\n // lets also handle trashbin\n const deletedBy = node.attributes?.['trashbin-deleted-by-id'];\n if (deletedBy) {\n available.set(deletedBy, {\n uid: deletedBy,\n displayName: node.attributes?.['trashbin-deleted-by-display-name'] || deletedBy,\n });\n }\n }\n this.#availableAccounts = [...available.values()];\n this.dispatchEvent(new CustomEvent('accounts-updated'));\n }\n}\n/**\n * Register the file list filter by owner or sharees\n */\nexport function registerAccountFilter() {\n if (isPublicShare()) {\n // We do not show the filter on public pages - it makes no sense\n return;\n }\n const WrappedComponent = wrap(Vue, FileListFilterAccount);\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 AccountFilter());\n}\n","/**\n * SPDX-FileCopyrightText: 2020 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport FileUploadSvg from '@mdi/svg/svg/file-upload-outline.svg?raw';\nimport { t } from '@nextcloud/l10n';\nimport { isPublicShare } from '@nextcloud/sharing/public';\nimport { spawnDialog } from '@nextcloud/vue/functions/dialog';\nimport { defineAsyncComponent } from 'vue';\nimport Config from '../services/ConfigService.ts';\nconst sharingConfig = new Config();\nconst NewFileRequestDialogVue = defineAsyncComponent(() => import('../components/NewFileRequestDialog.vue'));\nexport const EntryId = 'file-request';\nexport const entry = {\n id: EntryId,\n displayName: t('files_sharing', 'Create file request'),\n iconSvgInline: FileUploadSvg,\n order: 10,\n enabled() {\n // not on public shares\n if (isPublicShare()) {\n return false;\n }\n if (!sharingConfig.isPublicUploadEnabled) {\n return false;\n }\n // We will check for the folder permission on the dialog\n return sharingConfig.isPublicShareAllowed;\n },\n async handler(context, content) {\n spawnDialog(NewFileRequestDialogVue, {\n context,\n content,\n });\n },\n};\n","/*!\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { addNewFileMenuEntry, registerFileAction } from '@nextcloud/files';\nimport { registerDavProperty } from '@nextcloud/files/dav';\nimport { action as acceptShareAction } from './files_actions/acceptShareAction.ts';\nimport { action as openInFilesAction } from './files_actions/openInFilesAction.ts';\nimport { action as rejectShareAction } from './files_actions/rejectShareAction.ts';\nimport { action as restoreShareAction } from './files_actions/restoreShareAction.ts';\nimport { action as sharingStatusAction } from './files_actions/sharingStatusAction.ts';\nimport { registerAccountFilter } from './files_filters/AccountFilter.ts';\nimport registerNoteToRecipient from './files_headers/noteToRecipient.ts';\nimport { entry as newFileRequest } from './files_newMenu/newFileRequest.ts';\nimport registerSharingViews from './files_views/shares.ts';\nregisterSharingViews();\naddNewFileMenuEntry(newFileRequest);\nregisterDavProperty('nc:note', { nc: 'http://nextcloud.org/ns' });\nregisterDavProperty('nc:sharees', { nc: 'http://nextcloud.org/ns' });\nregisterDavProperty('nc:hide-download', { nc: 'http://nextcloud.org/ns' });\nregisterDavProperty('nc:share-attributes', { nc: 'http://nextcloud.org/ns' });\nregisterDavProperty('oc:share-types', { oc: 'http://owncloud.org/ns' });\nregisterDavProperty('ocs:share-permissions', { ocs: 'http://open-collaboration-services.org/ns' });\nregisterFileAction(acceptShareAction);\nregisterFileAction(openInFilesAction);\nregisterFileAction(rejectShareAction);\nregisterFileAction(restoreShareAction);\nregisterFileAction(sharingStatusAction);\nregisterAccountFilter();\n// Add \"note to recipient\" message\nregisterNoteToRecipient();\n","/*!\n * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { registerFileListHeader } from '@nextcloud/files';\nimport Vue from 'vue';\n/**\n * Register the \"note to recipient\" as a files list header\n */\nexport default function registerNoteToRecipient() {\n let FilesHeaderNoteToRecipient;\n let instance;\n registerFileListHeader({\n id: 'note-to-recipient',\n order: 0,\n // Always if there is a note\n enabled: (folder) => Boolean(folder.attributes.note),\n // Update the root folder if needed\n updated: (folder) => {\n if (instance) {\n instance.updateFolder(folder);\n }\n },\n // render simply spawns the component\n render: async (el, folder) => {\n if (FilesHeaderNoteToRecipient === undefined) {\n const { default: component } = await import('../views/FilesHeaderNoteToRecipient.vue');\n FilesHeaderNoteToRecipient = Vue.extend(component);\n }\n instance = new FilesHeaderNoteToRecipient().$mount(el);\n instance.updateFolder(folder);\n },\n });\n}\n","/**\n * SPDX-FileCopyrightText: 2019 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport { getCapabilities } from '@nextcloud/capabilities';\nimport { loadState } from '@nextcloud/initial-state';\nexport default class Config {\n _capabilities;\n constructor() {\n this._capabilities = getCapabilities();\n }\n /**\n * Get default share permissions, if any\n */\n get defaultPermissions() {\n return this._capabilities.files_sharing?.default_permissions;\n }\n /**\n * Should SHARE permission be excluded from \"Allow editing\" bundled permissions\n */\n get excludeReshareFromEdit() {\n return this._capabilities.files_sharing?.exclude_reshare_from_edit === true;\n }\n /**\n * Is public upload allowed on link shares ?\n * This covers File request and Full upload/edit option.\n */\n get isPublicUploadEnabled() {\n return this._capabilities.files_sharing?.public?.upload === true;\n }\n /**\n * Get the federated sharing documentation link\n */\n get federatedShareDocLink() {\n return window.OC.appConfig.core.federatedCloudShareDoc;\n }\n /**\n * Get the default link share expiration date\n */\n get defaultExpirationDate() {\n if (this.isDefaultExpireDateEnabled && this.defaultExpireDate !== null) {\n return new Date(new Date().setDate(new Date().getDate() + this.defaultExpireDate));\n }\n return null;\n }\n /**\n * Get the default internal expiration date\n */\n get defaultInternalExpirationDate() {\n if (this.isDefaultInternalExpireDateEnabled && this.defaultInternalExpireDate !== null) {\n return new Date(new Date().setDate(new Date().getDate() + this.defaultInternalExpireDate));\n }\n return null;\n }\n /**\n * Get the default remote expiration date\n */\n get defaultRemoteExpirationDateString() {\n if (this.isDefaultRemoteExpireDateEnabled && this.defaultRemoteExpireDate !== null) {\n return new Date(new Date().setDate(new Date().getDate() + this.defaultRemoteExpireDate));\n }\n return null;\n }\n /**\n * Are link shares password-enforced ?\n */\n get enforcePasswordForPublicLink() {\n return window.OC.appConfig.core.enforcePasswordForPublicLink === true;\n }\n /**\n * Is password asked by default on link shares ?\n */\n get enableLinkPasswordByDefault() {\n return window.OC.appConfig.core.enableLinkPasswordByDefault === true;\n }\n /**\n * Is link shares expiration enforced ?\n */\n get isDefaultExpireDateEnforced() {\n return window.OC.appConfig.core.defaultExpireDateEnforced === true;\n }\n /**\n * Is there a default expiration date for new link shares ?\n */\n get isDefaultExpireDateEnabled() {\n return window.OC.appConfig.core.defaultExpireDateEnabled === true;\n }\n /**\n * Is internal shares expiration enforced ?\n */\n get isDefaultInternalExpireDateEnforced() {\n return window.OC.appConfig.core.defaultInternalExpireDateEnforced === true;\n }\n /**\n * Is there a default expiration date for new internal shares ?\n */\n get isDefaultInternalExpireDateEnabled() {\n return window.OC.appConfig.core.defaultInternalExpireDateEnabled === true;\n }\n /**\n * Is remote shares expiration enforced ?\n */\n get isDefaultRemoteExpireDateEnforced() {\n return window.OC.appConfig.core.defaultRemoteExpireDateEnforced === true;\n }\n /**\n * Is there a default expiration date for new remote shares ?\n */\n get isDefaultRemoteExpireDateEnabled() {\n return window.OC.appConfig.core.defaultRemoteExpireDateEnabled === true;\n }\n /**\n * Are users on this server allowed to send shares to other servers ?\n */\n get isRemoteShareAllowed() {\n return window.OC.appConfig.core.remoteShareAllowed === true;\n }\n /**\n * Is federation enabled ?\n */\n get isFederationEnabled() {\n return this._capabilities?.files_sharing?.federation?.outgoing === true;\n }\n /**\n * Is public sharing enabled ?\n */\n get isPublicShareAllowed() {\n return this._capabilities?.files_sharing?.public?.enabled === true;\n }\n /**\n * Is sharing my mail (link share) enabled ?\n */\n get isMailShareAllowed() {\n return this._capabilities?.files_sharing?.sharebymail?.enabled === true\n && this.isPublicShareAllowed === true;\n }\n /**\n * Get the default days to link shares expiration\n */\n get defaultExpireDate() {\n return window.OC.appConfig.core.defaultExpireDate;\n }\n /**\n * Get the default days to internal shares expiration\n */\n get defaultInternalExpireDate() {\n return window.OC.appConfig.core.defaultInternalExpireDate;\n }\n /**\n * Get the default days to remote shares expiration\n */\n get defaultRemoteExpireDate() {\n return window.OC.appConfig.core.defaultRemoteExpireDate;\n }\n /**\n * Is resharing allowed ?\n */\n get isResharingAllowed() {\n return window.OC.appConfig.core.resharingAllowed === true;\n }\n /**\n * Is password enforced for mail shares ?\n */\n get isPasswordForMailSharesRequired() {\n return this._capabilities.files_sharing?.sharebymail?.password?.enforced === true;\n }\n /**\n * Always show the email or userid unique sharee label if enabled by the admin\n */\n get shouldAlwaysShowUnique() {\n return this._capabilities.files_sharing?.sharee?.always_show_unique === true;\n }\n /**\n * Is sharing with groups allowed ?\n */\n get allowGroupSharing() {\n return window.OC.appConfig.core.allowGroupSharing === true;\n }\n /**\n * Get the maximum results of a share search\n */\n get maxAutocompleteResults() {\n return parseInt(window.OC.config['sharing.maxAutocompleteResults'], 10) || 25;\n }\n /**\n * Get the minimal string length\n * to initiate a share search\n */\n get minSearchStringLength() {\n return parseInt(window.OC.config['sharing.minSearchStringLength'], 10) || 0;\n }\n /**\n * Get the password policy configuration\n */\n get passwordPolicy() {\n return this._capabilities?.password_policy || {};\n }\n /**\n * Returns true if custom tokens are allowed\n */\n get allowCustomTokens() {\n return this._capabilities?.files_sharing?.public?.custom_tokens;\n }\n /**\n * Show federated shares as internal shares\n *\n * @return\n */\n get showFederatedSharesAsInternal() {\n return loadState('files_sharing', 'showFederatedSharesAsInternal', false);\n }\n /**\n * Show federated shares to trusted servers as internal shares\n *\n * @return\n */\n get showFederatedSharesToTrustedServersAsInternal() {\n return loadState('files_sharing', 'showFederatedSharesToTrustedServersAsInternal', false);\n }\n /**\n * Show the external share ui\n */\n get showExternalSharing() {\n return loadState('files_sharing', 'showExternalSharing', true);\n }\n}\n","/**\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\n// TODO: Fix this instead of disabling ESLint!!!\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport { File, Folder, Permission } from '@nextcloud/files';\nimport { getRemoteURL, getRootPath } from '@nextcloud/files/dav';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport logger from './logger.ts';\nconst headers = {\n 'Content-Type': 'application/json',\n};\n/**\n *\n * @param ocsEntry\n * @param unmounted whether the share is not mounted into the filesystem (pending or deleted)\n */\nasync function ocsEntryToNode(ocsEntry, unmounted = false) {\n try {\n // Federated share handling\n if (ocsEntry?.remote_id !== undefined) {\n if (!ocsEntry.mimetype) {\n const mime = (await import('mime')).default;\n // This won't catch files without an extension, but this is the best we can do\n ocsEntry.mimetype = mime.getType(ocsEntry.name);\n }\n const type = ocsEntry.type === 'dir' ? 'folder' : ocsEntry.type;\n ocsEntry.item_type = type || (ocsEntry.mimetype ? 'file' : 'folder');\n // different naming for remote shares\n ocsEntry.item_mtime = ocsEntry.mtime;\n ocsEntry.file_target = ocsEntry.file_target || ocsEntry.mountpoint;\n if (ocsEntry.file_target.includes('TemporaryMountPointName')) {\n ocsEntry.file_target = ocsEntry.name;\n }\n // If the share is not accepted yet we don't know which permissions it will have\n if (!ocsEntry.accepted) {\n // Need to set permissions to NONE for federated shares\n ocsEntry.item_permissions = Permission.NONE;\n ocsEntry.permissions = Permission.NONE;\n }\n ocsEntry.uid_owner = ocsEntry.owner;\n // TODO: have the real display name stored somewhere\n ocsEntry.displayname_owner = ocsEntry.owner;\n }\n // Pending and deleted shares are not mounted into the user's filesystem,\n // so no file operation can act on them until they are accepted or restored.\n if (unmounted) {\n ocsEntry.item_permissions = Permission.NONE;\n ocsEntry.permissions = Permission.NONE;\n }\n const isFolder = ocsEntry?.item_type === 'folder';\n const hasPreview = ocsEntry?.has_preview === true;\n const Node = isFolder ? Folder : File;\n // If this is an external share that is not yet accepted,\n // we don't have an id. We can fallback to the row id temporarily\n // local shares (this server) use `file_source`, but remote shares (federated) use `file_id`\n const fileid = ocsEntry.file_source || ocsEntry.file_id || ocsEntry.id;\n // Generate path and strip double slashes\n const path = ocsEntry.path || ocsEntry.file_target || ocsEntry.name;\n const source = `${getRemoteURL()}${getRootPath()}/${path.replace(/^\\/+/, '')}`;\n let mtime = ocsEntry.item_mtime ? new Date((ocsEntry.item_mtime) * 1000) : undefined;\n // Prefer share time if more recent than item mtime\n if (ocsEntry?.stime > (ocsEntry?.item_mtime || 0)) {\n mtime = new Date((ocsEntry.stime) * 1000);\n }\n let sharees;\n if ('share_with' in ocsEntry) {\n sharees = {\n sharee: {\n id: ocsEntry.share_with,\n 'display-name': ocsEntry.share_with_displayname || ocsEntry.share_with,\n type: ocsEntry.share_type,\n },\n };\n }\n return new Node({\n id: fileid,\n source,\n owner: ocsEntry?.uid_owner,\n mime: ocsEntry?.mimetype || 'application/octet-stream',\n mtime,\n size: ocsEntry?.item_size ?? undefined,\n permissions: ocsEntry?.item_permissions || ocsEntry?.permissions,\n root: getRootPath(),\n attributes: {\n ...ocsEntry,\n // 'id' is a forbidden property name\n 'share-id': ocsEntry.id,\n 'has-preview': hasPreview,\n 'hide-download': ocsEntry?.hide_download === 1,\n // Also check the sharingStatusAction.ts code\n 'owner-id': ocsEntry?.uid_owner,\n 'owner-display-name': ocsEntry?.displayname_owner,\n 'share-types': ocsEntry?.share_type,\n 'share-attributes': ocsEntry?.attributes || '[]',\n sharees,\n favorite: ocsEntry?.tags?.includes(window.OC.TAG_FAVORITE) ? 1 : 0,\n },\n });\n }\n catch (error) {\n logger.error('Error while parsing OCS entry', { error });\n return null;\n }\n}\n/**\n *\n * @param shareWithMe\n */\nfunction getShares(shareWithMe = false) {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares');\n return axios.get(url, {\n headers,\n params: {\n shared_with_me: shareWithMe,\n include_tags: true,\n },\n });\n}\n/**\n *\n */\nfunction getSharedWithYou() {\n return getShares(true);\n}\n/**\n *\n */\nfunction getSharedWithOthers() {\n return getShares();\n}\n/**\n *\n */\nfunction getRemoteShares() {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n}\n/**\n *\n */\nfunction getPendingShares() {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n}\n/**\n *\n */\nfunction getRemotePendingShares() {\n const url = generateOcsUrl('apps/files_sharing/api/v1/remote_shares/pending');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n}\n/**\n *\n */\nfunction getDeletedShares() {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares');\n return axios.get(url, {\n headers,\n params: {\n include_tags: true,\n },\n });\n}\n/**\n * Check if a file request is enabled\n *\n * @param attributes the share attributes json-encoded array\n */\nexport function isFileRequest(attributes = '[]') {\n const isFileRequest = (attribute) => {\n return attribute.scope === 'fileRequest' && attribute.key === 'enabled' && attribute.value === true;\n };\n try {\n const attributesArray = JSON.parse(attributes);\n return attributesArray.some(isFileRequest);\n }\n catch (error) {\n logger.error('Error while parsing share attributes', { error });\n return false;\n }\n}\n/**\n * Group an array of objects (here Nodes) by a key\n * and return an array of arrays of them.\n *\n * @param nodes Nodes to group\n * @param key The attribute to group by\n */\nfunction groupBy(nodes, key) {\n return Object.values(nodes.reduce(function (acc, curr) {\n (acc[curr[key]] = acc[curr[key]] || []).push(curr);\n return acc;\n }, {}));\n}\n/**\n *\n * @param sharedWithYou\n * @param sharedWithOthers\n * @param pendingShares\n * @param deletedshares\n * @param filterTypes\n */\nexport async function getContents(sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes = []) {\n const requests = [];\n if (sharedWithYou) {\n requests.push({ promise: getSharedWithYou(), unmounted: false }, { promise: getRemoteShares(), unmounted: false });\n }\n if (sharedWithOthers) {\n requests.push({ promise: getSharedWithOthers(), unmounted: false });\n }\n if (pendingShares) {\n requests.push({ promise: getPendingShares(), unmounted: true }, { promise: getRemotePendingShares(), unmounted: true });\n }\n if (deletedshares) {\n requests.push({ promise: getDeletedShares(), unmounted: true });\n }\n const responses = await Promise.all(requests.map(({ promise }) => promise));\n const data = responses.flatMap((response, index) => response.data.ocs.data\n .map((entry) => ({ entry, unmounted: requests[index].unmounted })));\n let contents = (await Promise.all(data.map(({ entry, unmounted }) => ocsEntryToNode(entry, unmounted))))\n .filter((node) => node !== null);\n if (filterTypes.length > 0) {\n contents = contents.filter((node) => filterTypes.includes(node.attributes?.share_type));\n }\n // Merge duplicate shares and group their attributes\n // Also check the sharingStatusAction.ts code\n contents = groupBy(contents, 'source').map((nodes) => {\n const node = nodes[0];\n node.attributes['share-types'] = nodes.map((node) => node.attributes['share-types']);\n return node;\n });\n return {\n folder: new Folder({\n id: 0,\n source: `${getRemoteURL()}${getRootPath()}`,\n owner: getCurrentUser()?.uid || null,\n root: getRootPath(),\n }),\n contents,\n };\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","// 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, `.action-items>.files-list__row-action-sharing-status{padding-inline:0 !important}.action-items>.files-list__row-action-sharing-status .button-vue__wrapper{flex-direction:row-reverse;gap:var(--default-grid-baseline)}svg.sharing-status__avatar{height:var(--button-inner-size, 32px) !important;width:var(--button-inner-size, 32px) !important;max-height:var(--button-inner-size, 32px) !important;max-width:var(--button-inner-size, 32px) !important;border-radius:var(--button-inner-size, 32px);overflow:hidden}.files-list__row-action-sharing-status .button-vue__text{color:var(--color-primary-element)}.files-list__row-action-sharing-status .button-vue__icon{color:var(--color-primary-element)}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/files_actions/sharingStatusAction.scss\"],\"names\":[],\"mappings\":\"AAMA,qDAEC,2BAAA,CAEA,0EAEC,0BAAA,CACA,gCAAA,CAIF,2BACC,gDAAA,CACA,+CAAA,CACA,oDAAA,CACA,mDAAA,CACA,4CAAA,CACA,eAAA,CAIA,yDACC,kCAAA,CAED,yDACC,kCAAA\",\"sourcesContent\":[\"/*\\n * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors\\n * SPDX-License-Identifier: AGPL-3.0-or-later\\n */\\n\\n // Only when rendered inline, when not enough space, this is put in the menu\\n.action-items > .files-list__row-action-sharing-status {\\n\\t// align icons with text-less inline actions\\n\\tpadding-inline: 0 !important;\\n\\n\\t.button-vue__wrapper {\\n\\t\\t// put icon at the end of the button\\n\\t\\tflex-direction: row-reverse;\\n\\t\\tgap: var(--default-grid-baseline);\\n\\t}\\n}\\n\\nsvg.sharing-status__avatar {\\n\\theight: var(--button-inner-size, 32px) !important;\\n\\twidth: var(--button-inner-size, 32px) !important;\\n\\tmax-height: var(--button-inner-size, 32px) !important;\\n\\tmax-width: var(--button-inner-size, 32px) !important;\\n\\tborder-radius: var(--button-inner-size, 32px);\\n\\toverflow: hidden;\\n}\\n\\n.files-list__row-action-sharing-status {\\n\\t.button-vue__text {\\n\\t\\tcolor: var(--color-primary-element);\\n\\t}\\n\\t.button-vue__icon {\\n\\t\\tcolor: var(--color-primary-element);\\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._fileListFilterAccount_ZW91g {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: var(--default-grid-baseline);\n}\n._fileListFilterAccount__avatar_V0YuN {\n\t/* 24px is the avatar size */\n\tmargin: calc((var(--default-clickable-area) - 24px) / 2);\n}\n._fileListFilterAccount__currentUser_PqQfx {\n\tfont-weight: normal !important;\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/components/FileListFilterAccount.vue\"],\"names\":[],\"mappings\":\";AA4JA;CACA,aAAA;CACA,sBAAA;CACA,iCAAA;AACA;AAEA;CACA,4BAAA;CACA,wDAAA;AACA;AAEA;CACA,8BAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"fileListFilterAccount\": `_fileListFilterAccount_ZW91g`,\n\t\"fileListFilterAccount__avatar\": `_fileListFilterAccount__avatar_V0YuN`,\n\t\"fileListFilterAccount__currentUser\": `_fileListFilterAccount__currentUser_PqQfx`\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","// The module cache\nconst __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tconst 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\tconst 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","const 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\tlet notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tlet [chunkIds, fn, priority] = deferred[i];\n\t\tlet 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\tconst r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tconst 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/value functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tif(Array.isArray(definition)) {\n\t\tvar i = 0;\n\t\twhile(i < definition.length) {\n\t\t\tvar key = definition[i++];\n\t\t\tvar binding = definition[i++];\n\t\t\tif(!__webpack_require__.o(exports, key)) {\n\t\t\t\tif(binding === 0) {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, value: definition[i++] });\n\t\t\t\t} else {\n\t\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: binding });\n\t\t\t\t}\n\t\t\t} else if(binding === 0) { i++; }\n\t\t}\n\t} else {\n\t\tfor(var key in definition) {\n\t\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t\t}\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=\" + {\"857\":\"c78894d5df34d854f7aa\",\"1598\":\"61f1360608348ac86497\",\"1930\":\"e591eaa03e3a248dca31\",\"4005\":\"79ce3b9cce1ed8b84286\",\"4017\":\"e7952469fd7013d6763c\",\"5236\":\"8e879d97ee553106c876\",\"7859\":\"94ba8355b803c98a5893\",\"8259\":\"c62c545c007df2a740b1\",\"8374\":\"1c6ec75c525cfd72ccec\",\"8689\":\"22ea03649fce27dd0cb7\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.hasOwn(obj, prop))","const inProgress = {};\nconst 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\tlet script, needAttach;\n\tif(key !== undefined) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tconst 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\tconst onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tconst doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode?.removeChild(script);\n\t\tdoneFns?.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tconst 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};","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(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 = 5928;","// set .name for anonymous default exports per ES spec\n// skipped when the property is non-configurable (pre-ES2015 engines),\n// where Object.defineProperty would throw\n__webpack_require__.dn = (x) => {\n\tvar descriptor = Object.getOwnPropertyDescriptor(x, \"name\");\n\tif (!descriptor || (!descriptor.writable && descriptor.configurable)) Object.defineProperty(x, \"name\", { value: \"default\", configurable: true });\n};","// execute a CommonJS module body with real module/exports objects, returning the final exports\n__webpack_require__.cjs = (body) => {\n\tconst mod = { exports: {} };\n\tbody.call(mod.exports, mod, mod.exports);\n\treturn mod.exports;\n};","let scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nconst document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript?.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tconst scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tlet 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\nconst installedChunks = {\n\t5928: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tlet 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\tconst 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\tconst 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\tconst error = new Error();\n\t\t\t\t\tconst 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\tconst errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tconst 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\terror.event = event;\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\nconst webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tlet [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\nconst chunkLoadingGlobal = 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\nlet __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(99770)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","shares","Navigation","getNavigation","register","View","id","name","t","caption","emptyTitle","emptyCaption","icon","AccountPlusSvg","order","columns","getContents","parent","loadState","quota","AccountGroupSvg","getCapabilities","files_sharing","public","enabled","LinkSvg","ShareType","Link","FileUploadSvg","Email","then","folder","contents","filter","node","isFileRequest","attributes","__webpack_require__","dn","action","displayName","nodes","n","length","iconSvgInline","view","exec","isRemote","remote","url","generateOcsUrl","shareBase","axios","post","emit","execBatch","Promise","all","map","this","inline","includes","isFolder","type","FileType","Folder","window","OCP","Files","Router","goToRoute","fileid","String","dir","path","dirname","openfile","undefined","default","DefaultType","HIDDEN","some","remote_id","share_type","RemoteGroup","accepted","delete","options","isExternal","styleTagTransform","styleTagTransform_default","setAttributes","setAttributesWithoutAttributes_default","insert","insertBySelector_default","bind","domAPI","styleDomAPI_default","insertStyleElement","insertStyleElement_default","injectStylesIntoStyleTag_default","sharingStatusAction","A","locals","Object","values","flat","owner","getCurrentUser","uid","title","ownerDisplayName","sharees","sharee","User","user","Group","group","shareTypes","Array","isArray","Team","userId","isGuest","matchMedia","matches","document","querySelector","generateUrl","generateAvatarSvg","isPublicShare","permissions","Permission","SHARE","READ","getSidebar","open","showError","rawUid","getElementsByTagName","getAttribute","currentUser","components_FileListFilterAccountvue_type_script_setup_true_lang_ts","_defineComponent","__name","props","setup","__props","currentUserId","accountFilter","ref","availableAccounts","selectedAccounts","watch","accounts","value","setAccounts","onMounted","setAvailableAccounts","filterAccounts","addEventListener","resetFilter","deselect","onUnmounted","removeEventListener","shownAccounts","computed","sort","sortAccounts","queryParts","toLocaleLowerCase","trim","split","account","every","part","a","b","localeCompare","event","accountId","detail","CustomEvent","__sfc","toggleAccount","selected","find","l10n_dist","NcAvatar","NcButton","NcTextField","FileListFilterAccountvue_type_style_index_0_id_ec2dd1f8_prod_module_true_lang_css_options","FileListFilterAccountvue_type_style_index_0_id_ec2dd1f8_prod_module_true_lang_css","components_FileListFilterAccountvue_type_style_index_0_id_ec2dd1f8_prod_module_true_lang_css","FileListFilterAccount","_vm","_c","_self","_setup","_setupProxy","class","$style","fileListFilterAccount","attrs","label","model","callback","$$v","expression","_e","_v","_l","key","alignment","pressed","variant","wide","on","$event","scopedSlots","_u","fn","_b","fileListFilterAccount__avatar","size","proxy","_s","fileListFilterAccount__currentUser","context","tagName","_availableAccounts","WeakMap","_filterAccounts","AccountFilter","FileListFilter","constructor","super","_classPrivateFieldInitSpec","_defineProperty","_classPrivateFieldSet","subscribe","updateAvailableAccounts","_classPrivateFieldGet","userIds","params","deletedBy","reset","dispatchEvent","chips","text","onclick","updateChips","filterUpdated","available","Map","has","set","Boolean","Remote","sharingConfig","Config","NewFileRequestDialogVue","defineAsyncComponent","e","entry","isPublicUploadEnabled","isPublicShareAllowed","handler","content","spawnDialog","registerSharingViews","addNewFileMenuEntry","newFileRequest","registerDavProperty","nc","oc","ocs","registerFileAction","acceptShareAction","openInFilesAction","rejectShareAction","restoreShareAction","WrappedComponent","wrap","Vue","defineProperty","prototype","get","customElements","define","registerFileListFilter","registerAccountFilter","FilesHeaderNoteToRecipient","instance","registerFileListHeader","note","updated","updateFolder","render","async","el","component","extend","$mount","registerNoteToRecipient","_capabilities","defaultPermissions","default_permissions","excludeReshareFromEdit","exclude_reshare_from_edit","upload","federatedShareDocLink","OC","appConfig","core","federatedCloudShareDoc","defaultExpirationDate","isDefaultExpireDateEnabled","defaultExpireDate","Date","setDate","getDate","defaultInternalExpirationDate","isDefaultInternalExpireDateEnabled","defaultInternalExpireDate","defaultRemoteExpirationDateString","isDefaultRemoteExpireDateEnabled","defaultRemoteExpireDate","enforcePasswordForPublicLink","enableLinkPasswordByDefault","isDefaultExpireDateEnforced","defaultExpireDateEnforced","defaultExpireDateEnabled","isDefaultInternalExpireDateEnforced","defaultInternalExpireDateEnforced","defaultInternalExpireDateEnabled","isDefaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnforced","defaultRemoteExpireDateEnabled","isRemoteShareAllowed","remoteShareAllowed","isFederationEnabled","federation","outgoing","isMailShareAllowed","sharebymail","isResharingAllowed","resharingAllowed","isPasswordForMailSharesRequired","password","enforced","shouldAlwaysShowUnique","always_show_unique","allowGroupSharing","maxAutocompleteResults","parseInt","config","minSearchStringLength","passwordPolicy","password_policy","allowCustomTokens","custom_tokens","showFederatedSharesAsInternal","showFederatedSharesToTrustedServersAsInternal","showExternalSharing","headers","getShares","shareWithMe","shared_with_me","include_tags","getRemoteShares","getPendingShares","getRemotePendingShares","getDeletedShares","attribute","scope","JSON","parse","error","logger","sharedWithYou","sharedWithOthers","pendingShares","deletedshares","filterTypes","requests","push","promise","unmounted","data","flatMap","response","index","ocsEntry","mimetype","mime","getType","item_type","item_mtime","mtime","file_target","mountpoint","item_permissions","NONE","uid_owner","displayname_owner","hasPreview","has_preview","Node","File","file_source","file_id","source","getRemoteURL","getRootPath","replace","stime","share_with","share_with_displayname","item_size","root","hide_download","favorite","tags","TAG_FAVORITE","ocsEntryToNode","reduce","acc","curr","__WEBPACK_DEFAULT_EXPORT__","getLoggerBuilder","setApp","detectUser","build","___CSS_LOADER_EXPORT___","_node_modules_css_loader_dist_runtime_api_js__WEBPACK_IMPORTED_MODULE_1___default","_node_modules_css_loader_dist_runtime_sourceMaps_js__WEBPACK_IMPORTED_MODULE_0___default","module","version","sources","names","mappings","sourcesContent","sourceRoot","defaultDavProperties","defaultDavNamespaces","d","prop","namespace","_chunks_folder_29HuacU_mjs__WEBPACK_IMPORTED_MODULE_4__","s","davNamespaces","davProperties","namespaces","search","l","warn","startsWith","getDavProperties","join","getDavNameSpaces","keys","ns","getDefaultPropfind","getRecentSearch","lastModified","_nextcloud_auth__WEBPACK_IMPORTED_MODULE_0__","HW","_nextcloud_sharing_public__WEBPACK_IMPORTED_MODULE_2__","f","G","defaultRootPath","_nextcloud_router__WEBPACK_IMPORTED_MODULE_1__","dC","defaultRemoteURL","getClient","remoteURL","client","webdav__WEBPACK_IMPORTED_MODULE_3__","UU","setHeaders","token","requesttoken","zo","Gu","patch","headers2","method","fetch","getFavoriteNodes","davRoot","getDirectoryContents","signal","details","includeSelf","filename","result","resultToNode","filesRoot","Error","permString","P","WRITE","CREATE","UPDATE","DELETE","parsePermissions","lastmod","crtime","creationdate","nodeData","isNaN","getTime","displayname","Number","getcontentlength","status","c","FAILED","__webpack_module_cache__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","deferred","O","chunkIds","priority","i","notFulfilled","Infinity","fulfilled","j","splice","r","getter","__esModule","definition","binding","o","enumerable","chunkId","promises","u","obj","hasOwn","inProgress","dataWebpackPrefix","done","script","needAttach","scripts","createElement","charset","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","x","descriptor","getOwnPropertyDescriptor","writable","configurable","cjs","body","mod","scriptUrl","globalThis","importScripts","location","currentScript","toUpperCase","test","p","baseURI","self","href","installedChunks","installedChunkData","resolve","reject","loadingEnded","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file