diff --git a/apps/files_sharing/src/utils/AccountIcon.spec.ts b/apps/files_sharing/src/utils/AccountIcon.spec.ts new file mode 100644 index 0000000000000..76a1bb7266e36 --- /dev/null +++ b/apps/files_sharing/src/utils/AccountIcon.spec.ts @@ -0,0 +1,40 @@ +/*! + * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +import { afterEach, describe, it, expect } from '@jest/globals' +import { generateAvatarSvg } from './AccountIcon' +describe('AccountIcon', () => { + + afterEach(() => { + delete document.body.dataset.themes + }) + + it('should generate regular account avatar svg', () => { + const svg = generateAvatarSvg('admin') + expect(svg).toContain('/avatar/admin/32') + expect(svg).not.toContain('dark') + expect(svg).toContain('?guestFallback=true') + }) + + it('should generate guest account avatar svg', () => { + const svg = generateAvatarSvg('admin', true) + expect(svg).toContain('/avatar/guest/admin/32') + expect(svg).not.toContain('dark') + expect(svg).not.toContain('?guestFallback=true') + }) + + it('should generate dark mode account avatar svg', () => { + document.body.dataset.themes = 'dark' + const svg = generateAvatarSvg('admin') + expect(svg).toContain('/avatar/admin/32/dark') + expect(svg).toContain('?guestFallback=true') + }) + + it('should generate dark mode guest account avatar svg', () => { + document.body.dataset.themes = 'dark' + const svg = generateAvatarSvg('admin', true) + expect(svg).toContain('/avatar/guest/admin/32/dark') + expect(svg).not.toContain('?guestFallback=true') + }) +}) diff --git a/apps/files_sharing/src/utils/AccountIcon.ts b/apps/files_sharing/src/utils/AccountIcon.ts index a5fa210f7514f..504bb43540e2e 100644 --- a/apps/files_sharing/src/utils/AccountIcon.ts +++ b/apps/files_sharing/src/utils/AccountIcon.ts @@ -4,12 +4,22 @@ */ import { generateUrl } from '@nextcloud/router' -const isDarkMode = window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches === true - || document.querySelector('[data-themes*=dark]') !== null +const isDarkMode = () => { + return window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches === true + || document.querySelector('[data-themes*=dark]') !== null +} + +export const generateAvatarSvg = (userId: string, isGuest = false) => { + // normal avatar url: /avatar/{userId}/32?guestFallback=true + // dark avatar url: /avatar/{userId}/32/dark?guestFallback=true + // guest avatar url: /avatar/guest/{userId}/32 + // guest dark avatar url: /avatar/guest/{userId}/32/dark + const basePath = isGuest ? `/avatar/guest/${userId}` : `/avatar/${userId}` + const darkModePath = isDarkMode() ? '/dark' : '' + const guestFallback = isGuest ? '' : '?guestFallback=true' -export const generateAvatarSvg = (userId: string, isExternalUser = false) => { - const url = isDarkMode ? '/avatar/{userId}/32/dark' : '/avatar/{userId}/32' - const avatarUrl = generateUrl(isExternalUser ? url + '?guestFallback=true' : url, { userId }) + const url = `${basePath}/32${darkModePath}${guestFallback}` + const avatarUrl = generateUrl(url, { userId }) return ` diff --git a/dist/files_sharing-init.js b/dist/files_sharing-init.js index 1239b1e3f7edb..fcde305243ffe 100644 --- a/dist/files_sharing-init.js +++ b/dist/files_sharing-init.js @@ -1,3 +1,3 @@ /*! For license information please see files_sharing-init.js.LICENSE.txt */ -(()=>{"use strict";var e,t,i,n={50879:(e,t,i)=>{var n=i(78791),r=i(53334);const s='',a='',o='';var l=i(63814),d=i(21777),h=i(26287),u=i(53529);const c=(0,u.YK)().setApp("files_sharing").detectUser().build();var p;const v="/files/".concat(null===(p=(0,d.HW)())||void 0===p?void 0:p.uid),g={"Content-Type":"application/json"},m=async function(e){try{var t;if(void 0!==(null==e?void 0:e.remote_id)){if(!e.mimetype){const t=(await i.e(857).then(i.bind(i,10857))).default;e.mimetype=t.getType(e.name)}e.item_type=e.type||(e.mimetype?"file":"folder"),e.item_mtime=e.mtime,e.file_target=e.file_target||e.mountpoint,e.item_permissions=n.aX.NONE,e.permissions=n.aX.NONE,e.uid_owner=e.owner,e.displayname_owner=e.owner}const r="folder"===(null==e?void 0:e.item_type),s=!0===(null==e?void 0:e.has_preview),a=r?n.vd:n.ZH,o=e.file_source||e.file_id||e.id,d=e.path||e.file_target||e.name,h=(0,l.dC)("dav/".concat(v,"/").concat(d).replaceAll(/\/\//gm,"/"));let u=e.item_mtime?new Date(1e3*e.item_mtime):void 0;return(null==e?void 0:e.stime)>((null==e?void 0:e.item_mtime)||0)&&(u=new Date(1e3*e.stime)),new a({id:o,source:h,owner:null==e?void 0:e.uid_owner,mime:(null==e?void 0:e.mimetype)||"application/octet-stream",mtime:u,size:null==e?void 0:e.item_size,permissions:(null==e?void 0:e.item_permissions)||(null==e?void 0:e.permissions),root:v,attributes:{...e,"has-preview":s,"owner-id":null==e?void 0:e.uid_owner,"owner-display-name":null==e?void 0:e.displayname_owner,"share-types":null==e?void 0:e.share_type,favorite:null!=e&&null!==(t=e.tags)&&void 0!==t&&t.includes(window.OC.TAG_FAVORITE)?1:0}})}catch(e){return c.error("Error while parsing OCS entry",{error:e}),null}},w=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,l.KT)("apps/files_sharing/api/v1/shares");return h.A.get(t,{headers:g,params:{shared_with_me:e,include_tags:!0}})},f=async function(){var e;let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];const a=[];(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&a.push(w(!0),function(){const e=(0,l.KT)("apps/files_sharing/api/v1/remote_shares");return h.A.get(e,{headers:g,params:{include_tags:!0}})}()),t&&a.push(w()),i&&a.push(function(){const e=(0,l.KT)("apps/files_sharing/api/v1/shares/pending");return h.A.get(e,{headers:g,params:{include_tags:!0}})}(),function(){const e=(0,l.KT)("apps/files_sharing/api/v1/remote_shares/pending");return h.A.get(e,{headers:g,params:{include_tags:!0}})}()),r&&a.push(function(){const e=(0,l.KT)("apps/files_sharing/api/v1/deletedshares");return h.A.get(e,{headers:g,params:{include_tags:!0}})}());const o=(await Promise.all(a)).map((e=>e.data.ocs.data)).flat();let u=(await Promise.all(o.map(m))).filter((e=>null!==e));var c,p;return s.length>0&&(u=u.filter((e=>{var t;return s.includes(null===(t=e.attributes)||void 0===t?void 0:t.share_type)}))),u=(c=u,p="source",Object.values(c.reduce((function(e,t){return(e[t[p]]=e[t[p]]||[]).push(t),e}),{}))).map((e=>{const t=e[0];return t.attributes["share-types"]=e.map((e=>e.attributes["share-types"])),t})),{folder:new n.vd({id:0,source:(0,l.dC)("dav"+v),owner:(null===(e=(0,d.HW)())||void 0===e?void 0:e.uid)||null}),contents:u}},A="shareoverview",y="sharingin",_="sharingout",b="sharinglinks",C="deletedshares",T="pendingshares";var x=i(61338),S=i(65659);const H=new n.hY({id:"accept-share",displayName:e=>(0,r.zw)("files_sharing","Accept share","Accept shares",e.length),iconSvgInline:()=>S,enabled:(e,t)=>e.length>0&&t.id===T,async exec(e){try{const t=!!e.attributes.remote,i=(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await h.A.post(i),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0});(0,n.Gg)(H);const E=new n.hY({id:"open-in-files",displayName:()=>(0,r.Tl)("files","Open in Files"),iconSvgInline:()=>"",enabled:(e,t)=>[A,y,_,b].includes(t.id),async exec(e){const t=e.type===n.pt.Folder;return window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:String(e.fileid)},{dir:t?e.path:e.dirname,openfile:t?void 0:"true"}),null},order:-1e3,default:n.m9.HIDDEN});(0,n.Gg)(E);const O=new n.hY({id:"reject-share",displayName:e=>(0,r.zw)("files_sharing","Reject share","Reject shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>t.id===T&&0!==e.length&&!e.some((e=>e.attributes.remote_id&&e.attributes.share_type===window.OC.Share.SHARE_TYPE_REMOTE_GROUP)),async exec(e){try{const t=!!e.attributes.remote,i=(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await h.A.delete(i),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:2,inline:()=>!0});(0,n.Gg)(O);const L=new n.hY({id:"restore-share",displayName:e=>(0,r.zw)("files_sharing","Restore share","Restore shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>e.length>0&&t.id===C,async exec(e){try{const t=(0,l.KT)("apps/files_sharing/api/v1/deletedshares/{id}",{id:e.attributes.id});return await h.A.post(t),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0});(0,n.Gg)(L);var N=i(77905),P=i(49981);const R=(0,u.YK)().setApp("files").detectUser().build(),M=new n.hY({id:"details",displayName:()=>(0,r.Tl)("files","Open details"),iconSvgInline:()=>P,enabled:e=>{var t,i,r;return 1===e.length&&!!e[0]&&!(null===(t=window)||void 0===t||null===(t=t.OCA)||void 0===t||null===(t=t.Files)||void 0===t||!t.Sidebar)&&null!==(i=(null===(r=e[0].root)||void 0===r?void 0:r.startsWith("/files/"))&&e[0].permissions!==n.aX.NONE)&&void 0!==i&&i},async exec(e,t,i){try{return await window.OCA.Files.Sidebar.open(e.path),window.OCP.Files.Router.goToRoute(null,{view:t.id,fileid:e.fileid},{...window.OCP.Files.Router.query,dir:i},!0),null}catch(e){return R.error("Error while opening sidebar",{error:e}),!1}},order:-50});var V,k;const B=!0===(null===(V=window)||void 0===V||null===(k=V.matchMedia)||void 0===k||null===(k=k.call(V,"(prefers-color-scheme: dark)"))||void 0===k?void 0:k.matches)||null!==document.querySelector("[data-themes*=dark]");var I=i(85072),Y=i.n(I),j=i(97825),F=i.n(j),G=i(77659),Z=i.n(G),U=i(55056),K=i.n(U),z=i(10540),D=i.n(z),W=i(41113),q=i.n(W),X=i(8132),J={};J.styleTagTransform=q(),J.setAttributes=K(),J.insert=Z().bind(null,"head"),J.domAPI=F(),J.insertStyleElement=D(),Y()(X.A,J),X.A&&X.A.locals&&X.A.locals;const $=e=>{var t,i;return null!==(t=null===(i=e.attributes)||void 0===i?void 0:i["is-federated"])&&void 0!==t&&t},Q=new n.hY({id:"sharing-status",displayName(e){var t,i,n;const s=e[0],a=Object.values((null==s||null===(t=s.attributes)||void 0===t?void 0:t["share-types"])||{}).flat(),o=null==s||null===(i=s.attributes)||void 0===i?void 0:i["owner-id"];return a.length>0||o!==(null===(n=(0,d.HW)())||void 0===n?void 0:n.uid)||$(s)?(0,r.Tl)("files_sharing","Shared"):""},title(e){var t,i,n,s,a;const o=e[0],l=null==o||null===(t=o.attributes)||void 0===t?void 0:t["owner-id"],h=null==o||null===(i=o.attributes)||void 0===i?void 0:i["owner-display-name"];return Array.isArray(null===(n=o.attributes)||void 0===n?void 0:n["share-types"])&&(null===(s=o.attributes)||void 0===s?void 0:s["share-types"].length)>1?(0,r.Tl)("files_sharing","Shared multiple times with different people"):l&&(l!==(null===(a=(0,d.HW)())||void 0===a?void 0:a.uid)||$(o))?(0,r.Tl)("files_sharing","Shared by {ownerDisplayName}",{ownerDisplayName:h}):(0,r.Tl)("files_sharing","Show sharing options")},iconSvgInline(e){var t,i,n,r,h;const u=e[0],c=Object.values((null==u||null===(t=u.attributes)||void 0===t?void 0:t["share-types"])||{}).flat();if(Array.isArray(null===(i=u.attributes)||void 0===i?void 0:i["share-types"])&&(null===(n=u.attributes)||void 0===n?void 0:n["share-types"].length)>1)return a;if(c.includes(N.Z.SHARE_TYPE_LINK)||c.includes(N.Z.SHARE_TYPE_EMAIL))return o;if(c.includes(N.Z.SHARE_TYPE_GROUP)||c.includes(N.Z.SHARE_TYPE_REMOTE_GROUP))return s;if(c.includes(N.Z.SHARE_TYPE_CIRCLE))return'\n';const p=null==u||null===(r=u.attributes)||void 0===r?void 0:r["owner-id"];return p&&(p!==(null===(h=(0,d.HW)())||void 0===h?void 0:h.uid)||$(u))?function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=B?"/avatar/{userId}/32/dark":"/avatar/{userId}/32",n=(0,l.Jv)(t?i+"?guestFallback=true":i,{userId:e});return'\n\t\t\n\t')}(p.replace(/[^a-zA-Z0-9._%+@-]+/g,"").replace(/\//g,""),$(u)):a},enabled(e){var t,i,r;if(1!==e.length)return!1;const s=e[0],a=null==s||null===(t=s.attributes)||void 0===t?void 0:t["owner-id"];return!!Array.isArray(null===(i=s.attributes)||void 0===i?void 0:i["share-types"])||!(!a||a===(null===(r=(0,d.HW)())||void 0===r?void 0:r.uid)&&!$(s))||!!(s.permissions&n.aX.SHARE)},async exec(e,t,i){var r,s;return e.permissions&n.aX.READ?(null===(r=window.OCA)||void 0===r||null===(r=r.Files)||void 0===r||null===(r=r.Sidebar)||void 0===r||null===(s=r.setActiveTab)||void 0===s||s.call(r,"sharing"),M.exec(e,t,i)):null},inline:()=>!0});(0,n.Gg)(Q),(()=>{const e=(0,n.bh)();e.register(new n.Ss({id:A,name:(0,r.Tl)("files_sharing","Shares"),caption:(0,r.Tl)("files_sharing","Overview of shared files."),emptyTitle:(0,r.Tl)("files_sharing","No shares"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared or have been shared with you will show up here"),icon:a,order:20,columns:[],getContents:()=>f()})),e.register(new n.Ss({id:y,name:(0,r.Tl)("files_sharing","Shared with you"),caption:(0,r.Tl)("files_sharing","List of files that are shared with you."),emptyTitle:(0,r.Tl)("files_sharing","Nothing shared with you yet"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders others shared with you will show up here"),icon:'',order:1,parent:A,columns:[],getContents:()=>f(!0,!1,!1,!1)})),e.register(new n.Ss({id:_,name:(0,r.Tl)("files_sharing","Shared with others"),caption:(0,r.Tl)("files_sharing","List of files that you shared with others."),emptyTitle:(0,r.Tl)("files_sharing","Nothing shared yet"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared will show up here"),icon:s,order:2,parent:A,columns:[],getContents:()=>f(!1,!0,!1,!1)})),e.register(new n.Ss({id:b,name:(0,r.Tl)("files_sharing","Shared by link"),caption:(0,r.Tl)("files_sharing","List of files that are shared by link."),emptyTitle:(0,r.Tl)("files_sharing","No shared links"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared by link will show up here"),icon:o,order:3,parent:A,columns:[],getContents:()=>f(!1,!0,!1,!1,[window.OC.Share.SHARE_TYPE_LINK])})),e.register(new n.Ss({id:C,name:(0,r.Tl)("files_sharing","Deleted shares"),caption:(0,r.Tl)("files_sharing","List of shares you left."),emptyTitle:(0,r.Tl)("files_sharing","No deleted shares"),emptyCaption:(0,r.Tl)("files_sharing","Shares you have left will show up here"),icon:'',order:4,parent:A,columns:[],getContents:()=>f(!1,!1,!1,!0)})),e.register(new n.Ss({id:T,name:(0,r.Tl)("files_sharing","Pending shares"),caption:(0,r.Tl)("files_sharing","List of unapproved shares."),emptyTitle:(0,r.Tl)("files_sharing","No pending shares"),emptyCaption:(0,r.Tl)("files_sharing","Shares you have received but not approved will show up here"),icon:'',order:5,parent:A,columns:[],getContents:()=>f(!1,!1,!0,!1)}))})(),(0,n.Yc)("nc:share-attributes",{nc:"http://nextcloud.org/ns"}),(0,n.Yc)("oc:share-types",{oc:"http://owncloud.org/ns"}),(0,n.Yc)("ocs:share-permissions",{ocs:"http://open-collaboration-services.org/ns"})},8132:(e,t,i)=>{i.d(t,{A:()=>o});var n=i(71354),r=i.n(n),s=i(76314),a=i.n(s)()(r());a.push([e.id,".action-items>.files-list__row-action-sharing-status{direction:rtl;padding-right:0 !important}svg.sharing-status__avatar{height:32px !important;width:32px !important;max-height:32px !important;max-width:32px !important;border-radius:32px;overflow:hidden}","",{version:3,sources:["webpack://./apps/files_sharing/src/actions/sharingStatusAction.scss"],names:[],mappings:"AAsBA,qDAEC,aAAA,CAEG,0BAAA,CAGJ,2BACC,sBAAA,CACA,qBAAA,CACA,0BAAA,CACA,yBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n // 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// put icon at the end of the button\n\tdirection: rtl;\n\t// align icons with textless inline actions\n padding-right: 0 !important;\n}\n\nsvg.sharing-status__avatar {\n\theight: 32px !important;\n\twidth: 32px !important;\n\tmax-height: 32px !important;\n\tmax-width: 32px !important;\n\tborder-radius: 32px;\n\toverflow: hidden;\n}\n"],sourceRoot:""}]);const o=a}},r={};function s(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,s),i.loaded=!0,i.exports}s.m=n,e=[],s.O=(t,i,n,r)=>{if(!i){var a=1/0;for(h=0;h=r)&&Object.keys(s.O).every((e=>s.O[e](i[l])))?i.splice(l--,1):(o=!1,r0&&e[h-1][2]>r;h--)e[h]=e[h-1];e[h]=[i,n,r]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var i in t)s.o(t,i)&&!s.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce(((t,i)=>(s.f[i](e,t),t)),[])),s.u=e=>e+"-"+e+".js?v=6797210df0f1d53f94c4",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},i="nextcloud:",s.l=(e,n,r,a)=>{if(t[e])t[e].push(n);else{var o,l;if(void 0!==r)for(var d=document.getElementsByTagName("script"),h=0;h{o.onerror=o.onload=null,clearTimeout(p);var r=t[e];if(delete t[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach((e=>e(n))),i)return i(n)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=c.bind(null,o.onerror),o.onload=c.bind(null,o.onload),l&&document.head.appendChild(o)}},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),s.j=5928,(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var i=t.getElementsByTagName("script");if(i.length)for(var n=i.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=i[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{s.b=document.baseURI||self.location.href;var e={5928:0};s.f.j=(t,i)=>{var n=s.o(e,t)?e[t]:void 0;if(0!==n)if(n)i.push(n[2]);else{var r=new Promise(((i,r)=>n=e[t]=[i,r]));i.push(n[2]=r);var a=s.p+s.u(t),o=new Error;s.l(a,(i=>{if(s.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var r=i&&("load"===i.type?"missing":i.type),a=i&&i.target&&i.target.src;o.message="Loading chunk "+t+" failed.\n("+r+": "+a+")",o.name="ChunkLoadError",o.type=r,o.request=a,n[1](o)}}),"chunk-"+t,t)}},s.O.j=t=>0===e[t];var t=(t,i)=>{var n,r,a=i[0],o=i[1],l=i[2],d=0;if(a.some((t=>0!==e[t]))){for(n in o)s.o(o,n)&&(s.m[n]=o[n]);if(l)var h=l(s)}for(t&&t(i);ds(50879)));a=s.O(a)})(); -//# sourceMappingURL=files_sharing-init.js.map?v=b1d82b2b5e8cbae1bef9 \ No newline at end of file +(()=>{"use strict";var e,t,i,n={50879:(e,t,i)=>{var n=i(78791),r=i(53334);const s='',a='',o='';var l=i(63814),d=i(21777),h=i(26287),u=i(53529);const c=(0,u.YK)().setApp("files_sharing").detectUser().build();var p;const v="/files/".concat(null===(p=(0,d.HW)())||void 0===p?void 0:p.uid),g={"Content-Type":"application/json"},m=async function(e){try{var t;if(void 0!==(null==e?void 0:e.remote_id)){if(!e.mimetype){const t=(await i.e(857).then(i.bind(i,10857))).default;e.mimetype=t.getType(e.name)}e.item_type=e.type||(e.mimetype?"file":"folder"),e.item_mtime=e.mtime,e.file_target=e.file_target||e.mountpoint,e.item_permissions=n.aX.NONE,e.permissions=n.aX.NONE,e.uid_owner=e.owner,e.displayname_owner=e.owner}const r="folder"===(null==e?void 0:e.item_type),s=!0===(null==e?void 0:e.has_preview),a=r?n.vd:n.ZH,o=e.file_source||e.file_id||e.id,d=e.path||e.file_target||e.name,h=(0,l.dC)("dav/".concat(v,"/").concat(d).replaceAll(/\/\//gm,"/"));let u=e.item_mtime?new Date(1e3*e.item_mtime):void 0;return(null==e?void 0:e.stime)>((null==e?void 0:e.item_mtime)||0)&&(u=new Date(1e3*e.stime)),new a({id:o,source:h,owner:null==e?void 0:e.uid_owner,mime:(null==e?void 0:e.mimetype)||"application/octet-stream",mtime:u,size:null==e?void 0:e.item_size,permissions:(null==e?void 0:e.item_permissions)||(null==e?void 0:e.permissions),root:v,attributes:{...e,"has-preview":s,"owner-id":null==e?void 0:e.uid_owner,"owner-display-name":null==e?void 0:e.displayname_owner,"share-types":null==e?void 0:e.share_type,favorite:null!=e&&null!==(t=e.tags)&&void 0!==t&&t.includes(window.OC.TAG_FAVORITE)?1:0}})}catch(e){return c.error("Error while parsing OCS entry",{error:e}),null}},w=function(){let e=arguments.length>0&&void 0!==arguments[0]&&arguments[0];const t=(0,l.KT)("apps/files_sharing/api/v1/shares");return h.A.get(t,{headers:g,params:{shared_with_me:e,include_tags:!0}})},f=async function(){var e;let t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1],i=arguments.length>2&&void 0!==arguments[2]&&arguments[2],r=arguments.length>3&&void 0!==arguments[3]&&arguments[3],s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:[];const a=[];(!(arguments.length>0&&void 0!==arguments[0])||arguments[0])&&a.push(w(!0),function(){const e=(0,l.KT)("apps/files_sharing/api/v1/remote_shares");return h.A.get(e,{headers:g,params:{include_tags:!0}})}()),t&&a.push(w()),i&&a.push(function(){const e=(0,l.KT)("apps/files_sharing/api/v1/shares/pending");return h.A.get(e,{headers:g,params:{include_tags:!0}})}(),function(){const e=(0,l.KT)("apps/files_sharing/api/v1/remote_shares/pending");return h.A.get(e,{headers:g,params:{include_tags:!0}})}()),r&&a.push(function(){const e=(0,l.KT)("apps/files_sharing/api/v1/deletedshares");return h.A.get(e,{headers:g,params:{include_tags:!0}})}());const o=(await Promise.all(a)).map((e=>e.data.ocs.data)).flat();let u=(await Promise.all(o.map(m))).filter((e=>null!==e));var c,p;return s.length>0&&(u=u.filter((e=>{var t;return s.includes(null===(t=e.attributes)||void 0===t?void 0:t.share_type)}))),u=(c=u,p="source",Object.values(c.reduce((function(e,t){return(e[t[p]]=e[t[p]]||[]).push(t),e}),{}))).map((e=>{const t=e[0];return t.attributes["share-types"]=e.map((e=>e.attributes["share-types"])),t})),{folder:new n.vd({id:0,source:(0,l.dC)("dav"+v),owner:(null===(e=(0,d.HW)())||void 0===e?void 0:e.uid)||null}),contents:u}},A="shareoverview",y="sharingin",_="sharingout",b="sharinglinks",C="deletedshares",T="pendingshares";var x=i(61338),S=i(65659);const H=new n.hY({id:"accept-share",displayName:e=>(0,r.zw)("files_sharing","Accept share","Accept shares",e.length),iconSvgInline:()=>S,enabled:(e,t)=>e.length>0&&t.id===T,async exec(e){try{const t=!!e.attributes.remote,i=(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/pending/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await h.A.post(i),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0});(0,n.Gg)(H);const E=new n.hY({id:"open-in-files",displayName:()=>(0,r.Tl)("files","Open in Files"),iconSvgInline:()=>"",enabled:(e,t)=>[A,y,_,b].includes(t.id),async exec(e){const t=e.type===n.pt.Folder;return window.OCP.Files.Router.goToRoute(null,{view:"files",fileid:String(e.fileid)},{dir:t?e.path:e.dirname,openfile:t?void 0:"true"}),null},order:-1e3,default:n.m9.HIDDEN});(0,n.Gg)(E);const O=new n.hY({id:"reject-share",displayName:e=>(0,r.zw)("files_sharing","Reject share","Reject shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>t.id===T&&0!==e.length&&!e.some((e=>e.attributes.remote_id&&e.attributes.share_type===window.OC.Share.SHARE_TYPE_REMOTE_GROUP)),async exec(e){try{const t=!!e.attributes.remote,i=(0,l.KT)("apps/files_sharing/api/v1/{shareBase}/{id}",{shareBase:t?"remote_shares":"shares",id:e.attributes.id});return await h.A.delete(i),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:2,inline:()=>!0});(0,n.Gg)(O);const L=new n.hY({id:"restore-share",displayName:e=>(0,r.zw)("files_sharing","Restore share","Restore shares",e.length),iconSvgInline:()=>'',enabled:(e,t)=>e.length>0&&t.id===C,async exec(e){try{const t=(0,l.KT)("apps/files_sharing/api/v1/deletedshares/{id}",{id:e.attributes.id});return await h.A.post(t),(0,x.Ic)("files:node:deleted",e),!0}catch(e){return!1}},async execBatch(e,t,i){return Promise.all(e.map((e=>this.exec(e,t,i))))},order:1,inline:()=>!0});(0,n.Gg)(L);var N=i(77905),P=i(49981);const R=(0,u.YK)().setApp("files").detectUser().build(),M=new n.hY({id:"details",displayName:()=>(0,r.Tl)("files","Open details"),iconSvgInline:()=>P,enabled:e=>{var t,i,r;return 1===e.length&&!!e[0]&&!(null===(t=window)||void 0===t||null===(t=t.OCA)||void 0===t||null===(t=t.Files)||void 0===t||!t.Sidebar)&&null!==(i=(null===(r=e[0].root)||void 0===r?void 0:r.startsWith("/files/"))&&e[0].permissions!==n.aX.NONE)&&void 0!==i&&i},async exec(e,t,i){try{return await window.OCA.Files.Sidebar.open(e.path),window.OCP.Files.Router.goToRoute(null,{view:t.id,fileid:e.fileid},{...window.OCP.Files.Router.query,dir:i},!0),null}catch(e){return R.error("Error while opening sidebar",{error:e}),!1}},order:-50});var V=i(85072),k=i.n(V),B=i(97825),I=i.n(B),Y=i(77659),j=i.n(Y),F=i(55056),G=i.n(F),Z=i(10540),U=i.n(Z),K=i(41113),z=i.n(K),D=i(8132),W={};W.styleTagTransform=z(),W.setAttributes=G(),W.insert=j().bind(null,"head"),W.domAPI=I(),W.insertStyleElement=U(),k()(D.A,W),D.A&&D.A.locals&&D.A.locals;const q=e=>{var t,i;return null!==(t=null===(i=e.attributes)||void 0===i?void 0:i["is-federated"])&&void 0!==t&&t},X=new n.hY({id:"sharing-status",displayName(e){var t,i,n;const s=e[0],a=Object.values((null==s||null===(t=s.attributes)||void 0===t?void 0:t["share-types"])||{}).flat(),o=null==s||null===(i=s.attributes)||void 0===i?void 0:i["owner-id"];return a.length>0||o!==(null===(n=(0,d.HW)())||void 0===n?void 0:n.uid)||q(s)?(0,r.Tl)("files_sharing","Shared"):""},title(e){var t,i,n,s,a;const o=e[0],l=null==o||null===(t=o.attributes)||void 0===t?void 0:t["owner-id"],h=null==o||null===(i=o.attributes)||void 0===i?void 0:i["owner-display-name"];return Array.isArray(null===(n=o.attributes)||void 0===n?void 0:n["share-types"])&&(null===(s=o.attributes)||void 0===s?void 0:s["share-types"].length)>1?(0,r.Tl)("files_sharing","Shared multiple times with different people"):l&&(l!==(null===(a=(0,d.HW)())||void 0===a?void 0:a.uid)||q(o))?(0,r.Tl)("files_sharing","Shared by {ownerDisplayName}",{ownerDisplayName:h}):(0,r.Tl)("files_sharing","Show sharing options")},iconSvgInline(e){var t,i,n,r,h;const u=e[0],c=Object.values((null==u||null===(t=u.attributes)||void 0===t?void 0:t["share-types"])||{}).flat();if(Array.isArray(null===(i=u.attributes)||void 0===i?void 0:i["share-types"])&&(null===(n=u.attributes)||void 0===n?void 0:n["share-types"].length)>1)return a;if(c.includes(N.Z.SHARE_TYPE_LINK)||c.includes(N.Z.SHARE_TYPE_EMAIL))return o;if(c.includes(N.Z.SHARE_TYPE_GROUP)||c.includes(N.Z.SHARE_TYPE_REMOTE_GROUP))return s;if(c.includes(N.Z.SHARE_TYPE_CIRCLE))return'\n';const p=null==u||null===(r=u.attributes)||void 0===r?void 0:r["owner-id"];return p&&(p!==(null===(h=(0,d.HW)())||void 0===h?void 0:h.uid)||q(u))?function(e){let t=arguments.length>1&&void 0!==arguments[1]&&arguments[1];const i=t?"/avatar/guest/".concat(e):"/avatar/".concat(e),n=!0===(null===(r=window)||void 0===r||null===(s=r.matchMedia)||void 0===s||null===(s=s.call(r,"(prefers-color-scheme: dark)"))||void 0===s?void 0:s.matches)||null!==document.querySelector("[data-themes*=dark]")?"/dark":"";var r,s;const a=t?"":"?guestFallback=true",o="".concat(i,"/32").concat(n).concat(a),d=(0,l.Jv)(o,{userId:e});return'')}(p.replace(/[^a-zA-Z0-9._%+@-]+/g,"").replace(/\//g,""),q(u)):a},enabled(e){var t,i,r;if(1!==e.length)return!1;const s=e[0],a=null==s||null===(t=s.attributes)||void 0===t?void 0:t["owner-id"];return!!Array.isArray(null===(i=s.attributes)||void 0===i?void 0:i["share-types"])||!(!a||a===(null===(r=(0,d.HW)())||void 0===r?void 0:r.uid)&&!q(s))||!!(s.permissions&n.aX.SHARE)},async exec(e,t,i){var r,s;return e.permissions&n.aX.READ?(null===(r=window.OCA)||void 0===r||null===(r=r.Files)||void 0===r||null===(r=r.Sidebar)||void 0===r||null===(s=r.setActiveTab)||void 0===s||s.call(r,"sharing"),M.exec(e,t,i)):null},inline:()=>!0});(0,n.Gg)(X),(()=>{const e=(0,n.bh)();e.register(new n.Ss({id:A,name:(0,r.Tl)("files_sharing","Shares"),caption:(0,r.Tl)("files_sharing","Overview of shared files."),emptyTitle:(0,r.Tl)("files_sharing","No shares"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared or have been shared with you will show up here"),icon:a,order:20,columns:[],getContents:()=>f()})),e.register(new n.Ss({id:y,name:(0,r.Tl)("files_sharing","Shared with you"),caption:(0,r.Tl)("files_sharing","List of files that are shared with you."),emptyTitle:(0,r.Tl)("files_sharing","Nothing shared with you yet"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders others shared with you will show up here"),icon:'',order:1,parent:A,columns:[],getContents:()=>f(!0,!1,!1,!1)})),e.register(new n.Ss({id:_,name:(0,r.Tl)("files_sharing","Shared with others"),caption:(0,r.Tl)("files_sharing","List of files that you shared with others."),emptyTitle:(0,r.Tl)("files_sharing","Nothing shared yet"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared will show up here"),icon:s,order:2,parent:A,columns:[],getContents:()=>f(!1,!0,!1,!1)})),e.register(new n.Ss({id:b,name:(0,r.Tl)("files_sharing","Shared by link"),caption:(0,r.Tl)("files_sharing","List of files that are shared by link."),emptyTitle:(0,r.Tl)("files_sharing","No shared links"),emptyCaption:(0,r.Tl)("files_sharing","Files and folders you shared by link will show up here"),icon:o,order:3,parent:A,columns:[],getContents:()=>f(!1,!0,!1,!1,[window.OC.Share.SHARE_TYPE_LINK])})),e.register(new n.Ss({id:C,name:(0,r.Tl)("files_sharing","Deleted shares"),caption:(0,r.Tl)("files_sharing","List of shares you left."),emptyTitle:(0,r.Tl)("files_sharing","No deleted shares"),emptyCaption:(0,r.Tl)("files_sharing","Shares you have left will show up here"),icon:'',order:4,parent:A,columns:[],getContents:()=>f(!1,!1,!1,!0)})),e.register(new n.Ss({id:T,name:(0,r.Tl)("files_sharing","Pending shares"),caption:(0,r.Tl)("files_sharing","List of unapproved shares."),emptyTitle:(0,r.Tl)("files_sharing","No pending shares"),emptyCaption:(0,r.Tl)("files_sharing","Shares you have received but not approved will show up here"),icon:'',order:5,parent:A,columns:[],getContents:()=>f(!1,!1,!0,!1)}))})(),(0,n.Yc)("nc:share-attributes",{nc:"http://nextcloud.org/ns"}),(0,n.Yc)("oc:share-types",{oc:"http://owncloud.org/ns"}),(0,n.Yc)("ocs:share-permissions",{ocs:"http://open-collaboration-services.org/ns"})},8132:(e,t,i)=>{i.d(t,{A:()=>o});var n=i(71354),r=i.n(n),s=i(76314),a=i.n(s)()(r());a.push([e.id,".action-items>.files-list__row-action-sharing-status{direction:rtl;padding-right:0 !important}svg.sharing-status__avatar{height:32px !important;width:32px !important;max-height:32px !important;max-width:32px !important;border-radius:32px;overflow:hidden}","",{version:3,sources:["webpack://./apps/files_sharing/src/actions/sharingStatusAction.scss"],names:[],mappings:"AAsBA,qDAEC,aAAA,CAEG,0BAAA,CAGJ,2BACC,sBAAA,CACA,qBAAA,CACA,0BAAA,CACA,yBAAA,CACA,kBAAA,CACA,eAAA",sourcesContent:["/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\n // 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// put icon at the end of the button\n\tdirection: rtl;\n\t// align icons with textless inline actions\n padding-right: 0 !important;\n}\n\nsvg.sharing-status__avatar {\n\theight: 32px !important;\n\twidth: 32px !important;\n\tmax-height: 32px !important;\n\tmax-width: 32px !important;\n\tborder-radius: 32px;\n\toverflow: hidden;\n}\n"],sourceRoot:""}]);const o=a}},r={};function s(e){var t=r[e];if(void 0!==t)return t.exports;var i=r[e]={id:e,loaded:!1,exports:{}};return n[e].call(i.exports,i,i.exports,s),i.loaded=!0,i.exports}s.m=n,e=[],s.O=(t,i,n,r)=>{if(!i){var a=1/0;for(h=0;h=r)&&Object.keys(s.O).every((e=>s.O[e](i[l])))?i.splice(l--,1):(o=!1,r0&&e[h-1][2]>r;h--)e[h]=e[h-1];e[h]=[i,n,r]},s.n=e=>{var t=e&&e.__esModule?()=>e.default:()=>e;return s.d(t,{a:t}),t},s.d=(e,t)=>{for(var i in t)s.o(t,i)&&!s.o(e,i)&&Object.defineProperty(e,i,{enumerable:!0,get:t[i]})},s.f={},s.e=e=>Promise.all(Object.keys(s.f).reduce(((t,i)=>(s.f[i](e,t),t)),[])),s.u=e=>e+"-"+e+".js?v=6797210df0f1d53f94c4",s.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),s.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),t={},i="nextcloud:",s.l=(e,n,r,a)=>{if(t[e])t[e].push(n);else{var o,l;if(void 0!==r)for(var d=document.getElementsByTagName("script"),h=0;h{o.onerror=o.onload=null,clearTimeout(p);var r=t[e];if(delete t[e],o.parentNode&&o.parentNode.removeChild(o),r&&r.forEach((e=>e(n))),i)return i(n)},p=setTimeout(c.bind(null,void 0,{type:"timeout",target:o}),12e4);o.onerror=c.bind(null,o.onerror),o.onload=c.bind(null,o.onload),l&&document.head.appendChild(o)}},s.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},s.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),s.j=5928,(()=>{var e;s.g.importScripts&&(e=s.g.location+"");var t=s.g.document;if(!e&&t&&(t.currentScript&&"SCRIPT"===t.currentScript.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){var i=t.getElementsByTagName("script");if(i.length)for(var n=i.length-1;n>-1&&(!e||!/^http(s?):/.test(e));)e=i[n--].src}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/#.*$/,"").replace(/\?.*$/,"").replace(/\/[^\/]+$/,"/"),s.p=e})(),(()=>{s.b=document.baseURI||self.location.href;var e={5928:0};s.f.j=(t,i)=>{var n=s.o(e,t)?e[t]:void 0;if(0!==n)if(n)i.push(n[2]);else{var r=new Promise(((i,r)=>n=e[t]=[i,r]));i.push(n[2]=r);var a=s.p+s.u(t),o=new Error;s.l(a,(i=>{if(s.o(e,t)&&(0!==(n=e[t])&&(e[t]=void 0),n)){var r=i&&("load"===i.type?"missing":i.type),a=i&&i.target&&i.target.src;o.message="Loading chunk "+t+" failed.\n("+r+": "+a+")",o.name="ChunkLoadError",o.type=r,o.request=a,n[1](o)}}),"chunk-"+t,t)}},s.O.j=t=>0===e[t];var t=(t,i)=>{var n,r,a=i[0],o=i[1],l=i[2],d=0;if(a.some((t=>0!==e[t]))){for(n in o)s.o(o,n)&&(s.m[n]=o[n]);if(l)var h=l(s)}for(t&&t(i);ds(50879)));a=s.O(a)})(); +//# sourceMappingURL=files_sharing-init.js.map?v=b48c55010ae61d6220ac \ No newline at end of file diff --git a/dist/files_sharing-init.js.LICENSE.txt b/dist/files_sharing-init.js.LICENSE.txt index 2d02503a8ce40..2f4abefb2836e 100644 --- a/dist/files_sharing-init.js.LICENSE.txt +++ b/dist/files_sharing-init.js.LICENSE.txt @@ -1,8 +1,3 @@ -/*! - * SPDX-FileCopyrightText: 2024 Nextcloud GmbH and Nextcloud contributors - * SPDX-License-Identifier: AGPL-3.0-or-later - */ - /** * @copyright Copyright (c) 2019 John Molakvoæ * diff --git a/dist/files_sharing-init.js.map b/dist/files_sharing-init.js.map index 6040400895581..95f3ae595db70 100644 --- a/dist/files_sharing-init.js.map +++ b/dist/files_sharing-init.js.map @@ -1 +1 @@ -{"version":3,"file":"files_sharing-init.js?v=b1d82b2b5e8cbae1bef9","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/services/SharingService.ts","webpack:///nextcloud/apps/files_sharing/src/views/shares.ts","webpack:///nextcloud/apps/files_sharing/src/actions/acceptShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/rejectShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/restoreShareAction.ts","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack:///nextcloud/apps/files_sharing/src/utils/AccountIcon.ts","webpack://nextcloud/./apps/files_sharing/src/actions/sharingStatusAction.scss?3ea7","webpack:///nextcloud/apps/files_sharing/src/actions/sharingStatusAction.ts","webpack:///nextcloud/apps/files_sharing/src/init.ts","webpack:///nextcloud/apps/files_sharing/src/actions/sharingStatusAction.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","import { Folder, File, Permission } from '@nextcloud/files';\nimport { generateOcsUrl, generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport logger from './logger';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nconst headers = {\n 'Content-Type': 'application/json',\n};\nconst ocsEntryToNode = async function (ocsEntry) {\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 ocsEntry.item_type = ocsEntry.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 // Need to set permissions to NONE for federated shares\n ocsEntry.item_permissions = Permission.NONE;\n ocsEntry.permissions = Permission.NONE;\n ocsEntry.uid_owner = ocsEntry.owner;\n // TODO: have the real display name stored somewhere\n ocsEntry.displayname_owner = ocsEntry.owner;\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 = generateRemoteUrl(`dav/${rootPath}/${path}`.replaceAll(/\\/\\//gm, '/'));\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 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,\n permissions: ocsEntry?.item_permissions || ocsEntry?.permissions,\n root: rootPath,\n attributes: {\n ...ocsEntry,\n 'has-preview': hasPreview,\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 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};\nconst getShares = function (shared_with_me = false) {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares');\n return axios.get(url, {\n headers,\n params: {\n shared_with_me,\n include_tags: true,\n },\n });\n};\nconst getSharedWithYou = function () {\n return getShares(true);\n};\nconst getSharedWithOthers = function () {\n return getShares();\n};\nconst getRemoteShares = function () {\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};\nconst getPendingShares = function () {\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};\nconst getRemotePendingShares = function () {\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};\nconst getDeletedShares = function () {\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 * Group an array of objects (here Nodes) by a key\n * and return an array of arrays of them.\n * @param nodes Nodes to group\n * @param key The attribute to group by\n */\nconst groupBy = function (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};\nexport const getContents = async (sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes = []) => {\n const promises = [];\n if (sharedWithYou) {\n promises.push(getSharedWithYou(), getRemoteShares());\n }\n if (sharedWithOthers) {\n promises.push(getSharedWithOthers());\n }\n if (pendingShares) {\n promises.push(getPendingShares(), getRemotePendingShares());\n }\n if (deletedshares) {\n promises.push(getDeletedShares());\n }\n const responses = await Promise.all(promises);\n const data = responses.map((response) => response.data.ocs.data).flat();\n let contents = (await Promise.all(data.map(ocsEntryToNode)))\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: generateRemoteUrl('dav' + rootPath),\n owner: getCurrentUser()?.uid || null,\n }),\n contents,\n };\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport AccountClockSvg from '@mdi/svg/svg/account-clock.svg?raw';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw';\nimport AccountSvg from '@mdi/svg/svg/account.svg?raw';\nimport DeleteSvg from '@mdi/svg/svg/delete.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { getContents } from '../services/SharingService';\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 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 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 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, [window.OC.Share.SHARE_TYPE_LINK]),\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: 4,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, false, true),\n }));\n Navigation.register(new View({\n id: pendingSharesViewId,\n name: t('files_sharing', 'Pending shares'),\n caption: t('files_sharing', 'List of unapproved shares.'),\n emptyTitle: t('files_sharing', 'No pending shares'),\n emptyCaption: t('files_sharing', 'Shares you have received but not approved will show up here'),\n icon: AccountClockSvg,\n order: 5,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, true, false),\n }));\n};\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { registerFileAction, FileAction } from '@nextcloud/files';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CheckSvg from '@mdi/svg/svg/check.svg?raw';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\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(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/pending/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { registerFileAction, FileAction, DefaultType, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { sharesViewId, sharedWithYouViewId, sharedWithOthersViewId, sharingByLinksViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'open-in-files',\n displayName: () => t('files', 'Open in Files'),\n iconSvgInline: () => '',\n enabled: (nodes, 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(node) {\n const isFolder = node.type === FileType.Folder;\n window.OCP.Files.Router.goToRoute(null, // use default route\n {\n view: 'files',\n fileid: String(node.fileid),\n }, {\n // If this node is a folder open the folder in files\n dir: isFolder ? node.path : node.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});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { registerFileAction, FileAction } from '@nextcloud/files';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CloseSvg from '@mdi/svg/svg/close.svg?raw';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\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 === window.OC.Share.SHARE_TYPE_REMOTE_GROUP)) {\n return false;\n }\n return true;\n },\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.delete(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 2,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { FileAction, registerFileAction } from '@nextcloud/files';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport ArrowULeftTopSvg from '@mdi/svg/svg/arrow-u-left-top.svg?raw';\nimport axios from '@nextcloud/axios';\nimport { deletedSharesViewId } from '../views/shares';\nexport const action = new FileAction({\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(node) {\n try {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares/{id}', {\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, View, FileAction, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n if (!nodes[0]) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node, view, dir) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n await window.OCA.Files.Sidebar.open(node.path);\n // Silently update current fileid\n window.OCP.Files.Router.goToRoute(null, { view: view.id, fileid: node.fileid }, { ...window.OCP.Files.Router.query, dir }, true);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\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';\nconst isDarkMode = window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches === true\n || document.querySelector('[data-themes*=dark]') !== null;\nexport const generateAvatarSvg = (userId, isExternalUser = false) => {\n const url = isDarkMode ? '/avatar/{userId}/32/dark' : '/avatar/{userId}/32';\n const avatarUrl = generateUrl(isExternalUser ? url + '?guestFallback=true' : url, { userId });\n return `\n\t\t\n\t`;\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;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./sharingStatusAction.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Node, View, registerFileAction, FileAction, Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { Type } from '@nextcloud/sharing';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport CircleSvg from '../../../../core/img/apps/circles.svg?raw';\nimport { action as sidebarAction } from '../../../files/src/actions/sidebarAction';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { generateAvatarSvg } from '../utils/AccountIcon.ts';\nimport './sharingStatusAction.scss';\nconst isExternal = (node) => {\n return node.attributes?.['is-federated'] ?? false;\n};\nexport const action = new FileAction({\n id: 'sharing-status',\n displayName(nodes) {\n const node = nodes[0];\n const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat();\n const ownerId = node?.attributes?.['owner-id'];\n if (shareTypes.length > 0\n || (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return t('files_sharing', 'Shared');\n }\n return '';\n },\n title(nodes) {\n const node = nodes[0];\n const ownerId = node?.attributes?.['owner-id'];\n const ownerDisplayName = node?.attributes?.['owner-display-name'];\n // Mixed share types\n if (Array.isArray(node.attributes?.['share-types']) && node.attributes?.['share-types'].length > 1) {\n return t('files_sharing', 'Shared multiple times with different people');\n }\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return t('files_sharing', 'Shared by {ownerDisplayName}', { ownerDisplayName });\n }\n return t('files_sharing', 'Show sharing options');\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(Type.SHARE_TYPE_LINK)\n || shareTypes.includes(Type.SHARE_TYPE_EMAIL)) {\n return LinkSvg;\n }\n // Group shares\n if (shareTypes.includes(Type.SHARE_TYPE_GROUP)\n || shareTypes.includes(Type.SHARE_TYPE_REMOTE_GROUP)) {\n return AccountGroupSvg;\n }\n // Circle shares\n if (shareTypes.includes(Type.SHARE_TYPE_CIRCLE)) {\n return CircleSvg;\n }\n const ownerId = node?.attributes?.['owner-id'];\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n const sanitizeId = (id) => id.replace(/[^a-zA-Z0-9._%+@-]+/g, '').replace(/\\//g, '');\n return generateAvatarSvg(sanitizeId(ownerId), isExternal(node));\n }\n return AccountPlusSvg;\n },\n enabled(nodes) {\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n const ownerId = node?.attributes?.['owner-id'];\n const isMixed = Array.isArray(node.attributes?.['share-types']);\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 (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return true;\n }\n return (node.permissions & Permission.SHARE) !== 0;\n },\n async exec(node, view, dir) {\n // You need read permissions to see the sidebar\n if ((node.permissions & Permission.READ) !== 0) {\n window.OCA?.Files?.Sidebar?.setActiveTab?.('sharing');\n return sidebarAction.exec(node, view, dir);\n }\n return null;\n },\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { registerDavProperty } from '@nextcloud/files';\nimport registerSharingViews from './views/shares';\nimport './actions/acceptShareAction';\nimport './actions/openInFilesAction';\nimport './actions/rejectShareAction';\nimport './actions/restoreShareAction';\nimport './actions/sharingStatusAction';\nregisterSharingViews();\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' });\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{direction:rtl;padding-right:0 !important}svg.sharing-status__avatar{height:32px !important;width:32px !important;max-height:32px !important;max-width:32px !important;border-radius:32px;overflow:hidden}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/actions/sharingStatusAction.scss\"],\"names\":[],\"mappings\":\"AAsBA,qDAEC,aAAA,CAEG,0BAAA,CAGJ,2BACC,sBAAA,CACA,qBAAA,CACA,0BAAA,CACA,yBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n // 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// put icon at the end of the button\\n\\tdirection: rtl;\\n\\t// align icons with textless inline actions\\n padding-right: 0 !important;\\n}\\n\\nsvg.sharing-status__avatar {\\n\\theight: 32px !important;\\n\\twidth: 32px !important;\\n\\tmax-height: 32px !important;\\n\\tmax-width: 32px !important;\\n\\tborder-radius: 32px;\\n\\toverflow: hidden;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (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=\" + \"6797210df0f1d53f94c4\" + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5928;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && 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(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\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 = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(50879)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","rootPath","concat","_getCurrentUser","getCurrentUser","uid","headers","ocsEntryToNode","async","ocsEntry","_ocsEntry$tags","undefined","remote_id","mimetype","mime","default","getType","name","item_type","type","item_mtime","mtime","file_target","mountpoint","item_permissions","Permission","NONE","permissions","uid_owner","owner","displayname_owner","isFolder","hasPreview","has_preview","Node","Folder","File","fileid","file_source","file_id","id","path","source","generateRemoteUrl","replaceAll","Date","stime","size","item_size","root","attributes","share_type","favorite","tags","includes","window","OC","TAG_FAVORITE","error","logger","getShares","shared_with_me","arguments","length","url","generateOcsUrl","axios","get","params","include_tags","getContents","_getCurrentUser2","sharedWithOthers","pendingShares","deletedshares","filterTypes","promises","push","getRemoteShares","getPendingShares","getRemotePendingShares","getDeletedShares","data","Promise","all","map","response","ocs","flat","contents","filter","node","nodes","key","_node$attributes","Object","values","reduce","acc","curr","folder","sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","action","FileAction","displayName","n","iconSvgInline","CheckSvg","enabled","view","exec","isRemote","remote","shareBase","post","emit","execBatch","dir","this","order","inline","registerFileAction","t","FileType","OCP","Files","Router","goToRoute","String","dirname","openfile","DefaultType","HIDDEN","some","Share","SHARE_TYPE_REMOTE_GROUP","delete","InformationSvg","_window","_ref","_nodes$0$root","OCA","Sidebar","startsWith","open","query","isDarkMode","_window$matchMedia","matchMedia","call","matches","document","querySelector","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","isExternal","_node$attributes$isF","_node$attributes2","_node$attributes3","shareTypes","ownerId","title","_node$attributes4","_node$attributes5","_node$attributes6","_node$attributes7","ownerDisplayName","Array","isArray","_node$attributes8","_node$attributes9","_node$attributes10","_node$attributes11","_getCurrentUser3","AccountPlusSvg","Type","SHARE_TYPE_LINK","SHARE_TYPE_EMAIL","LinkSvg","SHARE_TYPE_GROUP","AccountGroupSvg","SHARE_TYPE_CIRCLE","userId","isExternalUser","avatarUrl","generateUrl","generateAvatarSvg","replace","_node$attributes12","_node$attributes13","_getCurrentUser4","SHARE","_window$OCA","_window$OCA$setActive","READ","setActiveTab","sidebarAction","Navigation","getNavigation","register","View","caption","emptyTitle","emptyCaption","icon","columns","parent","registerSharingViews","registerDavProperty","nc","oc","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file +{"version":3,"file":"files_sharing-init.js?v=b48c55010ae61d6220ac","mappings":"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","sources":["webpack:///nextcloud/webpack/runtime/chunk loaded","webpack:///nextcloud/webpack/runtime/load script","webpack:///nextcloud/apps/files_sharing/src/services/logger.ts","webpack:///nextcloud/apps/files_sharing/src/services/SharingService.ts","webpack:///nextcloud/apps/files_sharing/src/views/shares.ts","webpack:///nextcloud/apps/files_sharing/src/actions/acceptShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/openInFilesAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/rejectShareAction.ts","webpack:///nextcloud/apps/files_sharing/src/actions/restoreShareAction.ts","webpack:///nextcloud/apps/files/src/logger.js","webpack:///nextcloud/apps/files/src/actions/sidebarAction.ts","webpack://nextcloud/./apps/files_sharing/src/actions/sharingStatusAction.scss?3ea7","webpack:///nextcloud/apps/files_sharing/src/actions/sharingStatusAction.ts","webpack:///nextcloud/apps/files_sharing/src/utils/AccountIcon.ts","webpack:///nextcloud/apps/files_sharing/src/init.ts","webpack:///nextcloud/apps/files_sharing/src/actions/sharingStatusAction.scss","webpack:///nextcloud/webpack/bootstrap","webpack:///nextcloud/webpack/runtime/compat get default export","webpack:///nextcloud/webpack/runtime/define property getters","webpack:///nextcloud/webpack/runtime/ensure chunk","webpack:///nextcloud/webpack/runtime/get javascript chunk filename","webpack:///nextcloud/webpack/runtime/global","webpack:///nextcloud/webpack/runtime/hasOwnProperty shorthand","webpack:///nextcloud/webpack/runtime/make namespace object","webpack:///nextcloud/webpack/runtime/node module decorator","webpack:///nextcloud/webpack/runtime/runtimeId","webpack:///nextcloud/webpack/runtime/publicPath","webpack:///nextcloud/webpack/runtime/jsonp chunk loading","webpack:///nextcloud/webpack/runtime/nonce","webpack:///nextcloud/webpack/startup"],"sourcesContent":["var deferred = [];\n__webpack_require__.O = (result, chunkIds, fn, priority) => {\n\tif(chunkIds) {\n\t\tpriority = priority || 0;\n\t\tfor(var i = deferred.length; i > 0 && deferred[i - 1][2] > priority; i--) deferred[i] = deferred[i - 1];\n\t\tdeferred[i] = [chunkIds, fn, priority];\n\t\treturn;\n\t}\n\tvar notFulfilled = Infinity;\n\tfor (var i = 0; i < deferred.length; i++) {\n\t\tvar chunkIds = deferred[i][0];\n\t\tvar fn = deferred[i][1];\n\t\tvar priority = deferred[i][2];\n\t\tvar fulfilled = true;\n\t\tfor (var j = 0; j < chunkIds.length; j++) {\n\t\t\tif ((priority & 1 === 0 || notFulfilled >= priority) && Object.keys(__webpack_require__.O).every((key) => (__webpack_require__.O[key](chunkIds[j])))) {\n\t\t\t\tchunkIds.splice(j--, 1);\n\t\t\t} else {\n\t\t\t\tfulfilled = false;\n\t\t\t\tif(priority < notFulfilled) notFulfilled = priority;\n\t\t\t}\n\t\t}\n\t\tif(fulfilled) {\n\t\t\tdeferred.splice(i--, 1)\n\t\t\tvar r = fn();\n\t\t\tif (r !== undefined) result = r;\n\t\t}\n\t}\n\treturn result;\n};","var inProgress = {};\nvar dataWebpackPrefix = \"nextcloud:\";\n// loadScript function to load a script via script tag\n__webpack_require__.l = (url, done, key, chunkId) => {\n\tif(inProgress[url]) { inProgress[url].push(done); return; }\n\tvar script, needAttach;\n\tif(key !== undefined) {\n\t\tvar scripts = document.getElementsByTagName(\"script\");\n\t\tfor(var i = 0; i < scripts.length; i++) {\n\t\t\tvar s = scripts[i];\n\t\t\tif(s.getAttribute(\"src\") == url || s.getAttribute(\"data-webpack\") == dataWebpackPrefix + key) { script = s; break; }\n\t\t}\n\t}\n\tif(!script) {\n\t\tneedAttach = true;\n\t\tscript = document.createElement('script');\n\n\t\tscript.charset = 'utf-8';\n\t\tscript.timeout = 120;\n\t\tif (__webpack_require__.nc) {\n\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n\t\t}\n\t\tscript.setAttribute(\"data-webpack\", dataWebpackPrefix + key);\n\n\t\tscript.src = url;\n\t}\n\tinProgress[url] = [done];\n\tvar onScriptComplete = (prev, event) => {\n\t\t// avoid mem leaks in IE.\n\t\tscript.onerror = script.onload = null;\n\t\tclearTimeout(timeout);\n\t\tvar doneFns = inProgress[url];\n\t\tdelete inProgress[url];\n\t\tscript.parentNode && script.parentNode.removeChild(script);\n\t\tdoneFns && doneFns.forEach((fn) => (fn(event)));\n\t\tif(prev) return prev(event);\n\t}\n\tvar timeout = setTimeout(onScriptComplete.bind(null, undefined, { type: 'timeout', target: script }), 120000);\n\tscript.onerror = onScriptComplete.bind(null, script.onerror);\n\tscript.onload = onScriptComplete.bind(null, script.onload);\n\tneedAttach && document.head.appendChild(script);\n};","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger';\nexport default getLoggerBuilder()\n .setApp('files_sharing')\n .detectUser()\n .build();\n","import { Folder, File, Permission } from '@nextcloud/files';\nimport { generateOcsUrl, generateRemoteUrl } from '@nextcloud/router';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport axios from '@nextcloud/axios';\nimport logger from './logger';\nexport const rootPath = `/files/${getCurrentUser()?.uid}`;\nconst headers = {\n 'Content-Type': 'application/json',\n};\nconst ocsEntryToNode = async function (ocsEntry) {\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 ocsEntry.item_type = ocsEntry.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 // Need to set permissions to NONE for federated shares\n ocsEntry.item_permissions = Permission.NONE;\n ocsEntry.permissions = Permission.NONE;\n ocsEntry.uid_owner = ocsEntry.owner;\n // TODO: have the real display name stored somewhere\n ocsEntry.displayname_owner = ocsEntry.owner;\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 = generateRemoteUrl(`dav/${rootPath}/${path}`.replaceAll(/\\/\\//gm, '/'));\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 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,\n permissions: ocsEntry?.item_permissions || ocsEntry?.permissions,\n root: rootPath,\n attributes: {\n ...ocsEntry,\n 'has-preview': hasPreview,\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 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};\nconst getShares = function (shared_with_me = false) {\n const url = generateOcsUrl('apps/files_sharing/api/v1/shares');\n return axios.get(url, {\n headers,\n params: {\n shared_with_me,\n include_tags: true,\n },\n });\n};\nconst getSharedWithYou = function () {\n return getShares(true);\n};\nconst getSharedWithOthers = function () {\n return getShares();\n};\nconst getRemoteShares = function () {\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};\nconst getPendingShares = function () {\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};\nconst getRemotePendingShares = function () {\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};\nconst getDeletedShares = function () {\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 * Group an array of objects (here Nodes) by a key\n * and return an array of arrays of them.\n * @param nodes Nodes to group\n * @param key The attribute to group by\n */\nconst groupBy = function (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};\nexport const getContents = async (sharedWithYou = true, sharedWithOthers = true, pendingShares = false, deletedshares = false, filterTypes = []) => {\n const promises = [];\n if (sharedWithYou) {\n promises.push(getSharedWithYou(), getRemoteShares());\n }\n if (sharedWithOthers) {\n promises.push(getSharedWithOthers());\n }\n if (pendingShares) {\n promises.push(getPendingShares(), getRemotePendingShares());\n }\n if (deletedshares) {\n promises.push(getDeletedShares());\n }\n const responses = await Promise.all(promises);\n const data = responses.map((response) => response.data.ocs.data).flat();\n let contents = (await Promise.all(data.map(ocsEntryToNode)))\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: generateRemoteUrl('dav' + rootPath),\n owner: getCurrentUser()?.uid || null,\n }),\n contents,\n };\n};\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { translate as t } from '@nextcloud/l10n';\nimport { View, getNavigation } from '@nextcloud/files';\nimport AccountClockSvg from '@mdi/svg/svg/account-clock.svg?raw';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw';\nimport AccountSvg from '@mdi/svg/svg/account.svg?raw';\nimport DeleteSvg from '@mdi/svg/svg/delete.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport { getContents } from '../services/SharingService';\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 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 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 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, [window.OC.Share.SHARE_TYPE_LINK]),\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: 4,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, false, true),\n }));\n Navigation.register(new View({\n id: pendingSharesViewId,\n name: t('files_sharing', 'Pending shares'),\n caption: t('files_sharing', 'List of unapproved shares.'),\n emptyTitle: t('files_sharing', 'No pending shares'),\n emptyCaption: t('files_sharing', 'Shares you have received but not approved will show up here'),\n icon: AccountClockSvg,\n order: 5,\n parent: sharesViewId,\n columns: [],\n getContents: () => getContents(false, false, true, false),\n }));\n};\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { registerFileAction, FileAction } from '@nextcloud/files';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CheckSvg from '@mdi/svg/svg/check.svg?raw';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\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(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/pending/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { registerFileAction, FileAction, DefaultType, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { sharesViewId, sharedWithYouViewId, sharedWithOthersViewId, sharingByLinksViewId } from '../views/shares';\nexport const action = new FileAction({\n id: 'open-in-files',\n displayName: () => t('files', 'Open in Files'),\n iconSvgInline: () => '',\n enabled: (nodes, 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(node) {\n const isFolder = node.type === FileType.Folder;\n window.OCP.Files.Router.goToRoute(null, // use default route\n {\n view: 'files',\n fileid: String(node.fileid),\n }, {\n // If this node is a folder open the folder in files\n dir: isFolder ? node.path : node.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});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { registerFileAction, FileAction } from '@nextcloud/files';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport axios from '@nextcloud/axios';\nimport CloseSvg from '@mdi/svg/svg/close.svg?raw';\nimport { pendingSharesViewId } from '../views/shares';\nexport const action = new FileAction({\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 === window.OC.Share.SHARE_TYPE_REMOTE_GROUP)) {\n return false;\n }\n return true;\n },\n async exec(node) {\n try {\n const isRemote = !!node.attributes.remote;\n const url = generateOcsUrl('apps/files_sharing/api/v1/{shareBase}/{id}', {\n shareBase: isRemote ? 'remote_shares' : 'shares',\n id: node.attributes.id,\n });\n await axios.delete(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 2,\n inline: () => true,\n});\nregisterFileAction(action);\n","import { emit } from '@nextcloud/event-bus';\nimport { FileAction, registerFileAction } from '@nextcloud/files';\nimport { generateOcsUrl } from '@nextcloud/router';\nimport { translatePlural as n } from '@nextcloud/l10n';\nimport ArrowULeftTopSvg from '@mdi/svg/svg/arrow-u-left-top.svg?raw';\nimport axios from '@nextcloud/axios';\nimport { deletedSharesViewId } from '../views/shares';\nexport const action = new FileAction({\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(node) {\n try {\n const url = generateOcsUrl('apps/files_sharing/api/v1/deletedshares/{id}', {\n id: node.attributes.id,\n });\n await axios.post(url);\n // Remove from current view\n emit('files:node:deleted', node);\n return true;\n }\n catch (error) {\n return false;\n }\n },\n async execBatch(nodes, view, dir) {\n return Promise.all(nodes.map(node => this.exec(node, view, dir)));\n },\n order: 1,\n inline: () => true,\n});\nregisterFileAction(action);\n","/**\n * @copyright Copyright (c) 2022 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { getLoggerBuilder } from '@nextcloud/logger'\n\nexport default getLoggerBuilder()\n\t.setApp('files')\n\t.detectUser()\n\t.build()\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Permission, View, FileAction, FileType } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport InformationSvg from '@mdi/svg/svg/information-variant.svg?raw';\nimport logger from '../logger.js';\nexport const ACTION_DETAILS = 'details';\nexport const action = new FileAction({\n id: ACTION_DETAILS,\n displayName: () => t('files', 'Open details'),\n iconSvgInline: () => InformationSvg,\n // Sidebar currently supports user folder only, /files/USER\n enabled: (nodes) => {\n // Only works on single node\n if (nodes.length !== 1) {\n return false;\n }\n if (!nodes[0]) {\n return false;\n }\n // Only work if the sidebar is available\n if (!window?.OCA?.Files?.Sidebar) {\n return false;\n }\n return (nodes[0].root?.startsWith('/files/') && nodes[0].permissions !== Permission.NONE) ?? false;\n },\n async exec(node, view, dir) {\n try {\n // TODO: migrate Sidebar to use a Node instead\n await window.OCA.Files.Sidebar.open(node.path);\n // Silently update current fileid\n window.OCP.Files.Router.goToRoute(null, { view: view.id, fileid: node.fileid }, { ...window.OCP.Files.Router.query, dir }, true);\n return null;\n }\n catch (error) {\n logger.error('Error while opening sidebar', { error });\n return false;\n }\n },\n order: -50,\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;\n\n options.insert = insertFn.bind(null, \"head\");\n \noptions.domAPI = domAPI;\noptions.insertStyleElement = insertStyleElement;\n\nvar update = API(content, options);\n\n\n\nexport * from \"!!../../../../node_modules/css-loader/dist/cjs.js!../../../../node_modules/sass-loader/dist/cjs.js!./sharingStatusAction.scss\";\n export default content && content.locals ? content.locals : undefined;\n","/**\n * @copyright Copyright (c) 2023 John Molakvoæ \n *\n * @author John Molakvoæ \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { Node, View, registerFileAction, FileAction, Permission } from '@nextcloud/files';\nimport { translate as t } from '@nextcloud/l10n';\nimport { Type } from '@nextcloud/sharing';\nimport AccountGroupSvg from '@mdi/svg/svg/account-group.svg?raw';\nimport AccountPlusSvg from '@mdi/svg/svg/account-plus.svg?raw';\nimport LinkSvg from '@mdi/svg/svg/link.svg?raw';\nimport CircleSvg from '../../../../core/img/apps/circles.svg?raw';\nimport { action as sidebarAction } from '../../../files/src/actions/sidebarAction';\nimport { getCurrentUser } from '@nextcloud/auth';\nimport { generateAvatarSvg } from '../utils/AccountIcon.ts';\nimport './sharingStatusAction.scss';\nconst isExternal = (node) => {\n return node.attributes?.['is-federated'] ?? false;\n};\nexport const action = new FileAction({\n id: 'sharing-status',\n displayName(nodes) {\n const node = nodes[0];\n const shareTypes = Object.values(node?.attributes?.['share-types'] || {}).flat();\n const ownerId = node?.attributes?.['owner-id'];\n if (shareTypes.length > 0\n || (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return t('files_sharing', 'Shared');\n }\n return '';\n },\n title(nodes) {\n const node = nodes[0];\n const ownerId = node?.attributes?.['owner-id'];\n const ownerDisplayName = node?.attributes?.['owner-display-name'];\n // Mixed share types\n if (Array.isArray(node.attributes?.['share-types']) && node.attributes?.['share-types'].length > 1) {\n return t('files_sharing', 'Shared multiple times with different people');\n }\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return t('files_sharing', 'Shared by {ownerDisplayName}', { ownerDisplayName });\n }\n return t('files_sharing', 'Show sharing options');\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(Type.SHARE_TYPE_LINK)\n || shareTypes.includes(Type.SHARE_TYPE_EMAIL)) {\n return LinkSvg;\n }\n // Group shares\n if (shareTypes.includes(Type.SHARE_TYPE_GROUP)\n || shareTypes.includes(Type.SHARE_TYPE_REMOTE_GROUP)) {\n return AccountGroupSvg;\n }\n // Circle shares\n if (shareTypes.includes(Type.SHARE_TYPE_CIRCLE)) {\n return CircleSvg;\n }\n const ownerId = node?.attributes?.['owner-id'];\n if (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n const sanitizeId = (id) => id.replace(/[^a-zA-Z0-9._%+@-]+/g, '').replace(/\\//g, '');\n return generateAvatarSvg(sanitizeId(ownerId), isExternal(node));\n }\n return AccountPlusSvg;\n },\n enabled(nodes) {\n if (nodes.length !== 1) {\n return false;\n }\n const node = nodes[0];\n const ownerId = node?.attributes?.['owner-id'];\n const isMixed = Array.isArray(node.attributes?.['share-types']);\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 (ownerId && (ownerId !== getCurrentUser()?.uid || isExternal(node))) {\n return true;\n }\n return (node.permissions & Permission.SHARE) !== 0;\n },\n async exec(node, view, dir) {\n // You need read permissions to see the sidebar\n if ((node.permissions & Permission.READ) !== 0) {\n window.OCA?.Files?.Sidebar?.setActiveTab?.('sharing');\n return sidebarAction.exec(node, view, dir);\n }\n return null;\n },\n inline: () => true,\n});\nregisterFileAction(action);\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';\nconst isDarkMode = () => {\n return window?.matchMedia?.('(prefers-color-scheme: dark)')?.matches === true\n || document.querySelector('[data-themes*=dark]') !== null;\n};\nexport const 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 * @copyright Copyright (c) 2019 John Molakvoæ \n *\n * @author John Molakvoæ \n * @author Julius Härtl \n *\n * @license AGPL-3.0-or-later\n *\n * This program is free software: you can redistribute it and/or modify\n * it under the terms of the GNU Affero General Public License as\n * published by the Free Software Foundation, either version 3 of the\n * License, or (at your option) any later version.\n *\n * This program is distributed in the hope that it will be useful,\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\n * GNU Affero General Public License for more details.\n *\n * You should have received a copy of the GNU Affero General Public License\n * along with this program. If not, see .\n *\n */\nimport { registerDavProperty } from '@nextcloud/files';\nimport registerSharingViews from './views/shares';\nimport './actions/acceptShareAction';\nimport './actions/openInFilesAction';\nimport './actions/rejectShareAction';\nimport './actions/restoreShareAction';\nimport './actions/sharingStatusAction';\nregisterSharingViews();\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' });\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{direction:rtl;padding-right:0 !important}svg.sharing-status__avatar{height:32px !important;width:32px !important;max-height:32px !important;max-width:32px !important;border-radius:32px;overflow:hidden}`, \"\",{\"version\":3,\"sources\":[\"webpack://./apps/files_sharing/src/actions/sharingStatusAction.scss\"],\"names\":[],\"mappings\":\"AAsBA,qDAEC,aAAA,CAEG,0BAAA,CAGJ,2BACC,sBAAA,CACA,qBAAA,CACA,0BAAA,CACA,yBAAA,CACA,kBAAA,CACA,eAAA\",\"sourcesContent\":[\"/**\\n * @copyright Copyright (c) 2023 John Molakvoæ \\n *\\n * @author John Molakvoæ \\n *\\n * @license AGPL-3.0-or-later\\n *\\n * This program is free software: you can redistribute it and/or modify\\n * it under the terms of the GNU Affero General Public License as\\n * published by the Free Software Foundation, either version 3 of the\\n * License, or (at your option) any later version.\\n *\\n * This program is distributed in the hope that it will be useful,\\n * but WITHOUT ANY WARRANTY; without even the implied warranty of\\n * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\\n * GNU Affero General Public License for more details.\\n *\\n * You should have received a copy of the GNU Affero General Public License\\n * along with this program. If not, see .\\n *\\n */\\n // 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// put icon at the end of the button\\n\\tdirection: rtl;\\n\\t// align icons with textless inline actions\\n padding-right: 0 !important;\\n}\\n\\nsvg.sharing-status__avatar {\\n\\theight: 32px !important;\\n\\twidth: 32px !important;\\n\\tmax-height: 32px !important;\\n\\tmax-width: 32px !important;\\n\\tborder-radius: 32px;\\n\\toverflow: hidden;\\n}\\n\"],\"sourceRoot\":\"\"}]);\n// Exports\nexport default ___CSS_LOADER_EXPORT___;\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\tid: moduleId,\n\t\tloaded: false,\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Flag the module as loaded\n\tmodule.loaded = true;\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n// expose the modules object (__webpack_modules__)\n__webpack_require__.m = __webpack_modules__;\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (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=\" + \"6797210df0f1d53f94c4\" + \"\";\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","__webpack_require__.nmd = (module) => {\n\tmodule.paths = [];\n\tif (!module.children) module.children = [];\n\treturn module;\n};","__webpack_require__.j = 5928;","var scriptUrl;\nif (__webpack_require__.g.importScripts) scriptUrl = __webpack_require__.g.location + \"\";\nvar document = __webpack_require__.g.document;\nif (!scriptUrl && document) {\n\tif (document.currentScript && 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(/#.*$/, \"\").replace(/\\?.*$/, \"\").replace(/\\/[^\\/]+$/, \"/\");\n__webpack_require__.p = scriptUrl;","__webpack_require__.b = document.baseURI || self.location.href;\n\n// object to store loaded and loading chunks\n// undefined = chunk not loaded, null = chunk preloaded/prefetched\n// [resolve, reject, Promise] = chunk loading, 0 = chunk loaded\nvar installedChunks = {\n\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 = data[0];\n\tvar moreModules = data[1];\n\tvar runtime = data[2];\n\t// add \"moreModules\" to the modules object,\n\t// then flag all \"chunkIds\" as loaded and fire callback\n\tvar moduleId, chunkId, i = 0;\n\tif(chunkIds.some((id) => (installedChunks[id] !== 0))) {\n\t\tfor(moduleId in moreModules) {\n\t\t\tif(__webpack_require__.o(moreModules, moduleId)) {\n\t\t\t\t__webpack_require__.m[moduleId] = moreModules[moduleId];\n\t\t\t}\n\t\t}\n\t\tif(runtime) var result = runtime(__webpack_require__);\n\t}\n\tif(parentChunkLoadingFunction) parentChunkLoadingFunction(data);\n\tfor(;i < chunkIds.length; i++) {\n\t\tchunkId = chunkIds[i];\n\t\tif(__webpack_require__.o(installedChunks, chunkId) && installedChunks[chunkId]) {\n\t\t\tinstalledChunks[chunkId][0]();\n\t\t}\n\t\tinstalledChunks[chunkId] = 0;\n\t}\n\treturn __webpack_require__.O(result);\n}\n\nvar chunkLoadingGlobal = self[\"webpackChunknextcloud\"] = self[\"webpackChunknextcloud\"] || [];\nchunkLoadingGlobal.forEach(webpackJsonpCallback.bind(null, 0));\nchunkLoadingGlobal.push = webpackJsonpCallback.bind(null, chunkLoadingGlobal.push.bind(chunkLoadingGlobal));","__webpack_require__.nc = undefined;","// startup\n// Load entry module and return exports\n// This entry module depends on other loaded chunks and execution need to be delayed\nvar __webpack_exports__ = __webpack_require__.O(undefined, [4208], () => (__webpack_require__(50879)))\n__webpack_exports__ = __webpack_require__.O(__webpack_exports__);\n"],"names":["deferred","inProgress","dataWebpackPrefix","getLoggerBuilder","setApp","detectUser","build","rootPath","concat","_getCurrentUser","getCurrentUser","uid","headers","ocsEntryToNode","async","ocsEntry","_ocsEntry$tags","undefined","remote_id","mimetype","mime","default","getType","name","item_type","type","item_mtime","mtime","file_target","mountpoint","item_permissions","Permission","NONE","permissions","uid_owner","owner","displayname_owner","isFolder","hasPreview","has_preview","Node","Folder","File","fileid","file_source","file_id","id","path","source","generateRemoteUrl","replaceAll","Date","stime","size","item_size","root","attributes","share_type","favorite","tags","includes","window","OC","TAG_FAVORITE","error","logger","getShares","shared_with_me","arguments","length","url","generateOcsUrl","axios","get","params","include_tags","getContents","_getCurrentUser2","sharedWithOthers","pendingShares","deletedshares","filterTypes","promises","push","getRemoteShares","getPendingShares","getRemotePendingShares","getDeletedShares","data","Promise","all","map","response","ocs","flat","contents","filter","node","nodes","key","_node$attributes","Object","values","reduce","acc","curr","folder","sharesViewId","sharedWithYouViewId","sharedWithOthersViewId","sharingByLinksViewId","deletedSharesViewId","pendingSharesViewId","action","FileAction","displayName","n","iconSvgInline","CheckSvg","enabled","view","exec","isRemote","remote","shareBase","post","emit","execBatch","dir","this","order","inline","registerFileAction","t","FileType","OCP","Files","Router","goToRoute","String","dirname","openfile","DefaultType","HIDDEN","some","Share","SHARE_TYPE_REMOTE_GROUP","delete","InformationSvg","_window","_ref","_nodes$0$root","OCA","Sidebar","startsWith","open","query","options","styleTagTransform","setAttributes","insert","domAPI","insertStyleElement","locals","isExternal","_node$attributes$isF","_node$attributes2","_node$attributes3","shareTypes","ownerId","title","_node$attributes4","_node$attributes5","_node$attributes6","_node$attributes7","ownerDisplayName","Array","isArray","_node$attributes8","_node$attributes9","_node$attributes10","_node$attributes11","_getCurrentUser3","AccountPlusSvg","Type","SHARE_TYPE_LINK","SHARE_TYPE_EMAIL","LinkSvg","SHARE_TYPE_GROUP","AccountGroupSvg","SHARE_TYPE_CIRCLE","userId","isGuest","basePath","darkModePath","_window$matchMedia","matchMedia","call","matches","document","querySelector","isDarkMode","guestFallback","avatarUrl","generateUrl","generateAvatarSvg","replace","_node$attributes12","_node$attributes13","_getCurrentUser4","SHARE","_window$OCA","_window$OCA$setActive","READ","setActiveTab","sidebarAction","Navigation","getNavigation","register","View","caption","emptyTitle","emptyCaption","icon","columns","parent","registerSharingViews","registerDavProperty","nc","oc","___CSS_LOADER_EXPORT___","module","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","loaded","__webpack_modules__","m","O","result","chunkIds","fn","priority","notFulfilled","Infinity","i","fulfilled","j","keys","every","splice","r","getter","__esModule","d","a","definition","o","defineProperty","enumerable","f","e","chunkId","u","g","globalThis","Function","obj","prop","prototype","hasOwnProperty","l","done","script","needAttach","scripts","getElementsByTagName","s","getAttribute","createElement","charset","timeout","setAttribute","src","onScriptComplete","prev","event","onerror","onload","clearTimeout","doneFns","parentNode","removeChild","forEach","setTimeout","bind","target","head","appendChild","Symbol","toStringTag","value","nmd","paths","children","scriptUrl","importScripts","location","currentScript","tagName","toUpperCase","test","Error","p","b","baseURI","self","href","installedChunks","installedChunkData","promise","resolve","reject","errorType","realSrc","message","request","webpackJsonpCallback","parentChunkLoadingFunction","moreModules","runtime","chunkLoadingGlobal","__webpack_exports__"],"sourceRoot":""} \ No newline at end of file