From 77cd664ccbf8c0764b4381904a1396c7946c65d6 Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Mon, 3 Aug 2026 17:46:01 +0200 Subject: [PATCH 1/7] IONOS(auth): restore UserAgentForbidden exception class lib/private/User/Session.php and ocs/v1.php both reference OC\Authentication\Exceptions\UserAgentForbidden, but the class file was never carried over when ionos-dev-v33 was rebuilt off vanilla v33.0.6. It exists in neither this branch nor upstream, so every basic-auth request fatals with "Class not found" as soon as core.login_flow_v2.allowed_user_agents is configured. Restore the file verbatim from ionos-dev-v30. Ported from ionos-dev-v30: 93918226fab IONOS(feat): block unknown user agents 30df6368221 IONOS(fix): block unknown user agents --- .../Exceptions/UserAgentForbidden.php | 13 +++++++++++++ 1 file changed, 13 insertions(+) create mode 100644 lib/private/Authentication/Exceptions/UserAgentForbidden.php diff --git a/lib/private/Authentication/Exceptions/UserAgentForbidden.php b/lib/private/Authentication/Exceptions/UserAgentForbidden.php new file mode 100644 index 0000000000000..f76cc5216cbcb --- /dev/null +++ b/lib/private/Authentication/Exceptions/UserAgentForbidden.php @@ -0,0 +1,13 @@ + Date: Mon, 3 Aug 2026 17:51:07 +0200 Subject: [PATCH 2/7] IONOS(files-sharing): show pending shares view only if feature enabled The backend half of this feature is already on ionos-dev-v33: LoadAdditionalListener provides the "accept_default" initial state from the sharing.enable_share_accept system config. Nothing consumed it, so the "Pending shares" navigation entry showed unconditionally. Restore the frontend gate. Upstream moved the file from apps/files_sharing/src/views/shares.ts to src/files_views/shares.ts, so the patch is applied there; the registration is last in the function, so an early return is enough. Default stays false so the entry fails closed. Ported from ionos-dev-v30: 9afff182f4a IONOS(files-sharing): show pending menu only if feature enabled --- apps/files_sharing/src/files_views/shares.ts | 13 +++++++++++++ dist/files_sharing-init.js | 4 ++-- dist/files_sharing-init.js.map | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/apps/files_sharing/src/files_views/shares.ts b/apps/files_sharing/src/files_views/shares.ts index 112bc2909988b..e9671147758e8 100644 --- a/apps/files_sharing/src/files_views/shares.ts +++ b/apps/files_sharing/src/files_views/shares.ts @@ -24,6 +24,15 @@ export const deletedSharesViewId = 'deletedshares' export const pendingSharesViewId = 'pendingshares' export const fileRequestViewId = 'filerequest' +/** + * Checks if share accept approval required by nextcloud configuration. + * + * @return True if share accept approval is required, otherwise false. + */ +function isShareAcceptApprovalRequired(): boolean { + return loadState('files_sharing', 'accept_default', false) +} + export default () => { const Navigation = getNavigation() Navigation.register(new View({ @@ -137,6 +146,10 @@ export default () => { getContents: () => getContents(false, false, false, true), })) + if (!isShareAcceptApprovalRequired()) { + return + } + Navigation.register(new View({ id: pendingSharesViewId, name: t('files_sharing', 'Pending shares'), diff --git a/dist/files_sharing-init.js b/dist/files_sharing-init.js index 69e483c26ea33..0c66e98544144 100644 --- a/dist/files_sharing-init.js +++ b/dist/files_sharing-init.js @@ -1,2 +1,2 @@ -(()=>{var e,t,n,r={81382(e,t,n){"use strict";var r=n(35810),i=n(77815),s=n(65659),a=n(44368),o=n(61338),l=n(53334),c=n(63814);const d='',u='',p='',h='';var f=n(81222),m=n(40715),g=n(87543);const v="shareoverview",A="sharingin",w="sharingout",y="sharinglinks",b="deletedshares",_="pendingshares",C=()=>{const e=(0,r.bh)();e.register(new r.Ss({id:v,name:(0,l.t)("files_sharing","Shares"),caption:(0,l.t)("files_sharing","Overview of shared files."),emptyTitle:(0,l.t)("files_sharing","No shares"),emptyCaption:(0,l.t)("files_sharing","Files and folders you shared or have been shared with you will show up here"),icon:u,order:20,columns:[],getContents:()=>(0,g.h)()})),e.register(new r.Ss({id:A,name:(0,l.t)("files_sharing","Shared with you"),caption:(0,l.t)("files_sharing","List of files that are shared with you."),emptyTitle:(0,l.t)("files_sharing","Nothing shared with you yet"),emptyCaption:(0,l.t)("files_sharing","Files and folders others shared with you will show up here"),icon:'',order:1,parent:v,columns:[],getContents:()=>(0,g.h)(!0,!1,!1,!1)})),0!==(0,f.C)("files","storageStats",{quota:-1}).quota&&e.register(new r.Ss({id:w,name:(0,l.t)("files_sharing","Shared with others"),caption:(0,l.t)("files_sharing","List of files that you shared with others."),emptyTitle:(0,l.t)("files_sharing","Nothing shared yet"),emptyCaption:(0,l.t)("files_sharing","Files and folders you shared will show up here"),icon:d,order:2,parent:v,columns:[],getContents:()=>(0,g.h)(!1,!0,!1,!1)})),e.register(new r.Ss({id:y,name:(0,l.t)("files_sharing","Shared by link"),caption:(0,l.t)("files_sharing","List of files that are shared by link."),emptyTitle:(0,l.t)("files_sharing","No shared links"),emptyCaption:(0,l.t)("files_sharing","Files and folders you shared by link will show up here"),icon:h,order:3,parent:v,columns:[],getContents:()=>(0,g.h)(!1,!0,!1,!1,[m.I.Link])})),e.register(new r.Ss({id:"filerequest",name:(0,l.t)("files_sharing","File requests"),caption:(0,l.t)("files_sharing","List of file requests."),emptyTitle:(0,l.t)("files_sharing","No file requests"),emptyCaption:(0,l.t)("files_sharing","File requests you have created will show up here"),icon:p,order:4,parent:v,columns:[],getContents:()=>(0,g.h)(!1,!0,!1,!1,[m.I.Link,m.I.Email]).then(({folder:e,contents:t})=>({folder:e,contents:t.filter(e=>(0,g.C)(e.attributes?.["share-attributes"]||[]))}))})),e.register(new r.Ss({id:b,name:(0,l.t)("files_sharing","Deleted shares"),caption:(0,l.t)("files_sharing","List of shares you left."),emptyTitle:(0,l.t)("files_sharing","No deleted shares"),emptyCaption:(0,l.t)("files_sharing","Shares you have left will show up here"),icon:'',order:5,parent:v,columns:[],getContents:()=>(0,g.h)(!1,!1,!1,!0)})),e.register(new r.Ss({id:_,name:(0,l.t)("files_sharing","Pending shares"),caption:(0,l.t)("files_sharing","List of unapproved shares."),emptyTitle:(0,l.t)("files_sharing","No pending shares"),emptyCaption:(0,l.t)("files_sharing","Shares you have received but not approved will show up here"),icon:'',order:6,parent:v,columns:[],getContents:()=>(0,g.h)(!1,!1,!0,!1)}))};(Object.getOwnPropertyDescriptor(C,"name")||{}).writable||Object.defineProperty(C,"name",{value:"default",configurable:!0});const x={id:"accept-share",displayName:({nodes:e})=>(0,l.zw)("files_sharing","Accept share","Accept shares",e.length),iconSvgInline:()=>s,enabled:({nodes:e,view:t})=>e.length>0&&t.id===_,async exec({nodes:e}){try{const t=e[0],n=!!t.attributes.remote,r=(0,c.KT)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:n?"remote_shares":"shares",id:t.id});return await a.Ay.post(r),(0,o.Ic)("files:node:deleted",t),!0}catch{return!1}},async execBatch({nodes:e,view:t,folder:n,contents:r}){return Promise.all(e.map(e=>this.exec({nodes:[e],view:t,folder:n,contents:r})))},order:1,inline:()=>!0},E={id:"files_sharing:open-in-files",displayName:()=>(0,l.Tl)("files_sharing","Open in Files"),iconSvgInline:()=>"",enabled:({view:e})=>[v,A,w,y].includes(e.id),async exec({nodes:e}){const t=e[0].type===r.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:r.m9.HIDDEN},D={id:"reject-share",displayName:({nodes:e})=>(0,l.zw)("files_sharing","Reject share","Reject shares",e.length),iconSvgInline:()=>'',enabled:({nodes:e,view:t})=>t.id===_&&0!==e.length&&!e.some(e=>e.attributes.remote_id&&e.attributes.share_type===m.I.RemoteGroup),async exec({nodes:e}){try{const t=e[0],n=t.attributes.remote?"remote_shares":"shares",r=t.id;let i;return i=0===t.attributes.accepted?(0,c.KT)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:n,id:r}):(0,c.KT)("apps/files_sharing/api/v1/{shareBase}/{id}",{shareBase:n,id:r}),await a.Ay.delete(i),(0,o.Ic)("files:node:deleted",t),!0}catch{return!1}},async execBatch({nodes:e,view:t,folder:n,contents:r}){return Promise.all(e.map(e=>this.exec({nodes:[e],view:t,folder:n,contents:r})))},order:2,inline:()=>!0},S={id:"restore-share",displayName:({nodes:e})=>(0,l.zw)("files_sharing","Restore share","Restore 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=(0,c.KT)("apps/files_sharing/api/v1/deletedshares/{id}",{id:t.id});return await a.Ay.post(n),(0,o.Ic)("files:node:deleted",t),!0}catch{return!1}},async execBatch({nodes:e,view:t,folder:n,contents:r}){return Promise.all(e.map(e=>this.exec({nodes:[e],view:t,folder:n,contents:r})))},order:1,inline:()=>!0};var N=n(21777),L=n(85168),T=n(32505);var F=n(85072),P=n.n(F),I=n(97825),H=n.n(I),V=n(77659),M=n.n(V),O=n(55056),k=n.n(O),R=n(10540),$=n.n(R),B=n(41113),U=n.n(B),j=n(53168),q={};function z(e){return e.attributes?.["is-federated"]??!1}q.styleTagTransform=U(),q.setAttributes=k(),q.insert=M().bind(null,"head"),q.domAPI=H(),q.insertStyleElement=$(),P()(j.A,q),j.A&&j.A.locals&&j.A.locals;const G={id:"sharing-status",displayName({nodes:e}){const t=e[0];return Object.values(t?.attributes?.["share-types"]||{}).flat().length>0||t.owner!==(0,N.HW)()?.uid||z(t)?(0,l.Tl)("files_sharing","Shared"):""},title({nodes:e}){const t=e[0];if(t.owner&&(t.owner!==(0,N.HW)()?.uid||z(t))){const e=t?.attributes?.["owner-display-name"];return(0,l.Tl)("files_sharing","Shared by {ownerDisplayName}",{ownerDisplayName:e})}if(Object.values(t?.attributes?.["share-types"]||{}).flat().length>1)return(0,l.Tl)("files_sharing","Shared multiple times with different people");const n=t.attributes.sharees?.sharee;if(!n)return(0,l.Tl)("files_sharing","Sharing options");const r=[n].flat()[0];switch(r?.type){case m.I.User:return(0,l.Tl)("files_sharing","Shared with {user}",{user:r["display-name"]});case m.I.Group:return(0,l.Tl)("files_sharing","Shared with group {group}",{group:r["display-name"]??r.id});default:return(0,l.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?u:n.includes(m.I.Link)||n.includes(m.I.Email)?h:n.includes(m.I.Group)||n.includes(m.I.RemoteGroup)?d:n.includes(m.I.Team)?'':t.owner&&(t.owner!==(0,N.HW)()?.uid||z(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`\n\t\t\n\t`}(t.owner,z(t)):u},enabled({nodes:e}){if(1!==e.length)return!1;if((0,T.f)())return!1;const t=e[0],n=t.attributes?.["share-types"];return!!(Array.isArray(n)&&n.length>0)||!(t.owner===(0,N.HW)()?.uid&&!z(t))||0!==(t.permissions&r.aX.SHARE)&&0!==(t.permissions&r.aX.READ)},async exec({nodes:e}){const t=e[0];return 0!==(t.permissions&r.aX.READ)?((0,r.dC)().open(t,"sharing"),null):((0,L.Qg)((0,l.Tl)("files_sharing","You do not have enough permissions to share this file.")),null)},inline:()=>!0};var W=n(26422),K=n(85471),Y=n(41944),Z=n(74095),X=n(82182);const J=document.getElementsByTagName("head")[0].getAttribute("data-user"),Q=(document.getElementsByTagName("head")[0].getAttribute("data-user-displayname"),void 0!==J&&J),ee=(0,K.pM)({__name:"FileListFilterAccount",props:{filter:null},setup(e){const t=e,n=Q,r=(0,K.KR)(""),i=(0,K.KR)([]),s=(0,K.KR)([]);(0,K.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,K.sV)(()=>{u(t.filter.availableAccounts),s.value=i.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,K.hi)(()=>{t.filter.removeEventListener("accounts-updated",u),t.filter.removeEventListener("reset",d),t.filter.removeEventListener("deselect",c)});const a=(0,K.EW)(()=>{if(!r.value)return[...i.value].sort(o);const e=r.value.toLocaleLowerCase().trim().split(" ");return i.value.filter(t=>e.every(e=>t.user.toLocaleLowerCase().includes(e)||t.displayName.toLocaleLowerCase().includes(e))).sort(o)});function o(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=[],r.value=""}function u(e){e instanceof CustomEvent&&(e=e.detail),i.value=e.map(({uid:e,displayName:t})=>({displayName:t,id:e,user:e}))}return{__sfc:!0,props:t,currentUserId:n,accountFilter:r,availableAccounts:i,selectedAccounts:s,shownAccounts:a,sortAccounts:o,toggleAccount:function(e,t){if(s.value=s.value.filter(({id:t})=>t!==e),t){const t=i.value.find(({id:t})=>t===e);t&&(s.value=[...s.value,t])}},deselect:c,resetFilter:d,setAvailableAccounts:u,t:l.t,NcAvatar:Y.A,NcButton:Z.A,NcTextField:X.A}}});var te=n(15914),ne={};ne.styleTagTransform=U(),ne.setAttributes=k(),ne.insert=M().bind(null,"head"),ne.domAPI=H(),ne.insertStyleElement=$(),P()(te.A,ne);const re=te.A&&te.A.locals?te.A.locals:void 0,ie=(0,n(14486).A)(ee,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(r){return t(n.NcButton,{key:r.id,attrs:{alignment:"start",pressed:n.selectedAccounts.includes(r),variant:"tertiary",wide:""},on:{"update:pressed":function(e){return n.toggleAccount(r.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",r,!1))]},proxy:!0}],null,!0)},[e._v("\n\t\t"+e._s(r.displayName)+"\n\t\t"),r.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=re.locals||re},null,null).exports;function se(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 ae(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 oe(e,t){return e.get(ce(e,t))}function le(e,t,n){return e.set(ce(e,t),n),n}function ce(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 de="files_sharing-file-list-filter-account";var ue=new WeakMap,pe=new WeakMap;class he extends r.L3{constructor(){super("files_sharing:account",100),ae(this,ue,void 0),ae(this,pe,void 0),se(this,"displayName",(0,l.t)("files_sharing","People")),se(this,"iconSvgInline",''),se(this,"tagName",de),le(ue,this,[]),(0,o.B1)("files:list:updated",({contents:e})=>{this.updateAvailableAccounts(e)})}get availableAccounts(){return oe(ue,this)}get filterAccounts(){return oe(pe,this)}filter(e){if(!oe(pe,this)||0===oe(pe,this).length)return e;const t=oe(pe,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){le(pe,this,e);let t=[];oe(pe,this)&&oe(pe,this).length>0&&(t=oe(pe,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 r=[n.attributes.sharees?.sharee].flat().filter(Boolean);for(const e of[r].flat())""!==e.id&&(e.type!==m.I.User&&e.type!==m.I.Remote||t.has(e.id)||t.set(e.id,{uid:e.id,displayName:e["display-name"]}));const i=n.attributes?.["trashbin-deleted-by-id"];i&&t.set(i,{uid:i,displayName:n.attributes?.["trashbin-deleted-by-display-name"]||i})}le(ue,this,[...t.values()]),this.dispatchEvent(new CustomEvent("accounts-updated"))}}var fe=n(98469);const me=new(n(87771).A),ge=(0,K.$V)(()=>Promise.all([n.e(4208),n.e(1598)]).then(n.bind(n,11598))),ve={id:"file-request",displayName:(0,l.t)("files_sharing","Create file request"),iconSvgInline:p,order:10,enabled:()=>!(0,T.f)()&&!!me.isPublicUploadEnabled&&me.isPublicShareAllowed,async handler(e,t){(0,fe.S)(ge,{context:e,content:t})}};C(),(0,r.zj)(ve),(0,i.Yc)("nc:note",{nc:"http://nextcloud.org/ns"}),(0,i.Yc)("nc:sharees",{nc:"http://nextcloud.org/ns"}),(0,i.Yc)("nc:hide-download",{nc:"http://nextcloud.org/ns"}),(0,i.Yc)("nc:share-attributes",{nc:"http://nextcloud.org/ns"}),(0,i.Yc)("oc:share-types",{oc:"http://owncloud.org/ns"}),(0,i.Yc)("ocs:share-permissions",{ocs:"http://open-collaboration-services.org/ns"}),(0,r.Gg)(x),(0,r.Gg)(E),(0,r.Gg)(D),(0,r.Gg)(S),(0,r.Gg)(G),function(){if((0,T.f)())return;const e=(0,W.A)(K.Ay,ie);Object.defineProperty(e.prototype,"attachShadow",{value(){return this}}),Object.defineProperty(e.prototype,"shadowRoot",{get(){return this}}),customElements.define(de,e),(0,r.cZ)(new he)}(),function(){let e,t;(0,r.pJ)({id:"note-to-recipient",order:0,enabled:e=>Boolean(e.attributes.note),updated:e=>{t&&t.updateFolder(e)},render:async(r,i)=>{if(void 0===e){const{default:t}=await Promise.all([n.e(4208),n.e(1404)]).then(n.bind(n,41404));e=K.Ay.extend(t)}t=(new e).$mount(r),t.updateFolder(i)}})}()},87771(e,t,n){"use strict";n.d(t,{A:()=>s});var r=n(87485),i=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,r.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,i.C)("files_sharing","showFederatedSharesAsInternal",!1)}get showFederatedSharesToTrustedServersAsInternal(){return(0,i.C)("files_sharing","showFederatedSharesToTrustedServersAsInternal",!1)}get showExternalSharing(){return(0,i.C)("files_sharing","showExternalSharing",!0)}}},87543(e,t,n){"use strict";n.d(t,{C:()=>m,h:()=>g});var r=n(21777),i=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 i.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 i.Ay.get(e,{headers:c,params:{include_tags:!0}})}function p(){const e=(0,o.KT)("apps/files_sharing/api/v1/shares/pending");return i.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 i.Ay.get(e,{headers:c,params:{include_tags:!0}})}function f(){const e=(0,o.KT)("apps/files_sharing/api/v1/deletedshares");return i.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,i=!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}),i&&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 r="folder"===e?.item_type,i=!0===e?.has_preview,o=r?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,"has-preview":i,"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 A,w;return c.length>0&&(v=v.filter(e=>c.includes(e.attributes?.share_type))),v=(A=v,w="source",Object.values(A.reduce(function(e,t){return(e[t[w]]=e[t[w]]||[]).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,r.HW)()?.uid||null,root:(0,a.ei)()}),contents:v}}},48564(e,t,n){"use strict";n.d(t,{A:()=>r});const r=(0,n(35947).YK)().setApp("files_sharing").detectUser().build()},53168(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(71354),i=n.n(r),s=n(76314),a=n.n(s)()(i());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},15914(e,t,n){"use strict";n.d(t,{A:()=>o});var r=n(71354),i=n.n(r),s=n(76314),a=n.n(s)()(i());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\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"853\":\"b82cc31fdab3eebc6e17\",\"857\":\"3d28157955f39376ab2c\",\"1404\":\"e021afe5d02634220086\",\"1526\":\"ad86f3209aa9a10cd835\",\"1598\":\"f14a7598110cd7e779f4\",\"4941\":\"cf6a232432a967125f9f\",\"6087\":\"20ff0344223a1b0febab\",\"6597\":\"278c016b03eadd2eaaa6\",\"7859\":\"f146280447be8fe16f6d\",\"9337\":\"da67b95f927087fcd0b5\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5928;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5928: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(81382)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","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","action","displayName","nodes","n","length","iconSvgInline","CheckSvg","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","setAttributes","insert","domAPI","insertStyleElement","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","_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","NcAvatar","NcButton","NcTextField","_vm","_c","_self","_setup","_setupProxy","class","$style","fileListFilterAccount","attrs","model","callback","$$v","expression","_e","_v","_l","key","on","$event","scopedSlots","_u","fn","_b","fileListFilterAccount__avatar","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","entry","isPublicUploadEnabled","isPublicShareAllowed","handler","content","spawnDialog","registerSharingViews","addNewFileMenuEntry","newFileRequest","registerDavProperty","nc","oc","ocs","registerFileAction","acceptShareAction","openInFilesAction","rejectShareAction","restoreShareAction","sharingStatusAction","WrappedComponent","wrap","Vue","FileListFilterAccount","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","size","item_size","root","hide_download","favorite","tags","TAG_FAVORITE","ocsEntryToNode","reduce","acc","curr","getLoggerBuilder","setApp","detectUser","build","___CSS_LOADER_EXPORT___","module","defaultDavProperties","defaultDavNamespaces","d","prop","namespace","s","davNamespaces","davProperties","namespaces","search","l","warn","startsWith","getDavProperties","join","getDavNameSpaces","keys","ns","getDefaultPropfind","getRecentSearch","lastModified","defaultRootPath","defaultRemoteURL","getClient","remoteURL","client","setHeaders","token","requesttoken","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","FAILED","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","splice","r","getter","__esModule","definition","o","enumerable","f","e","chunkId","promises","u","obj","hasOwnProperty","done","script","needAttach","scripts","createElement","charset","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","globalThis","importScripts","location","currentScript","toUpperCase","test","p","baseURI","self","href","installedChunks","installedChunkData","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files_sharing-init.js?v=681faefa59cd00f44e47","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","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/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * SPDX-FileCopyrightText: 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 { 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';\n/**\n * Checks if share accept approval required by nextcloud configuration.\n *\n * @return True if share accept approval is required, otherwise false.\n */\nfunction isShareAcceptApprovalRequired() {\n return loadState('files_sharing', 'accept_default', false);\n}\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 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 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 if (!isShareAcceptApprovalRequired()) {\n return;\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.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.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.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 '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\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"853\":\"b82cc31fdab3eebc6e17\",\"857\":\"3d28157955f39376ab2c\",\"1404\":\"e021afe5d02634220086\",\"1526\":\"ad86f3209aa9a10cd835\",\"1598\":\"f14a7598110cd7e779f4\",\"4941\":\"cf6a232432a967125f9f\",\"6087\":\"20ff0344223a1b0febab\",\"6597\":\"278c016b03eadd2eaaa6\",\"7859\":\"f146280447be8fe16f6d\",\"9337\":\"da67b95f927087fcd0b5\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5928;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t5928: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(81382)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","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","action","displayName","nodes","n","length","iconSvgInline","CheckSvg","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","setAttributes","insert","domAPI","insertStyleElement","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","_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","NcAvatar","NcButton","NcTextField","_vm","_c","_self","_setup","_setupProxy","class","$style","fileListFilterAccount","attrs","model","callback","$$v","expression","_e","_v","_l","key","on","$event","scopedSlots","_u","fn","_b","fileListFilterAccount__avatar","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","entry","isPublicUploadEnabled","isPublicShareAllowed","handler","content","spawnDialog","registerSharingViews","addNewFileMenuEntry","newFileRequest","registerDavProperty","nc","oc","ocs","registerFileAction","acceptShareAction","openInFilesAction","rejectShareAction","restoreShareAction","sharingStatusAction","WrappedComponent","wrap","Vue","FileListFilterAccount","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","size","item_size","root","hide_download","favorite","tags","TAG_FAVORITE","ocsEntryToNode","reduce","acc","curr","getLoggerBuilder","setApp","detectUser","build","___CSS_LOADER_EXPORT___","module","defaultDavProperties","defaultDavNamespaces","d","prop","namespace","s","davNamespaces","davProperties","namespaces","search","l","warn","startsWith","getDavProperties","join","getDavNameSpaces","keys","ns","getDefaultPropfind","getRecentSearch","lastModified","defaultRootPath","defaultRemoteURL","getClient","remoteURL","client","setHeaders","token","requesttoken","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","FAILED","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","chunkIds","priority","notFulfilled","Infinity","i","fulfilled","j","splice","r","getter","__esModule","definition","o","enumerable","f","e","chunkId","promises","u","obj","hasOwnProperty","done","script","needAttach","scripts","createElement","charset","setAttribute","src","onScriptComplete","prev","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","nmd","paths","children","scriptUrl","globalThis","importScripts","location","currentScript","toUpperCase","test","p","baseURI","self","href","installedChunks","installedChunkData","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file From 59c303a7d60ff4088234f6021eabefd26199fd8f Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Mon, 3 Aug 2026 17:52:27 +0200 Subject: [PATCH 3/7] IONOS(files): compute templates_enabled from directory config Upstream 64e852c5906 ("only skip template initialization when both skeletondirectory and templatedirectory are empty") replaced the computed "templates_enabled" initial state with a hardcoded true, which removes the only way to hide the "Create templates folder" entry from the New menu. nc-config sets both skeletondirectory and templatedirectory to an empty string (configs/initial-files.config.php), so the entry was back. Restore the computed expression. Unlike ionos-dev-v30, which defaulted both lookups to an empty string, this uses the same SERVERROOT defaults as TemplateManager::initializeTemplateDirectory() (lib/private/Files/ Template/TemplateManager.php:320-323) so an instance that does not configure either value keeps upstream behaviour instead of silently losing the entry. For IONOS builds both are set explicitly, so the outcome is identical to v30. The frontend side (newMenu/newTemplatesFolder.ts) is already upstream and needs no change; the TemplateManager half of 64e852c5906 is left alone. References: c7bcfbf8649 fix: Hide "Create templates folder" option if templates are disabled in configuration (upstream; on ionos-dev-v30 as 7bb09beb80b) 64e852c5906 fix: only skip template initialization when both skeletondirectory and templatedirectory are empty (upstream regression this restores) --- apps/files/lib/Controller/ViewController.php | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/apps/files/lib/Controller/ViewController.php b/apps/files/lib/Controller/ViewController.php index d9a5b24b6416d..37b779f3f874a 100644 --- a/apps/files/lib/Controller/ViewController.php +++ b/apps/files/lib/Controller/ViewController.php @@ -202,7 +202,10 @@ public function index($dir = '', $view = '', $fileid = null) { $this->eventDispatcher->dispatchTyped(new LoadViewer()); } - $this->initialState->provideInitialState('templates_enabled', true); + // IONOS: templates folder creation is disabled by setting both skeletondirectory + // and templatedirectory to an empty string. Defaults mirror TemplateManager so + // that both halves agree on what "unconfigured" means. + $this->initialState->provideInitialState('templates_enabled', ($this->config->getSystemValueString('skeletondirectory', \OC::$SERVERROOT . '/core/skeleton') !== '') || ($this->config->getSystemValueString('templatedirectory', \OC::$SERVERROOT . '/core/skeleton/Templates') !== '')); $this->initialState->provideInitialState('templates_path', $this->templateManager->hasTemplateDirectory() ? $this->templateManager->getTemplatePath() : false); $this->initialState->provideInitialState('templates', $this->templateManager->listCreators()); From 50992295c5726df8097c048611fe44e85886b4e0 Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Mon, 3 Aug 2026 17:55:41 +0200 Subject: [PATCH 4/7] IONOS(files): make user config defaults admin-configurable Let an admin set the instance-wide default for the files user configs via `occ config:app:set files `: getConfigs() now reads the user value with a null default and, when the user has no explicit preference, falls back to the app config before the shipped default. setConfig() coerces booleans with filter_var() and validates strictly so "true"/"false" strings from the API are stored as real booleans. Deviation from ionos-dev-v30: v30 always used getAppValueBool(), which was safe because every entry in ALLOWED_CONFIGS was a boolean back then. NC33 added default_view (string, "files"/"personal"), and coercing that through getAppValueBool() would return true instead of "files" for every user without a stored preference. The fallback is therefore type-aware: getAppValueBool() for boolean defaults, getAppValueString() otherwise. Verified in the dev container: types preserved (default_view stays a string), an admin-set app value becomes the default for users without a preference, a users own preference still wins, and invalid values are still rejected. Ported from ionos-dev-v30: 85edc563c3a feat(files/user-config): make configs admin-configurable 8869c7339be fix(files): strict check of default values --- apps/files/lib/Service/UserConfig.php | 26 ++++++++++++++++++++++---- 1 file changed, 22 insertions(+), 4 deletions(-) diff --git a/apps/files/lib/Service/UserConfig.php b/apps/files/lib/Service/UserConfig.php index dcf30b7796db6..78fcc7136e80b 100644 --- a/apps/files/lib/Service/UserConfig.php +++ b/apps/files/lib/Service/UserConfig.php @@ -7,6 +7,7 @@ namespace OCA\Files\Service; use OCA\Files\AppInfo\Application; +use OCP\AppFramework\Services\IAppConfig; use OCP\IConfig; use OCP\IUser; use OCP\IUserSession; @@ -85,6 +86,7 @@ class UserConfig { public function __construct( protected IConfig $config, IUserSession $userSession, + protected IAppConfig $appConfig, ) { $this->user = $userSession->getUser(); } @@ -146,7 +148,12 @@ public function setConfig(string $key, $value): void { throw new \InvalidArgumentException('Unknown config key'); } - if (!in_array($value, $this->getAllowedConfigValues($key))) { + $isBoolValue = filter_var($value, FILTER_VALIDATE_BOOLEAN, FILTER_NULL_ON_FAILURE); + if ($isBoolValue !== null) { + $value = $isBoolValue; + } + + if (!in_array($value, $this->getAllowedConfigValues($key), true)) { throw new \InvalidArgumentException('Invalid config value'); } @@ -169,9 +176,20 @@ public function getConfigs(): array { $userId = $this->user->getUID(); $userConfigs = array_map(function (string $key) use ($userId) { - $value = $this->config->getUserValue($userId, Application::APP_ID, $key, $this->getDefaultConfigValue($key)); - // If the default is expected to be a boolean, we need to cast the value - if (is_bool($this->getDefaultConfigValue($key)) && is_string($value)) { + $default = $this->getDefaultConfigValue($key); + $value = $this->config->getUserValue($userId, Application::APP_ID, $key, null); + + // The user has no explicit preference, so fall back to the instance-wide + // default an admin can set with `occ config:app:set files `, which in + // turn falls back to the shipped default + if ($value === null) { + $value = is_bool($default) + ? $this->appConfig->getAppValueBool($key, $default) + : $this->appConfig->getAppValueString($key, (string)$default); + } + + // If the default value is expected to be a boolean, we need to cast the value + if (is_bool($default) && is_string($value)) { return $value === '1'; } return $value; From 0955a5ae3b147c6ac31ca0249787eebc024f74af Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Mon, 3 Aug 2026 18:00:30 +0200 Subject: [PATCH 5/7] IONOS(settings): fix unreachable notice for "null" mail transport Upstream rewrote the admin mail settings as a Vue view, and apps/settings/templates/settings/admin/additional-mail.php is now just a mount point, so v30 IONOS patch has no place to apply anymore. The Vue view does carry the equivalent branch, but it can never trigger: smtpMode resolves mail_smtpmode against settingsAdminMail.smtpModeOptions, and Admin\Mail::getForm() only ever offers smtp/sendmail/qmail there. With mail_smtpmode = "null" the lookup yields undefined, the notice is skipped and the v-else form renders instead - with an empty "Send mode" select. Verified in the dev container: smtpModeOptions ids were "smtp" while mail_smtpmode was "null". Compare against the raw config value instead, which is what the v30 template did ($_["mail_smtpmode"] === "null"). This matters for IONOS because nc-config ships mail.config.php with mail_smtpmode = "null", so this page is broken on every IONOS instance. Ported from ionos-dev-v30: 83c6dc582e2 feat(Mailer): hide admin settings for "null" transport --- apps/settings/src/views/AdminSettingsMailServer.vue | 10 +++++++++- dist/settings-vue-settings-admin-mail.js | 4 ++-- dist/settings-vue-settings-admin-mail.js.map | 2 +- 3 files changed, 12 insertions(+), 4 deletions(-) diff --git a/apps/settings/src/views/AdminSettingsMailServer.vue b/apps/settings/src/views/AdminSettingsMailServer.vue index 74b7e794c49db..8b6672f3ecd68 100644 --- a/apps/settings/src/views/AdminSettingsMailServer.vue +++ b/apps/settings/src/views/AdminSettingsMailServer.vue @@ -44,6 +44,14 @@ const initialConfig = loadState<{ }>('settings', 'settingsAdminMailConfig') const mailConfig = ref({ ...initialConfig }) +/** + * Mail delivery is turned off instance-wide via `mail_smtpmode` = "null". + * Checked against the raw config value rather than `smtpMode`, because "null" + * is deliberately not offered in `smtpModeOptions` and so never resolves to an + * option. + */ +const isMailDeliveryDisabled = computed(() => mailConfig.value.mail_smtpmode === 'null') + const smtpMode = computed({ get() { return settingsAdminMail.smtpModeOptions.find((option) => option.id === mailConfig.value.mail_smtpmode) @@ -137,7 +145,7 @@ async function onSubmit() { {{ t('settings', 'The server configuration is read-only so the mail settings cannot be changed using the web interface.') }} - + {{ t('settings', 'Mail delivery is disabled by instance config "{config}".', { config: 'mail_smtpmode' }) }} diff --git a/dist/settings-vue-settings-admin-mail.js b/dist/settings-vue-settings-admin-mail.js index 4d28246689a86..ee14552b50469 100644 --- a/dist/settings-vue-settings-admin-mail.js +++ b/dist/settings-vue-settings-admin-mail.js @@ -1,2 +1,2 @@ -(()=>{"use strict";var t,e,n,i={27541(t,e,n){var i=n(85471),s=n(44368),a=n(85168),o=n(81222),l=n(53334),r=n(68149),m=n(63814),d=n(24606),c=n(32806),p=n(61744),g=n(78928),u=n(62758),f=n(68432),v=n(64426),N=n(59915),_=n(17030),h=n(15502),S=n(71711),b=n(95452),A=n(88856),y=n(47611),C=n(10363),x=n(37222),w=n(35119),M=n(54048),E=n(9494),F=n(27345),T=n(76269),k=n(10431),P=n(65617),O=n(36536),B=n(542),L=n(71902),I=n(93651),G=n(15807),R=n(40825),$=n(50017),D=n(60258),j=n(43280),q=n(66865),U=n(17067),X=n(99927),K=n(52631),W=n(66372),z=n(52198),H=n(11081),J=n(90286),Q=n(42380),Y=n(72723),V=n(62733),Z=n(90429),tt=n(98706),et=n(71153),nt=n(44025),it=n(60729),st=n(48198),at=n(30055),ot=n(57876),lt=n(83194),rt=n(15306),mt=n(42507),dt=n(91122),ct=n(85646),pt=n(71565),gt=n(11264),ut=n(17848),ft=n(99925),vt=n(66768),Nt=n(93939),_t=n(69944),ht=n(51550),St=n(91624),bt=n(6670),At=n(48191),yt=n(80723),Ct=n(26482),xt=n(8740),wt=n(88289),Mt=n(83947),Et=n(371),Ft=n(92511),Tt=n(71912),kt=n(35290),Pt=n(1938),Ot=n(1357),Bt=n(71465),Lt=n(26797),It=n(35908),Gt=(n(21777),n(56143),n(52781),n(3168),n(50188)),Rt=n(82684),$t=n(89878),Dt=(n(61338),n(71639)),jt=n(51569),qt=n(15192),Ut=n(27971),Xt=n(25514),Kt=n(50029),Wt=n(88381),zt=n(8256),Ht=n(974),Jt=n(67964),Qt=n(8818),Yt=n(23610),Vt=(n(55581),n(94205),n(95462),n(23020),n(53429),n(23739),n(71409),n(29928),n(64660),n(18547),n(20511)),Zt=n(69885),te=(n(59656),n(75105),n(92471),n(16406),n(2508));d.N,c.N,p.A,g.N,u.N,f.A,v.N,N.A,h.A,S.A,b.N,_.N,A.N,y.A,C.A,x.N,w.N,M.A,E.N,F.A,T.N,k.N,P.N,O.N,B.A,L.N,I.N,G.N,G.N,R.N,$.N,D.A,j.N,q.A,U.N,It.N,X.N,K.N,W.N,z.N,H.N,J.N,Q.N,Y.N,V.N,Z.N,tt.N,et.N,nt.N,it.default,st.A,at.N,ot.N,lt.A,rt.N,mt.A,dt.N,ct.N,pt.N,gt.N,ut.N,ft.N,vt.A,Nt.N,_t.N,ht.N,St.N,bt.N,At.N,yt.N,Ct.N,xt.N,wt.A,Lt.N,Mt.A,Et.A,Ft.N,Tt.N,kt.N,Pt.N,Ot.N,Bt.N,It.a,Gt.N,Dt.N,Rt.N,jt.N,qt.N,Ut.N,Xt.N,Kt.N,Wt.N,$t.N,zt.N,Ht.N,Jt.N,Qt.N,Yt.A,Symbol.toStringTag,Vt.A,Zt.A,te.yw,Symbol.toStringTag;var ee=n(57268),ne=n(67607),ie=n(88837),se=n(82182);const ae=(0,n(35947).YK)().setApp("settings").detectUser().build(),oe=(0,i.pM)({__name:"AdminSettingsMailServer",setup(t){const e=(0,o.C)("settings","settingsAdminMail"),n=(0,o.C)("settings","settingsAdminMailConfig"),d=(0,i.KR)({...n}),c=(0,i.EW)({get:()=>e.smtpModeOptions.find(t=>t.id===d.value.mail_smtpmode),set(t){d.value.mail_smtpmode=t?.id??""}}),p=(0,i.EW)({get:()=>e.smtpEncryptionOptions.find(t=>t.id===d.value.mail_smtpsecure),set(t){d.value.mail_smtpsecure=t?.id??""}}),g=(0,i.EW)({get:()=>e.smtpSendmailModeOptions.find(t=>t.id===d.value.mail_sendmailmode),set(t){d.value.mail_sendmailmode=t?.id??""}}),u=(0,i.EW)(()=>"********"!==d.value.mail_smtppassword),f=(0,i.EW)(()=>u.value||d.value.mail_smtpname!==n.mail_smtpname),v=(0,i.KR)(!1),N=(0,i.KR)(!1),_=(0,i.KR)("");return{__sfc:!0,settingsAdminMail:e,initialConfig:n,mailConfig:d,smtpMode:c,smtpEncryption:p,smtpSendmailMode:g,hasPasswordChanges:u,hasCredentialChanges:f,isSaving:v,isSendingTestEmail:N,testEmailError:_,testEmail:async function(){_.value="",N.value=!0;try{await s.Ay.post((0,m.Jv)("/settings/admin/mailtest")),(0,a.Te)((0,l.t)("settings","Email sent successfully"))}catch(t){ae.error("Error sending test email",{error:t}),(0,a.Qg)((0,l.t)("settings","Failed to send email")),(0,s.F0)(t)&&"string"==typeof t.response?.data&&(_.value=t.response.data)}finally{N.value=!1}},onSubmit:async function(){await(0,r.C5)(),v.value=!0;try{d.value.mail_smtpauth&&f.value&&await s.Ay.post((0,m.Jv)("/settings/admin/mailsettings/credentials"),{mail_smtppassword:u.value?d.value.mail_smtppassword:void 0,mail_smtpname:d.value.mail_smtpname});const t={...d.value};delete t.mail_smtppassword,delete t.mail_smtpname,await s.Ay.post((0,m.Jv)("/settings/admin/mailsettings"),t),_.value=""}catch(t){return ae.error("Error saving email settings",{error:t}),void(0,a.Qg)((0,l.t)("settings","Failed to save email settings"))}finally{v.value=!1}},t:l.t,NcButton:H.N,NcCheckboxRadioSwitch:J.N,NcLoadingIcon:wt.A,NcPasswordField:Ft.N,NcFormBox:ee.A,NcFormGroup:ft.N,NcNoteCard:Et.A,NcSelect:ne.default,NcSettingsSection:ie.A,NcTextField:se.A}}});var le=n(85072),re=n.n(le),me=n(97825),de=n.n(me),ce=n(77659),pe=n.n(ce),ge=n(55056),ue=n.n(ge),fe=n(10540),ve=n.n(fe),Ne=n(41113),_e=n.n(Ne),he=n(67794),Se={};Se.styleTagTransform=_e(),Se.setAttributes=ue(),Se.insert=pe().bind(null,"head"),Se.domAPI=de(),Se.insertStyleElement=ve(),re()(he.A,Se);const be=he.A&&he.A.locals?he.A.locals:void 0;var Ae=(0,n(14486).A)(oe,function(){var t=this,e=t._self._c,n=t._self._setupProxy;return e(n.NcSettingsSection,{attrs:{"doc-url":n.settingsAdminMail.docUrl,name:n.t("settings","Email server"),description:n.t("settings","It is important to set up this server to be able to send emails, like for password reset and notifications.")}},[n.settingsAdminMail.configIsReadonly?e(n.NcNoteCard,{attrs:{type:"info"}},[t._v("\n\t\t"+t._s(n.t("settings","The server configuration is read-only so the mail settings cannot be changed using the web interface."))+"\n\t")]):t._e(),t._v(" "),"null"===n.smtpMode?.id?e(n.NcNoteCard,{attrs:{type:"info"}},[t._v("\n\t\t"+t._s(n.t("settings",'Mail delivery is disabled by instance config "{config}".',{config:"mail_smtpmode"}))+"\n\t")]):e("form",{class:t.$style.adminSettingsMailServer__form,on:{submit:function(t){return t.preventDefault(),n.onSubmit.apply(null,arguments)}}},[e(n.NcFormBox,[e(n.NcSelect,{attrs:{"input-label":n.t("settings","Send mode"),options:n.settingsAdminMail.smtpModeOptions,required:""},model:{value:n.smtpMode,callback:function(t){n.smtpMode=t},expression:"smtpMode"}}),t._v(" "),"smtp"===n.smtpMode?.id?e(n.NcSelect,{attrs:{"input-label":n.t("settings","Encryption"),options:n.settingsAdminMail.smtpEncryptionOptions,required:""},model:{value:n.smtpEncryption,callback:function(t){n.smtpEncryption=t},expression:"smtpEncryption"}}):"sendmail"===n.smtpMode?.id?e(n.NcSelect,{attrs:{"input-label":n.t("settings","Sendmail mode"),options:n.settingsAdminMail.smtpSendmailModeOptions,required:""},model:{value:n.smtpSendmailMode,callback:function(t){n.smtpSendmailMode=t},expression:"smtpSendmailMode"}}):t._e(),t._v(" "),e(n.NcCheckboxRadioSwitch,{attrs:{type:"switch"},model:{value:n.mailConfig.mail_noverify,callback:function(e){t.$set(n.mailConfig,"mail_noverify",e)},expression:"mailConfig.mail_noverify"}},[t._v("\n\t\t\t\t"+t._s(n.t("settings","Disable certificate verification (insecure)"))+"\n\t\t\t")])],1),t._v(" "),e(n.NcFormGroup,{attrs:{label:n.t("settings","From address")}},[e(n.NcFormBox,{attrs:{row:""}},[e(n.NcTextField,{attrs:{label:n.t("settings","Email")},model:{value:n.mailConfig.mail_from_address,callback:function(e){t.$set(n.mailConfig,"mail_from_address",e)},expression:"mailConfig.mail_from_address"}}),t._v(" "),e(n.NcTextField,{attrs:{label:n.t("settings","Domain")},scopedSlots:t._u([{key:"icon",fn:function(){return[e("div",{staticStyle:{"line-height":"1"}},[t._v("\n\t\t\t\t\t\t\t@\n\t\t\t\t\t\t")])]},proxy:!0}]),model:{value:n.mailConfig.mail_domain,callback:function(e){t.$set(n.mailConfig,"mail_domain",e)},expression:"mailConfig.mail_domain"}})],1)],1),t._v(" "),e(n.NcFormGroup,{directives:[{name:"show",rawName:"v-show",value:"smtp"===n.smtpMode?.id,expression:"smtpMode?.id === 'smtp'"}],attrs:{label:n.t("settings","Server address")}},[e(n.NcFormBox,{attrs:{row:""}},[e(n.NcTextField,{attrs:{label:n.t("settings","Host"),name:"mail_smtphost"},model:{value:n.mailConfig.mail_smtphost,callback:function(e){t.$set(n.mailConfig,"mail_smtphost",e)},expression:"mailConfig.mail_smtphost"}}),t._v(" "),e(n.NcTextField,{attrs:{label:n.t("settings","Port"),type:"number",max:"65535",min:"1",name:"mail_smtpport"},scopedSlots:t._u([{key:"icon",fn:function(){return[e("div",{staticStyle:{"line-height":"1"}},[t._v("\n\t\t\t\t\t\t\t:\n\t\t\t\t\t\t")])]},proxy:!0}]),model:{value:n.mailConfig.mail_smtpport,callback:function(e){t.$set(n.mailConfig,"mail_smtpport",e)},expression:"mailConfig.mail_smtpport"}})],1)],1),t._v(" "),e(n.NcFormGroup,{directives:[{name:"show",rawName:"v-show",value:"smtp"===n.smtpMode?.id,expression:"smtpMode?.id === 'smtp'"}],attrs:{label:n.t("settings","Authentication")}},[e(n.NcCheckboxRadioSwitch,{attrs:{type:"switch"},model:{value:n.mailConfig.mail_smtpauth,callback:function(e){t.$set(n.mailConfig,"mail_smtpauth",e)},expression:"mailConfig.mail_smtpauth"}},[t._v("\n\t\t\t\t"+t._s(n.t("settings","Authentication required"))+"\n\t\t\t")]),t._v(" "),e(n.NcFormBox,{directives:[{name:"show",rawName:"v-show",value:n.mailConfig.mail_smtpauth,expression:"mailConfig.mail_smtpauth"}]},[e(n.NcTextField,{attrs:{label:n.t("settings","Login"),name:"mail_smtpname"},model:{value:n.mailConfig.mail_smtpname,callback:function(e){t.$set(n.mailConfig,"mail_smtpname",e)},expression:"mailConfig.mail_smtpname"}}),t._v(" "),e(n.NcPasswordField,{attrs:{label:n.t("settings","Password"),"show-trailing-button":n.hasPasswordChanges,name:"mail_smtppassword"},model:{value:n.mailConfig.mail_smtppassword,callback:function(e){t.$set(n.mailConfig,"mail_smtppassword",e)},expression:"mailConfig.mail_smtppassword"}})],1)],1),t._v(" "),e("div",{class:t.$style.adminSettingsMailServer__formAction},[e(n.NcButton,{attrs:{disabled:n.isSendingTestEmail,variant:"success"},on:{click:n.testEmail},scopedSlots:t._u([n.isSendingTestEmail?{key:"icon",fn:function(){return[e(n.NcLoadingIcon)]},proxy:!0}:null],null,!0)},[t._v("\n\t\t\t\t"+t._s(n.isSendingTestEmail?n.t("settings","Sending test email…"):n.t("settings","Send test email"))+"\n\t\t\t")]),t._v(" "),e(n.NcButton,{attrs:{disabled:n.isSaving,type:"submit",variant:"primary"},scopedSlots:t._u([n.isSaving?{key:"icon",fn:function(){return[e(n.NcLoadingIcon)]},proxy:!0}:null],null,!0)},[t._v("\n\t\t\t\t"+t._s(n.isSaving?n.t("settings","Saving…"):n.t("settings","Save settings"))+"\n\t\t\t")])],1)],1),t._v(" "),n.testEmailError?e(n.NcNoteCard,{attrs:{type:"error"}},[t._v("\n\t\t"+t._s(n.testEmailError)+"\n\t")]):t._e()],1)},[],!1,function(t){this.$style=be.locals||be},null,null);const ye=Ae.exports;new i.Ay(ye).$mount("#vue-admin-settings-mail")},67794(t,e,n){n.d(e,{A:()=>l});var i=n(71354),s=n.n(i),a=n(76314),o=n.n(a)()(s());o.push([t.id,"\n._adminSettingsMailServer__form_hqpau {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(2.5 * var(--default-grid-baseline));\n\n\tmax-width: 600px !important;\n}\n._adminSettingsMailServer__formAction_fbriG {\n\tdisplay: flex;\n\tjustify-content: end;\n\tgap: var(--default-grid-baseline);\n}\n","",{version:3,sources:["webpack://./apps/settings/src/views/AdminSettingsMailServer.vue"],names:[],mappings:";AA2PA;CACA,aAAA;CACA,sBAAA;CACA,6CAAA;;CAEA,2BAAA;AACA;AAEA;CACA,aAAA;CACA,oBAAA;CACA,iCAAA;AACA",sourcesContent:["\x3c!--\n - SPDX-FileCopyrightText: 2026 Nextcloud GmbH and Nextcloud contributors\n - SPDX-License-Identifier: AGPL-3.0-or-later\n--\x3e\n\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"adminSettingsMailServer__form\": `_adminSettingsMailServer__form_hqpau`,\n\t\"adminSettingsMailServer__formAction\": `_adminSettingsMailServer__formAction_fbriG`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"853\":\"b82cc31fdab3eebc6e17\",\"1526\":\"ad86f3209aa9a10cd835\",\"4941\":\"cf6a232432a967125f9f\",\"5862\":\"580b9c2e231a9169a12f\",\"6087\":\"20ff0344223a1b0febab\",\"6597\":\"278c016b03eadd2eaaa6\",\"6798\":\"55fb835b251fd3f7de19\",\"7471\":\"b4ac70873a3ab192efd0\",\"7859\":\"f146280447be8fe16f6d\",\"9337\":\"da67b95f927087fcd0b5\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 775;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t775: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(27541)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","N","Symbol","toStringTag","getLoggerBuilder","setApp","detectUser","build","_defineComponent","__name","setup","__props","settingsAdminMail","loadState","initialConfig","mailConfig","ref","smtpMode","computed","get","smtpModeOptions","find","option","id","value","mail_smtpmode","set","smtpEncryption","smtpEncryptionOptions","mail_smtpsecure","smtpSendmailMode","smtpSendmailModeOptions","mail_sendmailmode","hasPasswordChanges","mail_smtppassword","hasCredentialChanges","mail_smtpname","isSaving","isSendingTestEmail","testEmailError","__sfc","testEmail","axios","post","generateUrl","showSuccess","t","error","logger","showError","isAxiosError","response","data","onSubmit","confirmPassword","mail_smtpauth","undefined","config","NcButton","NcCheckboxRadioSwitch","NcLoadingIcon","NcPasswordField","NcFormBox","NcFormGroup","NcNoteCard","NcSelect","NcSettingsSection","NcTextField","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","component","_vm","this","_c","_self","_setup","_setupProxy","attrs","docUrl","configIsReadonly","_v","_s","_e","class","$style","adminSettingsMailServer__form","on","$event","preventDefault","apply","arguments","model","callback","$$v","expression","mail_noverify","$set","mail_from_address","scopedSlots","_u","key","fn","staticStyle","proxy","mail_domain","directives","name","rawName","mail_smtphost","mail_smtpport","adminSettingsMailServer__formAction","context","Vue","AdminSettingsMailServer","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","Promise","all","reduce","promises","u","obj","prop","prototype","hasOwnProperty","l","url","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","type","target","head","appendChild","nmd","paths","children","scriptUrl","globalThis","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"settings-vue-settings-admin-mail.js?v=73b65f3dd192d9b582c7","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/node_modules/@nextcloud/vue/dist/index.mjs","webpack:///nextcloud/apps/settings/src/logger.ts","webpack:///nextcloud/apps/settings/src/views/AdminSettingsMailServer.vue?vue&type=script&setup=true&lang=ts","webpack:///nextcloud/apps/settings/src/views/AdminSettingsMailServer.vue","webpack://nextcloud/./apps/settings/src/views/AdminSettingsMailServer.vue?14c9","webpack://nextcloud/./apps/settings/src/views/AdminSettingsMailServer.vue?2cea","webpack:///nextcloud/apps/settings/src/admin-settings-mail.ts","webpack:///nextcloud/apps/settings/src/views/AdminSettingsMailServer.vue?vue&type=style&index=0&id=7931d655&prod&module=true&lang=css","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar [chunkIds, fn, priority] = deferred[i];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud-ui-legacy:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","import { N as NcActionButton } from \"./chunks/NcActionButton-K4jUGMlW.mjs\";\nimport { N as NcActionButtonGroup } from \"./chunks/NcActionButtonGroup-B95wg_Q6.mjs\";\nimport NcActionCaption from \"./Components/NcActionCaption.mjs\";\nimport { N as NcActionCheckbox } from \"./chunks/NcActionCheckbox-23CmleUh.mjs\";\nimport { N as NcActionInput } from \"./chunks/NcActionInput-B_9GOTi6.mjs\";\nimport NcActionLink from \"./Components/NcActionLink.mjs\";\nimport { N as NcActionRadio } from \"./chunks/NcActionRadio-Dd3CsuiD.mjs\";\nimport NcActionRouter from \"./Components/NcActionRouter.mjs\";\nimport { N as NcActions } from \"./chunks/NcActions-Ca_2vj8f.mjs\";\nimport NcActionSeparator from \"./Components/NcActionSeparator.mjs\";\nimport NcActionText from \"./Components/NcActionText.mjs\";\nimport { N as NcActionTextEditable } from \"./chunks/NcActionTextEditable-YqvZGY07.mjs\";\nimport { N as NcAppContent } from \"./chunks/NcAppContent-HZ-Lp090.mjs\";\nimport NcAppContentDetails from \"./Components/NcAppContentDetails.mjs\";\nimport NcAppContentList from \"./Components/NcAppContentList.mjs\";\nimport { N as NcAppNavigation } from \"./chunks/NcAppNavigation-BPqJExo6.mjs\";\nimport { N as NcAppNavigationCaption } from \"./chunks/NcAppNavigationCaption-Bt51pgle.mjs\";\nimport NcAppNavigationIconBullet from \"./Components/NcAppNavigationIconBullet.mjs\";\nimport { N as NcAppNavigationItem } from \"./chunks/NcAppNavigationItem-DcKt7SjF.mjs\";\nimport NcAppNavigationList from \"./Components/NcAppNavigationList.mjs\";\nimport { N as NcAppNavigationNew } from \"./chunks/NcAppNavigationNew-B5ikLvxM.mjs\";\nimport { N as NcAppNavigationNewItem } from \"./chunks/NcAppNavigationNewItem-BqhwbJsJ.mjs\";\nimport { N as NcAppNavigationSearch } from \"./chunks/NcAppNavigationSearch-B6u1Ln1_.mjs\";\nimport { N as NcAppNavigationSettings } from \"./chunks/NcAppNavigationSettings-BfysBg80.mjs\";\nimport NcAppNavigationSpacer from \"./Components/NcAppNavigationSpacer.mjs\";\nimport { N as NcAppSettingsDialog } from \"./chunks/NcAppSettingsDialog-D0M18YFD.mjs\";\nimport { N as NcAppSettingsSection } from \"./chunks/NcAppSettingsSection-BjQllLEA.mjs\";\nimport { N as NcAppSettingsShortcutsSection } from \"./chunks/NcAppSettingsShortcutsSection-DblUBaWP.mjs\";\nimport { N as NcAppSidebar } from \"./chunks/NcAppSidebar-Bljse39J.mjs\";\nimport { N as NcAppSidebarHeader } from \"./chunks/NcAppSidebarHeader-CBE4tNYb.mjs\";\nimport NcAppSidebarTab from \"./Components/NcAppSidebarTab.mjs\";\nimport { N as NcAssistantButton } from \"./chunks/NcAssistantButton-BdUkhzq1.mjs\";\nimport NcAssistantContent from \"./Components/NcAssistantContent.mjs\";\nimport { N as NcAssistantIcon } from \"./chunks/NcAssistantIcon-DCx6AaSW.mjs\";\nimport { N as NcAvatar } from \"./chunks/NcAvatar-CGnqUtoy.mjs\";\nimport { u } from \"./chunks/NcAvatar-CGnqUtoy.mjs\";\nimport { N as NcBlurHash } from \"./chunks/NcBlurHash-KSj0HXbX.mjs\";\nimport { N as NcBreadcrumb } from \"./chunks/NcBreadcrumb-DH2FV6QI.mjs\";\nimport { N as NcBreadcrumbs } from \"./chunks/NcBreadcrumbs-DrYYSHAS.mjs\";\nimport { N as NcButton } from \"./chunks/NcButton-BgppWSl9.mjs\";\nimport { N as NcCheckboxRadioSwitch } from \"./chunks/NcCheckboxRadioSwitch-D4IV4zWy.mjs\";\nimport { N as NcCollectionList } from \"./chunks/NcCollectionList-BbmBJ4ET.mjs\";\nimport { N as NcColorPicker } from \"./chunks/NcColorPicker-Bzzw1uKu.mjs\";\nimport { N as NcContent } from \"./chunks/NcContent-DpGM2KRx.mjs\";\nimport { N as NcCounterBubble } from \"./chunks/NcCounterBubble-oxV8oMlX.mjs\";\nimport { N as NcDashboardWidget } from \"./chunks/NcDashboardWidget-NOuL4APU.mjs\";\nimport { N as NcDashboardWidgetItem } from \"./chunks/NcDashboardWidgetItem-CBW263ij.mjs\";\nimport { N as NcDateTime } from \"./chunks/NcDateTime-enXYuwj8.mjs\";\nimport NcDateTimePicker from \"./Components/NcDateTimePicker.mjs\";\nimport NcDateTimePickerNative from \"./Components/NcDateTimePickerNative.mjs\";\nimport { N as NcDialog } from \"./chunks/NcDialog-BCCBuI6f.mjs\";\nimport { N as NcDialogButton } from \"./chunks/NcDialogButton-DpA4mqr-.mjs\";\nimport NcEllipsisedOption from \"./Components/NcEllipsisedOption.mjs\";\nimport { N as NcEmojiPicker } from \"./chunks/NcEmojiPicker-C4jCrwQY.mjs\";\nimport NcEmptyContent from \"./Components/NcEmptyContent.mjs\";\nimport { N as NcFilePicker } from \"./chunks/NcFilePicker-DCPi6JGg.mjs\";\nimport { N as NcFormBox } from \"./chunks/NcFormBox-DtoCXLMx.mjs\";\nimport { N as NcFormBoxButton } from \"./chunks/NcFormBoxButton-BQi11xQX.mjs\";\nimport { N as NcFormBoxCopyButton } from \"./chunks/NcFormBoxCopyButton-BkunQ3me.mjs\";\nimport { N as NcFormBoxSwitch } from \"./chunks/NcFormBoxSwitch-E6sxPL4n.mjs\";\nimport { N as NcFormGroup } from \"./chunks/NcFormGroup-DblLoFMf.mjs\";\nimport NcGuestContent from \"./Components/NcGuestContent.mjs\";\nimport { N as NcHeaderButton } from \"./chunks/NcHeaderButton-DXdY8gct.mjs\";\nimport { N as NcHeaderMenu } from \"./chunks/NcHeaderMenu-BZnnbLTo.mjs\";\nimport { N as NcHighlight } from \"./chunks/index-CxTT94_h.mjs\";\nimport { N as NcHotkey } from \"./chunks/NcHotkey-CLLtt9LG.mjs\";\nimport { N as NcHotkeyList } from \"./chunks/NcHotkeyList-Co7MBL5U.mjs\";\nimport { N as NcIconSvgWrapper } from \"./chunks/NcIconSvgWrapper-Bui9PhAS.mjs\";\nimport { N as NcInputField } from \"./chunks/NcInputField-j5EyU7QH.mjs\";\nimport { N as NcListItem } from \"./chunks/NcListItem-D0JDzXkL.mjs\";\nimport { N as NcListItemIcon } from \"./chunks/NcListItemIcon-D35XZDGI.mjs\";\nimport NcLoadingIcon from \"./Components/NcLoadingIcon.mjs\";\nimport NcModal from \"./Components/NcModal.mjs\";\nimport NcNoteCard from \"./Components/NcNoteCard.mjs\";\nimport { N as NcPasswordField } from \"./chunks/NcPasswordField-HQK5d_nv.mjs\";\nimport { N as NcPopover } from \"./chunks/NcPopover-UAg26Qdd.mjs\";\nimport { N as NcProgressBar } from \"./chunks/NcProgressBar-D7zYeXBH.mjs\";\nimport { N as NcRadioGroup } from \"./chunks/NcRadioGroup-BbBX9X2J.mjs\";\nimport { N as NcRadioGroupButton } from \"./chunks/NcRadioGroupButton-BkxlxjIA.mjs\";\nimport { N as NcRelatedResourcesPanel } from \"./chunks/NcRelatedResourcesPanel-BdmY-Mly.mjs\";\nimport { N as NcMentionBubble } from \"./chunks/index-BCqXu_og.mjs\";\nimport { r } from \"./chunks/index-BCqXu_og.mjs\";\nimport { N as NcAutoCompleteResult, a as NcRichContenteditable } from \"./chunks/NcRichContenteditable-BcTSkyeW.mjs\";\nimport \"@nextcloud/auth\";\nimport \"@nextcloud/axios\";\nimport \"@nextcloud/router\";\nimport \"@nextcloud/sharing/public\";\nimport \"@vueuse/core\";\nimport \"vue\";\nimport \"vue-router\";\nimport { a, g, b, c, s, d } from \"./chunks/referencePickerModal-BQExd0w6.mjs\";\nimport { N, h, c as c2, i, e, r as r2, f, a as a2 } from \"./chunks/customPickerElements-DLFtgReB.mjs\";\nimport \"unist-builder\";\nimport \"unist-util-visit-parents\";\nimport \"./chunks/logger-D3RVzcfQ.mjs\";\nimport { N as NcRichText } from \"./chunks/NcRichText-DZgAb6-3.mjs\";\nimport { N as NcSelect } from \"./chunks/NcSelect-FwcxH76q.mjs\";\nimport { N as NcTextField } from \"./chunks/NcTextField-ByDOTNvC.mjs\";\nimport \"@nextcloud/event-bus\";\nimport { N as NcSavingIndicatorIcon } from \"./chunks/NcSavingIndicatorIcon-U7AIamCl.mjs\";\nimport { N as NcSelectTags } from \"./chunks/NcSelectTags-yZfa_z_z.mjs\";\nimport { N as NcSelectUsers } from \"./chunks/NcSelectUsers-5r-vvEVy.mjs\";\nimport { N as NcSettingsInputText } from \"./chunks/NcSettingsInputText-BwnkZzWL.mjs\";\nimport { N as NcSettingsSection } from \"./chunks/NcSettingsSection-Dz_b9rcq.mjs\";\nimport { N as NcSettingsSelectGroup } from \"./chunks/NcSettingsSelectGroup-CUM0vkbN.mjs\";\nimport { N as NcTextArea } from \"./chunks/NcTextArea-fGUiK7p2.mjs\";\nimport { N as NcThemeProvider } from \"./chunks/NcThemeProvider-BA_zMjAf.mjs\";\nimport { N as NcTimezonePicker } from \"./chunks/NcTimezonePicker-Cok_NaVd.mjs\";\nimport { N as NcUserBubble } from \"./chunks/NcUserBubble-Csw7PXyG.mjs\";\nimport { N as NcUserStatusIcon } from \"./chunks/NcUserStatusIcon-Cq1RnTfF.mjs\";\nimport NcVNodes from \"./Components/NcVNodes.mjs\";\nimport { useFormatDateTime, useFormatRelativeTime, useFormatTime } from \"./Composables/useFormatDateTime.mjs\";\nimport { useHotKey } from \"./Composables/useHotKey.mjs\";\nimport { useIsDarkTheme, useIsDarkThemeElement } from \"./Composables/useIsDarkTheme.mjs\";\nimport { isFullscreenState, useIsFullscreen } from \"./Composables/useIsFullscreen.mjs\";\nimport { MOBILE_BREAKPOINT, MOBILE_SMALL_BREAKPOINT, isMobileState, useIsMobile, useIsSmallMobile } from \"./Composables/useIsMobile.mjs\";\nimport { isA11yActivation } from \"./Functions/a11y.mjs\";\nimport { getEnabledContactsMenuActions, registerContactsMenuAction } from \"./Functions/contactsMenu.mjs\";\nimport { spawnDialog } from \"./Functions/dialog.mjs\";\nimport { E, a as a3, e as e2, g as g2, s as s2 } from \"./chunks/emoji-Dtn2mDf7.mjs\";\nimport { checkIfDarkTheme, isDarkTheme } from \"./Functions/isDarkTheme.mjs\";\nimport { preloadImage } from \"./Functions/preloadImage.mjs\";\nimport { usernameToColor } from \"./Functions/usernameToColor.mjs\";\nimport directive from \"./Directives/Focus.mjs\";\nimport directive$1 from \"./Directives/Linkify.mjs\";\nimport \"./Directives/Tooltip.mjs\";\nimport { default as default2 } from \"./Mixins/clickOutsideOptions.mjs\";\nimport { default as default3 } from \"./Mixins/isFullscreen.mjs\";\nimport { default as default4 } from \"./Mixins/isMobile.mjs\";\nimport { VTooltip } from \"floating-vue\";\nimport { VTooltip as VTooltip2 } from \"floating-vue\";\nconst NcComponents = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsSectionShortcuts: NcAppSettingsShortcutsSection,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NcDirectives = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({\n __proto__: null,\n Focus: directive,\n Linkify: directive$1,\n Tooltip: VTooltip\n}, Symbol.toStringTag, { value: \"Module\" }));\nconst NextcloudVuePlugin = {\n install(Vue) {\n Object.entries(NcComponents).forEach(([name, component]) => {\n Vue.component(component.name || name, component);\n });\n Object.entries(NcDirectives).forEach(([name, directive2]) => {\n Vue.directive(name, directive2);\n });\n }\n};\nexport {\n E as EmojiSkinTone,\n directive as Focus,\n directive$1 as Linkify,\n MOBILE_BREAKPOINT,\n MOBILE_SMALL_BREAKPOINT,\n NcActionButton,\n NcActionButtonGroup,\n NcActionCaption,\n NcActionCheckbox,\n NcActionInput,\n NcActionLink,\n NcActionRadio,\n NcActionRouter,\n NcActionSeparator,\n NcActionText,\n NcActionTextEditable,\n NcActions,\n NcAppContent,\n NcAppContentDetails,\n NcAppContentList,\n NcAppNavigation,\n NcAppNavigationCaption,\n NcAppNavigationIconBullet,\n NcAppNavigationItem,\n NcAppNavigationList,\n NcAppNavigationNew,\n NcAppNavigationNewItem,\n NcAppNavigationSearch,\n NcAppNavigationSettings,\n NcAppNavigationSpacer,\n NcAppSettingsDialog,\n NcAppSettingsSection,\n NcAppSettingsShortcutsSection as NcAppSettingsSectionShortcuts,\n NcAppSettingsShortcutsSection,\n NcAppSidebar,\n NcAppSidebarHeader,\n NcAppSidebarTab,\n NcAssistantButton,\n NcAssistantContent,\n NcAssistantIcon,\n NcAutoCompleteResult,\n NcAvatar,\n NcBlurHash,\n NcBreadcrumb,\n NcBreadcrumbs,\n NcButton,\n NcCheckboxRadioSwitch,\n NcCollectionList,\n NcColorPicker,\n NcContent,\n NcCounterBubble,\n N as NcCustomPickerRenderResult,\n NcDashboardWidget,\n NcDashboardWidgetItem,\n NcDateTime,\n NcDateTimePicker,\n NcDateTimePickerNative,\n NcDialog,\n NcDialogButton,\n NcEllipsisedOption,\n NcEmojiPicker,\n NcEmptyContent,\n NcFilePicker,\n NcFormBox,\n NcFormBoxButton,\n NcFormBoxCopyButton,\n NcFormBoxSwitch,\n NcFormGroup,\n NcGuestContent,\n NcHeaderButton,\n NcHeaderMenu,\n NcHighlight,\n NcHotkey,\n NcHotkeyList,\n NcIconSvgWrapper,\n NcInputField,\n NcListItem,\n NcListItemIcon,\n NcLoadingIcon,\n NcMentionBubble,\n NcModal,\n NcNoteCard,\n NcPasswordField,\n NcPopover,\n NcProgressBar,\n NcRadioGroup,\n NcRadioGroupButton,\n NcRelatedResourcesPanel,\n NcRichContenteditable,\n NcRichText,\n NcSavingIndicatorIcon,\n NcSelect,\n NcSelectTags,\n NcSelectUsers,\n NcSettingsInputText,\n NcSettingsSection,\n NcSettingsSelectGroup,\n NcTextArea,\n NcTextField,\n NcThemeProvider,\n NcTimezonePicker,\n NcUserBubble,\n NcUserStatusIcon,\n NcVNodes,\n NextcloudVuePlugin,\n VTooltip2 as Tooltip,\n a as anyLinkProviderId,\n checkIfDarkTheme,\n default2 as clickOutsideOptions,\n a3 as emojiAddRecent,\n e2 as emojiSearch,\n g2 as getCurrentSkinTone,\n getEnabledContactsMenuActions,\n g as getLinkWithPicker,\n b as getProvider,\n c as getProviders,\n h as hasInteractiveView,\n isA11yActivation,\n c2 as isCustomPickerElementRegistered,\n isDarkTheme,\n default3 as isFullscreen,\n isFullscreenState,\n default4 as isMobile,\n isMobileState,\n i as isWidgetRegistered,\n preloadImage,\n registerContactsMenuAction,\n e as registerCustomPickerElement,\n r2 as registerWidget,\n f as renderCustomPickerElement,\n a2 as renderWidget,\n r as richEditor,\n s as searchProvider,\n s2 as setCurrentSkinTone,\n d as sortProviders,\n spawnDialog,\n useFormatDateTime,\n useFormatRelativeTime,\n useFormatTime,\n useHotKey,\n useIsDarkTheme,\n useIsDarkThemeElement,\n useIsFullscreen,\n useIsMobile,\n useIsSmallMobile,\n u as userStatus,\n usernameToColor\n};\n//# sourceMappingURL=index.mjs.map\n","/**\n * SPDX-FileCopyrightText: 2020 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('settings')\n .detectUser()\n .build();\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!./AdminSettingsMailServer.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!./AdminSettingsMailServer.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(_setup.NcSettingsSection,{attrs:{\"doc-url\":_setup.settingsAdminMail.docUrl,\"name\":_setup.t('settings', 'Email server'),\"description\":_setup.t('settings', 'It is important to set up this server to be able to send emails, like for password reset and notifications.')}},[(_setup.settingsAdminMail.configIsReadonly)?_c(_setup.NcNoteCard,{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('settings', 'The server configuration is read-only so the mail settings cannot be changed using the web interface.'))+\"\\n\\t\")]):_vm._e(),_vm._v(\" \"),(_setup.isMailDeliveryDisabled)?_c(_setup.NcNoteCard,{attrs:{\"type\":\"info\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.t('settings', 'Mail delivery is disabled by instance config \"{config}\".', { config: 'mail_smtpmode' }))+\"\\n\\t\")]):_c('form',{class:_vm.$style.adminSettingsMailServer__form,on:{\"submit\":function($event){$event.preventDefault();return _setup.onSubmit.apply(null, arguments)}}},[_c(_setup.NcFormBox,[_c(_setup.NcSelect,{attrs:{\"input-label\":_setup.t('settings', 'Send mode'),\"options\":_setup.settingsAdminMail.smtpModeOptions,\"required\":\"\"},model:{value:(_setup.smtpMode),callback:function ($$v) {_setup.smtpMode=$$v},expression:\"smtpMode\"}}),_vm._v(\" \"),(_setup.smtpMode?.id === 'smtp')?_c(_setup.NcSelect,{attrs:{\"input-label\":_setup.t('settings', 'Encryption'),\"options\":_setup.settingsAdminMail.smtpEncryptionOptions,\"required\":\"\"},model:{value:(_setup.smtpEncryption),callback:function ($$v) {_setup.smtpEncryption=$$v},expression:\"smtpEncryption\"}}):(_setup.smtpMode?.id === 'sendmail')?_c(_setup.NcSelect,{attrs:{\"input-label\":_setup.t('settings', 'Sendmail mode'),\"options\":_setup.settingsAdminMail.smtpSendmailModeOptions,\"required\":\"\"},model:{value:(_setup.smtpSendmailMode),callback:function ($$v) {_setup.smtpSendmailMode=$$v},expression:\"smtpSendmailMode\"}}):_vm._e(),_vm._v(\" \"),_c(_setup.NcCheckboxRadioSwitch,{attrs:{\"type\":\"switch\"},model:{value:(_setup.mailConfig.mail_noverify),callback:function ($$v) {_vm.$set(_setup.mailConfig, \"mail_noverify\", $$v)},expression:\"mailConfig.mail_noverify\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Disable certificate verification (insecure)'))+\"\\n\\t\\t\\t\")])],1),_vm._v(\" \"),_c(_setup.NcFormGroup,{attrs:{\"label\":_setup.t('settings', 'From address')}},[_c(_setup.NcFormBox,{attrs:{\"row\":\"\"}},[_c(_setup.NcTextField,{attrs:{\"label\":_setup.t('settings', 'Email')},model:{value:(_setup.mailConfig.mail_from_address),callback:function ($$v) {_vm.$set(_setup.mailConfig, \"mail_from_address\", $$v)},expression:\"mailConfig.mail_from_address\"}}),_vm._v(\" \"),_c(_setup.NcTextField,{attrs:{\"label\":_setup.t('settings', 'Domain')},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticStyle:{\"line-height\":\"1\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t@\\n\\t\\t\\t\\t\\t\\t\")])]},proxy:true}]),model:{value:(_setup.mailConfig.mail_domain),callback:function ($$v) {_vm.$set(_setup.mailConfig, \"mail_domain\", $$v)},expression:\"mailConfig.mail_domain\"}})],1)],1),_vm._v(\" \"),_c(_setup.NcFormGroup,{directives:[{name:\"show\",rawName:\"v-show\",value:(_setup.smtpMode?.id === 'smtp'),expression:\"smtpMode?.id === 'smtp'\"}],attrs:{\"label\":_setup.t('settings', 'Server address')}},[_c(_setup.NcFormBox,{attrs:{\"row\":\"\"}},[_c(_setup.NcTextField,{attrs:{\"label\":_setup.t('settings', 'Host'),\"name\":\"mail_smtphost\"},model:{value:(_setup.mailConfig.mail_smtphost),callback:function ($$v) {_vm.$set(_setup.mailConfig, \"mail_smtphost\", $$v)},expression:\"mailConfig.mail_smtphost\"}}),_vm._v(\" \"),_c(_setup.NcTextField,{attrs:{\"label\":_setup.t('settings', 'Port'),\"type\":\"number\",\"max\":\"65535\",\"min\":\"1\",\"name\":\"mail_smtpport\"},scopedSlots:_vm._u([{key:\"icon\",fn:function(){return [_c('div',{staticStyle:{\"line-height\":\"1\"}},[_vm._v(\"\\n\\t\\t\\t\\t\\t\\t\\t:\\n\\t\\t\\t\\t\\t\\t\")])]},proxy:true}]),model:{value:(_setup.mailConfig.mail_smtpport),callback:function ($$v) {_vm.$set(_setup.mailConfig, \"mail_smtpport\", $$v)},expression:\"mailConfig.mail_smtpport\"}})],1)],1),_vm._v(\" \"),_c(_setup.NcFormGroup,{directives:[{name:\"show\",rawName:\"v-show\",value:(_setup.smtpMode?.id === 'smtp'),expression:\"smtpMode?.id === 'smtp'\"}],attrs:{\"label\":_setup.t('settings', 'Authentication')}},[_c(_setup.NcCheckboxRadioSwitch,{attrs:{\"type\":\"switch\"},model:{value:(_setup.mailConfig.mail_smtpauth),callback:function ($$v) {_vm.$set(_setup.mailConfig, \"mail_smtpauth\", $$v)},expression:\"mailConfig.mail_smtpauth\"}},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.t('settings', 'Authentication required'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcFormBox,{directives:[{name:\"show\",rawName:\"v-show\",value:(_setup.mailConfig.mail_smtpauth),expression:\"mailConfig.mail_smtpauth\"}]},[_c(_setup.NcTextField,{attrs:{\"label\":_setup.t('settings', 'Login'),\"name\":\"mail_smtpname\"},model:{value:(_setup.mailConfig.mail_smtpname),callback:function ($$v) {_vm.$set(_setup.mailConfig, \"mail_smtpname\", $$v)},expression:\"mailConfig.mail_smtpname\"}}),_vm._v(\" \"),_c(_setup.NcPasswordField,{attrs:{\"label\":_setup.t('settings', 'Password'),\"show-trailing-button\":_setup.hasPasswordChanges,\"name\":\"mail_smtppassword\"},model:{value:(_setup.mailConfig.mail_smtppassword),callback:function ($$v) {_vm.$set(_setup.mailConfig, \"mail_smtppassword\", $$v)},expression:\"mailConfig.mail_smtppassword\"}})],1)],1),_vm._v(\" \"),_c('div',{class:_vm.$style.adminSettingsMailServer__formAction},[_c(_setup.NcButton,{attrs:{\"disabled\":_setup.isSendingTestEmail,\"variant\":\"success\"},on:{\"click\":_setup.testEmail},scopedSlots:_vm._u([(_setup.isSendingTestEmail)?{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon)]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.isSendingTestEmail ? _setup.t('settings', 'Sending test email…') : _setup.t('settings', 'Send test email'))+\"\\n\\t\\t\\t\")]),_vm._v(\" \"),_c(_setup.NcButton,{attrs:{\"disabled\":_setup.isSaving,\"type\":\"submit\",\"variant\":\"primary\"},scopedSlots:_vm._u([(_setup.isSaving)?{key:\"icon\",fn:function(){return [_c(_setup.NcLoadingIcon)]},proxy:true}:null],null,true)},[_vm._v(\"\\n\\t\\t\\t\\t\"+_vm._s(_setup.isSaving ? _setup.t('settings', 'Saving…') : _setup.t('settings', 'Save settings'))+\"\\n\\t\\t\\t\")])],1)],1),_vm._v(\" \"),(_setup.testEmailError)?_c(_setup.NcNoteCard,{attrs:{\"type\":\"error\"}},[_vm._v(\"\\n\\t\\t\"+_vm._s(_setup.testEmailError)+\"\\n\\t\")]):_vm._e()],1)\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!./AdminSettingsMailServer.vue?vue&type=style&index=0&id=7931d655&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!./AdminSettingsMailServer.vue?vue&type=style&index=0&id=7931d655&prod&module=true&lang=css\";\n export default content && content.locals ? content.locals : undefined;\n","import { render, staticRenderFns } from \"./AdminSettingsMailServer.vue?vue&type=template&id=7931d655\"\nimport script from \"./AdminSettingsMailServer.vue?vue&type=script&setup=true&lang=ts\"\nexport * from \"./AdminSettingsMailServer.vue?vue&type=script&setup=true&lang=ts\"\nimport style0 from \"./AdminSettingsMailServer.vue?vue&type=style&index=0&id=7931d655&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: 2023 Nextcloud GmbH and Nextcloud contributors\n * SPDX-License-Identifier: AGPL-3.0-or-later\n */\nimport Vue from 'vue';\nimport AdminSettingsMailServer from './views/AdminSettingsMailServer.vue';\nconst app = new Vue(AdminSettingsMailServer);\napp.$mount('#vue-admin-settings-mail');\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._adminSettingsMailServer__form_hqpau {\n\tdisplay: flex;\n\tflex-direction: column;\n\tgap: calc(2.5 * var(--default-grid-baseline));\n\n\tmax-width: 600px !important;\n}\n._adminSettingsMailServer__formAction_fbriG {\n\tdisplay: flex;\n\tjustify-content: end;\n\tgap: var(--default-grid-baseline);\n}\n`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/settings/src/views/AdminSettingsMailServer.vue\"],\"names\":[],\"mappings\":\";AAmQA;CACA,aAAA;CACA,sBAAA;CACA,6CAAA;;CAEA,2BAAA;AACA;AAEA;CACA,aAAA;CACA,oBAAA;CACA,iCAAA;AACA\",\"sourcesContent\":[\"\\n\\n\\n\\n\\n\\n\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\n___CSS_LOADER_EXPORT___.locals = {\n\t\"adminSettingsMailServer__form\": `_adminSettingsMailServer__form_hqpau`,\n\t\"adminSettingsMailServer__formAction\": `_adminSettingsMailServer__formAction_fbriG`\n};\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.f = {};\n// This file contains only the entry chunk.\n// The chunk loading function for additional chunks\n__webpack_require__.e = (chunkId) => {\n\treturn Promise.all(Object.keys(__webpack_require__.f).reduce((promises, key) => {\n\t\t__webpack_require__.f[key](chunkId, promises);\n\t\treturn promises;\n\t}, []));\n};","// This function allow to reference async chunks\n__webpack_require__.u = (chunkId) => {\n\t// return url for filenames based on template\n\treturn \"\" + chunkId + \"-\" + chunkId + \".js?v=\" + {\"853\":\"b82cc31fdab3eebc6e17\",\"1526\":\"ad86f3209aa9a10cd835\",\"4941\":\"cf6a232432a967125f9f\",\"5862\":\"580b9c2e231a9169a12f\",\"6087\":\"20ff0344223a1b0febab\",\"6597\":\"278c016b03eadd2eaaa6\",\"6798\":\"55fb835b251fd3f7de19\",\"7471\":\"b4ac70873a3ab192efd0\",\"7859\":\"f146280447be8fe16f6d\",\"9337\":\"da67b95f927087fcd0b5\"}[chunkId] + \"\";\n};","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 775;","var scriptUrl;\nif (globalThis.importScripts) scriptUrl = globalThis.location + \"\";\nvar document = globalThis.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && document.currentScript.tagName.toUpperCase() === 'SCRIPT')\n\t\tscriptUrl = document.currentScript.src;\n\tif (!scriptUrl) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tif(scripts.length) {\n\t\t\tvar i = scripts.length - 1;\n\t\t\twhile (i > -1 && (!scriptUrl || !/^http(s?):/.test(scriptUrl))) scriptUrl = scripts[i--].src;\n\t\t}\n\t}\n}\n// When supporting browsers where an automatic publicPath is not supported you must specify an output.publicPath manually via configuration\n// or pass an empty string (\"\") and set the __webpack_public_path__ variable from your code to use your own logic.\nif (!scriptUrl) throw new Error(\"Automatic publicPath is not supported in this browser\");\nscriptUrl = scriptUrl.replace(/^blob:/, \"\").replace(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = (typeof document !== 'undefined' && document.baseURI) || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\t775: 0,\n\t7471: 0\n};\n\n__webpack_require__.f.j = (chunkId, promises) => {\n\t\t// JSONP chunk loading for javascript\n\t\tvar installedChunkData = __webpack_require__.o(installedChunks, chunkId) ? installedChunks[chunkId] : undefined;\n\t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n\t\t\t// a Promise means \"currently loading\".\n\t\t\tif(installedChunkData) {\n\t\t\t\tpromises.push(installedChunkData[2]);\n\t\t\t} else {\n\t\t\t\tif(true) { // all chunks have JS\n\t\t\t\t\t// setup Promise in chunk cache\n\t\t\t\t\tvar promise = new Promise((resolve, reject) => (installedChunkData = installedChunks[chunkId] = [resolve, reject]));\n\t\t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n\t\t\t\t\t// start chunk loading\n\t\t\t\t\tvar url = __webpack_require__.p + __webpack_require__.u(chunkId);\n\t\t\t\t\t// create error before stack unwound to get useful stacktrace later\n\t\t\t\t\tvar error = new Error();\n\t\t\t\t\tvar loadingEnded = (event) => {\n\t\t\t\t\t\tif(__webpack_require__.o(installedChunks, chunkId)) {\n\t\t\t\t\t\t\tinstalledChunkData = installedChunks[chunkId];\n\t\t\t\t\t\t\tif(installedChunkData !== 0) installedChunks[chunkId] = undefined;\n\t\t\t\t\t\t\tif(installedChunkData) {\n\t\t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n\t\t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n\t\t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n\t\t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n\t\t\t\t\t\t\t\terror.type = errorType;\n\t\t\t\t\t\t\t\terror.request = realSrc;\n\t\t\t\t\t\t\t\tinstalledChunkData[1](error);\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t}\n\t\t\t\t\t};\n\t\t\t\t\t__webpack_require__.l(url, loadingEnded, \"chunk-\" + chunkId, chunkId);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n};\n\n// no prefetching\n\n// no preloaded\n\n// no HMR\n\n// no HMR manifest\n\n__webpack_require__.O.j = (chunkId) => (installedChunks[chunkId] === 0);\n\n// install a JSONP callback for chunk loading\nvar webpackJsonpCallback = (parentChunkLoadingFunction, data) => {\n\tvar [chunkIds, moreModules, runtime] = data;\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = globalThis[\"webpackChunknextcloud_ui_legacy\"] = globalThis[\"webpackChunknextcloud_ui_legacy\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(49317)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","N","Symbol","toStringTag","getLoggerBuilder","setApp","detectUser","build","_defineComponent","__name","setup","__props","settingsAdminMail","loadState","initialConfig","mailConfig","ref","isMailDeliveryDisabled","computed","value","mail_smtpmode","smtpMode","get","smtpModeOptions","find","option","id","set","smtpEncryption","smtpEncryptionOptions","mail_smtpsecure","smtpSendmailMode","smtpSendmailModeOptions","mail_sendmailmode","hasPasswordChanges","mail_smtppassword","hasCredentialChanges","mail_smtpname","isSaving","isSendingTestEmail","testEmailError","__sfc","testEmail","axios","post","generateUrl","showSuccess","t","error","logger","showError","isAxiosError","response","data","onSubmit","confirmPassword","mail_smtpauth","undefined","config","NcButton","NcCheckboxRadioSwitch","NcLoadingIcon","NcPasswordField","NcFormBox","NcFormGroup","NcNoteCard","NcSelect","NcSettingsSection","NcTextField","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","component","_vm","this","_c","_self","_setup","_setupProxy","attrs","docUrl","configIsReadonly","_v","_s","_e","class","$style","adminSettingsMailServer__form","on","$event","preventDefault","apply","arguments","model","callback","$$v","expression","mail_noverify","$set","mail_from_address","scopedSlots","_u","key","fn","staticStyle","proxy","mail_domain","directives","name","rawName","mail_smtphost","mail_smtpport","adminSettingsMailServer__formAction","context","Vue","AdminSettingsMailServer","$mount","___CSS_LOADER_EXPORT___","push","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","call","m","O","result","chunkIds","priority","notFulfilled","Infinity","i","length","fulfilled","j","Object","keys","every","splice","r","n","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","Promise","all","reduce","promises","u","obj","prop","prototype","hasOwnProperty","l","url","done","script","needAttach","scripts","document","getElementsByTagName","s","getAttribute","createElement","charset","nc","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","timeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","type","target","head","appendChild","nmd","paths","children","scriptUrl","globalThis","importScripts","location","currentScript","tagName","toUpperCase","test","Error","replace","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","some","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file From 6e419723ac2cd093702163fad320761a0fbc74ae Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Mon, 3 Aug 2026 18:01:18 +0200 Subject: [PATCH 6/7] IONOS(config): update submodule (notify_push only with Redis) Picks up the fix for the local-setup breakage described in HDNEXT-1967: notify_push without a reachable Redis throws while its console commands are constructed and prints that error on stdout with exit code 0, which corrupts every occ call whose output configure.sh captures (most notably `occ app:list --enabled --output json` piped into jq). 90800e6..01b3f0f: 01b3f0f Merge pull request #145 from IONOS-Productivity/mk/fix/disable-notify-push-without-redis-password bafc421 fix(configure.sh): configure notify_push before the other apps e862a43 fix(configure.sh): disable notify_push unless Redis password is set 39a31bc refactor(configure.sh): use log_info for plain status output f1daad5 refactor(configure.sh): use log_warning instead of inline ANSI codes --- IONOS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IONOS b/IONOS index 90800e6b92541..01b3f0f2e5915 160000 --- a/IONOS +++ b/IONOS @@ -1 +1 @@ -Subproject commit 90800e6b9254187af7ddbe74705a9c948470ee74 +Subproject commit 01b3f0f2e59154d759976f5e8a18397b0c73e599 From 5642dce9a6ad4f298147cf1481bdbd696903aa94 Mon Sep 17 00:00:00 2001 From: "Misha M.-Kupriyanov" Date: Mon, 3 Aug 2026 18:10:27 +0200 Subject: [PATCH 7/7] IONOS(richdocuments): update submodule (gate creation for public shares) 6b8957bfc..593107e1a: 593107e1a IONOS: fix: do not offer document creation to public share visitors Restores the ionos-dev-v30 behaviour that anonymous public share visitors are not offered Collabora document creation. The v30 patch worked through the legacy OCA.Files.NewFileMenu plugin, which no longer exists in the NC33 line, so the gate now lives in RegisterTemplateFileCreatorListener. Ported from ionos-dev-v30 richdocuments: f1db58f79 IONOS: fix: for shares allow document creation only for users that can edit --- apps-external/richdocuments | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/apps-external/richdocuments b/apps-external/richdocuments index 6b8957bfc93fa..61fd579905bc6 160000 --- a/apps-external/richdocuments +++ b/apps-external/richdocuments @@ -1 +1 @@ -Subproject commit 6b8957bfc93fa4d8ff1d64a53323941b123a47f2 +Subproject commit 61fd579905bc68b8aee84bba23975781cb693a67